// spot lights
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.164 on Sun Nov  8 13:34:33 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_immediateConstantBuffer { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000} }
dcl_constantbuffer CB0[291], immediateIndexed
dcl_constantbuffer CB1[100], dynamicIndexed
dcl_constantbuffer CB2[25], dynamicIndexed
dcl_constantbuffer CB3[12], immediateIndexed
dcl_constantbuffer CB4[35], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_comparison
dcl_resource_texture2darray (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_structured t2, 4
dcl_resource_structured t3, 228
dcl_resource_structured t4, 224
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_resource_texture2d (float,float,float,float) t8
dcl_resource_structured t9, 208
dcl_resource_structured t10, 96
dcl_resource_texture3d (float,float,float,float) t11
dcl_resource_texture2darray (float,float,float,float) t12

dcl_resource_texture2d (float,float,float,float) t125

dcl_uav_typed_texture3d (float,float,float,float) u0
dcl_input vThreadIDInGroupFlattened
dcl_input vThreadGroupID.xy
dcl_input vThreadIDInGroup.xy
dcl_input vThreadID.z
dcl_temps 70
dcl_tgsm_structured g0, 192, 64
dcl_thread_group 8, 8, 1
imad r0.xy, vThreadGroupID.xyxx, l(8, 8, 0, 0), vThreadIDInGroup.xyxx
ishl r1.x, vThreadID.z, l(2)
mov r2.x, cb1[r1.x + 0].z
mov r2.y, cb1[r1.x + 1].z
mov r2.z, cb1[r1.x + 2].z
utof r1.yz, r0.xxyx
add r3.xy, r1.yzyy, l(0.500000, 0.500000, 0.000000, 0.000000)
mov r3.zw, l(0,0,1.000000,1.000000)
dp4 r4.x, -r3.xyww, cb2[r1.x + 0].xyzw
dp4 r4.y, -r3.xyww, cb2[r1.x + 1].xyzw
dp4 r4.z, -r3.xyzw, cb2[r1.x + 2].xyzw

// ---- stereo fix: rayo por ojo ----
ld_indexable(texture2d)(float,float,float,float) r5.xyzw, l(0, 0, 0, 0), t125.xyzw
div r5.z, l(-0.500000), cb0[76].z          // -(gridW/2)
mul r5.z, r5.z, r5.x                       // dgx = -sep * gridW/2
mov r6.x, cb2[r1.x + 0].x
mov r6.y, cb2[r1.x + 1].x
mov r6.z, cb2[r1.x + 2].x
mul r6.xyz, r6.xyzx, -r5.zzzz              // delta de dirección por el desplazamiento en x
dp3 r5.w, r4.xyzx, -r2.xyzx                // componente "forward" del rayo mono
div r5.w, r5.y, r5.w                       // conv / g
mul r10.xyz, r6.xyzx, -r5.wwww             // desplazamiento del origen (se guarda en r10 hasta la línea 103)
add r4.xyz, r4.xyzx, r6.xyzx               // dirección del ojo (se normaliza justo después)

dp3 r1.w, r4.xyzx, r4.xyzx
rsq r1.w, r1.w
mul r4.xyz, r1.wwww, r4.xyzx
dp3 r1.w, r4.xyzx, -r2.xyzx
div r2.x, cb0[290].x, r1.w
mul r2.yz, r3.xxyx, cb2[18].xxxx
ftou r5.xy, r2.yzyy
ushr r2.yz, r5.xxyx, l(0, 6, 6, 0)
imad r2.y, cb2[24].x, r2.z, r2.y
imul null, r2.z, cb2[24].y, cb2[24].x
umin r2.y, r2.z, r2.y
mov r5.z, vThreadID.z
mov r5.w, l(0)
ld_indexable(texture2darray)(float,float,float,float) r2.z, r5.xyzw, t0.yzxw
lt r2.w, l(0.000000), r2.z
if_nz r2.w
  mul r3.xy, r3.xyxx, cb0[76].zwzz
  mad r2.z, cb0[45].z, r2.z, cb0[45].w
  div r2.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.z
  rcp r1.w, r1.w
  mul r2.z, r1.w, r2.z
  mul r3.xy, r3.xyxx, cb0[43].xyxx
  utof r3.z, vThreadID.z
  gather4_indexable(texture2darray)(float,float,float,float) r3.xyzw, r3.xyzx, t12.xyzw, s0.x
  mul r3.xyzw, r1.wwww, r3.xyzw
  max r1.w, r3.y, r3.x
  max r1.w, r3.z, r1.w
  max r1.w, r3.w, r1.w
else
  mov r2.z, l(0x7f800000)
  mov r1.w, l(0x7f800000)
endif
ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r3.xyzw, l(0), l(0), t10.xyzw
ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r5.xyzw, l(0), l(16), t10.xyzw
ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r6.xyzw, l(0), l(32), t10.xyzw
ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r7.xyzw, l(0), l(48), t10.xyzw
ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r8.xyzw, l(0), l(76), t10.xyzw
ld_structured_indexable(structured_buffer, stride=96)(mixed,mixed,mixed,mixed) r9.w, l(0), l(92), t10.xxxx
mov r2.w, vThreadID.z

//add r10.xyz, cb1[r1.x + 11].xyzx, cb1[r2.w + 98].xyzx
add r11.xyz, cb1[r1.x + 11].xyzx, cb1[r2.w + 98].xyzx
add r10.xyz, r10.xyzx, r11.xyzx

imul null, r10.w, vThreadID.z, cb2[24].x
imad r2.y, r10.w, cb2[24].y, r2.y
ishl r10.w, r2.y, l(9)
ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r10.w, r10.w, l(0), t2.xxxx
umin r10.w, r10.w, l(512)
bfi r2.y, l(23), l(9), r2.y, l(1)
mov r11.y, cb4[34].z
mov r11.xz, l(0,0,0,0)
loop
  uge r11.w, r11.z, r10.w
  breakc_nz r11.w
  iadd r11.w, r2.y, r11.z
  ld_structured_indexable(structured_buffer, stride=4)(mixed,mixed,mixed,mixed) r11.w, r11.w, l(0), t2.xxxx
  ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r12.x, r11.w, l(20), t4.xxxx
  lt r12.x, l(0.000000), r12.x
  ilt r12.y, r11.x, l(48)
  and r12.x, r12.y, r12.x
  ult r12.y, r11.w, r11.y
  and r12.x, r12.y, r12.x
  if_nz r12.x
    iadd r12.x, r11.x, l(1)
    ishl r12.z, r11.x, l(2)
    store_structured g0.x, vThreadIDInGroupFlattened.x, r12.z, r11.w
  else
    mov r12.x, r11.x
  endif
  uge r11.w, r11.w, r11.y
  if_nz r11.w
    mov r11.x, r12.x
    break
  endif
  iadd r11.z, r11.z, l(1)
  mov r12.y, r11.y
  mov r11.xy, r12.xyxx
endloop
add r2.y, cb0[80].z, cb0[80].x
max r2.y, r2.y, r2.x
mov r4.w, l(1.000000)
dp4 r12.x, cb2[11].xyzw, r4.xyzw
dp4 r12.y, cb2[12].xyzw, r4.xyzw
dp4 r12.z, cb2[13].xyzw, r4.xyzw
mul r13.xyzw, r4.yzzx, r4.xyzz
dp4 r14.x, cb2[14].xyzw, r13.xyzw
dp4 r14.y, cb2[15].xyzw, r13.xyzw
dp4 r14.z, cb2[16].xyzw, r13.xyzw
mul r4.w, r4.y, r4.y
mad r4.w, r4.x, r4.x, -r4.w
mad r11.yzw, cb2[17].xxyz, r4.wwww, r14.xxyz
add r11.yzw, r11.yyzw, r12.xxyz
ishl r4.w, vThreadIDInGroup.y, l(10)
imad r4.w, vThreadGroupID.y, l(8192), r4.w
iadd r4.w, r0.y, r4.w
ushr r10.w, r4.w, l(6)
xor r4.w, r4.w, r10.w
imul null, r4.w, r4.w, l(9)
ushr r10.w, r4.w, l(11)
xor r4.w, r4.w, r10.w
imul null, r4.w, r4.w, l(0x00008001)
xor r4.w, r0.x, r4.w
imul null, r4.w, r4.w, l(1025)
ushr r10.w, r4.w, l(6)
xor r4.w, r4.w, r10.w
imul null, r4.w, r4.w, l(9)
ushr r10.w, r4.w, l(11)
xor r4.w, r4.w, r10.w
imul null, r4.w, r4.w, l(0x00008001)
bfi r4.w, l(23), l(0), r4.w, l(0x3f800000)
add r4.w, r4.w, l(-0.500000)
frc r4.w, r4.w
ld_indexable(texture2d)(float,float,float,float) r10.w, l(0, 0, 0, 0), t1.yzwx
mul r12.xyz, r10.wwww, cb0[282].yyyy
ftoi r8.x, r8.x
eq r10.w, l(0.000000), cb1[r1.x + 19].w
iadd r8.x, r8.x, l(-1)
round_z r13.x, cb0[61].z
mad r1.yz, r13.xxxx, l(0.000000, 2.083000, 4.867000, 0.000000), r1.yyzy
dp2 r1.y, r1.yzyy, l(0.0671105608, 0.00583714992, 0.000000, 0.000000)
frc r1.y, r1.y
mul r1.y, r1.y, l(52.982918)
frc r1.y, r1.y
max r1.z, -cb0[287].z, l(0.000000)
round_pi r1.z, r1.z
exp r1.z, r1.z
mov r0.w, l(0)
mov r12.w, l(1.000000)
mov r9.xyz, r8.yzwy
mov r13.w, l(1.000000)
mov r14.y, l(1.000000)
mov r15.x, l(1.000000)
mov r16.xz, l(1.000000,0,1.000000,0)
mov r17.w, l(1.000000)
mov r18.w, l(1.000000)
mov r19.w, l(1.000000)
mov r20.w, l(1.000000)
mov r21.w, l(1.000000)
mov r22.w, l(1.000000)
mov r23.w, l(1.000000)
mov r24.w, l(1.000000)
mov r25.w, l(1.000000)
mov r26.w, l(1.000000)
mov r8.yzw, l(0,0,0,0)
mov r14.z, cb0[280].z
mov r27.w, r2.y
mov r14.w, l(0)
mov r15.y, l(0)
loop
  uge r15.w, r15.y, cb0[81].x
  breakc_nz r15.w
  imad r0.z, cb0[81].x, vThreadID.z, r15.y
  utof r15.w, r15.y
  mad r15.w, r15.w, cb0[81].y, cb0[81].y
  mul r15.w, r15.w, cb0[80].y
  exp r15.w, r15.w
  mad r15.w, cb0[80].x, r15.w, cb0[80].z
  max r15.w, r2.x, r15.w
  max r16.w, r2.z, r27.w
  min r16.w, r15.w, r16.w
  eq r16.w, r2.z, r16.w
  mul r28.x, r27.w, l(1.000100)
  max r28.x, r2.z, r28.x
  movc r27.x, r16.w, r28.x, r15.w
  add r16.w, -r27.w, r27.x
  ge r28.x, l(0.000000), r16.w
  if_nz r28.x
    store_uav_typed u0.xyzw, r0.xyzz, l(0,0,0,0)
    iadd r28.x, r15.y, l(1)
    mov r27.w, r27.x
    mov r15.y, r28.x
    continue
  endif
  ld_indexable(texture3d)(float,float,float,float) r28.xyzw, r0.xyzw, t11.xyzw
  max r28.w, r28.w, l(1.175494351E-38)
  mul r29.x, r16.w, -r28.w
  mul r29.x, r29.x, l(1.442695)
  exp r29.x, r29.x
  add r29.y, -r29.x, l(1.000000)
  rcp r29.z, r28.w
  mul r29.w, r29.z, r29.y
  mad r29.y, -r4.w, r29.y, l(1.000000)
  log r29.y, r29.y
  mul r29.y, r29.y, l(0.693147182)
  mad r29.y, -r29.y, r29.z, r27.w
  mad r30.xyz, r29.yyyy, r4.xyzx, r10.xyzx
  ige r29.y, r14.z, l(0)
  if_nz r29.y
    ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r29.y, r14.z, l(20), t3.xxxx
    ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r30.w, r14.z, l(120), t3.xxxx
    lt r29.y, l(0.000000), r29.y
    lt r30.w, l(0.000000), r30.w
    and r29.y, r29.y, r30.w
    if_nz r29.y
      mov r31.xyz, l(0,0,0,0)
      mov r29.y, l(0)
      mov r30.w, l(0)
      loop
        uge r31.w, r29.y, cb0[280].y
        breakc_nz r31.w
        mul r32.xyzw, r3.xyzw, icb[r29.y + 0].xxxx
        mad r32.xyzw, icb[r29.y + 0].yyyy, r5.xyzw, r32.xyzw
        mad r32.xyzw, icb[r29.y + 0].zzzz, r6.xyzw, r32.xyzw
        mad r32.xyzw, icb[r29.y + 0].wwww, r7.xyzw, r32.xyzw
        add r32.xyz, r30.xyzx, -r32.xyzx
        dp3 r31.w, r32.xyzx, r32.xyzx
        div r32.w, r31.w, r32.w
        lt r33.x, l(0.000000), r32.w
        ge r33.y, l(1.000000), r32.w
        and r33.x, r33.y, r33.x
        if_nz r33.x
          sqrt r31.w, r31.w
          div r31.xyz, r32.xyzx, r31.wwww
          mov r30.w, r32.w
          break
        endif
        iadd r29.y, r29.y, l(1)
        mov r31.xyz, r32.xyzx
        mov r30.w, r32.w
      endloop
      ult r31.w, r29.y, cb0[280].y
      movc r31.w, r31.w, r29.y, l(-1)
      if_nz r10.w
        add r32.xyz, -r30.xyzx, cb1[r1.x + 11].xyzx
      else
        mov r32.x, cb1[r1.x + 0].z
        mov r32.y, cb1[r1.x + 1].z
        mov r32.z, cb1[r1.x + 2].z
      endif
      itof r32.w, r31.w
      ge r33.x, r32.w, l(0.000000)
      if_nz r33.x
        ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r33.x, r14.z, l(68), t3.xxxx
        dp4 r33.y, r9.xyzw, icb[r31.w + 0].xyzw
        ge r33.z, l(0.000000), r33.y
        add r33.w, -r33.y, l(1.000000)
        add r33.w, r30.w, -r33.w
        div_sat r33.w, r33.w, r33.y
        movc r33.z, r33.z, l(0), r33.w
        dp3 r32.x, r32.xyzx, r31.xyzx
        add r32.y, r33.y, l(-1.000000)
        mul_sat r32.y, r32.y, l(-3.33333325)
        mad r32.z, r32.y, l(-2.000000), l(3.000000)
        mul r32.y, r32.y, r32.y
        mul r32.y, r32.y, r32.z
        mad r32.y, r32.y, l(512.000000), l(8.000000)
        mul_sat r32.x, r32.y, r32.x
        mad r32.x, r32.x, -r33.z, r33.z
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r34.xyzw, r33.x, l(0), t9.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r35.xyzw, r33.x, l(16), t9.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r36.x, r33.x, l(32), t9.xxxx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r32.y, r33.x, l(76), t9.xxxx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r33.yz, r33.x, l(96), t9.xxyx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r37.xyz, r33.x, l(128), t9.xyzx
        iadd r32.z, r31.w, r33.x
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r38.xyz, r32.z, l(64), t9.xyzx
        add r37.xyz, r30.xyzx, r37.xyzx
        mul r32.y, r32.y, r38.z
        mul r39.xyz, -r4.xyzx, r32.yyyy
        iadd r32.y, r31.w, l(1)
        imin r32.y, r8.x, r32.y
        itof r32.y, r32.y
        ne r32.w, r32.w, r32.y
        lt r33.w, l(0.000000), r32.x
        and r32.w, r32.w, r33.w
        ge r33.w, r32.x, r1.y
        and r32.w, r32.w, r33.w
        if_nz r32.w
          itof r32.w, r33.x
          add r32.y, r32.y, r32.w
          ftoi r32.y, r32.y
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r40.xyzw, r32.y, l(48), t9.zwxy
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r41.xyz, r32.y, l(36), t9.yxzx
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r42.xyz, r32.y, l(64), t9.xyzx
          div r32.y, r42.z, r38.z
          mul r39.xyz, r32.yyyy, r39.xyzx
          mov r38.xy, r42.xyxx
          mov r42.x, r41.y
          mov r36.y, r41.z
        else
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r40.xyzw, r32.z, l(48), t9.zwxy
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r41.xyz, r32.z, l(36), t9.yxzx
          mov r42.x, r41.y
          mov r36.y, r41.z
        endif
        add r13.xyz, r37.xyzx, r39.xyzx
        mov r42.yzw, r34.xxyz
        dp4 r32.y, r42.yzwx, r13.xyzw
        mov r41.y, r34.w
        mov r41.zw, r35.xxxy
        dp4 r32.z, r41.yzwx, r13.xyzw
        mov r36.zw, r35.zzzw
        dp4 r14.x, r36.zwxy, r13.xyzw
        mul r13.xy, r32.yzyy, r40.zwzz
        dp2 r13.z, r40.xyxx, r14.xyxx
        mad_sat r13.xy, r13.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
        mul r13.xy, r33.yzyy, r13.xyxx
        mad r13.xy, r13.xyxx, cb0[83].zwzz, r38.xyxx
        gather4_indexable(texture2d)(float,float,float,float) r13.x, r13.xyxx, t8.xyzw, s0.x
        lt r13.x, r13.x, r13.z
        and r13.y, r13.x, l(0x3f800000)
        ilt r13.z, r31.w, r8.x
        movc r13.x, r13.x, l(0), l(1.000000)
        mad r13.x, r32.x, r13.x, r13.y
        movc r13.x, r13.z, r13.y, r13.x
      else
        mov r13.x, l(1.000000)
      endif
      mov r13.xyz, r13.xxxx
    else
      mov r13.xyz, l(1.000000,1.000000,1.000000,0)
    endif
  else
    mov r13.xyz, l(1.000000,1.000000,1.000000,0)
  endif
  add r13.xyz, r13.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000)
  add r32.xyz, r30.xyzx, cb1[r2.w + 96].xyzx
  add r32.xyz, r32.xyzx, -cb3[7].xyzx
  dp3 r14.x, r32.xyzx, r32.xyzx
  sqrt r14.x, r14.x
  rcp r31.w, r14.x
  mul r32.w, r31.w, cb3[0].x
  mad r32.w, -r32.w, r32.w, l(1.000000)
  max r32.w, r32.w, l(0.000000)
  sqrt r32.w, r32.w
  mul r33.xy, r14.xxxx, cb3[2].xzxx
  mad r33.zw, cb3[2].xxxz, cb3[0].xxxx, -r33.xxxy
  mul r33.zw, r33.zzzw, l(0.000000, 0.000000, 1.442695, 1.442695)
  mad r34.xy, r33.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(1.000000, 1.000000, 0.000000, 0.000000)
  exp r33.zw, r33.zzzw
  mov r35.xyzw, l(0,0,0,0)
  loop
    uge r14.x, r35.w, cb0[279].x
    breakc_nz r14.x
    ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r36.xyzw, r35.w, l(20), t3.xyzw
    lt r14.x, l(0.000000), r36.x
    if_nz r14.x
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r37.xyzw, r35.w, l(36), t3.xyzw
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r38.xyzw, r35.w, l(68), t3.xyzw
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r39.xyz, r35.w, l(88), t3.xyzx
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r40.xyz, r35.w, l(104), t3.xyzx
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r14.x, r35.w, l(120), t3.xxxx
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r34.z, r35.w, l(160), t3.xxxx
      ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r34.w, r35.w, l(168), t3.xxxx
      max r39.w, |r36.z|, l(5.960464478E-08)
      rcp r39.w, r39.w
      ge r40.w, -r36.z, l(0.000000)
      movc r40.w, r40.w, r30.y, l(-16777216.000000)
      add r41.x, r40.w, -cb0[74].y
      max r41.x, r41.x, l(0.000000)
      add r40.w, -r40.w, cb0[74].y
      mul r40.w, r39.w, r40.w
      max r40.w, r40.w, l(0.000000)
      mul r41.x, -r41.x, cb0[75].x
      mul r41.x, r41.x, l(1.442695)
      exp r41.x, r41.x
      mul r39.w, r39.w, cb0[75].y
      mad r39.w, r41.x, r39.w, r40.w
      mul r39.w, r39.w, cb0[74].x
      mul r39.w, r39.w, l(-1.442695)
      exp r39.w, r39.w
      mul r39.xyz, r39.wwww, r39.xyzx
      ige r34.w, r34.w, l(0)
      if_nz r34.w
        dp3 r34.w, r32.xyzx, -r36.yzwy
        mul r34.w, r31.w, r34.w
        ge r36.y, r34.w, -r32.w
        if_nz r36.y
          mad r36.y, -r34.w, r34.w, l(1.000000)
          max r36.y, r36.y, l(0.000000)
          sqrt r36.y, r36.y
          mul r36.z, |r34.w|, |r34.w|
          mul r41.xy, r33.xyxx, r36.zzzz
          mad r36.zw, -r36.zzzz, r33.xxxy, r34.xxxy
          mul r36.zw, r36.zzzw, l(0.000000, 0.000000, 0.761643, 0.761643)
          mad r41.xy, r41.xyxx, l(0.273828, 0.273828, 0.000000, 0.000000), l(1.477210, 1.477210, 0.000000, 0.000000)
          mul r41.xy, r33.xyxx, r41.xyxx
          sqrt r41.xy, r41.xyxx
          mad r41.xy, |r34.wwww|, r33.xyxx, r41.xyxx
          rcp r41.xy, r41.xyxx
          mul r36.zw, r36.zzzw, r41.xxxy
          mad r36.zw, |r34.wwww|, l(0.000000, 0.000000, 0.500000, 0.500000), r36.zzzw
          mul r36.zw, r33.zzzw, r36.zzzw
          lt r34.w, r34.w, l(0.000000)
          mul r41.xy, r33.xyxx, r36.yyyy
          mad r41.zw, cb3[2].xxxz, cb3[0].xxxx, -r41.xxxy
          mul r41.zw, r41.zzzw, l(0.000000, 0.000000, 1.442695, 1.442695)
          exp r41.zw, r41.zzzw
          rsq r42.xy, r41.xyxx
          dp2 r36.y, r41.xxxx, r42.xxxx
          add r36.y, r36.y, r42.x
          mul r43.x, r36.y, r41.z
          dp2 r36.y, r41.yyyy, r42.yyyy
          add r36.y, r36.y, r42.y
          mul r43.y, r36.y, r41.w
          mad r41.xy, r43.xyxx, l(1.253314, 1.253314, 0.000000, 0.000000), -r36.zwzz
          movc r36.yz, r34.wwww, r41.xxyx, r36.zzwz
          mul r36.yz, r36.yyzy, cb3[2].yywy
          mul r34.w, r36.z, cb3[10].x
          mad r36.yzw, r36.yyyy, cb3[3].xxyz, r34.wwww
          mul r36.yzw, r36.yyzw, l(0.000000, -1.442695, -1.442695, -1.442695)
          exp r36.yzw, r36.yyzw
          add r36.yzw, -r36.yyzw, l(0.000000, 1.000000, 1.000000, 1.000000)
          add r34.w, r36.z, r36.y
          add r34.w, r36.w, r34.w
          mul r39.w, r34.w, l(0.333333343)
          mad r36.yzw, -r34.wwww, l(0.000000, 0.333333343, 0.333333343, 0.333333343), r36.yyzw
          mad r36.yzw, r36.yyzw, cb3[10].wwww, r39.wwww
          mad r36.yzw, -r36.yyzw, cb3[11].xxxx, l(0.000000, 1.000000, 1.000000, 1.000000)
          mul r39.xyz, r36.yzwy, r39.xyzx
          mov r34.w, l(1.000000)
        else
          mov r39.xyz, l(0,0,0,0)
          mov r34.w, l(0)
        endif
      else
        mov r34.w, l(1.000000)
      endif
      if_nz r37.x
        ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r36.yzw, r35.w, l(0), t3.xxyz
        ld_structured_indexable(structured_buffer, stride=228)(mixed,mixed,mixed,mixed) r41.xyzw, r35.w, l(52), t3.yxzw
        add r36.yzw, r30.xxyz, -r36.yyzw
        dp3 r42.x, r36.yzwy, r41.xzwx
        dp3 r42.y, r36.yzwy, r38.yzwy
        mad r36.yz, r42.xxyx, l(0.000000, 0.500000, 0.500000, 0.000000), l(0.000000, 0.500000, 0.500000, 0.000000)
        ieq r36.w, r37.x, l(2)
        frc r38.yz, r36.yyzy
        movc r36.yz, r36.wwww, r38.yyzy, r36.yyzy
        add r38.yz, r37.yyzy, cb0[287].yyyy
        rcp r38.yz, r38.yyzy
        mul r41.zw, r37.yyyz, r38.yyyz
        mad r38.yz, -r38.yyzy, r37.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000)
        mul r38.yz, r38.yyzy, l(0.000000, 0.500000, 0.500000, 0.000000)
        mul r42.xy, r37.yzyy, cb0[287].xxxx
        add r42.xy, r42.xyxx, r42.xyxx
        div r42.xy, r1.zzzz, r42.xyxx
        mad r36.yz, r36.yyzy, r41.zzwz, r38.yyzy
        add r38.yz, -r42.xxyx, l(0.000000, 1.000000, 1.000000, 0.000000)
        max r36.yz, r42.xxyx, r36.yyzy
        min r36.yz, r38.yyzy, r36.yyzy
        mov r41.x, r37.w
        mad r36.yz, r36.yyzy, r37.yyzy, r41.xxyx
        sample_l_indexable(texture2d)(float,float,float,float) r36.yzw, r36.yzyy, t5.wxyz, s1, l(0.000000)
        mul r39.xyz, r36.yzwy, r39.xyzx
      endif
      mul r34.w, r36.x, r34.w
      mul r36.xyz, r34.wwww, r39.xyzx
      ige r34.w, r38.x, l(0)
      lt r36.w, l(0.000000), r14.x
      and r34.w, r34.w, r36.w
      mad r37.xyz, r14.xxxx, r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      movc r37.xyz, r34.wwww, r37.xyzx, l(1.000000,1.000000,1.000000,0)
      add r38.xyz, -r40.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      mul r39.xyz, r37.xyzx, r37.xyzx
      mul r39.xyz, r37.xyzx, r39.xyzx
      add r41.xyz, -r37.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      mad r41.xyz, -r41.xyzx, r38.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      mul r37.xyz, r40.xyzx, r37.xyzx
      mad r37.xyz, r39.xyzx, r38.xyzx, r37.xyzx
      add r37.xyz, -r41.xyzx, r37.xyzx
      mad r37.xyz, r34.zzzz, r37.xyzx, r41.xyzx
      mul r36.xyz, r36.xyzx, r37.xyzx
      mad r35.xyz, r29.wwww, r36.xyzx, r35.xyzx
    endif
    iadd r35.w, r35.w, l(1)
  endloop
  mov r13.z, r27.w
  mov r30.xyz, l(0,0,0,0)
  mov r14.x, l(0)
  loop
    uge r29.w, r14.x, r11.x
    breakc_nz r29.w
    ishl r29.w, r14.x, l(2)
    ld_structured r29.w, vThreadIDInGroupFlattened.x, r29.w, g0.xxxx
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r32.xyzw, r29.w, l(36), t4.xyzw
    ige r31.w, r32.w, l(4)
    if_nz r31.w
      break
    endif
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r33.xyz, r29.w, l(0), t4.xyzx
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r34.xyzw, r29.w, l(20), t4.xyzw
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r36.xyzw, r29.w, l(52), t4.xyzw
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r37.xyzw, r29.w, l(68), t4.xyzw
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r38.xyzw, r29.w, l(84), t4.zwxy
    lt r31.w, l(0.000000), r34.x
    ine r33.w, r32.w, l(1)
    if_nz r33.w
      ieq r33.w, r32.w, l(3)
      movc r33.w, r33.w, l(0.707106769), l(1.000000)
      mul r39.xyz, r36.xyzx, r33.wwww
      mov r40.x, r37.w
      mov r40.yz, r38.zzwz
      mul r40.xyz, r33.wwww, r40.xyzx
      add r41.xyz, r10.xyzx, -r33.xyzx
      dp3 r33.w, r39.xyzx, r41.xyzx
      dp3 r35.w, r40.xyzx, r41.xyzx
      mov r42.x, r34.w
      mov r42.yz, r32.xxyx
      dp3 r39.w, r42.xyzx, r41.xyzx
      dp3 r39.x, r39.xyzx, r4.xyzx
      dp3 r39.y, r40.xyzx, r4.xyzx
      dp3 r39.z, r42.xyzx, r4.xyzx
      mul r40.x, r39.y, r39.y
      mad r40.x, r39.x, r39.x, r40.x
      mad r40.x, -r39.z, r39.z, r40.x
      mul r39.y, r35.w, r39.y
      mad r39.x, r33.w, r39.x, r39.y
      mad r39.x, -r39.w, r39.z, r39.x
      mul r35.w, r35.w, r35.w
      mad r33.w, r33.w, r33.w, r35.w
      mad r33.w, -r39.w, r39.w, r33.w
      add r35.w, r39.x, r39.x
      mul r33.w, r40.x, r33.w
      mul r33.w, r33.w, l(4.000000)
      mad r33.w, r35.w, r35.w, -r33.w
      sqrt r39.x, r33.w
      lt r39.y, l(0.000000), r40.x
      lt r40.y, r40.x, l(0.000000)
      iadd r39.y, -r39.y, r40.y
      itof r39.y, r39.y
      mad r40.y, -r39.y, r39.x, -r35.w
      add r40.x, r40.x, r40.x
      div r27.y, r40.y, r40.x
      mad r35.w, r39.y, r39.x, -r35.w
      div r27.z, r35.w, r40.x
      ge r33.w, r33.w, l(0.000000)
      mad r39.xy, r27.yzyy, r39.zzzz, r39.wwww
      lt r39.xy, r39.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
      and r35.w, r39.y, r39.x
      movc r13.xy, r39.xxxx, r27.zxzz, r27.yzyy
      movc r13.xy, r39.yyyy, r13.zxzz, r13.xyxx
      max r13.xy, r27.wwww, r13.xyxx
      min r13.xy, r27.xxxx, r13.xyxx
      eq r27.y, r13.y, r13.x
      or r27.y, r27.y, r35.w
      movc r27.y, r27.y, l(0), r33.w
      and r31.w, r27.y, r31.w
    else
      mov r13.xy, r27.wxww
    endif
    if_nz r31.w
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r39.xyzw, r29.w, l(100), t4.zxyw
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r40.xyzw, r29.w, l(116), t4.xyzw
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r41.xy, r29.w, l(132), t4.xyxx
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r27.y, r29.w, l(144), t4.xxxx
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r27.z, r29.w, l(176), t4.xxxx
      add r42.xyz, -r10.xyzx, r33.xyzx
      dp3 r31.w, r42.xyzx, r4.xyzx
      dp3 r33.w, r42.xyzx, r42.xyzx
      mad r33.w, -r31.w, r31.w, r33.w
      add r33.w, r27.z, r33.w
      max r33.w, r33.w, l(5.960464478E-08)
      rsq r35.w, r33.w
      mul r41.w, r33.w, r35.w
      add r13.xy, r13.xyxx, -r31.wwww
      mul r42.xy, r35.wwww, r13.xyxx
      mad r13.x, r13.y, r35.w, -r42.x
      mad r13.y, r42.x, r42.y, l(1.000000)
      max r13.y, r13.y, l(0.000000)
      rcp r13.y, r13.y
      mul r13.x, r13.y, r13.x
      lt r13.y, |r13.x|, l(1.000000)
      div r42.y, l(1.000000, 1.000000, 1.000000, 1.000000), |r13.x|
      movc r13.x, r13.y, |r13.x|, r42.y
      mul r42.y, r13.x, r13.x
      mad r42.z, r42.y, l(0.0872929022), l(-0.301895)
      mad r42.y, r42.z, r42.y, l(1.000000)
      mul r42.z, r13.x, r42.y
      mad r13.x, -r42.y, r13.x, l(1.57079637)
      movc r13.x, r13.y, r42.z, r13.x
      mul r13.y, r4.w, r13.x
      sincos r43.x, r44.x, r13.y
      mad r13.y, r42.x, r44.x, r43.x
      mad r42.x, -r42.x, r43.x, r44.x
      rcp r42.x, r42.x
      mul r13.y, r13.y, r42.x
      mul r42.x, r13.y, r41.w
      mad r33.w, r42.x, r42.x, r33.w
      mul r13.x, r35.w, r13.x
      mul r13.x, r33.w, r13.x
      mad r13.y, r41.w, r13.y, r31.w
      mad r42.xyz, r13.yyyy, r4.xyzx, r10.xyzx
      add r33.xyz, -r33.xyzx, r42.xyzx
      mov r43.z, r34.w
      mov r43.xy, r32.yxyy
      dp3 r44.z, r33.zyxz, r43.xyzx
      ieq r31.w, r32.w, l(4)
      mul r16.y, r44.z, r44.z
      dp3 r45.y, -r33.xyzx, -r33.xyzx
      rsq r32.x, r45.y
      mul r45.x, r32.x, r45.y
      mul r46.xyz, r32.xxxx, -r33.zyxz
      add r27.z, r27.z, r45.y
      rsq r45.z, r27.z
      movc r43.xyz, r31.wwww, -r43.xyzx, r46.xyzx
      movc r45.yzw, r31.wwww, r16.xxyz, r45.xxyz
      mul r16.y, r44.z, r45.w
      min r27.z, r45.w, l(100.000000)
      mul r32.x, r38.x, r45.z
      mad_sat r32.x, -r32.x, r32.x, r39.x
      mul r27.z, r27.z, r32.x
      mad_sat r16.y, r16.y, r34.y, r34.z
      mul r16.y, r16.y, r27.z
      mul r16.y, r16.y, r16.y
      movc r27.z, r31.w, r44.z, r45.x
      max r31.w, |r43.y|, l(0.001000)
      rcp r32.x, r31.w
      mad r32.y, r27.z, r43.y, r42.y
      min r32.y, r32.y, r42.y
      add r33.w, r32.y, -cb0[74].y
      max r33.w, r33.w, l(0.000000)
      add r32.y, -r32.y, cb0[74].y
      mul r32.y, r32.x, r32.y
      max r32.y, r32.y, l(0.000000)
      min r32.y, r27.z, r32.y
      add r27.z, r27.z, -r32.y
      mul r33.w, -r33.w, cb0[75].x
      mul r33.w, r33.w, l(1.442695)
      exp r33.w, r33.w
      mul r27.z, r31.w, -r27.z
      mul r27.z, r27.z, cb0[75].x
      mul r27.z, r27.z, l(1.442695)
      exp r27.z, r27.z
      add r27.z, -r27.z, l(1.000000)
      mul r27.z, r27.z, r33.w
      mul r31.w, r32.x, cb0[75].y
      mad r27.z, r27.z, r31.w, r32.y
      mul r27.z, r27.z, cb0[74].x
      mul r27.z, r27.z, l(-1.442695)
      exp r27.z, r27.z
      mul r38.x, r16.y, r27.z
      if_nz r37.y
        dp3 r44.x, r33.xyzx, r36.xyzx
        mov r36.x, r37.w
        mov r36.yz, r38.zzwz
        dp3 r44.y, r33.xyzx, r36.xyzx
        ieq r16.y, r32.w, l(1)
        if_nz r16.y
          dp3 r16.y, |r44.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
          rcp r16.y, r16.y
          mul r33.xyz, r16.yyyy, r44.zxyz
          mov_sat r33.x, -r33.x
          ge r32.xy, r33.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000)
          movc r32.xy, r32.xyxx, r33.xxxx, -r33.xxxx
          mad r32.xy, r44.xyxx, r16.yyyy, r32.xyxx
          mad_sat r32.xy, r32.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
          mov r33.x, r39.w
          mov r33.y, r40.x
          add r33.zw, r33.xxxy, cb0[287].yyyy
          rcp r33.zw, r33.zzzw
          mul r34.yz, r33.xxyx, r33.zzwz
          mad r33.zw, -r33.zzzw, r33.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
          mul r33.zw, r33.zzzw, l(0.000000, 0.000000, 0.500000, 0.500000)
          mul r36.xy, r33.xyxx, cb0[287].xxxx
          add r36.xy, r36.xyxx, r36.xyxx
          div r36.xy, r1.zzzz, r36.xyxx
          mad r32.xy, r32.xyxx, r34.yzyy, r33.zwzz
          add r33.zw, -r36.xxxy, l(0.000000, 0.000000, 1.000000, 1.000000)
          max r32.xy, r36.xyxx, r32.xyxx
          min r32.xy, r33.zwzz, r32.xyxx
          mad r32.xy, r32.xyxx, r33.xyxx, r40.yzyy
          sample_l_indexable(texture2d)(float,float,float,float) r17.xyz, r32.xyxx, t5.xyzw, s1, l(0.000000)
          mov r33.xyzw, r17.xyzw
        else
          ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r16.y, r29.w, l(220), t4.xxxx
          ine r17.xy, r32.wwww, l(4, 3, 0, 0)
          movc r17.z, r17.x, r44.z, l(1.000000)
          div r32.xy, r44.xyxx, r17.zzzz
          mad r17.z, -r37.x, l(0.500000), r44.z
          mad r17.z, -r37.x, l(0.500000), |r17.z|
          add r17.z, r17.z, l(1.000000)
          max r27.z, |r32.y|, |r32.x|
          max r17.z, r17.z, r27.z
          ge r16.y, r16.y, r17.z
          and r17.x, r17.x, r17.y
          dp2 r17.y, r32.xyxx, r32.xyxx
          mul r17.z, r32.z, r32.z
          ge r17.y, r17.z, r17.y
          and r17.y, r16.y, r17.y
          movc r16.y, r17.x, r17.y, r16.y
          mad r17.xy, r32.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
          mov r32.x, r39.w
          mov r32.y, r40.x
          add r34.yz, r32.xxyx, cb0[287].yyyy
          rcp r34.yz, r34.yyzy
          mul r36.xy, r32.xyxx, r34.yzyy
          mad r34.yz, -r34.yyzy, r32.xxyx, l(0.000000, 1.000000, 1.000000, 0.000000)
          mul r34.yz, r34.yyzy, l(0.000000, 0.500000, 0.500000, 0.000000)
          mul r37.xy, r32.xyxx, cb0[287].xxxx
          add r37.xy, r37.xyxx, r37.xyxx
          div r37.xy, r1.zzzz, r37.xyxx
          mad r17.xy, r17.xyxx, r36.xyxx, r34.yzyy
          add r34.yz, -r37.xxyx, l(0.000000, 1.000000, 1.000000, 0.000000)
          max r17.xy, r37.xyxx, r17.xyxx
          min r17.xy, r34.yzyy, r17.xyxx
          mad r17.xy, r17.xyxx, r32.xyxx, r40.yzyy
          sample_l_indexable(texture2d)(float,float,float,float) r33.xyz, r17.xyxx, t5.xyzw, s1, l(0.000000)
          and r33.w, r16.y, l(0x3f800000)
        endif
        mov r38.zw, r39.yyyz
        mul r38.xyzw, r33.wxyz, r38.xyzw
        mov r39.xyz, r38.yzwy
      else
        mov r39.x, r38.y
      endif
      mul r16.y, r34.x, r38.x
      mul r17.xyz, r16.yyyy, r39.xyzx
      ige r16.y, r37.z, l(0)
      lt r27.z, l(0.000000), r27.y
      and r16.y, r16.y, r27.z
      if_nz r16.y
        ieq r16.y, r32.w, l(1)
        ine r27.z, r32.w, l(4)
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r32.xyzw, r37.z, l(32), t9.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r33.xyzw, r37.z, l(48), t9.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r34.xyzw, r37.z, l(64), t9.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r36.xy, r37.z, l(96), t9.xyxx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r38.xyzw, r37.z, l(128), t9.xyzw
        if_nz r16.y
          itof r16.y, r37.z
          ge r29.w, |r43.x|, |r43.z|
          ge r31.w, |r43.x|, |r43.y|
          and r29.w, r29.w, r31.w
          lt r37.xyw, -r43.xyxz, l(0.000000, 0.000000, 0.000000, 0.000000)
          ge r31.w, |r43.y|, |r43.z|
          movc r37.xy, r37.xyxx, l(5.000000,3.000000,0,0), l(4.000000,2.000000,0,0)
          and r35.w, r37.w, l(0x3f800000)
          movc r31.w, r31.w, r37.y, r35.w
          movc r29.w, r29.w, r37.x, r31.w
          add r16.y, r16.y, r29.w
          ftou r16.y, r16.y
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r39.xyz, r16.y, l(0), t9.xyzx
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r43.xyz, r16.y, l(12), t9.xyzx
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r44.xyz, r16.y, l(24), t9.xyzx
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r34.xy, r16.y, l(64), t9.xyxx
        else
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r43.xyzw, r37.z, l(0), t9.wxyz
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r44.xyzw, r37.z, l(16), t9.zwxy
          mov r39.xyz, r43.yzwy
          mov r43.yz, r44.zzwz
          mov r44.z, r32.x
        endif
        lt r16.y, l(0.000000), r38.w
        if_nz r16.y
          ne r16.y, l(0.000000, 0.000000, 0.000000, 0.000000), r38.w
          movc r37.xy, r16.yyyy, cb0[85].zwzz, cb0[82].zwzz
          add r40.xyz, r38.xyzx, r42.xyzx
          mul r29.w, r45.y, r34.z
          mul r29.w, r29.w, r34.w
          mad r18.xyz, -r4.xyzx, r29.wwww, r40.xyzx
          add r40.xyz, -r32.yzwy, r18.xyzx
          dp3 r46.x, r39.xyzx, r40.xyzx
          dp3 r46.y, r43.xyzx, r40.xyzx
          dp3 r46.z, r44.xyzx, r40.xyzx
          mov r39.w, r32.y
          dp4 r40.x, r39.xyzw, r18.xyzw
          mov r43.w, r32.z
          dp4 r40.y, r43.xyzw, r18.xyzw
          mov r44.w, r32.w
          dp4 r40.z, r44.xyzw, r18.xyzw
          movc r19.xyz, r27.zzzz, r46.xyzx, r40.xyzx
          movc r18.xy, r27.zzzz, l(-1.000000,0,0,0), l(0,1.000000,0,0)
          mul r40.xy, r19.xyxx, r33.xyxx
          dp2 r40.z, r33.zwzz, r19.zwzz
          dp2 r18.x, r18.xyxx, r19.zwzz
          ne r18.y, r18.x, l(0.000000)
          and r18.y, r18.y, r27.z
          div r19.xyz, r40.xyzx, r18.xxxx
          movc r18.xyz, r18.yyyy, r19.xyzx, r40.xyzx
          mad_sat r18.xy, r18.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
          mul r18.xy, r36.xyxx, r18.xyxx
          mad r18.xy, r18.xyxx, r37.xyxx, r34.xyxx
          add r19.xy, r36.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
          mad r19.xy, r19.xyxx, r37.xyxx, r34.xyxx
          lt r19.xy, r19.xyxx, r18.xyxx
          lt r37.xy, r18.xyxx, r34.xyxx
          or r19.xy, r19.xyxx, r37.xyxx
          or r19.x, r19.y, r19.x
          movc r37.xyzw, r16.yyyy, cb0[85].zwxy, cb0[82].zwxy
          mad r19.yz, r18.xxyx, r37.zzwz, l(0.000000, 0.500000, 0.500000, 0.000000)
          round_ni r19.yz, r19.yyzy
          mad r18.xy, r18.xyxx, r37.zwzz, -r19.yzyy
          add r46.xyzw, r18.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000)
          mul r47.xw, r46.xxxz, r46.xxxz
          mad r37.zw, r47.xxxw, l(0.000000, 0.000000, 0.500000, 0.500000), -r18.xxxy
          add r40.xy, -r18.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
          min r45.xz, r18.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mad r40.xy, -r45.xzxx, r45.xzxx, r40.xyxx
          max r18.xy, r18.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mad r18.xy, -r18.xyxx, r18.xyxx, r46.ywyy
          mov r46.x, r37.z
          mov r46.y, r40.x
          mov r46.z, r18.x
          mov r46.w, r47.x
          mul r46.xyzw, r46.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220)
          mov r47.x, r37.w
          mov r47.y, r40.y
          mov r47.z, r18.y
          mul r47.xyzw, r47.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220)
          add r48.xyzw, r46.ywyw, r46.xzxz
          add r49.xyzw, r47.yyww, r47.xxzz
          div r18.xy, r46.ywyy, r48.zwzz
          add r18.xy, r18.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000)
          div r37.zw, r47.yyyw, r49.yyyw
          add r37.zw, r37.zzzw, l(0.000000, 0.000000, -1.500000, 0.500000)
          mul r46.xy, r37.xxxx, r18.xyxx
          mul r46.zw, r37.yyyy, r37.zzzw
          mad r47.xyzw, r19.yzyz, r37.xyxy, r46.xzyz
          mad r37.xyzw, r19.yzyz, r37.xyxy, r46.xwyw
          mul r46.xyzw, r48.xyzw, r49.xyzw
          sample_c_lz_indexable(texture2d)(float,float,float,float) r16.y, r47.xyxx, t7.xxxx, s2, r18.z
          sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r47.zwzz, t7.xxxx, s2, r18.z
          mul r18.x, r18.x, r46.y
          mad r16.y, r46.x, r16.y, r18.x
          sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r37.xyxx, t7.xxxx, s2, r18.z
          mad r16.y, r46.z, r18.x, r16.y
          sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r37.zwzz, t7.xxxx, s2, r18.z
          mad r16.y, r46.w, r18.x, r16.y
          movc r16.y, r19.x, l(1.000000), r16.y
        else
          ne r18.x, l(0.000000, 0.000000, 0.000000, 0.000000), r38.w
          movc r18.yz, r18.xxxx, cb0[85].zzwz, cb0[82].zzwz
          add r19.xyz, r38.xyzx, r42.xyzx
          mul r29.w, r45.y, r34.z
          mul r29.w, r29.w, r34.w
          mad r20.xyz, -r4.xyzx, r29.wwww, r19.xyzx
          add r19.xyz, -r32.yzwy, r20.xyzx
          dp3 r37.x, r39.xyzx, r19.xyzx
          dp3 r37.y, r43.xyzx, r19.xyzx
          dp3 r37.z, r44.xyzx, r19.xyzx
          mov r39.w, r32.y
          dp4 r19.x, r39.xyzw, r20.xyzw
          mov r43.w, r32.z
          dp4 r19.y, r43.xyzw, r20.xyzw
          mov r32.xyz, r44.xyzx
          dp4 r19.z, r32.xyzw, r20.xyzw
          movc r21.xyz, r27.zzzz, r37.xyzx, r19.xyzx
          movc r19.xy, r27.zzzz, l(-1.000000,0,0,0), l(0,1.000000,0,0)
          mul r20.xy, r21.xyxx, r33.xyxx
          dp2 r20.z, r33.zwzz, r21.zwzz
          dp2 r19.x, r19.xyxx, r21.zwzz
          ne r19.y, r19.x, l(0.000000)
          and r19.y, r19.y, r27.z
          div r21.xyz, r20.xyzx, r19.xxxx
          movc r19.xyz, r19.yyyy, r21.xyzx, r20.xyzx
          mad_sat r19.xy, r19.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
          mul r19.xy, r36.xyxx, r19.xyxx
          mad r19.xy, r19.xyxx, r18.yzyy, r34.xyxx
          add r20.xy, r36.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
          mad r18.yz, r20.xxyx, r18.yyzy, r34.xxyx
          lt r18.yz, r18.yyzy, r19.xxyx
          lt r20.xy, r19.xyxx, r34.xyxx
          or r18.yz, r18.yyzy, r20.xxyx
          or r18.y, r18.z, r18.y
          movc r32.xyzw, r18.xxxx, cb0[85].zwxy, cb0[82].zwxy
          mad r18.xz, r19.xxyx, r32.zzwz, l(0.500000, 0.000000, 0.500000, 0.000000)
          round_ni r18.xz, r18.xxzx
          mad r19.xy, r19.xyxx, r32.zwzz, -r18.xzxx
          add r33.xyzw, r19.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000)
          mul r34.xw, r33.xxxz, r33.xxxz
          mad r20.xy, r34.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r19.xyxx
          add r21.xy, -r19.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
          min r32.zw, r19.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
          mad r21.xy, -r32.zwzz, r32.zwzz, r21.xyxx
          max r19.xy, r19.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mad r19.xy, -r19.xyxx, r19.xyxx, r33.ywyy
          mov r33.x, r20.x
          mov r33.y, r21.x
          mov r33.z, r19.x
          mov r33.w, r34.x
          mul r33.xyzw, r33.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220)
          mov r34.x, r20.y
          mov r34.y, r21.y
          mov r34.z, r19.y
          mul r34.xyzw, r34.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220)
          add r37.xyzw, r33.ywyw, r33.xzxz
          add r38.xyzw, r34.yyww, r34.xxzz
          div r19.xy, r33.ywyy, r37.zwzz
          add r19.xy, r19.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000)
          div r20.xy, r34.ywyy, r38.ywyy
          add r20.xy, r20.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000)
          mul r33.xy, r32.xxxx, r19.xyxx
          mul r33.zw, r32.yyyy, r20.xxxy
          mad r34.xyzw, r18.xzxz, r32.xyxy, r33.xzyz
          mad r32.xyzw, r18.xzxz, r32.xyxy, r33.xwyw
          mul r33.xyzw, r37.xyzw, r38.xyzw
          sample_c_lz_indexable(texture2d)(float,float,float,float) r18.x, r34.xyxx, t6.xxxx, s2, r19.z
          sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r34.zwzz, t6.xxxx, s2, r19.z
          mul r18.z, r18.z, r33.y
          mad r18.x, r33.x, r18.x, r18.z
          sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r32.xyxx, t6.xxxx, s2, r19.z
          mad r18.x, r33.z, r18.z, r18.x
          sample_c_lz_indexable(texture2d)(float,float,float,float) r18.z, r32.zwzz, t6.xxxx, s2, r19.z
          mad r18.x, r33.w, r18.z, r18.x
          movc r16.y, r18.y, l(1.000000), r18.x
        endif
        add r16.y, r16.y, l(-1.000000)
        mad r16.y, r27.y, r16.y, l(1.000000)
      else
        mov r16.y, l(1.000000)
      endif
      mov r41.z, r40.w
      add r18.xyz, -r41.zxyz, l(1.000000, 1.000000, 1.000000, 0.000000)
      mul r19.x, r16.y, r16.y
      mul r19.x, r16.y, r19.x
      add r19.y, -r16.y, l(1.000000)
      mad r20.xyz, -r19.yyyy, r18.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      mul r21.xyz, r41.zxyz, r16.yyyy
      mad r18.xyz, r19.xxxx, r18.xyzx, r21.xyzx
      add r18.xyz, -r20.xyzx, r18.xyzx
      mad r18.xyz, r36.wwww, r18.xyzx, r20.xyzx
      mul r17.xyz, r17.xyzx, r18.xyzx
      add r13.y, -r27.w, r13.y
      mul r13.y, r13.y, r28.w
      mul r13.y, r13.y, l(-1.442695)
      exp r13.y, r13.y
      mul r13.x, r13.x, r13.y
      mad r30.xyz, r13.xxxx, r17.xyzx, r30.xyzx
    endif
    iadd r14.x, r14.x, l(1)
  endloop
  mov r13.xyz, r30.xyzx
  mov r16.y, r14.x
  loop
    uge r17.x, r16.y, r11.x
    breakc_nz r17.x
    ishl r17.x, r16.y, l(2)
    ld_structured r17.x, vThreadIDInGroupFlattened.x, r17.x, g0.xxxx
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r32.xyzw, r17.x, l(36), t4.xyzw
    ine r17.y, r32.w, l(4)
    if_nz r17.y
      break
    endif
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r18.xyz, r17.x, l(0), t4.xyzx
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r33.xyzw, r17.x, l(20), t4.xyzw
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r34.xyzw, r17.x, l(52), t4.xyzw
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r36.xyzw, r17.x, l(68), t4.xyzw
    ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r37.xyzw, r17.x, l(84), t4.zwxy
    lt r17.z, l(0.000000), r33.x
    add r19.xyz, r10.xyzx, -r18.xyzx
    dp3 r20.x, r34.xyzx, r19.xyzx
    mov r21.x, r36.w
    mov r21.yz, r37.zzwz
    dp3 r20.y, r21.xyzx, r19.xyzx
    mov r38.x, r33.w
    mov r38.yz, r32.xxyx
    dp3 r20.z, r38.xyzx, r19.xyzx
    dp3 r19.x, r34.xyzx, r4.xyzx
    dp3 r19.y, r21.xyzx, r4.xyzx
    dp3 r19.z, r38.xyzx, r4.xyzx
    rcp r39.xyz, r19.xyzx
    max r19.xyz, r39.xyzx, l(-16777216.000000, -16777216.000000, -16777216.000000, 0.000000)
    min r19.xyz, r19.xyzx, l(16777216.000000, 16777216.000000, 16777216.000000, 0.000000)
    mul r20.xyz, r19.xyzx, r20.xyzx
    mad r39.xyz, r19.xyzx, l(-1.000000, -1.000000, 0.000000, 0.000000), -r20.xyzx
    mov r15.z, r36.x
    mad r19.xyz, r15.xxzx, r19.xyzx, -r20.xyzx
    min r20.xyz, r19.xyzx, r39.xyzx
    max r19.xyz, r19.xyzx, r39.xyzx
    max r15.z, r20.y, r20.x
    max r15.z, r20.z, r15.z
    min r19.x, r19.y, r19.x
    min r19.x, r19.z, r19.x
    max r15.z, r27.w, r15.z
    min r19.x, r27.x, r19.x
    lt r19.y, r15.z, r19.x
    and r17.z, r17.z, r19.y
    if_nz r17.z
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r39.xyzw, r17.x, l(100), t4.zxyw
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r40.xyzw, r17.x, l(116), t4.xyzw
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r20.xy, r17.x, l(132), t4.xyxx
      ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r17.z, r17.x, l(144), t4.xxxx
      add r19.x, -r15.z, r19.x
      mul r19.x, r19.x, -r28.w
      mul r19.x, r19.x, l(1.442695)
      exp r19.x, r19.x
      add r19.x, -r19.x, l(1.000000)
      mul r19.y, r29.z, r19.x
      mad r19.x, -r4.w, r19.x, l(1.000000)
      log r19.x, r19.x
      add r19.z, -r27.w, r15.z
      mul r19.z, r19.z, r28.w
      mul r19.xz, r19.xxzx, l(0.693147182, 0.000000, -1.442695, 0.000000)
      exp r19.z, r19.z
      mul r19.y, r19.z, r19.y
      mad r15.z, -r19.x, r29.z, r15.z
      mad r41.xyz, r15.zzzz, r4.xyzx, r10.xyzx
      add r18.xyz, -r18.xyzx, r41.xyzx
      dp3 r38.z, r18.xyzx, r38.xyzx
      mad_sat r15.z, -r37.x, r37.x, r39.x
      mad_sat r19.x, r38.z, r33.y, r33.z
      mul r15.z, r15.z, r19.x
      mul r15.z, r15.z, r15.z
      ieq r19.x, r32.w, l(4)
      movc r19.x, r19.x, r38.z, l(1.000000)
      max r19.z, |r32.x|, l(0.001000)
      rcp r27.y, r19.z
      mad r27.z, r19.x, -r32.x, r41.y
      min r27.z, r27.z, r41.y
      add r29.w, r27.z, -cb0[74].y
      max r29.w, r29.w, l(0.000000)
      add r27.z, -r27.z, cb0[74].y
      mul r27.z, r27.y, r27.z
      max r27.z, r27.z, l(0.000000)
      min r27.z, r19.x, r27.z
      add r19.x, r19.x, -r27.z
      mul r29.w, -r29.w, cb0[75].x
      mul r29.w, r29.w, l(1.442695)
      exp r29.w, r29.w
      mul r19.x, r19.z, -r19.x
      mul r19.x, r19.x, cb0[75].x
      mul r19.x, r19.x, l(1.442695)
      exp r19.x, r19.x
      add r19.x, -r19.x, l(1.000000)
      mul r19.x, r19.x, r29.w
      mul r19.z, r27.y, cb0[75].y
      mad r19.x, r19.x, r19.z, r27.z
      mul r19.x, r19.x, cb0[74].x
      mul r19.x, r19.x, l(-1.442695)
      exp r19.x, r19.x
      mul r37.x, r15.z, r19.x
      if_nz r36.y
        dp3 r38.x, r18.xyzx, r34.xyzx
        dp3 r38.y, r18.xyzx, r21.xyzx
        ieq r15.z, r32.w, l(1)
        if_nz r15.z
          dp3 r15.z, |r38.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
          rcp r15.z, r15.z
          mul r18.xyz, r15.zzzz, r38.zxyz
          mov_sat r18.x, -r18.x
          ge r18.yz, r18.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000)
          movc r18.xy, r18.yzyy, r18.xxxx, -r18.xxxx
          mad r18.xy, r38.xyxx, r15.zzzz, r18.xyxx
          mad_sat r18.xy, r18.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
          mov r21.x, r39.w
          mov r21.y, r40.x
          add r19.xz, r21.xxyx, cb0[287].yyyy
          rcp r19.xz, r19.xxzx
          mul r27.yz, r21.xxyx, r19.xxzx
          mad r19.xz, -r19.xxzx, r21.xxyx, l(1.000000, 0.000000, 1.000000, 0.000000)
          mul r19.xz, r19.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000)
          mul r33.yz, r21.xxyx, cb0[287].xxxx
          add r33.yz, r33.yyzy, r33.yyzy
          div r33.yz, r1.zzzz, r33.yyzy
          mad r18.xy, r18.xyxx, r27.yzyy, r19.xzxx
          add r19.xz, -r33.yyzy, l(1.000000, 0.000000, 1.000000, 0.000000)
          max r18.xy, r33.yzyy, r18.xyxx
          min r18.xy, r19.xzxx, r18.xyxx
          mad r18.xy, r18.xyxx, r21.xyxx, r40.yzyy
          sample_l_indexable(texture2d)(float,float,float,float) r22.xyz, r18.xyxx, t5.xyzw, s1, l(0.000000)
          mov r42.xyzw, r22.xyzw
        else
          ld_structured_indexable(structured_buffer, stride=224)(mixed,mixed,mixed,mixed) r15.z, r17.x, l(220), t4.xxxx
          movc r17.x, r17.y, r38.z, l(1.000000)
          div r18.xy, r38.xyxx, r17.xxxx
          mad r17.x, -r36.x, l(0.500000), r38.z
          mad r17.x, -r36.x, l(0.500000), |r17.x|
          add r17.x, r17.x, l(1.000000)
          max r18.z, |r18.y|, |r18.x|
          max r17.x, r17.x, r18.z
          ge r15.z, r15.z, r17.x
          ine r17.x, r32.w, l(3)
          and r17.x, r17.y, r17.x
          dp2 r18.z, r18.xyxx, r18.xyxx
          mul r19.x, r32.z, r32.z
          ge r18.z, r19.x, r18.z
          and r18.z, r15.z, r18.z
          movc r15.z, r17.x, r18.z, r15.z
          mad r18.xy, r18.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
          mov r21.x, r39.w
          mov r21.y, r40.x
          add r19.xz, r21.xxyx, cb0[287].yyyy
          rcp r19.xz, r19.xxzx
          mul r22.xy, r21.xyxx, r19.xzxx
          mad r19.xz, -r19.xxzx, r21.xxyx, l(1.000000, 0.000000, 1.000000, 0.000000)
          mul r19.xz, r19.xxzx, l(0.500000, 0.000000, 0.500000, 0.000000)
          mul r27.yz, r21.xxyx, cb0[287].xxxx
          add r27.yz, r27.yyzy, r27.yyzy
          div r27.yz, r1.zzzz, r27.yyzy
          mad r18.xy, r18.xyxx, r22.xyxx, r19.xzxx
          add r19.xz, -r27.yyzy, l(1.000000, 0.000000, 1.000000, 0.000000)
          max r18.xy, r27.yzyy, r18.xyxx
          min r18.xy, r19.xzxx, r18.xyxx
          mad r18.xy, r18.xyxx, r21.xyxx, r40.yzyy
          sample_l_indexable(texture2d)(float,float,float,float) r42.xyz, r18.xyxx, t5.xyzw, s1, l(0.000000)
          and r42.w, r15.z, l(0x3f800000)
        endif
        mov r37.zw, r39.yyyz
        mul r37.xyzw, r37.xyzw, r42.wxyz
        mov r39.xyz, r37.yzwy
      else
        mov r39.x, r37.y
      endif
      mul r15.z, r33.x, r37.x
      mul r18.xyz, r15.zzzz, r39.xyzx
      ige r15.z, r36.z, l(0)
      lt r17.x, l(0.000000), r17.z
      and r15.z, r15.z, r17.x
      if_nz r15.z
        ieq r15.z, r32.w, l(1)
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r37.xyzw, r36.z, l(32), t9.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r38.xyzw, r36.z, l(48), t9.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r39.xyzw, r36.z, l(64), t9.xyzw
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r19.xz, r36.z, l(96), t9.xxyx
        ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r42.xyzw, r36.z, l(128), t9.xyzw
        if_nz r15.z
          itof r15.z, r36.z
          ge r17.x, |r32.y|, |r33.w|
          ge r21.x, |r32.y|, |r32.x|
          and r17.x, r17.x, r21.x
          lt r21.xy, r32.yxyy, l(0.000000, 0.000000, 0.000000, 0.000000)
          ge r21.z, |r32.x|, |r33.w|
          movc r21.xy, r21.xyxx, l(5.000000,3.000000,0,0), l(4.000000,2.000000,0,0)
          lt r22.x, r33.w, l(0.000000)
          and r22.x, r22.x, l(0x3f800000)
          movc r21.y, r21.z, r21.y, r22.x
          movc r17.x, r17.x, r21.x, r21.y
          add r15.z, r15.z, r17.x
          ftou r15.z, r15.z
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r32.xyz, r15.z, l(0), t9.xyzx
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r33.xyz, r15.z, l(12), t9.xyzx
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r43.xyz, r15.z, l(24), t9.xyzx
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r39.xy, r15.z, l(64), t9.xyxx
        else
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r33.xyzw, r36.z, l(0), t9.wxyz
          ld_structured_indexable(structured_buffer, stride=208)(mixed,mixed,mixed,mixed) r43.xyzw, r36.z, l(16), t9.zwxy
          mov r32.xyz, r33.yzwy
          mov r33.yz, r43.zzwz
          mov r43.z, r37.x
        endif
        lt r15.z, l(0.000000), r42.w
        if_nz r15.z
          ne r15.z, l(0.000000, 0.000000, 0.000000, 0.000000), r42.w
          movc r21.xy, r15.zzzz, cb0[85].zwzz, cb0[82].zwzz
          add r22.xyz, r41.xyzx, r42.xyzx
          mul r17.x, r39.z, r39.w
          mad r23.xyz, -r4.xyzx, r17.xxxx, r22.xyzx
          add r22.xyz, -r37.yzwy, r23.xyzx
          dp3 r34.x, r32.xyzx, r22.xyzx
          dp3 r34.y, r33.xyzx, r22.xyzx
          dp3 r34.z, r43.xyzx, r22.xyzx
          mov r32.w, r37.y
          dp4 r22.x, r32.xyzw, r23.xyzw
          mov r33.w, r37.z
          dp4 r22.y, r33.xyzw, r23.xyzw
          mov r43.w, r37.w
          dp4 r22.z, r43.xyzw, r23.xyzw
          movc r24.xyz, r17.yyyy, r34.xyzx, r22.xyzx
          movc r22.xy, r17.yyyy, l(-1.000000,0,0,0), l(0,1.000000,0,0)
          mul r23.xy, r24.xyxx, r38.xyxx
          dp2 r23.z, r38.zwzz, r24.zwzz
          dp2 r17.x, r22.xyxx, r24.zwzz
          ne r21.z, r17.x, l(0.000000)
          and r21.z, r17.y, r21.z
          div r22.xyz, r23.xyzx, r17.xxxx
          movc r22.xyz, r21.zzzz, r22.xyzx, r23.xyzx
          mad_sat r22.xy, r22.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
          mul r22.xy, r19.xzxx, r22.xyxx
          mad r22.xy, r22.xyxx, r21.xyxx, r39.xyxx
          add r23.xy, r19.xzxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
          mad r21.xy, r23.xyxx, r21.xyxx, r39.xyxx
          lt r21.xy, r21.xyxx, r22.xyxx
          lt r23.xy, r22.xyxx, r39.xyxx
          or r21.xy, r21.xyxx, r23.xyxx
          or r17.x, r21.y, r21.x
          movc r36.xyzw, r15.zzzz, cb0[85].zwxy, cb0[82].zwxy
          mad r21.xy, r22.xyxx, r36.zwzz, l(0.500000, 0.500000, 0.000000, 0.000000)
          round_ni r21.xy, r21.xyxx
          mad r22.xy, r22.xyxx, r36.zwzz, -r21.xyxx
          add r44.xyzw, r22.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000)
          mul r45.xw, r44.xxxz, r44.xxxz
          mad r23.xy, r45.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r22.xyxx
          add r24.xy, -r22.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
          min r27.yz, r22.xxyx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mad r24.xy, -r27.yzyy, r27.yzyy, r24.xyxx
          max r22.xy, r22.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mad r22.xy, -r22.xyxx, r22.xyxx, r44.ywyy
          mov r44.x, r23.x
          mov r44.y, r24.x
          mov r44.z, r22.x
          mov r44.w, r45.x
          mul r44.xyzw, r44.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220)
          mov r45.x, r23.y
          mov r45.y, r24.y
          mov r45.z, r22.y
          mul r45.xyzw, r45.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220)
          add r46.xyzw, r44.ywyw, r44.xzxz
          add r47.xyzw, r45.yyww, r45.xxzz
          div r22.xy, r44.ywyy, r46.zwzz
          add r22.xy, r22.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000)
          div r23.xy, r45.ywyy, r47.ywyy
          add r23.xy, r23.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000)
          mul r44.xy, r36.xxxx, r22.xyxx
          mul r44.zw, r36.yyyy, r23.xxxy
          mad r45.xyzw, r21.xyxy, r36.xyxy, r44.xzyz
          mad r36.xyzw, r21.xyxy, r36.xyxy, r44.xwyw
          mul r44.xyzw, r46.xyzw, r47.xyzw
          sample_c_lz_indexable(texture2d)(float,float,float,float) r15.z, r45.xyxx, t7.xxxx, s2, r22.z
          sample_c_lz_indexable(texture2d)(float,float,float,float) r21.x, r45.zwzz, t7.xxxx, s2, r22.z
          mul r21.x, r21.x, r44.y
          mad r15.z, r44.x, r15.z, r21.x
          sample_c_lz_indexable(texture2d)(float,float,float,float) r21.x, r36.xyxx, t7.xxxx, s2, r22.z
          mad r15.z, r44.z, r21.x, r15.z
          sample_c_lz_indexable(texture2d)(float,float,float,float) r21.x, r36.zwzz, t7.xxxx, s2, r22.z
          mad r15.z, r44.w, r21.x, r15.z
          movc r15.z, r17.x, l(1.000000), r15.z
        else
          ne r17.x, l(0.000000, 0.000000, 0.000000, 0.000000), r42.w
          movc r21.xy, r17.xxxx, cb0[85].zwzz, cb0[82].zwzz
          add r22.xyz, r41.xyzx, r42.xyzx
          mul r21.z, r39.z, r39.w
          mad r25.xyz, -r4.xyzx, r21.zzzz, r22.xyzx
          add r22.xyz, -r37.yzwy, r25.xyzx
          dp3 r23.x, r32.xyzx, r22.xyzx
          dp3 r23.y, r33.xyzx, r22.xyzx
          dp3 r23.z, r43.xyzx, r22.xyzx
          mov r32.w, r37.y
          dp4 r22.x, r32.xyzw, r25.xyzw
          mov r33.w, r37.z
          dp4 r22.y, r33.xyzw, r25.xyzw
          mov r37.xyz, r43.xyzx
          dp4 r22.z, r37.xyzw, r25.xyzw
          movc r26.xyz, r17.yyyy, r23.xyzx, r22.xyzx
          movc r22.xy, r17.yyyy, l(-1.000000,0,0,0), l(0,1.000000,0,0)
          mul r23.xy, r26.xyxx, r38.xyxx
          dp2 r23.z, r38.zwzz, r26.zwzz
          dp2 r21.z, r22.xyxx, r26.zwzz
          ne r22.x, r21.z, l(0.000000)
          and r17.y, r17.y, r22.x
          div r22.xyz, r23.xyzx, r21.zzzz
          movc r22.xyz, r17.yyyy, r22.xyzx, r23.xyzx
          mad_sat r22.xy, r22.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
          mul r22.xy, r19.xzxx, r22.xyxx
          mad r22.xy, r22.xyxx, r21.xyxx, r39.xyxx
          add r19.xz, r19.xxzx, l(-0.500000, 0.000000, -0.500000, 0.000000)
          mad r19.xz, r19.xxzx, r21.xxyx, r39.xxyx
          lt r19.xz, r19.xxzx, r22.xxyx
          lt r21.xy, r22.xyxx, r39.xyxx
          or r19.xz, r19.xxzx, r21.xxyx
          or r17.y, r19.z, r19.x
          movc r32.xyzw, r17.xxxx, cb0[85].zwxy, cb0[82].zwxy
          mad r19.xz, r22.xxyx, r32.zzwz, l(0.500000, 0.000000, 0.500000, 0.000000)
          round_ni r19.xz, r19.xxzx
          mad r21.xy, r22.xyxx, r32.zwzz, -r19.xzxx
          add r33.xyzw, r21.xxyy, l(0.500000, 1.000000, 0.500000, 1.000000)
          mul r36.xw, r33.xxxz, r33.xxxz
          mad r22.xy, r36.xwxx, l(0.500000, 0.500000, 0.000000, 0.000000), -r21.xyxx
          add r23.xy, -r21.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
          min r24.xy, r21.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mad r23.xy, -r24.xyxx, r24.xyxx, r23.xyxx
          max r21.xy, r21.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
          mad r21.xy, -r21.xyxx, r21.xyxx, r33.ywyy
          mov r33.x, r22.x
          mov r33.y, r23.x
          mov r33.z, r21.x
          mov r33.w, r36.x
          mul r33.xyzw, r33.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220)
          mov r36.x, r22.y
          mov r36.y, r23.y
          mov r36.z, r21.y
          mul r36.xyzw, r36.xyzw, l(0.444440, 0.444440, 0.444440, 0.222220)
          add r37.xyzw, r33.ywyw, r33.xzxz
          add r38.xyzw, r36.yyww, r36.xxzz
          div r21.xy, r33.ywyy, r37.zwzz
          add r21.xy, r21.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000)
          div r22.xy, r36.ywyy, r38.ywyy
          add r22.xy, r22.xyxx, l(-1.500000, 0.500000, 0.000000, 0.000000)
          mul r33.xy, r32.xxxx, r21.xyxx
          mul r33.zw, r32.yyyy, r22.xxxy
          mad r36.xyzw, r19.xzxz, r32.xyxy, r33.xzyz
          mad r32.xyzw, r19.xzxz, r32.xyxy, r33.xwyw
          mul r33.xyzw, r37.xyzw, r38.xyzw
          sample_c_lz_indexable(texture2d)(float,float,float,float) r17.x, r36.xyxx, t6.xxxx, s2, r22.z
          sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r36.zwzz, t6.xxxx, s2, r22.z
          mul r19.x, r19.x, r33.y
          mad r17.x, r33.x, r17.x, r19.x
          sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r32.xyxx, t6.xxxx, s2, r22.z
          mad r17.x, r33.z, r19.x, r17.x
          sample_c_lz_indexable(texture2d)(float,float,float,float) r19.x, r32.zwzz, t6.xxxx, s2, r22.z
          mad r17.x, r33.w, r19.x, r17.x
          movc r15.z, r17.y, l(1.000000), r17.x
        endif
        add r15.z, r15.z, l(-1.000000)
        mad r15.z, r17.z, r15.z, l(1.000000)
      else
        mov r15.z, l(1.000000)
      endif
      mov r20.z, r40.w
      add r17.xyz, -r20.zxyz, l(1.000000, 1.000000, 1.000000, 0.000000)
      mul r19.x, r15.z, r15.z
      mul r19.x, r15.z, r19.x
      add r19.z, -r15.z, l(1.000000)
      mad r21.xyz, -r19.zzzz, r17.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      mul r20.xyz, r20.zxyz, r15.zzzz
      mad r17.xyz, r19.xxxx, r17.xyzx, r20.xyzx
      add r17.xyz, -r21.xyzx, r17.xyzx
      mad r17.xyz, r34.wwww, r17.xyzx, r21.xyzx
      mul r17.xyz, r17.xyzx, r18.xyzx
      mad r13.xyz, r19.yyyy, r17.xyzx, r13.xyzx
    endif
    iadd r16.y, r16.y, l(1)
  endloop
  add r17.xyz, r13.xyzx, r35.xyzx
  mul r15.z, r16.w, r28.w
  mul r16.y, r14.w, l(-1.442695)
  exp r16.y, r16.y
  mad r16.w, -r29.z, r29.x, r29.z
  mul r18.xyz, r11.yzwy, r16.wwww
  mul r19.xyz, r28.xyzx, r16.yyyy
  mad r17.xyz, r17.xyzx, l(0.0795774683, 0.0795774683, 0.0795774683, 0.000000), r18.xyzx
  mad r8.yzw, r19.xxyz, r17.xxyz, r8.yyzw
  mad r28.w, r15.z, l(0.500000), r14.w
  mul r16.y, r28.w, l(-1.442695)
  exp r16.y, r16.y
  add r16.y, -r16.y, l(1.000000)
  ge r16.w, r16.y, l(5.960464478E-08)
  rcp r16.y, r16.y
  mul r16.y, r16.y, r28.w
  movc r16.y, r16.w, r16.y, l(1.000000)
  mul r28.xyz, r8.yzwy, r16.yyyy
  mul r32.xyzw, r12.xyzw, r28.xyzw
  store_uav_typed u0.xyzw, r0.xyzz, r32.xyzw
  mad r14.w, r15.z, l(0.500000), r28.w
  mul r15.z, r27.w, l(0.990000)
  lt r15.z, r1.w, r15.z
  if_nz r15.z
    break
  endif
  mov r27.w, r15.w
  iadd r15.y, r15.y, l(1)
endloop
mov r1.x, r15.y
loop
  uge r1.y, r1.x, cb0[81].x
  breakc_nz r1.y
  imad r0.zw, cb0[81].xxxx, vThreadID.zzzz, r1.xxxx
  store_uav_typed u0.xyzw, r0.xyzw, l(0,0,0,0)
  iadd r1.x, r1.x, l(1)
endloop
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.164 on Sun Nov  8 13:34:32 2026
// groupshared struct { float val[48]; } g0[64];
// Texture2DArray<float4> t12 : register(t12);
//
// Texture3D<float4> t11 : register(t11);
//
// struct t10_t {
//   float val[24];
// };
// StructuredBuffer<t10_t> t10 : register(t10);
//
// struct t9_t {
//   float val[52];
// };
// StructuredBuffer<t9_t> t9 : register(t9);
//
// Texture2D<float4> t8 : register(t8);
//
// Texture2D<float4> t7 : register(t7);
//
// Texture2D<float4> t6 : register(t6);
//
// Texture2D<float4> t5 : register(t5);
//
// struct t4_t {
//   float val[56];
// };
// StructuredBuffer<t4_t> t4 : register(t4);
//
// struct t3_t {
//   float val[57];
// };
// StructuredBuffer<t3_t> t3 : register(t3);
//
// struct t2_t {
//   float val[1];
// };
// StructuredBuffer<t2_t> t2 : register(t2);
//
// Texture2D<float4> t1 : register(t1);
//
// Texture2DArray<float4> t0 : register(t0);
//
// SamplerComparisonState s2_s : register(s2);
//
// SamplerState s1_s : register(s1);
//
// SamplerState s0_s : register(s0);
//
// cbuffer cb4 : register(b4)
// {
//   float4 cb4[35];
// }
//
// cbuffer cb3 : register(b3)
// {
//   float4 cb3[12];
// }
//
// cbuffer cb2 : register(b2)
// {
//   float4 cb2[25];
// }
//
// cbuffer cb1 : register(b1)
// {
//   float4 cb1[100];
// }
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[291];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main)
// {
//   const float4 icb[] = { { 1.000000, 0, 0, 0},
//                               { 0, 1.000000, 0, 0},
//                               { 0, 0, 1.000000, 0},
//                               { 0, 0, 0, 1.000000} };
// // 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,r21,r22,r23,r24,r25,r26,r27,r28,r29,r30,r31,r32,r33,r34,r35,r36,r37,r38,r39,r40,r41,r42,r43,r44,r45,r46,r47,r48,r49;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_thread_group 8, 8, 1
//   r0.xy = mad((int2)vThreadGroupID.xy, int2(8,8), (int2)vThreadIDInGroup.xy);
//   r1.x = (uint)vThreadID.z << 2;
//   r2.x = cb1[r1.x+0].z;
//   r2.y = cb1[r1.x+1].z;
//   r2.z = cb1[r1.x+2].z;
//   r1.yz = (uint2)r0.xy;
//   r3.xy = float2(0.5,0.5) + r1.yz;
//   r3.zw = float2(1,1);
//   r4.x = dot(-r3.xyww, cb2[r1.x+0].xyzw);
//   r4.y = dot(-r3.xyww, cb2[r1.x+1].xyzw);
//   r4.z = dot(-r3.xyzw, cb2[r1.x+2].xyzw);
//   r1.w = dot(r4.xyz, r4.xyz);
//   r1.w = rsqrt(r1.w);
//   r4.xyz = r4.xyz * r1.www;
//   r1.w = dot(r4.xyz, -r2.xyz);
//   r2.x = cb0[290].x / r1.w;
//   r2.yz = cb2[18].xx * r3.xy;
//   r5.xy = (uint2)r2.yz;
//   r2.yz = (uint2)r5.xy >> int2(6,6);
//   r2.y = mad(asint(cb2[24].x), (int)r2.z, (int)r2.y);
//   r2.z = asint(cb2[24].y) * asint(cb2[24].x);
//   r2.y = min((uint)r2.y, (uint)r2.z);
//   r5.z = vThreadID.z;
//   r5.w = 0;
//   r2.z = t0.Load(r5.xyzw).x;
//   r2.w = cmp(0 < r2.z);
//   if (r2.w != 0) {
//     r3.xy = cb0[76].zw * r3.xy;
//     r2.z = cb0[45].z * r2.z + cb0[45].w;
//     r2.z = 1 / r2.z;
//     r1.w = rcp(r1.w);
//     r2.z = r2.z * r1.w;
//     r3.xy = cb0[43].xy * r3.xy;
//     r3.z = (uint)vThreadID.z;
//     r3.xyzw = t12.Gather(s0_s, r3.xyz).xyzw;
//     r3.xyzw = r3.xyzw * r1.wwww;
//     r1.w = max(r3.x, r3.y);
//     r1.w = max(r1.w, r3.z);
//     r1.w = max(r1.w, r3.w);
//   } else {
//     r2.z = 0x7f800000;
//     r1.w = 0x7f800000;
//   }
//   r3.x = t10[0].val[0/4];
//   r3.y = t10[0].val[0/4+1];
//   r3.z = t10[0].val[0/4+2];
//   r3.w = t10[0].val[0/4+3];
//   r5.x = t10[0].val[16/4];
//   r5.y = t10[0].val[16/4+1];
//   r5.z = t10[0].val[16/4+2];
//   r5.w = t10[0].val[16/4+3];
//   r6.x = t10[0].val[32/4];
//   r6.y = t10[0].val[32/4+1];
//   r6.z = t10[0].val[32/4+2];
//   r6.w = t10[0].val[32/4+3];
//   r7.x = t10[0].val[48/4];
//   r7.y = t10[0].val[48/4+1];
//   r7.z = t10[0].val[48/4+2];
//   r7.w = t10[0].val[48/4+3];
//   r8.x = t10[0].val[76/4];
//   r8.y = t10[0].val[76/4+1];
//   r8.z = t10[0].val[76/4+2];
//   r8.w = t10[0].val[76/4+3];
//   r9.w = t10[0].val[92/4];
//   r2.w = vThreadID.z;
//   r10.xyz = cb1[r2.w+98].xyz + cb1[r1.x+11].xyz;
//   r10.w = (int)vThreadID.z * asint(cb2[24].x);
//   r2.y = mad((int)r10.w, asint(cb2[24].y), (int)r2.y);
//   r10.w = (uint)r2.y << 9;
//   r10.w = t2[r10.w].val[0/4];
//   r10.w = min(512, (uint)r10.w);
//   bitmask.y = ((~(-1 << 23)) << 9) & 0xffffffff;  r2.y = (((uint)r2.y << 9) & bitmask.y) | ((uint)1 & ~bitmask.y);
//   r11.y = cb4[34].z;
//   r11.xz = float2(0,0);
//   while (true) {
//     r11.w = cmp((uint)r11.z >= (uint)r10.w);
//     if (r11.w != 0) break;
//     r11.w = (int)r2.y + (int)r11.z;
//     r11.w = t2[r11.w].val[0/4];
//     r12.x = t4[r11.w].val[20/4];
//     r12.x = cmp(0 < r12.x);
//     r12.y = cmp((int)r11.x < 48);
//     r12.x = r12.y ? r12.x : 0;
//     r12.y = cmp((uint)r11.w < (uint)r11.y);
//     r12.x = r12.y ? r12.x : 0;
//     if (r12.x != 0) {
//       r12.x = (int)r11.x + 1;
//       r12.z = (uint)r11.x << 2;
//       g0[vThreadIDInGroupFlattened.x].val[r12.z/4] = r11.w;
//     } else {
//       r12.x = r11.x;
//     }
//     r11.w = cmp((uint)r11.w >= (uint)r11.y);
//     if (r11.w != 0) {
//       r11.x = r12.x;
//       break;
//     }
//     r11.z = (int)r11.z + 1;
//     r12.y = r11.y;
//     r11.xy = r12.xy;
//   }
//   r2.y = cb0[80].x + cb0[80].z;
//   r2.y = max(r2.x, r2.y);
//   r4.w = 1;
//   r12.x = dot(cb2[11].xyzw, r4.xyzw);
//   r12.y = dot(cb2[12].xyzw, r4.xyzw);
//   r12.z = dot(cb2[13].xyzw, r4.xyzw);
//   r13.xyzw = r4.xyzz * r4.yzzx;
//   r14.x = dot(cb2[14].xyzw, r13.xyzw);
//   r14.y = dot(cb2[15].xyzw, r13.xyzw);
//   r14.z = dot(cb2[16].xyzw, r13.xyzw);
//   r4.w = r4.y * r4.y;
//   r4.w = r4.x * r4.x + -r4.w;
//   r11.yzw = cb2[17].xyz * r4.www + r14.xyz;
//   r11.yzw = r12.xyz + r11.yzw;
//   r4.w = (uint)vThreadIDInGroup.y << 10;
//   r4.w = mad((int)vThreadGroupID.y, 8192, (int)r4.w);
//   r4.w = (int)r0.y + (int)r4.w;
//   r10.w = (uint)r4.w >> 6;
//   r4.w = (int)r4.w ^ (int)r10.w;
//   r4.w = (int)r4.w * 9;
//   r10.w = (uint)r4.w >> 11;
//   r4.w = (int)r4.w ^ (int)r10.w;
//   r4.w = (int)r4.w * 0x00008001;
//   r4.w = (int)r0.x ^ (int)r4.w;
//   r4.w = (int)r4.w * 1025;
//   r10.w = (uint)r4.w >> 6;
//   r4.w = (int)r4.w ^ (int)r10.w;
//   r4.w = (int)r4.w * 9;
//   r10.w = (uint)r4.w >> 11;
//   r4.w = (int)r4.w ^ (int)r10.w;
//   r4.w = (int)r4.w * 0x00008001;
//   bitmask.w = ((~(-1 << 23)) << 0) & 0xffffffff;  r4.w = (((uint)r4.w << 0) & bitmask.w) | ((uint)0x3f800000 & ~bitmask.w);
//   r4.w = -0.5 + r4.w;
//   r4.w = frac(r4.w);
//   r10.w = t1.Load(float4(0,0,0,0)).x;
//   r12.xyz = cb0[282].yyy * r10.www;
//   r8.x = (int)r8.x;
//   r10.w = cmp(0.000000 == cb1[r1.x+19].w);
//   r8.x = (int)r8.x + -1;
//   r13.x = trunc(cb0[61].z);
//   r1.yz = r13.xx * float2(2.08299994,4.8670001) + r1.yz;
//   r1.y = dot(r1.yz, float2(0.0671105608,0.00583714992));
//   r1.y = frac(r1.y);
//   r1.y = 52.9829178 * r1.y;
//   r1.y = frac(r1.y);
//   r1.z = max(0, -cb0[287].z);
//   r1.z = ceil(r1.z);
//   r1.z = exp2(r1.z);
//   r0.w = 0;
//   r12.w = 1;
//   r9.xyz = r8.yzw;
//   r13.w = 1;
//   r14.y = 1;
//   r15.x = 1;
//   r16.xz = float2(1,1);
//   r17.w = 1;
//   r18.w = 1;
//   r19.w = 1;
//   r20.w = 1;
//   r21.w = 1;
//   r22.w = 1;
//   r23.w = 1;
//   r24.w = 1;
//   r25.w = 1;
//   r26.w = 1;
//   r8.yzw = float3(0,0,0);
//   r14.z = cb0[280].z;
//   r27.w = r2.y;
//   r14.w = 0;
//   r15.y = 0;
//   while (true) {
//     r15.w = cmp((uint)r15.y >= asuint(cb0[81].x));
//     if (r15.w != 0) break;
//     r0.z = mad(asint(cb0[81].x), (int)vThreadID.z, (int)r15.y);
//     r15.w = (uint)r15.y;
//     r15.w = r15.w * cb0[81].y + cb0[81].y;
//     r15.w = cb0[80].y * r15.w;
//     r15.w = exp2(r15.w);
//     r15.w = cb0[80].x * r15.w + cb0[80].z;
//     r15.w = max(r15.w, r2.x);
//     r16.w = max(r27.w, r2.z);
//     r16.w = min(r16.w, r15.w);
//     r16.w = cmp(r2.z == r16.w);
//     r28.x = 1.00010002 * r27.w;
//     r28.x = max(r28.x, r2.z);
//     r27.x = r16.w ? r28.x : r15.w;
//     r16.w = r27.x + -r27.w;
//     r28.x = cmp(0 >= r16.w);
//     if (r28.x != 0) {
//     // No code for instruction (needs manual fix):
//         store_uav_typed u0.xyzw, r0.xyzz, l(0,0,0,0)
//       r28.x = (int)r15.y + 1;
//       r27.w = r27.x;
//       r15.y = r28.x;
//       continue;
//     }
//     r28.xyzw = t11.Load(r0.xyzw).xyzw;
//     r28.w = max(1.17549435e-38, r28.w);
//     r29.x = -r28.w * r16.w;
//     r29.x = 1.44269502 * r29.x;
//     r29.x = exp2(r29.x);
//     r29.y = 1 + -r29.x;
//     r29.z = rcp(r28.w);
//     r29.w = r29.y * r29.z;
//     r29.y = -r4.w * r29.y + 1;
//     r29.y = log2(r29.y);
//     r29.y = 0.693147182 * r29.y;
//     r29.y = -r29.y * r29.z + r27.w;
//     r30.xyz = r29.yyy * r4.xyz + r10.xyz;
//     r29.y = cmp((int)r14.z >= 0);
//     if (r29.y != 0) {
//       r29.y = t3[r14.z].val[20/4];
//       r30.w = t3[r14.z].val[120/4];
//       r29.y = cmp(0 < r29.y);
//       r30.w = cmp(0 < r30.w);
//       r29.y = r29.y ? r30.w : 0;
//       if (r29.y != 0) {
//         r31.xyz = float3(0,0,0);
//         r29.y = 0;
//         r30.w = 0;
//         while (true) {
//           r31.w = cmp((uint)r29.y >= asuint(cb0[280].y));
//           if (r31.w != 0) break;
//           r32.xyzw = icb[r29.y+0].xxxx * r3.xyzw;
//           r32.xyzw = icb[r29.y+0].yyyy * r5.xyzw + r32.xyzw;
//           r32.xyzw = icb[r29.y+0].zzzz * r6.xyzw + r32.xyzw;
//           r32.xyzw = icb[r29.y+0].wwww * r7.xyzw + r32.xyzw;
//           r32.xyz = -r32.xyz + r30.xyz;
//           r31.w = dot(r32.xyz, r32.xyz);
//           r32.w = r31.w / r32.w;
//           r33.x = cmp(0 < r32.w);
//           r33.y = cmp(1 >= r32.w);
//           r33.x = r33.y ? r33.x : 0;
//           if (r33.x != 0) {
//             r31.w = sqrt(r31.w);
//             r31.xyz = r32.xyz / r31.www;
//             r30.w = r32.w;
//             break;
//           }
//           r29.y = (int)r29.y + 1;
//           r31.xyz = r32.xyz;
//           r30.w = r32.w;
//         }
//         r31.w = cmp((uint)r29.y < asuint(cb0[280].y));
//         r31.w = r31.w ? r29.y : -1;
//         if (r10.w != 0) {
//           r32.xyz = cb1[r1.x+11].xyz + -r30.xyz;
//         } else {
//           r32.x = cb1[r1.x+0].z;
//           r32.y = cb1[r1.x+1].z;
//           r32.z = cb1[r1.x+2].z;
//         }
//         r32.w = (int)r31.w;
//         r33.x = cmp(r32.w >= 0);
//         if (r33.x != 0) {
//           r33.x = t3[r14.z].val[68/4];
//           r33.y = dot(r9.xyzw, icb[r31.w+0].xyzw);
//           r33.z = cmp(0 >= r33.y);
//           r33.w = 1 + -r33.y;
//           r33.w = -r33.w + r30.w;
//           r33.w = saturate(r33.w / r33.y);
//           r33.z = r33.z ? 0 : r33.w;
//           r32.x = dot(r32.xyz, r31.xyz);
//           r32.y = -1 + r33.y;
//           r32.y = saturate(-3.33333325 * r32.y);
//           r32.z = r32.y * -2 + 3;
//           r32.y = r32.y * r32.y;
//           r32.y = r32.z * r32.y;
//           r32.y = r32.y * 512 + 8;
//           r32.x = saturate(r32.x * r32.y);
//           r32.x = r32.x * -r33.z + r33.z;
//           r34.x = t9[r33.x].val[0/4];
//           r34.y = t9[r33.x].val[0/4+1];
//           r34.z = t9[r33.x].val[0/4+2];
//           r34.w = t9[r33.x].val[0/4+3];
//           r35.x = t9[r33.x].val[16/4];
//           r35.y = t9[r33.x].val[16/4+1];
//           r35.z = t9[r33.x].val[16/4+2];
//           r35.w = t9[r33.x].val[16/4+3];
//           r36.x = t9[r33.x].val[32/4];
//           r32.y = t9[r33.x].val[76/4];
//           r33.y = t9[r33.x].val[96/4];
//           r33.z = t9[r33.x].val[96/4+1];
//           r37.x = t9[r33.x].val[128/4];
//           r37.y = t9[r33.x].val[128/4+1];
//           r37.z = t9[r33.x].val[128/4+2];
//           r32.z = (int)r31.w + (int)r33.x;
//           r38.x = t9[r32.z].val[64/4];
//           r38.y = t9[r32.z].val[64/4+1];
//           r38.z = t9[r32.z].val[64/4+2];
//           r37.xyz = r37.xyz + r30.xyz;
//           r32.y = r38.z * r32.y;
//           r39.xyz = r32.yyy * -r4.xyz;
//           r32.y = (int)r31.w + 1;
//           r32.y = min((int)r32.y, (int)r8.x);
//           r32.y = (int)r32.y;
//           r32.w = cmp(r32.w != r32.y);
//           r33.w = cmp(0 < r32.x);
//           r32.w = r32.w ? r33.w : 0;
//           r33.w = cmp(r32.x >= r1.y);
//           r32.w = r32.w ? r33.w : 0;
//           if (r32.w != 0) {
//             r32.w = (int)r33.x;
//             r32.y = r32.w + r32.y;
//             r32.y = (int)r32.y;
//             r40.x = t9[r32.y].val[48/4+2];
//             r40.y = t9[r32.y].val[48/4+3];
//             r40.z = t9[r32.y].val[48/4];
//             r40.w = t9[r32.y].val[48/4+1];
//             r41.x = t9[r32.y].val[36/4+1];
//             r41.y = t9[r32.y].val[36/4];
//             r41.z = t9[r32.y].val[36/4+2];
//             r42.x = t9[r32.y].val[64/4];
//             r42.y = t9[r32.y].val[64/4+1];
//             r42.z = t9[r32.y].val[64/4+2];
//             r32.y = r42.z / r38.z;
//             r39.xyz = r39.xyz * r32.yyy;
//             r38.xy = r42.xy;
//             r42.x = r41.y;
//             r36.y = r41.z;
//           } else {
//             r40.x = t9[r32.z].val[48/4+2];
//             r40.y = t9[r32.z].val[48/4+3];
//             r40.z = t9[r32.z].val[48/4];
//             r40.w = t9[r32.z].val[48/4+1];
//             r41.x = t9[r32.z].val[36/4+1];
//             r41.y = t9[r32.z].val[36/4];
//             r41.z = t9[r32.z].val[36/4+2];
//             r42.x = r41.y;
//             r36.y = r41.z;
//           }
//           r13.xyz = r39.xyz + r37.xyz;
//           r42.yzw = r34.xyz;
//           r32.y = dot(r42.yzwx, r13.xyzw);
//           r41.y = r34.w;
//           r41.zw = r35.xy;
//           r32.z = dot(r41.yzwx, r13.xyzw);
//           r36.zw = r35.zw;
//           r14.x = dot(r36.zwxy, r13.xyzw);
//           r13.xy = r40.zw * r32.yz;
//           r13.z = dot(r40.xy, r14.xy);
//           r13.xy = saturate(r13.xy * float2(0.5,0.5) + float2(0.5,0.5));
//           r13.xy = r13.xy * r33.yz;
//           r13.xy = r13.xy * cb0[83].zw + r38.xy;
//           r13.x = t8.Gather(s0_s, r13.xy).x;
//           r13.x = cmp(r13.x < r13.z);
//           r13.y = r13.x ? 1.000000 : 0;
//           r13.z = cmp((int)r31.w < (int)r8.x);
//           r13.x = r13.x ? 0 : 1;
//           r13.x = r32.x * r13.x + r13.y;
//           r13.x = r13.z ? r13.y : r13.x;
//         } else {
//           r13.x = 1;
//         }
//         r13.xyz = r13.xxx;
//       } else {
//         r13.xyz = float3(1,1,1);
//       }
//     } else {
//       r13.xyz = float3(1,1,1);
//     }
//     r13.xyz = float3(-1,-1,-1) + r13.xyz;
//     r32.xyz = cb1[r2.w+96].xyz + r30.xyz;
//     r32.xyz = -cb3[7].xyz + r32.xyz;
//     r14.x = dot(r32.xyz, r32.xyz);
//     r14.x = sqrt(r14.x);
//     r31.w = rcp(r14.x);
//     r32.w = cb3[0].x * r31.w;
//     r32.w = -r32.w * r32.w + 1;
//     r32.w = max(0, r32.w);
//     r32.w = sqrt(r32.w);
//     r33.xy = cb3[2].xz * r14.xx;
//     r33.zw = cb3[2].xz * cb3[0].xx + -r33.xy;
//     r33.zw = float2(1.44269502,1.44269502) * r33.zw;
//     r34.xy = r33.xy * float2(2,2) + float2(1,1);
//     r33.zw = exp2(r33.zw);
//     r35.xyzw = float4(0,0,0,0);
//     while (true) {
//       r14.x = cmp((uint)r35.w >= asuint(cb0[279].x));
//       if (r14.x != 0) break;
//       r36.x = t3[r35.w].val[20/4];
//       r36.y = t3[r35.w].val[20/4+1];
//       r36.z = t3[r35.w].val[20/4+2];
//       r36.w = t3[r35.w].val[20/4+3];
//       r14.x = cmp(0 < r36.x);
//       if (r14.x != 0) {
//         r37.x = t3[r35.w].val[36/4];
//         r37.y = t3[r35.w].val[36/4+1];
//         r37.z = t3[r35.w].val[36/4+2];
//         r37.w = t3[r35.w].val[36/4+3];
//         r38.x = t3[r35.w].val[68/4];
//         r38.y = t3[r35.w].val[68/4+1];
//         r38.z = t3[r35.w].val[68/4+2];
//         r38.w = t3[r35.w].val[68/4+3];
//         r39.x = t3[r35.w].val[88/4];
//         r39.y = t3[r35.w].val[88/4+1];
//         r39.z = t3[r35.w].val[88/4+2];
//         r40.x = t3[r35.w].val[104/4];
//         r40.y = t3[r35.w].val[104/4+1];
//         r40.z = t3[r35.w].val[104/4+2];
//         r14.x = t3[r35.w].val[120/4];
//         r34.z = t3[r35.w].val[160/4];
//         r34.w = t3[r35.w].val[168/4];
//         r39.w = max(5.96046448e-08, abs(r36.z));
//         r39.w = rcp(r39.w);
//         r40.w = cmp(-r36.z >= 0);
//         r40.w = r40.w ? r30.y : -16777216;
//         r41.x = -cb0[74].y + r40.w;
//         r41.x = max(0, r41.x);
//         r40.w = cb0[74].y + -r40.w;
//         r40.w = r40.w * r39.w;
//         r40.w = max(0, r40.w);
//         r41.x = cb0[75].x * -r41.x;
//         r41.x = 1.44269502 * r41.x;
//         r41.x = exp2(r41.x);
//         r39.w = cb0[75].y * r39.w;
//         r39.w = r41.x * r39.w + r40.w;
//         r39.w = cb0[74].x * r39.w;
//         r39.w = -1.44269502 * r39.w;
//         r39.w = exp2(r39.w);
//         r39.xyz = r39.xyz * r39.www;
//         r34.w = cmp((int)r34.w >= 0);
//         if (r34.w != 0) {
//           r34.w = dot(r32.xyz, -r36.yzw);
//           r34.w = r34.w * r31.w;
//           r36.y = cmp(r34.w >= -r32.w);
//           if (r36.y != 0) {
//             r36.y = -r34.w * r34.w + 1;
//             r36.y = max(0, r36.y);
//             r36.y = sqrt(r36.y);
//             r36.z = abs(r34.w) * abs(r34.w);
//             r41.xy = r36.zz * r33.xy;
//             r36.zw = -r36.zz * r33.xy + r34.xy;
//             r36.zw = float2(0.761642992,0.761642992) * r36.zw;
//             r41.xy = r41.xy * float2(0.273828,0.273828) + float2(1.47721004,1.47721004);
//             r41.xy = r41.xy * r33.xy;
//             r41.xy = sqrt(r41.xy);
//             r41.xy = abs(r34.ww) * r33.xy + r41.xy;
//             r41.xy = rcp(r41.xy);
//             r36.zw = r41.xy * r36.zw;
//             r36.zw = abs(r34.ww) * float2(0.5,0.5) + r36.zw;
//             r36.zw = r36.zw * r33.zw;
//             r34.w = cmp(r34.w < 0);
//             r41.xy = r36.yy * r33.xy;
//             r41.zw = cb3[2].xz * cb3[0].xx + -r41.xy;
//             r41.zw = float2(1.44269502,1.44269502) * r41.zw;
//             r41.zw = exp2(r41.zw);
//             r42.xy = rsqrt(r41.xy);
//             r36.y = dot(r41.xx, r42.xx);
//             r36.y = r42.x + r36.y;
//             r43.x = r41.z * r36.y;
//             r36.y = dot(r41.yy, r42.yy);
//             r36.y = r42.y + r36.y;
//             r43.y = r41.w * r36.y;
//             r41.xy = r43.xy * float2(1.25331402,1.25331402) + -r36.zw;
//             r36.yz = r34.ww ? r41.xy : r36.zw;
//             r36.yz = cb3[2].yw * r36.yz;
//             r34.w = cb3[10].x * r36.z;
//             r36.yzw = r36.yyy * cb3[3].xyz + r34.www;
//             r36.yzw = float3(-1.44269502,-1.44269502,-1.44269502) * r36.yzw;
//             r36.yzw = exp2(r36.yzw);
//             r36.yzw = float3(1,1,1) + -r36.yzw;
//             r34.w = r36.y + r36.z;
//             r34.w = r34.w + r36.w;
//             r39.w = 0.333333343 * r34.w;
//             r36.yzw = -r34.www * float3(0.333333343,0.333333343,0.333333343) + r36.yzw;
//             r36.yzw = r36.yzw * cb3[10].www + r39.www;
//             r36.yzw = -r36.yzw * cb3[11].xxx + float3(1,1,1);
//             r39.xyz = r39.xyz * r36.yzw;
//             r34.w = 1;
//           } else {
//             r39.xyz = float3(0,0,0);
//             r34.w = 0;
//           }
//         } else {
//           r34.w = 1;
//         }
//         if (r37.x != 0) {
//           r36.y = t3[r35.w].val[0/4];
//           r36.z = t3[r35.w].val[0/4+1];
//           r36.w = t3[r35.w].val[0/4+2];
//           r41.x = t3[r35.w].val[52/4+1];
//           r41.y = t3[r35.w].val[52/4];
//           r41.z = t3[r35.w].val[52/4+2];
//           r41.w = t3[r35.w].val[52/4+3];
//           r36.yzw = -r36.yzw + r30.xyz;
//           r42.x = dot(r36.yzw, r41.xzw);
//           r42.y = dot(r36.yzw, r38.yzw);
//           r36.yz = r42.xy * float2(0.5,0.5) + float2(0.5,0.5);
//           r36.w = cmp((int)r37.x == 2);
//           r38.yz = frac(r36.yz);
//           r36.yz = r36.ww ? r38.yz : r36.yz;
//           r38.yz = cb0[287].yy + r37.yz;
//           r38.yz = rcp(r38.yz);
//           r41.zw = r38.yz * r37.yz;
//           r38.yz = -r38.yz * r37.yz + float2(1,1);
//           r38.yz = float2(0.5,0.5) * r38.yz;
//           r42.xy = cb0[287].xx * r37.yz;
//           r42.xy = r42.xy + r42.xy;
//           r42.xy = r1.zz / r42.xy;
//           r36.yz = r36.yz * r41.zw + r38.yz;
//           r38.yz = float2(1,1) + -r42.xy;
//           r36.yz = max(r36.yz, r42.xy);
//           r36.yz = min(r36.yz, r38.yz);
//           r41.x = r37.w;
//           r36.yz = r36.yz * r37.yz + r41.xy;
//           r36.yzw = t5.SampleLevel(s1_s, r36.yz, 0).xyz;
//           r39.xyz = r39.xyz * r36.yzw;
//         }
//         r34.w = r34.w * r36.x;
//         r36.xyz = r39.xyz * r34.www;
//         r34.w = cmp((int)r38.x >= 0);
//         r36.w = cmp(0 < r14.x);
//         r34.w = r34.w ? r36.w : 0;
//         r37.xyz = r14.xxx * r13.xyz + float3(1,1,1);
//         r37.xyz = r34.www ? r37.xyz : float3(1,1,1);
//         r38.xyz = float3(1,1,1) + -r40.xyz;
//         r39.xyz = r37.xyz * r37.xyz;
//         r39.xyz = r39.xyz * r37.xyz;
//         r41.xyz = float3(1,1,1) + -r37.xyz;
//         r41.xyz = -r41.xyz * r38.xyz + float3(1,1,1);
//         r37.xyz = r37.xyz * r40.xyz;
//         r37.xyz = r39.xyz * r38.xyz + r37.xyz;
//         r37.xyz = r37.xyz + -r41.xyz;
//         r37.xyz = r34.zzz * r37.xyz + r41.xyz;
//         r36.xyz = r37.xyz * r36.xyz;
//         r35.xyz = r29.www * r36.xyz + r35.xyz;
//       }
//       r35.w = (int)r35.w + 1;
//     }
//     r13.z = r27.w;
//     r30.xyz = float3(0,0,0);
//     r14.x = 0;
//     while (true) {
//       r29.w = cmp((uint)r14.x >= (uint)r11.x);
//       if (r29.w != 0) break;
//       r29.w = (uint)r14.x << 2;
//       r29.w = g0[vThreadIDInGroupFlattened.x].val[r29.w/4];
//       r32.x = t4[r29.w].val[36/4];
//       r32.y = t4[r29.w].val[36/4+1];
//       r32.z = t4[r29.w].val[36/4+2];
//       r32.w = t4[r29.w].val[36/4+3];
//       r31.w = cmp((int)r32.w >= 4);
//       if (r31.w != 0) {
//         break;
//       }
//       r33.x = t4[r29.w].val[0/4];
//       r33.y = t4[r29.w].val[0/4+1];
//       r33.z = t4[r29.w].val[0/4+2];
//       r34.x = t4[r29.w].val[20/4];
//       r34.y = t4[r29.w].val[20/4+1];
//       r34.z = t4[r29.w].val[20/4+2];
//       r34.w = t4[r29.w].val[20/4+3];
//       r36.x = t4[r29.w].val[52/4];
//       r36.y = t4[r29.w].val[52/4+1];
//       r36.z = t4[r29.w].val[52/4+2];
//       r36.w = t4[r29.w].val[52/4+3];
//       r37.x = t4[r29.w].val[68/4];
//       r37.y = t4[r29.w].val[68/4+1];
//       r37.z = t4[r29.w].val[68/4+2];
//       r37.w = t4[r29.w].val[68/4+3];
//       r38.x = t4[r29.w].val[84/4+2];
//       r38.y = t4[r29.w].val[84/4+3];
//       r38.z = t4[r29.w].val[84/4];
//       r38.w = t4[r29.w].val[84/4+1];
//       r31.w = cmp(0 < r34.x);
//       r33.w = cmp((int)r32.w != 1);
//       if (r33.w != 0) {
//         r33.w = cmp((int)r32.w == 3);
//         r33.w = r33.w ? 0.707106769 : 1;
//         r39.xyz = r33.www * r36.xyz;
//         r40.x = r37.w;
//         r40.yz = r38.zw;
//         r40.xyz = r40.xyz * r33.www;
//         r41.xyz = -r33.xyz + r10.xyz;
//         r33.w = dot(r39.xyz, r41.xyz);
//         r35.w = dot(r40.xyz, r41.xyz);
//         r42.x = r34.w;
//         r42.yz = r32.xy;
//         r39.w = dot(r42.xyz, r41.xyz);
//         r39.x = dot(r39.xyz, r4.xyz);
//         r39.y = dot(r40.xyz, r4.xyz);
//         r39.z = dot(r42.xyz, r4.xyz);
//         r40.x = r39.y * r39.y;
//         r40.x = r39.x * r39.x + r40.x;
//         r40.x = -r39.z * r39.z + r40.x;
//         r39.y = r39.y * r35.w;
//         r39.x = r33.w * r39.x + r39.y;
//         r39.x = -r39.w * r39.z + r39.x;
//         r35.w = r35.w * r35.w;
//         r33.w = r33.w * r33.w + r35.w;
//         r33.w = -r39.w * r39.w + r33.w;
//         r35.w = r39.x + r39.x;
//         r33.w = r33.w * r40.x;
//         r33.w = 4 * r33.w;
//         r33.w = r35.w * r35.w + -r33.w;
//         r39.x = sqrt(r33.w);
//         r39.y = cmp(0 < r40.x);
//         r40.y = cmp(r40.x < 0);
//         r39.y = (int)-r39.y + (int)r40.y;
//         r39.y = (int)r39.y;
//         r40.y = -r39.y * r39.x + -r35.w;
//         r40.x = r40.x + r40.x;
//         r27.y = r40.y / r40.x;
//         r35.w = r39.y * r39.x + -r35.w;
//         r27.z = r35.w / r40.x;
//         r33.w = cmp(r33.w >= 0);
//         r39.xy = r27.yz * r39.zz + r39.ww;
//         r39.xy = cmp(r39.xy < float2(0,0));
//         r35.w = r39.y ? r39.x : 0;
//         r13.xy = r39.xx ? r27.zx : r27.yz;
//         r13.xy = r39.yy ? r13.zx : r13.xy;
//         r13.xy = max(r13.xy, r27.ww);
//         r13.xy = min(r13.xy, r27.xx);
//         r27.y = cmp(r13.y == r13.x);
//         r27.y = (int)r27.y | (int)r35.w;
//         r27.y = r27.y ? 0 : r33.w;
//         r31.w = r31.w ? r27.y : 0;
//       } else {
//         r13.xy = r27.wx;
//       }
//       if (r31.w != 0) {
//         r39.x = t4[r29.w].val[100/4+2];
//         r39.y = t4[r29.w].val[100/4];
//         r39.z = t4[r29.w].val[100/4+1];
//         r39.w = t4[r29.w].val[100/4+3];
//         r40.x = t4[r29.w].val[116/4];
//         r40.y = t4[r29.w].val[116/4+1];
//         r40.z = t4[r29.w].val[116/4+2];
//         r40.w = t4[r29.w].val[116/4+3];
//         r41.x = t4[r29.w].val[132/4];
//         r41.y = t4[r29.w].val[132/4+1];
//         r27.y = t4[r29.w].val[144/4];
//         r27.z = t4[r29.w].val[176/4];
//         r42.xyz = r33.xyz + -r10.xyz;
//         r31.w = dot(r42.xyz, r4.xyz);
//         r33.w = dot(r42.xyz, r42.xyz);
//         r33.w = -r31.w * r31.w + r33.w;
//         r33.w = r33.w + r27.z;
//         r33.w = max(5.96046448e-08, r33.w);
//         r35.w = rsqrt(r33.w);
//         r41.w = r35.w * r33.w;
//         r13.xy = -r31.ww + r13.xy;
//         r42.xy = r13.xy * r35.ww;
//         r13.x = r13.y * r35.w + -r42.x;
//         r13.y = r42.x * r42.y + 1;
//         r13.y = max(0, r13.y);
//         r13.y = rcp(r13.y);
//         r13.x = r13.x * r13.y;
//         r13.y = cmp(abs(r13.x) < 1);
//         r42.y = 1 / abs(r13.x);
//         r13.x = r13.y ? abs(r13.x) : r42.y;
//         r42.y = r13.x * r13.x;
//         r42.z = r42.y * 0.0872929022 + -0.301894993;
//         r42.y = r42.z * r42.y + 1;
//         r42.z = r42.y * r13.x;
//         r13.x = -r42.y * r13.x + 1.57079637;
//         r13.x = r13.y ? r42.z : r13.x;
//         r13.y = r13.x * r4.w;
//         sincos(r13.y, r43.x, r44.x);
//         r13.y = r42.x * r44.x + r43.x;
//         r42.x = -r42.x * r43.x + r44.x;
//         r42.x = rcp(r42.x);
//         r13.y = r42.x * r13.y;
//         r42.x = r41.w * r13.y;
//         r33.w = r42.x * r42.x + r33.w;
//         r13.x = r13.x * r35.w;
//         r13.x = r13.x * r33.w;
//         r13.y = r41.w * r13.y + r31.w;
//         r42.xyz = r13.yyy * r4.xyz + r10.xyz;
//         r33.xyz = r42.xyz + -r33.xyz;
//         r43.z = r34.w;
//         r43.xy = r32.yx;
//         r44.z = dot(r33.zyx, r43.xyz);
//         r31.w = cmp((int)r32.w == 4);
//         r16.y = r44.z * r44.z;
//         r45.y = dot(-r33.xyz, -r33.xyz);
//         r32.x = rsqrt(r45.y);
//         r45.x = r45.y * r32.x;
//         r46.xyz = -r33.zyx * r32.xxx;
//         r27.z = r45.y + r27.z;
//         r45.z = rsqrt(r27.z);
//         r43.xyz = r31.www ? -r43.xyz : r46.xyz;
//         r45.yzw = r31.www ? r16.xyz : r45.xyz;
//         r16.y = r45.w * r44.z;
//         r27.z = min(100, r45.w);
//         r32.x = r45.z * r38.x;
//         r32.x = saturate(-r32.x * r32.x + r39.x);
//         r27.z = r32.x * r27.z;
//         r16.y = saturate(r16.y * r34.y + r34.z);
//         r16.y = r27.z * r16.y;
//         r16.y = r16.y * r16.y;
//         r27.z = r31.w ? r44.z : r45.x;
//         r31.w = max(0.00100000005, abs(r43.y));
//         r32.x = rcp(r31.w);
//         r32.y = r27.z * r43.y + r42.y;
//         r32.y = min(r42.y, r32.y);
//         r33.w = -cb0[74].y + r32.y;
//         r33.w = max(0, r33.w);
//         r32.y = cb0[74].y + -r32.y;
//         r32.y = r32.y * r32.x;
//         r32.y = max(0, r32.y);
//         r32.y = min(r32.y, r27.z);
//         r27.z = -r32.y + r27.z;
//         r33.w = cb0[75].x * -r33.w;
//         r33.w = 1.44269502 * r33.w;
//         r33.w = exp2(r33.w);
//         r27.z = -r27.z * r31.w;
//         r27.z = cb0[75].x * r27.z;
//         r27.z = 1.44269502 * r27.z;
//         r27.z = exp2(r27.z);
//         r27.z = 1 + -r27.z;
//         r27.z = r33.w * r27.z;
//         r31.w = cb0[75].y * r32.x;
//         r27.z = r27.z * r31.w + r32.y;
//         r27.z = cb0[74].x * r27.z;
//         r27.z = -1.44269502 * r27.z;
//         r27.z = exp2(r27.z);
//         r38.x = r27.z * r16.y;
//         if (r37.y != 0) {
//           r44.x = dot(r33.xyz, r36.xyz);
//           r36.x = r37.w;
//           r36.yz = r38.zw;
//           r44.y = dot(r33.xyz, r36.xyz);
//           r16.y = cmp((int)r32.w == 1);
//           if (r16.y != 0) {
//             r16.y = dot(abs(r44.xyz), float3(1,1,1));
//             r16.y = rcp(r16.y);
//             r33.xyz = r44.zxy * r16.yyy;
//             r33.x = saturate(-r33.x);
//             r32.xy = cmp(r33.yz >= float2(0,0));
//             r32.xy = r32.xy ? r33.xx : -r33.xx;
//             r32.xy = r44.xy * r16.yy + r32.xy;
//             r32.xy = saturate(r32.xy * float2(0.5,0.5) + float2(0.5,0.5));
//             r33.x = r39.w;
//             r33.y = r40.x;
//             r33.zw = cb0[287].yy + r33.xy;
//             r33.zw = rcp(r33.zw);
//             r34.yz = r33.zw * r33.xy;
//             r33.zw = -r33.zw * r33.xy + float2(1,1);
//             r33.zw = float2(0.5,0.5) * r33.zw;
//             r36.xy = cb0[287].xx * r33.xy;
//             r36.xy = r36.xy + r36.xy;
//             r36.xy = r1.zz / r36.xy;
//             r32.xy = r32.xy * r34.yz + r33.zw;
//             r33.zw = float2(1,1) + -r36.xy;
//             r32.xy = max(r32.xy, r36.xy);
//             r32.xy = min(r32.xy, r33.zw);
//             r32.xy = r32.xy * r33.xy + r40.yz;
//             r17.xyz = t5.SampleLevel(s1_s, r32.xy, 0).xyz;
//             r33.xyzw = r17.xyzw;
//           } else {
//             r16.y = t4[r29.w].val[220/4];
//             r17.xy = cmp((int2)r32.ww != int2(4,3));
//             r17.z = r17.x ? r44.z : 1;
//             r32.xy = r44.xy / r17.zz;
//             r17.z = -r37.x * 0.5 + r44.z;
//             r17.z = -r37.x * 0.5 + abs(r17.z);
//             r17.z = 1 + r17.z;
//             r27.z = max(abs(r32.x), abs(r32.y));
//             r17.z = max(r27.z, r17.z);
//             r16.y = cmp(r16.y >= r17.z);
//             r17.x = r17.x ? r17.y : 0;
//             r17.y = dot(r32.xy, r32.xy);
//             r17.z = r32.z * r32.z;
//             r17.y = cmp(r17.z >= r17.y);
//             r17.y = r16.y ? r17.y : 0;
//             r16.y = r17.x ? r17.y : r16.y;
//             r17.xy = r32.xy * float2(0.5,0.5) + float2(0.5,0.5);
//             r32.x = r39.w;
//             r32.y = r40.x;
//             r34.yz = cb0[287].yy + r32.xy;
//             r34.yz = rcp(r34.yz);
//             r36.xy = r34.yz * r32.xy;
//             r34.yz = -r34.yz * r32.xy + float2(1,1);
//             r34.yz = float2(0.5,0.5) * r34.yz;
//             r37.xy = cb0[287].xx * r32.xy;
//             r37.xy = r37.xy + r37.xy;
//             r37.xy = r1.zz / r37.xy;
//             r17.xy = r17.xy * r36.xy + r34.yz;
//             r34.yz = float2(1,1) + -r37.xy;
//             r17.xy = max(r17.xy, r37.xy);
//             r17.xy = min(r17.xy, r34.yz);
//             r17.xy = r17.xy * r32.xy + r40.yz;
//             r33.xyz = t5.SampleLevel(s1_s, r17.xy, 0).xyz;
//             r33.w = (int)r16.y & 0x3f800000;
//           }
//           r38.zw = r39.yz;
//           r38.xyzw = r38.xyzw * r33.wxyz;
//           r39.xyz = r38.yzw;
//         } else {
//           r39.x = r38.y;
//         }
//         r16.y = r38.x * r34.x;
//         r17.xyz = r39.xyz * r16.yyy;
//         r16.y = cmp((int)r37.z >= 0);
//         r27.z = cmp(0 < r27.y);
//         r16.y = r16.y ? r27.z : 0;
//         if (r16.y != 0) {
//           r16.y = cmp((int)r32.w == 1);
//           r27.z = cmp((int)r32.w != 4);
//           r32.x = t9[r37.z].val[32/4];
//           r32.y = t9[r37.z].val[32/4+1];
//           r32.z = t9[r37.z].val[32/4+2];
//           r32.w = t9[r37.z].val[32/4+3];
//           r33.x = t9[r37.z].val[48/4];
//           r33.y = t9[r37.z].val[48/4+1];
//           r33.z = t9[r37.z].val[48/4+2];
//           r33.w = t9[r37.z].val[48/4+3];
//           r34.x = t9[r37.z].val[64/4];
//           r34.y = t9[r37.z].val[64/4+1];
//           r34.z = t9[r37.z].val[64/4+2];
//           r34.w = t9[r37.z].val[64/4+3];
//           r36.x = t9[r37.z].val[96/4];
//           r36.y = t9[r37.z].val[96/4+1];
//           r38.x = t9[r37.z].val[128/4];
//           r38.y = t9[r37.z].val[128/4+1];
//           r38.z = t9[r37.z].val[128/4+2];
//           r38.w = t9[r37.z].val[128/4+3];
//           if (r16.y != 0) {
//             r16.y = (int)r37.z;
//             r29.w = cmp(abs(r43.x) >= abs(r43.z));
//             r31.w = cmp(abs(r43.x) >= abs(r43.y));
//             r29.w = r29.w ? r31.w : 0;
//             r37.xyw = cmp(-r43.xyz < float3(0,0,0));
//             r31.w = cmp(abs(r43.y) >= abs(r43.z));
//             r37.xy = r37.xy ? float2(5,3) : float2(4,2);
//             r35.w = r37.w ? 1.000000 : 0;
//             r31.w = r31.w ? r37.y : r35.w;
//             r29.w = r29.w ? r37.x : r31.w;
//             r16.y = r29.w + r16.y;
//             r16.y = (uint)r16.y;
//             r39.x = t9[r16.y].val[0/4];
//             r39.y = t9[r16.y].val[0/4+1];
//             r39.z = t9[r16.y].val[0/4+2];
//             r43.x = t9[r16.y].val[12/4];
//             r43.y = t9[r16.y].val[12/4+1];
//             r43.z = t9[r16.y].val[12/4+2];
//             r44.x = t9[r16.y].val[24/4];
//             r44.y = t9[r16.y].val[24/4+1];
//             r44.z = t9[r16.y].val[24/4+2];
//             r34.x = t9[r16.y].val[64/4];
//             r34.y = t9[r16.y].val[64/4+1];
//           } else {
//             r43.x = t9[r37.z].val[0/4+3];
//             r43.y = t9[r37.z].val[0/4];
//             r43.z = t9[r37.z].val[0/4+1];
//             r43.w = t9[r37.z].val[0/4+2];
//             r44.x = t9[r37.z].val[16/4+2];
//             r44.y = t9[r37.z].val[16/4+3];
//             r44.z = t9[r37.z].val[16/4];
//             r44.w = t9[r37.z].val[16/4+1];
//             r39.xyz = r43.yzw;
//             r43.yz = r44.zw;
//             r44.z = r32.x;
//           }
//           r16.y = cmp(0 < r38.w);
//           if (r16.y != 0) {
//             r16.y = cmp(0 != r38.w);
//             r37.xy = r16.yy ? cb0[85].zw : cb0[82].zw;
//             r40.xyz = r42.xyz + r38.xyz;
//             r29.w = r34.z * r45.y;
//             r29.w = r34.w * r29.w;
//             r18.xyz = -r4.xyz * r29.www + r40.xyz;
//             r40.xyz = r18.xyz + -r32.yzw;
//             r46.x = dot(r39.xyz, r40.xyz);
//             r46.y = dot(r43.xyz, r40.xyz);
//             r46.z = dot(r44.xyz, r40.xyz);
//             r39.w = r32.y;
//             r40.x = dot(r39.xyzw, r18.xyzw);
//             r43.w = r32.z;
//             r40.y = dot(r43.xyzw, r18.xyzw);
//             r44.w = r32.w;
//             r40.z = dot(r44.xyzw, r18.xyzw);
//             r19.xyz = r27.zzz ? r46.xyz : r40.xyz;
//             r18.xy = r27.zz ? float2(-1,0) : float2(0,1);
//             r40.xy = r33.xy * r19.xy;
//             r40.z = dot(r33.zw, r19.zw);
//             r18.x = dot(r18.xy, r19.zw);
//             r18.y = cmp(r18.x != 0.000000);
//             r18.y = r18.y ? r27.z : 0;
//             r19.xyz = r40.xyz / r18.xxx;
//             r18.xyz = r18.yyy ? r19.xyz : r40.xyz;
//             r18.xy = saturate(r18.xy * float2(0.5,0.5) + float2(0.5,0.5));
//             r18.xy = r18.xy * r36.xy;
//             r18.xy = r18.xy * r37.xy + r34.xy;
//             r19.xy = float2(-0.5,-0.5) + r36.xy;
//             r19.xy = r19.xy * r37.xy + r34.xy;
//             r19.xy = cmp(r19.xy < r18.xy);
//             r37.xy = cmp(r18.xy < r34.xy);
//             r19.xy = (int2)r19.xy | (int2)r37.xy;
//             r19.x = (int)r19.y | (int)r19.x;
//             r37.xyzw = r16.yyyy ? cb0[85].zwxy : cb0[82].zwxy;
//             r19.yz = r18.xy * r37.zw + float2(0.5,0.5);
//             r19.yz = floor(r19.yz);
//             r18.xy = r18.xy * r37.zw + -r19.yz;
//             r46.xyzw = float4(0.5,1,0.5,1) + r18.xxyy;
//             r47.xw = r46.xz * r46.xz;
//             r37.zw = r47.xw * float2(0.5,0.5) + -r18.xy;
//             r40.xy = float2(1,1) + -r18.xy;
//             r45.xz = min(float2(0,0), r18.xy);
//             r40.xy = -r45.xz * r45.xz + r40.xy;
//             r18.xy = max(float2(0,0), r18.xy);
//             r18.xy = -r18.xy * r18.xy + r46.yw;
//             r46.x = r37.z;
//             r46.y = r40.x;
//             r46.z = r18.x;
//             r46.w = r47.x;
//             r46.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r46.xyzw;
//             r47.x = r37.w;
//             r47.y = r40.y;
//             r47.z = r18.y;
//             r47.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r47.xyzw;
//             r48.xyzw = r46.xzxz + r46.ywyw;
//             r49.xyzw = r47.xxzz + r47.yyww;
//             r18.xy = r46.yw / r48.zw;
//             r18.xy = float2(-1.5,0.5) + r18.xy;
//             r37.zw = r47.yw / r49.yw;
//             r37.zw = float2(-1.5,0.5) + r37.zw;
//             r46.xy = r18.xy * r37.xx;
//             r46.zw = r37.zw * r37.yy;
//             r47.xyzw = r19.yzyz * r37.xyxy + r46.xzyz;
//             r37.xyzw = r19.yzyz * r37.xyxy + r46.xwyw;
//             r46.xyzw = r49.xyzw * r48.xyzw;
//             r16.y = t7.SampleCmpLevelZero(s2_s, r47.xy, r18.z).x;
//             r18.x = t7.SampleCmpLevelZero(s2_s, r47.zw, r18.z).x;
//             r18.x = r46.y * r18.x;
//             r16.y = r46.x * r16.y + r18.x;
//             r18.x = t7.SampleCmpLevelZero(s2_s, r37.xy, r18.z).x;
//             r16.y = r46.z * r18.x + r16.y;
//             r18.x = t7.SampleCmpLevelZero(s2_s, r37.zw, r18.z).x;
//             r16.y = r46.w * r18.x + r16.y;
//             r16.y = r19.x ? 1 : r16.y;
//           } else {
//             r18.x = cmp(0 != r38.w);
//             r18.yz = r18.xx ? cb0[85].zw : cb0[82].zw;
//             r19.xyz = r42.xyz + r38.xyz;
//             r29.w = r34.z * r45.y;
//             r29.w = r34.w * r29.w;
//             r20.xyz = -r4.xyz * r29.www + r19.xyz;
//             r19.xyz = r20.xyz + -r32.yzw;
//             r37.x = dot(r39.xyz, r19.xyz);
//             r37.y = dot(r43.xyz, r19.xyz);
//             r37.z = dot(r44.xyz, r19.xyz);
//             r39.w = r32.y;
//             r19.x = dot(r39.xyzw, r20.xyzw);
//             r43.w = r32.z;
//             r19.y = dot(r43.xyzw, r20.xyzw);
//             r32.xyz = r44.xyz;
//             r19.z = dot(r32.xyzw, r20.xyzw);
//             r21.xyz = r27.zzz ? r37.xyz : r19.xyz;
//             r19.xy = r27.zz ? float2(-1,0) : float2(0,1);
//             r20.xy = r33.xy * r21.xy;
//             r20.z = dot(r33.zw, r21.zw);
//             r19.x = dot(r19.xy, r21.zw);
//             r19.y = cmp(r19.x != 0.000000);
//             r19.y = r19.y ? r27.z : 0;
//             r21.xyz = r20.xyz / r19.xxx;
//             r19.xyz = r19.yyy ? r21.xyz : r20.xyz;
//             r19.xy = saturate(r19.xy * float2(0.5,0.5) + float2(0.5,0.5));
//             r19.xy = r19.xy * r36.xy;
//             r19.xy = r19.xy * r18.yz + r34.xy;
//             r20.xy = float2(-0.5,-0.5) + r36.xy;
//             r18.yz = r20.xy * r18.yz + r34.xy;
//             r18.yz = cmp(r18.yz < r19.xy);
//             r20.xy = cmp(r19.xy < r34.xy);
//             r18.yz = (int2)r18.yz | (int2)r20.xy;
//             r18.y = (int)r18.z | (int)r18.y;
//             r32.xyzw = r18.xxxx ? cb0[85].zwxy : cb0[82].zwxy;
//             r18.xz = r19.xy * r32.zw + float2(0.5,0.5);
//             r18.xz = floor(r18.xz);
//             r19.xy = r19.xy * r32.zw + -r18.xz;
//             r33.xyzw = float4(0.5,1,0.5,1) + r19.xxyy;
//             r34.xw = r33.xz * r33.xz;
//             r20.xy = r34.xw * float2(0.5,0.5) + -r19.xy;
//             r21.xy = float2(1,1) + -r19.xy;
//             r32.zw = min(float2(0,0), r19.xy);
//             r21.xy = -r32.zw * r32.zw + r21.xy;
//             r19.xy = max(float2(0,0), r19.xy);
//             r19.xy = -r19.xy * r19.xy + r33.yw;
//             r33.x = r20.x;
//             r33.y = r21.x;
//             r33.z = r19.x;
//             r33.w = r34.x;
//             r33.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r33.xyzw;
//             r34.x = r20.y;
//             r34.y = r21.y;
//             r34.z = r19.y;
//             r34.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r34.xyzw;
//             r37.xyzw = r33.xzxz + r33.ywyw;
//             r38.xyzw = r34.xxzz + r34.yyww;
//             r19.xy = r33.yw / r37.zw;
//             r19.xy = float2(-1.5,0.5) + r19.xy;
//             r20.xy = r34.yw / r38.yw;
//             r20.xy = float2(-1.5,0.5) + r20.xy;
//             r33.xy = r19.xy * r32.xx;
//             r33.zw = r20.xy * r32.yy;
//             r34.xyzw = r18.xzxz * r32.xyxy + r33.xzyz;
//             r32.xyzw = r18.xzxz * r32.xyxy + r33.xwyw;
//             r33.xyzw = r38.xyzw * r37.xyzw;
//             r18.x = t6.SampleCmpLevelZero(s2_s, r34.xy, r19.z).x;
//             r18.z = t6.SampleCmpLevelZero(s2_s, r34.zw, r19.z).x;
//             r18.z = r33.y * r18.z;
//             r18.x = r33.x * r18.x + r18.z;
//             r18.z = t6.SampleCmpLevelZero(s2_s, r32.xy, r19.z).x;
//             r18.x = r33.z * r18.z + r18.x;
//             r18.z = t6.SampleCmpLevelZero(s2_s, r32.zw, r19.z).x;
//             r18.x = r33.w * r18.z + r18.x;
//             r16.y = r18.y ? 1 : r18.x;
//           }
//           r16.y = -1 + r16.y;
//           r16.y = r27.y * r16.y + 1;
//         } else {
//           r16.y = 1;
//         }
//         r41.z = r40.w;
//         r18.xyz = float3(1,1,1) + -r41.zxy;
//         r19.x = r16.y * r16.y;
//         r19.x = r19.x * r16.y;
//         r19.y = 1 + -r16.y;
//         r20.xyz = -r19.yyy * r18.xyz + float3(1,1,1);
//         r21.xyz = r16.yyy * r41.zxy;
//         r18.xyz = r19.xxx * r18.xyz + r21.xyz;
//         r18.xyz = r18.xyz + -r20.xyz;
//         r18.xyz = r36.www * r18.xyz + r20.xyz;
//         r17.xyz = r18.xyz * r17.xyz;
//         r13.y = r13.y + -r27.w;
//         r13.y = r28.w * r13.y;
//         r13.y = -1.44269502 * r13.y;
//         r13.y = exp2(r13.y);
//         r13.x = r13.y * r13.x;
//         r30.xyz = r13.xxx * r17.xyz + r30.xyz;
//       }
//       r14.x = (int)r14.x + 1;
//     }
//     r13.xyz = r30.xyz;
//     r16.y = r14.x;
//     while (true) {
//       r17.x = cmp((uint)r16.y >= (uint)r11.x);
//       if (r17.x != 0) break;
//       r17.x = (uint)r16.y << 2;
//       r17.x = g0[vThreadIDInGroupFlattened.x].val[r17.x/4];
//       r32.x = t4[r17.x].val[36/4];
//       r32.y = t4[r17.x].val[36/4+1];
//       r32.z = t4[r17.x].val[36/4+2];
//       r32.w = t4[r17.x].val[36/4+3];
//       r17.y = cmp((int)r32.w != 4);
//       if (r17.y != 0) {
//         break;
//       }
//       r18.x = t4[r17.x].val[0/4];
//       r18.y = t4[r17.x].val[0/4+1];
//       r18.z = t4[r17.x].val[0/4+2];
//       r33.x = t4[r17.x].val[20/4];
//       r33.y = t4[r17.x].val[20/4+1];
//       r33.z = t4[r17.x].val[20/4+2];
//       r33.w = t4[r17.x].val[20/4+3];
//       r34.x = t4[r17.x].val[52/4];
//       r34.y = t4[r17.x].val[52/4+1];
//       r34.z = t4[r17.x].val[52/4+2];
//       r34.w = t4[r17.x].val[52/4+3];
//       r36.x = t4[r17.x].val[68/4];
//       r36.y = t4[r17.x].val[68/4+1];
//       r36.z = t4[r17.x].val[68/4+2];
//       r36.w = t4[r17.x].val[68/4+3];
//       r37.x = t4[r17.x].val[84/4+2];
//       r37.y = t4[r17.x].val[84/4+3];
//       r37.z = t4[r17.x].val[84/4];
//       r37.w = t4[r17.x].val[84/4+1];
//       r17.z = cmp(0 < r33.x);
//       r19.xyz = -r18.xyz + r10.xyz;
//       r20.x = dot(r34.xyz, r19.xyz);
//       r21.x = r36.w;
//       r21.yz = r37.zw;
//       r20.y = dot(r21.xyz, r19.xyz);
//       r38.x = r33.w;
//       r38.yz = r32.xy;
//       r20.z = dot(r38.xyz, r19.xyz);
//       r19.x = dot(r34.xyz, r4.xyz);
//       r19.y = dot(r21.xyz, r4.xyz);
//       r19.z = dot(r38.xyz, r4.xyz);
//       r39.xyz = rcp(r19.xyz);
//       r19.xyz = max(float3(-16777216,-16777216,-16777216), r39.xyz);
//       r19.xyz = min(float3(16777216,16777216,16777216), r19.xyz);
//       r20.xyz = r20.xyz * r19.xyz;
//       r39.xyz = r19.xyz * float3(-1,-1,0) + -r20.xyz;
//       r15.z = r36.x;
//       r19.xyz = r15.xxz * r19.xyz + -r20.xyz;
//       r20.xyz = min(r39.xyz, r19.xyz);
//       r19.xyz = max(r39.xyz, r19.xyz);
//       r15.z = max(r20.x, r20.y);
//       r15.z = max(r15.z, r20.z);
//       r19.x = min(r19.x, r19.y);
//       r19.x = min(r19.x, r19.z);
//       r15.z = max(r15.z, r27.w);
//       r19.x = min(r19.x, r27.x);
//       r19.y = cmp(r15.z < r19.x);
//       r17.z = r17.z ? r19.y : 0;
//       if (r17.z != 0) {
//         r39.x = t4[r17.x].val[100/4+2];
//         r39.y = t4[r17.x].val[100/4];
//         r39.z = t4[r17.x].val[100/4+1];
//         r39.w = t4[r17.x].val[100/4+3];
//         r40.x = t4[r17.x].val[116/4];
//         r40.y = t4[r17.x].val[116/4+1];
//         r40.z = t4[r17.x].val[116/4+2];
//         r40.w = t4[r17.x].val[116/4+3];
//         r20.x = t4[r17.x].val[132/4];
//         r20.y = t4[r17.x].val[132/4+1];
//         r17.z = t4[r17.x].val[144/4];
//         r19.x = r19.x + -r15.z;
//         r19.x = -r28.w * r19.x;
//         r19.x = 1.44269502 * r19.x;
//         r19.x = exp2(r19.x);
//         r19.x = 1 + -r19.x;
//         r19.y = r19.x * r29.z;
//         r19.x = -r4.w * r19.x + 1;
//         r19.x = log2(r19.x);
//         r19.z = r15.z + -r27.w;
//         r19.z = r28.w * r19.z;
//         r19.xz = float2(0.693147182,-1.44269502) * r19.xz;
//         r19.z = exp2(r19.z);
//         r19.y = r19.y * r19.z;
//         r15.z = -r19.x * r29.z + r15.z;
//         r41.xyz = r15.zzz * r4.xyz + r10.xyz;
//         r18.xyz = r41.xyz + -r18.xyz;
//         r38.z = dot(r18.xyz, r38.xyz);
//         r15.z = saturate(-r37.x * r37.x + r39.x);
//         r19.x = saturate(r38.z * r33.y + r33.z);
//         r15.z = r19.x * r15.z;
//         r15.z = r15.z * r15.z;
//         r19.x = cmp((int)r32.w == 4);
//         r19.x = r19.x ? r38.z : 1;
//         r19.z = max(0.00100000005, abs(r32.x));
//         r27.y = rcp(r19.z);
//         r27.z = r19.x * -r32.x + r41.y;
//         r27.z = min(r41.y, r27.z);
//         r29.w = -cb0[74].y + r27.z;
//         r29.w = max(0, r29.w);
//         r27.z = cb0[74].y + -r27.z;
//         r27.z = r27.z * r27.y;
//         r27.z = max(0, r27.z);
//         r27.z = min(r27.z, r19.x);
//         r19.x = -r27.z + r19.x;
//         r29.w = cb0[75].x * -r29.w;
//         r29.w = 1.44269502 * r29.w;
//         r29.w = exp2(r29.w);
//         r19.x = -r19.x * r19.z;
//         r19.x = cb0[75].x * r19.x;
//         r19.x = 1.44269502 * r19.x;
//         r19.x = exp2(r19.x);
//         r19.x = 1 + -r19.x;
//         r19.x = r29.w * r19.x;
//         r19.z = cb0[75].y * r27.y;
//         r19.x = r19.x * r19.z + r27.z;
//         r19.x = cb0[74].x * r19.x;
//         r19.x = -1.44269502 * r19.x;
//         r19.x = exp2(r19.x);
//         r37.x = r19.x * r15.z;
//         if (r36.y != 0) {
//           r38.x = dot(r18.xyz, r34.xyz);
//           r38.y = dot(r18.xyz, r21.xyz);
//           r15.z = cmp((int)r32.w == 1);
//           if (r15.z != 0) {
//             r15.z = dot(abs(r38.xyz), float3(1,1,1));
//             r15.z = rcp(r15.z);
//             r18.xyz = r38.zxy * r15.zzz;
//             r18.x = saturate(-r18.x);
//             r18.yz = cmp(r18.yz >= float2(0,0));
//             r18.xy = r18.yz ? r18.xx : -r18.xx;
//             r18.xy = r38.xy * r15.zz + r18.xy;
//             r18.xy = saturate(r18.xy * float2(0.5,0.5) + float2(0.5,0.5));
//             r21.x = r39.w;
//             r21.y = r40.x;
//             r19.xz = cb0[287].yy + r21.xy;
//             r19.xz = rcp(r19.xz);
//             r27.yz = r19.xz * r21.xy;
//             r19.xz = -r19.xz * r21.xy + float2(1,1);
//             r19.xz = float2(0.5,0.5) * r19.xz;
//             r33.yz = cb0[287].xx * r21.xy;
//             r33.yz = r33.yz + r33.yz;
//             r33.yz = r1.zz / r33.yz;
//             r18.xy = r18.xy * r27.yz + r19.xz;
//             r19.xz = float2(1,1) + -r33.yz;
//             r18.xy = max(r18.xy, r33.yz);
//             r18.xy = min(r18.xy, r19.xz);
//             r18.xy = r18.xy * r21.xy + r40.yz;
//             r22.xyz = t5.SampleLevel(s1_s, r18.xy, 0).xyz;
//             r42.xyzw = r22.xyzw;
//           } else {
//             r15.z = t4[r17.x].val[220/4];
//             r17.x = r17.y ? r38.z : 1;
//             r18.xy = r38.xy / r17.xx;
//             r17.x = -r36.x * 0.5 + r38.z;
//             r17.x = -r36.x * 0.5 + abs(r17.x);
//             r17.x = 1 + r17.x;
//             r18.z = max(abs(r18.x), abs(r18.y));
//             r17.x = max(r18.z, r17.x);
//             r15.z = cmp(r15.z >= r17.x);
//             r17.x = cmp((int)r32.w != 3);
//             r17.x = r17.y ? r17.x : 0;
//             r18.z = dot(r18.xy, r18.xy);
//             r19.x = r32.z * r32.z;
//             r18.z = cmp(r19.x >= r18.z);
//             r18.z = r15.z ? r18.z : 0;
//             r15.z = r17.x ? r18.z : r15.z;
//             r18.xy = r18.xy * float2(0.5,0.5) + float2(0.5,0.5);
//             r21.x = r39.w;
//             r21.y = r40.x;
//             r19.xz = cb0[287].yy + r21.xy;
//             r19.xz = rcp(r19.xz);
//             r22.xy = r19.xz * r21.xy;
//             r19.xz = -r19.xz * r21.xy + float2(1,1);
//             r19.xz = float2(0.5,0.5) * r19.xz;
//             r27.yz = cb0[287].xx * r21.xy;
//             r27.yz = r27.yz + r27.yz;
//             r27.yz = r1.zz / r27.yz;
//             r18.xy = r18.xy * r22.xy + r19.xz;
//             r19.xz = float2(1,1) + -r27.yz;
//             r18.xy = max(r18.xy, r27.yz);
//             r18.xy = min(r18.xy, r19.xz);
//             r18.xy = r18.xy * r21.xy + r40.yz;
//             r42.xyz = t5.SampleLevel(s1_s, r18.xy, 0).xyz;
//             r42.w = (int)r15.z & 0x3f800000;
//           }
//           r37.zw = r39.yz;
//           r37.xyzw = r42.wxyz * r37.xyzw;
//           r39.xyz = r37.yzw;
//         } else {
//           r39.x = r37.y;
//         }
//         r15.z = r37.x * r33.x;
//         r18.xyz = r39.xyz * r15.zzz;
//         r15.z = cmp((int)r36.z >= 0);
//         r17.x = cmp(0 < r17.z);
//         r15.z = r15.z ? r17.x : 0;
//         if (r15.z != 0) {
//           r15.z = cmp((int)r32.w == 1);
//           r37.x = t9[r36.z].val[32/4];
//           r37.y = t9[r36.z].val[32/4+1];
//           r37.z = t9[r36.z].val[32/4+2];
//           r37.w = t9[r36.z].val[32/4+3];
//           r38.x = t9[r36.z].val[48/4];
//           r38.y = t9[r36.z].val[48/4+1];
//           r38.z = t9[r36.z].val[48/4+2];
//           r38.w = t9[r36.z].val[48/4+3];
//           r39.x = t9[r36.z].val[64/4];
//           r39.y = t9[r36.z].val[64/4+1];
//           r39.z = t9[r36.z].val[64/4+2];
//           r39.w = t9[r36.z].val[64/4+3];
//           r19.x = t9[r36.z].val[96/4];
//           r19.z = t9[r36.z].val[96/4+1];
//           r42.x = t9[r36.z].val[128/4];
//           r42.y = t9[r36.z].val[128/4+1];
//           r42.z = t9[r36.z].val[128/4+2];
//           r42.w = t9[r36.z].val[128/4+3];
//           if (r15.z != 0) {
//             r15.z = (int)r36.z;
//             r17.x = cmp(abs(r32.y) >= abs(r33.w));
//             r21.x = cmp(abs(r32.y) >= abs(r32.x));
//             r17.x = r17.x ? r21.x : 0;
//             r21.xy = cmp(r32.yx < float2(0,0));
//             r21.z = cmp(abs(r32.x) >= abs(r33.w));
//             r21.xy = r21.xy ? float2(5,3) : float2(4,2);
//             r22.x = cmp(r33.w < 0);
//             r22.x = r22.x ? 1.000000 : 0;
//             r21.y = r21.z ? r21.y : r22.x;
//             r17.x = r17.x ? r21.x : r21.y;
//             r15.z = r17.x + r15.z;
//             r15.z = (uint)r15.z;
//             r32.x = t9[r15.z].val[0/4];
//             r32.y = t9[r15.z].val[0/4+1];
//             r32.z = t9[r15.z].val[0/4+2];
//             r33.x = t9[r15.z].val[12/4];
//             r33.y = t9[r15.z].val[12/4+1];
//             r33.z = t9[r15.z].val[12/4+2];
//             r43.x = t9[r15.z].val[24/4];
//             r43.y = t9[r15.z].val[24/4+1];
//             r43.z = t9[r15.z].val[24/4+2];
//             r39.x = t9[r15.z].val[64/4];
//             r39.y = t9[r15.z].val[64/4+1];
//           } else {
//             r33.x = t9[r36.z].val[0/4+3];
//             r33.y = t9[r36.z].val[0/4];
//             r33.z = t9[r36.z].val[0/4+1];
//             r33.w = t9[r36.z].val[0/4+2];
//             r43.x = t9[r36.z].val[16/4+2];
//             r43.y = t9[r36.z].val[16/4+3];
//             r43.z = t9[r36.z].val[16/4];
//             r43.w = t9[r36.z].val[16/4+1];
//             r32.xyz = r33.yzw;
//             r33.yz = r43.zw;
//             r43.z = r37.x;
//           }
//           r15.z = cmp(0 < r42.w);
//           if (r15.z != 0) {
//             r15.z = cmp(0 != r42.w);
//             r21.xy = r15.zz ? cb0[85].zw : cb0[82].zw;
//             r22.xyz = r42.xyz + r41.xyz;
//             r17.x = r39.w * r39.z;
//             r23.xyz = -r4.xyz * r17.xxx + r22.xyz;
//             r22.xyz = r23.xyz + -r37.yzw;
//             r34.x = dot(r32.xyz, r22.xyz);
//             r34.y = dot(r33.xyz, r22.xyz);
//             r34.z = dot(r43.xyz, r22.xyz);
//             r32.w = r37.y;
//             r22.x = dot(r32.xyzw, r23.xyzw);
//             r33.w = r37.z;
//             r22.y = dot(r33.xyzw, r23.xyzw);
//             r43.w = r37.w;
//             r22.z = dot(r43.xyzw, r23.xyzw);
//             r24.xyz = r17.yyy ? r34.xyz : r22.xyz;
//             r22.xy = r17.yy ? float2(-1,0) : float2(0,1);
//             r23.xy = r38.xy * r24.xy;
//             r23.z = dot(r38.zw, r24.zw);
//             r17.x = dot(r22.xy, r24.zw);
//             r21.z = cmp(r17.x != 0.000000);
//             r21.z = r17.y ? r21.z : 0;
//             r22.xyz = r23.xyz / r17.xxx;
//             r22.xyz = r21.zzz ? r22.xyz : r23.xyz;
//             r22.xy = saturate(r22.xy * float2(0.5,0.5) + float2(0.5,0.5));
//             r22.xy = r22.xy * r19.xz;
//             r22.xy = r22.xy * r21.xy + r39.xy;
//             r23.xy = float2(-0.5,-0.5) + r19.xz;
//             r21.xy = r23.xy * r21.xy + r39.xy;
//             r21.xy = cmp(r21.xy < r22.xy);
//             r23.xy = cmp(r22.xy < r39.xy);
//             r21.xy = (int2)r21.xy | (int2)r23.xy;
//             r17.x = (int)r21.y | (int)r21.x;
//             r36.xyzw = r15.zzzz ? cb0[85].zwxy : cb0[82].zwxy;
//             r21.xy = r22.xy * r36.zw + float2(0.5,0.5);
//             r21.xy = floor(r21.xy);
//             r22.xy = r22.xy * r36.zw + -r21.xy;
//             r44.xyzw = float4(0.5,1,0.5,1) + r22.xxyy;
//             r45.xw = r44.xz * r44.xz;
//             r23.xy = r45.xw * float2(0.5,0.5) + -r22.xy;
//             r24.xy = float2(1,1) + -r22.xy;
//             r27.yz = min(float2(0,0), r22.xy);
//             r24.xy = -r27.yz * r27.yz + r24.xy;
//             r22.xy = max(float2(0,0), r22.xy);
//             r22.xy = -r22.xy * r22.xy + r44.yw;
//             r44.x = r23.x;
//             r44.y = r24.x;
//             r44.z = r22.x;
//             r44.w = r45.x;
//             r44.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r44.xyzw;
//             r45.x = r23.y;
//             r45.y = r24.y;
//             r45.z = r22.y;
//             r45.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r45.xyzw;
//             r46.xyzw = r44.xzxz + r44.ywyw;
//             r47.xyzw = r45.xxzz + r45.yyww;
//             r22.xy = r44.yw / r46.zw;
//             r22.xy = float2(-1.5,0.5) + r22.xy;
//             r23.xy = r45.yw / r47.yw;
//             r23.xy = float2(-1.5,0.5) + r23.xy;
//             r44.xy = r22.xy * r36.xx;
//             r44.zw = r23.xy * r36.yy;
//             r45.xyzw = r21.xyxy * r36.xyxy + r44.xzyz;
//             r36.xyzw = r21.xyxy * r36.xyxy + r44.xwyw;
//             r44.xyzw = r47.xyzw * r46.xyzw;
//             r15.z = t7.SampleCmpLevelZero(s2_s, r45.xy, r22.z).x;
//             r21.x = t7.SampleCmpLevelZero(s2_s, r45.zw, r22.z).x;
//             r21.x = r44.y * r21.x;
//             r15.z = r44.x * r15.z + r21.x;
//             r21.x = t7.SampleCmpLevelZero(s2_s, r36.xy, r22.z).x;
//             r15.z = r44.z * r21.x + r15.z;
//             r21.x = t7.SampleCmpLevelZero(s2_s, r36.zw, r22.z).x;
//             r15.z = r44.w * r21.x + r15.z;
//             r15.z = r17.x ? 1 : r15.z;
//           } else {
//             r17.x = cmp(0 != r42.w);
//             r21.xy = r17.xx ? cb0[85].zw : cb0[82].zw;
//             r22.xyz = r42.xyz + r41.xyz;
//             r21.z = r39.w * r39.z;
//             r25.xyz = -r4.xyz * r21.zzz + r22.xyz;
//             r22.xyz = r25.xyz + -r37.yzw;
//             r23.x = dot(r32.xyz, r22.xyz);
//             r23.y = dot(r33.xyz, r22.xyz);
//             r23.z = dot(r43.xyz, r22.xyz);
//             r32.w = r37.y;
//             r22.x = dot(r32.xyzw, r25.xyzw);
//             r33.w = r37.z;
//             r22.y = dot(r33.xyzw, r25.xyzw);
//             r37.xyz = r43.xyz;
//             r22.z = dot(r37.xyzw, r25.xyzw);
//             r26.xyz = r17.yyy ? r23.xyz : r22.xyz;
//             r22.xy = r17.yy ? float2(-1,0) : float2(0,1);
//             r23.xy = r38.xy * r26.xy;
//             r23.z = dot(r38.zw, r26.zw);
//             r21.z = dot(r22.xy, r26.zw);
//             r22.x = cmp(r21.z != 0.000000);
//             r17.y = r17.y ? r22.x : 0;
//             r22.xyz = r23.xyz / r21.zzz;
//             r22.xyz = r17.yyy ? r22.xyz : r23.xyz;
//             r22.xy = saturate(r22.xy * float2(0.5,0.5) + float2(0.5,0.5));
//             r22.xy = r22.xy * r19.xz;
//             r22.xy = r22.xy * r21.xy + r39.xy;
//             r19.xz = float2(-0.5,-0.5) + r19.xz;
//             r19.xz = r19.xz * r21.xy + r39.xy;
//             r19.xz = cmp(r19.xz < r22.xy);
//             r21.xy = cmp(r22.xy < r39.xy);
//             r19.xz = (int2)r19.xz | (int2)r21.xy;
//             r17.y = (int)r19.z | (int)r19.x;
//             r32.xyzw = r17.xxxx ? cb0[85].zwxy : cb0[82].zwxy;
//             r19.xz = r22.xy * r32.zw + float2(0.5,0.5);
//             r19.xz = floor(r19.xz);
//             r21.xy = r22.xy * r32.zw + -r19.xz;
//             r33.xyzw = float4(0.5,1,0.5,1) + r21.xxyy;
//             r36.xw = r33.xz * r33.xz;
//             r22.xy = r36.xw * float2(0.5,0.5) + -r21.xy;
//             r23.xy = float2(1,1) + -r21.xy;
//             r24.xy = min(float2(0,0), r21.xy);
//             r23.xy = -r24.xy * r24.xy + r23.xy;
//             r21.xy = max(float2(0,0), r21.xy);
//             r21.xy = -r21.xy * r21.xy + r33.yw;
//             r33.x = r22.x;
//             r33.y = r23.x;
//             r33.z = r21.x;
//             r33.w = r36.x;
//             r33.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r33.xyzw;
//             r36.x = r22.y;
//             r36.y = r23.y;
//             r36.z = r21.y;
//             r36.xyzw = float4(0.444440007,0.444440007,0.444440007,0.222220004) * r36.xyzw;
//             r37.xyzw = r33.xzxz + r33.ywyw;
//             r38.xyzw = r36.xxzz + r36.yyww;
//             r21.xy = r33.yw / r37.zw;
//             r21.xy = float2(-1.5,0.5) + r21.xy;
//             r22.xy = r36.yw / r38.yw;
//             r22.xy = float2(-1.5,0.5) + r22.xy;
//             r33.xy = r21.xy * r32.xx;
//             r33.zw = r22.xy * r32.yy;
//             r36.xyzw = r19.xzxz * r32.xyxy + r33.xzyz;
//             r32.xyzw = r19.xzxz * r32.xyxy + r33.xwyw;
//             r33.xyzw = r38.xyzw * r37.xyzw;
//             r17.x = t6.SampleCmpLevelZero(s2_s, r36.xy, r22.z).x;
//             r19.x = t6.SampleCmpLevelZero(s2_s, r36.zw, r22.z).x;
//             r19.x = r33.y * r19.x;
//             r17.x = r33.x * r17.x + r19.x;
//             r19.x = t6.SampleCmpLevelZero(s2_s, r32.xy, r22.z).x;
//             r17.x = r33.z * r19.x + r17.x;
//             r19.x = t6.SampleCmpLevelZero(s2_s, r32.zw, r22.z).x;
//             r17.x = r33.w * r19.x + r17.x;
//             r15.z = r17.y ? 1 : r17.x;
//           }
//           r15.z = -1 + r15.z;
//           r15.z = r17.z * r15.z + 1;
//         } else {
//           r15.z = 1;
//         }
//         r20.z = r40.w;
//         r17.xyz = float3(1,1,1) + -r20.zxy;
//         r19.x = r15.z * r15.z;
//         r19.x = r19.x * r15.z;
//         r19.z = 1 + -r15.z;
//         r21.xyz = -r19.zzz * r17.xyz + float3(1,1,1);
//         r20.xyz = r15.zzz * r20.zxy;
//         r17.xyz = r19.xxx * r17.xyz + r20.xyz;
//         r17.xyz = r17.xyz + -r21.xyz;
//         r17.xyz = r34.www * r17.xyz + r21.xyz;
//         r17.xyz = r18.xyz * r17.xyz;
//         r13.xyz = r19.yyy * r17.xyz + r13.xyz;
//       }
//       r16.y = (int)r16.y + 1;
//     }
//     r17.xyz = r35.xyz + r13.xyz;
//     r15.z = r28.w * r16.w;
//     r16.y = -1.44269502 * r14.w;
//     r16.y = exp2(r16.y);
//     r16.w = -r29.z * r29.x + r29.z;
//     r18.xyz = r16.www * r11.yzw;
//     r19.xyz = r16.yyy * r28.xyz;
//     r17.xyz = r17.xyz * float3(0.0795774683,0.0795774683,0.0795774683) + r18.xyz;
//     r8.yzw = r19.xyz * r17.xyz + r8.yzw;
//     r28.w = r15.z * 0.5 + r14.w;
//     r16.y = -1.44269502 * r28.w;
//     r16.y = exp2(r16.y);
//     r16.y = 1 + -r16.y;
//     r16.w = cmp(r16.y >= 5.96046448e-08);
//     r16.y = rcp(r16.y);
//     r16.y = r28.w * r16.y;
//     r16.y = r16.w ? r16.y : 1;
//     r28.xyz = r16.yyy * r8.yzw;
//     r32.xyzw = r28.xyzw * r12.xyzw;
//   // No code for instruction (needs manual fix):
//     store_uav_typed u0.xyzw, r0.xyzz, r32.xyzw
//     r14.w = r15.z * 0.5 + r28.w;
//     r15.z = 0.99000001 * r27.w;
//     r15.z = cmp(r1.w < r15.z);
//     if (r15.z != 0) {
//       break;
//     }
//     r27.w = r15.w;
//     r15.y = (int)r15.y + 1;
//   }
//   r1.x = r15.y;
//   while (true) {
//     r1.y = cmp((uint)r1.x >= asuint(cb0[81].x));
//     if (r1.y != 0) break;
//     r0.zw = mad(asint(cb0[81].xx), (int2)vThreadID.zz, (int2)r1.xx);
//   // No code for instruction (needs manual fix):
//     store_uav_typed u0.xyzw, r0.xyzw, l(0,0,0,0)
//     r1.x = (int)r1.x + 1;
//   }
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// C:\Program Files (x86)\Steam\steamapps\common\FAR Changing Tides\ShaderFixes\dd16885984a53d33-cs_replace.txt(84,10): error X3000: syntax error: unexpected token ')'
/////////////////////////////////////////////////////////////////////////////
