// AUTOMATICALLY CONVERTED FROM SHADER FIXES 
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.89 on Mon Dec 26 00:11:14 2022
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float   xy
// TEXCOORD                 0   xy          1     NONE   float   xy
// COLOR                    0   xyzw        2     NONE   float   xyzw
// POSITION                 0   xyz         3     NONE   float     z
// POSITION                 1   xyzw        4     NONE   float
// POSITION                 2   xyzw        5     NONE   float
// NORMALS                  0   xyz         6     NONE   float   xyz
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_globalFlags refactoringAllowed | enableRawAndStructuredBuffers
dcl_immediateConstantBuffer { { 0, 0, 1.000000, 0},
                              { 0, 0.250000, 1.000000, 0},
                              { 0, 0.500000, 0.700000, 0},
                              { 0, 0.700000, 0.500000, 0},
                              { 0, 1.000000, 0, 0},
                              { 0.250000, 1.000000, 0, 0},
                              { 0.500000, 1.000000, 0, 0},
                              { 0.700000, 0.700000, 0, 0},
                              { 0.800000, 0.400000, 0, 0},
                              { 1.000000, 0.200000, 0, 0},
                              { 1.000000, 0, 0, 0} }
dcl_constantbuffer CB0[57], immediateIndexed
dcl_constantbuffer CB1[1025], dynamicIndexed
dcl_sampler s0, mode_default
dcl_sampler s4, mode_comparison
dcl_sampler s6, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_structured t2, 4
dcl_resource_structured t3, 4
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_structured t5, 128
dcl_resource_texture2d (float,float,float,float) t6
dcl_input_ps_siv linear noperspective v0.xy, position
dcl_input_ps linear v1.xy
dcl_input_ps linear v2.xyzw
dcl_input_ps linear v3.z
dcl_input_ps linear v6.xyz
dcl_output o0.xyzw
dcl_temps 37
dcl_resource_buffer (float,float,float,float) t125
ld_indexable(buffer)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
sample r0.xyzw, v1.xyxx, t0.xyzw, s0
add r1.xyz, v2.xyzx, v2.xyzx
div r2.x, v0.x, cb0[52].w
div r2.y, v0.y, cb0[53].x
mul r2.zw, cb0[55].zzzw, cb0[56].xxxy
mad r2.xy, r2.xyxx, cb0[55].zwzz, -r2.zwzz
mov r20.xy, r2.xyxx
add r21.x, v3.z, r25.y
mul r21.x, r21.x, r25.x
mul r21.y, l(2.000000), cb0[52].w
div r21.y, l(1.000000), r21.y
mad r20.x, r21.x, r21.y, r20.x
add r3.xy, -r20.xyxx, l(1.000000, 1.000000, 0.000000, 0.000000)
mul r3.xy, r3.xyxx, l(16.000000, 8.000000, 0.000000, 0.000000)
ftoi r3.xy, r3.xyxx
div r1.w, -v3.z, cb1[1024].x
max r1.w, r1.w, l(1.000000)
log r1.w, r1.w
mul r1.w, r1.w, cb1[1024].y
round_ni r1.w, r1.w
ftoi r1.w, r1.w
imin r1.w, r1.w, l(23)
ishl r2.w, r3.y, l(4)
iadd r2.w, r3.x, r2.w
ishl r1.w, r1.w, l(7)
iadd r1.w, r1.w, r2.w
ld_structured r3.x, r1.w, l(0), t2.xxxx
ushr r1.w, r3.x, l(16)
if_nz r1.w
  add r2.z, -r2.y, l(1.000000)
  mad r2.xy, r2.xzxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
  mul r2.xy, r2.xyxx, cb0[54].xyxx
  mul r2.xy, r2.xyxx, -v3.zzzz
  ishl r2.w, r3.x, l(5)
  and r2.w, r2.w, l(0x001fffe0)
  mov r2.z, v3.z
  add r25.w, r2.z, r25.y
  div r25.w, r25.w, cb0[12].x
  mad r2.x, r25.x, r25.w, r2.x
  mul r3.xyz, r2.yyyy, cb0[17].xyzx
  mad r3.xyz, cb0[16].xyzx, r2.xxxx, r3.xyzx
  mad r3.xyz, cb0[18].xyzx, v3.zzzz, r3.xyzx
  add r3.xyz, r3.xyzx, cb0[19].xyzx
  mov r4.w, l(1.000000)
  mov r5.xyz, r1.xyzx
  mov r3.w, l(0)
  mov r5.w, l(0)
  mov r6.xyzw, l(0,0,0,0)
  loop
    uge r7.x, r6.w, r1.w
    breakc_nz r7.x
    iadd r7.x, r2.w, r6.w
    ld_structured r7.x, r7.x, l(0), t3.xxxx
    ishl r7.x, r7.x, l(2)
    add r7.y, r3.w, l(1.000000)
    ushr r7.z, cb1[r7.x + 2].z, l(1)
    and r7.z, r7.z, l(7)
    ieq r7.z, r7.z, l(1)
    if_nz r7.z
      add r8.xyz, -r2.xyzx, cb1[r7.x + 0].xyzx
      dp3 r7.z, r8.xyzx, r8.xyzx
      rsq r7.z, r7.z
      mul r8.xyz, r7.zzzz, r8.xyzx
      dp3 r7.z, r8.xyzx, cb1[r7.x + 3].xyzx
      ge r7.w, -r7.z, cb1[r7.x + 3].w
      if_nz r7.w
        add r9.xyz, r2.xyzx, -cb1[r7.x + 0].xyzx
        dp3 r7.w, r9.xyzx, r9.xyzx
        sqrt r7.w, r7.w
        ge r8.w, cb1[r7.x + 0].w, r7.w
        if_nz r8.w
          dp3 r8.x, v6.xyzx, r8.xyzx
          max r8.x, r8.x, l(0.000000)
          lt r8.y, l(0.000000), r8.x
          if_nz r8.y
            add r7.w, -r7.w, cb1[r7.x + 0].w
            div r7.w, r7.w, cb1[r7.x + 0].w
            mul r9.xyz, cb1[r7.x + 1].wwww, cb1[r7.x + 1].xyzx
            mul r9.xyz, r7.wwww, r9.xyzx
            mul r8.xzw, r8.xxxx, r9.xxyz
            add r7.z, r7.z, l(1.000000)
            add r7.w, l(1.000000), -cb1[r7.x + 3].w
            div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w
            mad r7.z, -r7.z, r7.w, l(1.000000)
            mul r8.xzw, r7.zzzz, r8.xxzw
            mov r7.z, l(-1)
          else
            mov r8.xzw, l(0,0,0,0)
          endif
        else
          mov r8.xyzw, l(0,0,0,0)
        endif
      else
        mov r8.xyzw, l(0,0,0,0)
      endif
      and r7.z, r7.z, r8.y
    else
      mad r9.xyz, v6.xyzx, l(16.000000, 16.000000, 16.000000, 0.000000), cb1[r7.x + 0].xyzx
      add r10.xyz, r2.xyzx, -r9.xyzx
      dp3 r7.w, r10.xyzx, r10.xyzx
      sqrt r7.w, r7.w
      ge r8.y, cb1[r7.x + 0].w, r7.w
      if_nz r8.y
        add r9.xyz, -r2.xyzx, r9.xyzx
        dp3 r8.y, r9.xyzx, r9.xyzx
        rsq r8.y, r8.y
        mul r9.xyz, r8.yyyy, r9.xyzx
        dp3 r8.y, v6.xyzx, r9.xyzx
        lt r9.x, l(0.000000), r8.y
        if_nz r9.x
          add r7.w, -r7.w, cb1[r7.x + 0].w
          div r7.w, r7.w, cb1[r7.x + 0].w
          mul r9.yzw, cb1[r7.x + 1].wwww, cb1[r7.x + 1].xxyz
          mul r9.yzw, r7.wwww, r9.yyzw
          mul r8.xzw, r8.yyyy, r9.yyzw
          mov r7.w, l(-1)
        else
          mov r8.xzw, l(0,0,0,0)
        endif
      else
        mov r8.xzw, l(0,0,0,0)
        mov r9.x, l(0)
      endif
      and r7.z, r7.w, r9.x
    endif
    and r7.w, l(1), cb1[r7.x + 2].z
    ine r7.w, r7.w, l(0)
    and r7.z, r7.w, r7.z
    if_nz r7.z
      ishr r7.z, cb1[r7.x + 2].z, l(4)
      and r7.z, r7.z, l(255)
      iadd r7.z, r7.z, l(-1)
      movc r4.xyz, r5.wwww, r6.xyzx, r3.xyzx
      add r9.xyz, r2.xyzx, -cb1[r7.x + 0].xyzx
      mul r10.xyz, r9.yyyy, cb0[29].xyzx
      mad r9.xyw, cb0[28].xyxz, r9.xxxx, r10.xyxz
      mad r9.xyz, cb0[30].xyzx, r9.zzzz, r9.xywx
      add r9.xyz, r9.xyzx, cb0[31].xyzx
      dp3 r7.w, r9.xyzx, r9.xyzx
      rsq r7.w, r7.w
      mul r9.xyz, r7.wwww, r9.xyzx
      ge r10.xyz, |r9.xyzx|, |r9.yxxy|
      and r10.xyz, r10.xyzx, l(0x3f800000, 0x3f800000, 0x3f800000, 0)
      ge r11.xyz, |r9.xyzx|, |r9.zzyz|
      and r11.xyz, r11.xyzx, l(0x3f800000, 0x3f800000, 0x3f800000, 0)
      mul r10.xyz, r10.xyzx, r11.xyzx
      lt r11.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
      lt r9.xyz, r9.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
      iadd r9.xyz, -r11.xyzx, r9.xyzx
      itof r9.xyz, r9.xyzx
      ge r9.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
      movc r9.xyz, r9.xyzx, l(3.000000,5.000000,4.000000,0), l(0,2.000000,1.000000,0)
      dp3 r7.w, r10.xyzx, r9.xyzx
      ftoi r7.w, r7.w
      imin r7.z, r7.z, r7.w
      ige r7.w, l(3), r7.z
      movc r7.w, r7.w, cb1[r7.x + 2].x, cb1[r7.x + 2].y
      ishl r8.y, r7.z, l(3)
      and r8.y, r8.y, l(24)
      ushr r7.w, r7.w, r8.y
      ushr r9.x, cb1[r7.x + 2].y, l(16)
      ushr r9.y, cb1[r7.x + 2].y, l(24)
      and r9.xy, r9.xyxx, l(63, 63, 0, 0)
      ushr r7.xz, r9.xxyx, r7.z
      ishl r7.xz, r7.xxzx, l(8)
      and r7.xzw, r7.xxzw, l(256, 0, 256, 255)
      iadd r7.x, r7.x, r7.w
      iadd r7.x, r7.z, r7.x
      ld_structured r9.xyzw, r7.x, l(0), t5.xyzw
      ld_structured r10.xyzw, r7.x, l(16), t5.xyzw
      ld_structured r11.xyzw, r7.x, l(32), t5.xyzw
      ld_structured r12.xyzw, r7.x, l(48), t5.xyzw
      mov r13.x, r9.x
      mov r13.y, r10.x
      mov r13.z, r11.x
      mov r13.w, r12.x
      dp4 r13.x, r13.xyzw, r4.xyzw
      mov r14.x, r9.y
      mov r14.y, r10.y
      mov r14.z, r11.y
      mov r14.w, r12.y
      dp4 r13.y, r14.xyzw, r4.xyzw
      mov r14.x, r9.z
      mov r14.y, r10.z
      mov r14.z, r11.z
      mov r14.w, r12.z
      dp4 r13.z, r14.xyzw, r4.xyzw
      mov r12.x, r9.w
      mov r12.y, r10.w
      mov r12.z, r11.w
      dp4 r7.z, r12.xyzw, r4.xyzw
      div r9.xyz, r13.xyzx, r7.zzzz
      mad r7.zw, r9.xxxy, l(0.000000, 0.000000, 0.500000, 0.500000), l(0.000000, 0.000000, 0.500000, 0.500000)
      ld_structured r10.xyzw, r7.x, l(80), t5.xyzw
      add r9.xy, -r10.xyxx, r10.zwzz
      mul r9.xy, r9.xyxx, l(0.000122070313, 0.000122070313, 0.000000, 0.000000)
      mul r7.zw, r7.zzzw, r9.xxxy
      ge r9.xy, r9.xyxx, r7.zwzz
      movc r9.xy, r9.xyxx, l(0,-1.000000,0,0), l(1.000000,-0.000000,0,0)
      add r8.y, r9.y, r9.x
      add r8.y, r8.y, l(1.000000)
      ge r9.x, l(1.000000), r9.z
      movc r9.x, r9.x, l(-1.000000), l(-0.000000)
      add r8.y, r8.y, r9.x
      add r8.y, r8.y, l(1.000000)
      ge r9.xy, r7.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000)
      movc r9.xy, r9.xyxx, l(-1.000000,-1.000000,0,0), l(-0.000000,-0.000000,0,0)
      add r8.y, r8.y, r9.x
      add r8.y, r8.y, l(1.000000)
      add r8.y, r9.y, r8.y
      add r8.y, r8.y, l(1.000000)
      ge r9.x, r9.z, l(0.000000)
      movc r9.x, r9.x, l(-1.000000), l(-0.000000)
      add r8.y, r8.y, r9.x
      add r8.y, r8.y, l(1.000000)
      ne r8.y, r8.y, l(0.000000)
      if_nz r8.y
        iadd r8.y, r6.w, l(1)
        mov r6.xyz, r4.xyzx
        mov r5.w, l(-1)
        mov r3.w, r7.y
        mov r6.w, r8.y
        continue
      endif
      ld_structured r11.xyz, r7.x, l(76), t5.xyzx
      mad r7.zw, r11.yyyz, l(0.000000, 0.000000, 0.000122070313, 0.000122070313), r7.zzzw
      mad r7.zw, r7.zzzw, l(0.000000, 0.000000, 8192.000000, 8192.000000), l(0.000000, 0.000000, 0.500000, 0.500000)
      round_ni r9.xy, r7.zwzz
      add r7.zw, r7.zzzw, -r9.xxxy
      add r9.xy, r9.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
      mad r11.yz, -r7.wwzw, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, 3.000000, 3.000000, 0.000000)
      mad r12.xy, r7.zwzz, l(2.000000, 2.000000, 0.000000, 0.000000), l(1.000000, 1.000000, 0.000000, 0.000000)
      add r12.zw, -r7.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000)
      div r12.zw, r12.zzzw, r11.zzzy
      div r7.zw, r7.zzzw, r12.xxxy
      add r13.zw, r12.zzzw, l(0.000000, 0.000000, -1.000000, -1.000000)
      add r13.xy, r7.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000)
      mul r7.z, r11.y, r11.z
      add r14.xyzw, r9.xyxy, r13.zwxw
      ld_structured r15.x, r7.x, l(112), t5.xxxx
      add r7.xw, r10.wwww, -r14.yyyw
      add r7.xw, r7.xxxw, r10.yyyy
      add r16.xyzw, r10.xzyw, l(0.500000, -0.500000, 0.500000, -0.500000)
      max r10.xz, r14.xxzx, r16.xxxx
      min r14.xz, r16.yyyy, r10.xxzx
      max r7.xw, r7.xxxw, r16.zzzz
      min r14.yw, r16.wwww, r7.xxxw
      mul r14.xyzw, r14.xyzw, l(0.000122070313, 0.000122070313, 0.000122070313, 0.000122070313)
      add r7.x, r9.z, -r15.x
      sample_c_lz r7.w, r14.xyxx, t4.xxxx, s4, r7.x
      mul r9.zw, r11.yyyz, r12.xxxy
      sample_c_lz r8.y, r14.zwzz, t4.xxxx, s4, r7.x
      mul r8.y, r8.y, r9.z
      mad r7.z, r7.z, r7.w, r8.y
      add r13.xyzw, r9.xyxy, r13.zyxy
      add r9.xy, r10.wwww, -r13.ywyy
      add r9.xy, r9.xyxx, r10.yyyy
      max r10.xy, r16.xxxx, r13.xzxx
      min r10.xz, r16.yyyy, r10.xxyx
      max r9.xy, r16.zzzz, r9.xyxx
      min r10.yw, r16.wwww, r9.xxxy
      mul r10.xyzw, r10.xyzw, l(0.000122070313, 0.000122070313, 0.000122070313, 0.000122070313)
      sample_c_lz r7.w, r10.xyxx, t4.xxxx, s4, r7.x
      mad r7.z, r9.w, r7.w, r7.z
      mul r7.w, r12.y, r12.x
      sample_c_lz r7.x, r10.zwzz, t4.xxxx, s4, r7.x
      mad r7.x, r7.w, r7.x, r7.z
      mad r7.x, r7.x, l(0.062500), r11.x
      min r7.x, r7.x, l(1.000000)
      mul r8.xzw, r7.xxxx, r8.xxzw
      add r3.w, r3.w, l(2.000000)
      mov r6.xyz, r4.xyzx
      mov r5.w, l(-1)
    else
      mov r3.w, r7.y
    endif
    add r5.xyz, r5.xyzx, r8.xzwx
    iadd r6.w, r6.w, l(1)
  endloop
  mov r1.xyz, r5.xyzx
else
  mov r3.w, l(0)
endif
ieq r1.w, cb1[1024].z, l(1)
if_nz r1.w
  ftou r2.x, r3.w
  umin r2.x, r2.x, l(10)
  mov r0.xyz, icb[r2.x + 0].xyzx
  mov r2.x, l(-1)
endif
if_z r1.w
  mul r2.yzw, r1.xxyz, r0.xxyz
  sample r3.xyzw, v1.xyxx, t6.xyzw, s6
  mad r1.xyz, -r0.xyzx, r1.xyzx, r3.xyzx
  mad r0.xyz, r3.wwww, r1.xyzx, r2.yzwy
  mov r2.x, l(-1)
endif
if_z r2.x
  discard_nz l(-1)
  ret
endif
mul o0.w, r0.w, v2.w
ieq r0.w, cb1[1024].w, l(1)
movc o0.xyz, r0.wwww, v6.xyzx, r0.xyzx
ret
// Approximately 0 instruction slots used
