// Tile Lights
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.2.65 on Wed Sep 20 22:28:26 2017
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Input
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// no Output
cs_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[2], immediateIndexed
dcl_constantbuffer cb1[170], immediateIndexed
dcl_constantbuffer cb2[3072], dynamicIndexed
dcl_constantbuffer cb3[2048], dynamicIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
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_uav_typed_texture2d (float,float,float,float) u0
dcl_input vThreadGroupID.xy
dcl_input vThreadIDInGroup.xy
dcl_input vThreadID.xy
//dcl_temps 36
dcl_temps 38


dcl_tgsm_raw g0, 4
dcl_tgsm_raw g1, 4
dcl_tgsm_raw g2, 4
dcl_tgsm_structured g3, 4, 1024
dcl_tgsm_raw g4, 4
dcl_tgsm_structured g5, 4, 1024
dcl_thread_group 16, 16, 1

dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r38.xyzw, l(0, 0, 0, 0), t125.xyzw

imad r0.x, vThreadIDInGroup.y, l(16), vThreadIDInGroup.x
iadd r1.xy, vThreadID.xyxx, cb0[0].xyxx
iadd r0.yz, -cb0[0].xxyx, cb0[0].zzwz
utof r0.yz, r0.yyzy
mov r1.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r0.w, r1.xyww, t5.yzwx
mad r2.x, r0.w, cb1[53].x, cb1[53].y
mad r0.w, r0.w, cb1[53].z, -cb1[53].w
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w
add r0.w, r0.w, r2.x
if_z r0.x
  store_raw g0.x, l(0), l(340282346638528860000000000000000000000.000000)
  store_raw g1.x, l(0), l(0)
  store_raw g2.x, l(0), l(0)
  store_raw g4.x, l(0), l(0)
endif 
sync_g_t
atomic_umin g0, l(0), r0.w
atomic_umax g1, l(0), r0.w
sync_g_t
ld_raw r2.x, l(0), g0.xxxx
ld_raw r3.y, l(0), g1.xxxx
mul r2.yz, r0.yyzy, l(0.000000, 0.031250, 0.031250, 0.000000)
utof r3.zw, vThreadGroupID.xxxy
mad r3.zw, r0.yyyz, l(0.000000, 0.000000, 0.031250, 0.031250), -r3.zzzw
mul r4.y, r2.y, cb1[24].x
mul r4.x, r2.z, -cb1[25].y
mad r4.zw, cb1[26].xxxy, r2.yyyz, r3.zzzw
add r5.xyzw, -r4.yzxw, l(0.000000, 1.000000, 0.000000, 1.000000)
add r4.xyzw, r4.yzxw, l(0.000000, 1.000000, 0.000000, 1.000000)
mov r2.w, -r2.x
dp2 r3.z, r5.xyxx, r5.xyxx
sqrt r3.z, r3.z
rcp r3.z, r3.z
mul r3.zw, r3.zzzz, r5.xxxy
dp2 r5.x, r4.xyxx, r4.xyxx
sqrt r5.x, r5.x
rcp r5.x, r5.x
mul r4.xy, r4.xyxx, r5.xxxx
dp2 r5.x, r5.zwzz, r5.zwzz
sqrt r5.x, r5.x
rcp r5.x, r5.x
mul r5.xy, r5.xxxx, r5.zwzz
dp2 r5.z, r4.zwzz, r4.zwzz
sqrt r5.z, r5.z
rcp r5.z, r5.z
mul r4.zw, r4.zzzw, r5.zzzz
mov r5.z, r0.x
loop 
  ult r5.w, r5.z, cb0[1].x
  ult r6.x, r5.z, l(1024)
  and r5.w, r5.w, r6.x
  breakc_z r5.w
  div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb3[r5.z + 0].w
  add r6.xyz, cb1[58].xyzx, cb3[r5.z + 0].xyzx
  mul r7.xyz, r6.yyyy, cb1[9].xyzx
  mad r6.xyw, r6.xxxx, cb1[8].xyxz, r7.xyxz
  mad r6.xyz, r6.zzzz, cb1[10].xyzx, r6.xywx
  add r2.xyz, r6.xyzx, cb1[11].xyzx
  
  //Fix Clipping
  add r38.w, r2.z, -r38.y
  mad r2.x, r38.w, r38.x, r2.x
  
  dp2 r6.x, r3.zwzz, r2.xzxx
  ge r6.x, r6.x, -r5.w
  dp2 r2.x, r4.xyxx, r2.xzxx
  ge r2.x, r2.x, -r5.w
  and r2.x, r2.x, r6.x
  dp2 r6.x, r5.xyxx, r2.yzyy
  ge r6.x, r6.x, -r5.w
  and r2.x, r2.x, r6.x
  dp2 r2.y, r4.zwzz, r2.yzyy
  ge r2.y, r2.y, -r5.w
  and r2.x, r2.y, r2.x
  if_nz r2.x
    dp2 r2.x, l(1.000000, 1.000000, 0.000000, 0.000000), r2.zwzz
    mov r3.x, r2.z
    dp2 r2.y, l(-1.000000, 1.000000, 0.000000, 0.000000), r3.xyxx
    ge r2.xy, r2.xyxx, -r5.wwww
    and r2.x, r2.y, r2.x
    if_nz r2.x
      lt r2.x, l(0.500000), cb2[r5.z + 1024].w
      if_nz r2.x
        imm_atomic_iadd r6.x, g4, l(0), l(1)
        store_structured g5.x, r6.x, l(0), r5.z
      else 
        imm_atomic_iadd r6.x, g2, l(0), l(1)
        store_structured g3.x, r6.x, l(0), r5.z
      endif 
    endif 
  endif 
  iadd r5.z, r5.z, l(256)
endloop 
sync_g_t
ld_indexable(texture2d)(float,float,float,float) r2.xyzw, r1.xyww, t1.xyzw
mul r0.x, r2.w, l(255.000000)
round_ne r0.x, r0.x
ftou r0.x, r0.x
and r2.w, r0.x, l(15)
if_nz r2.w
  utof r3.xy, vThreadID.xyxx
  add r3.xy, r3.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
  div r0.yz, r3.xxyx, r0.yyzy
  mad r0.yz, r0.yyzy, l(0.000000, 2.000000, -2.000000, 0.000000), l(0.000000, -1.000000, 1.000000, 0.000000)
  lt r3.x, cb1[27].w, l(1.000000)
  movc r3.x, r3.x, r0.w, l(1.000000)
  mul r0.yz, r0.yyzy, r3.xxxx
  
  // Fix
  add r38.w, r3.x, -r38.y
  mad r0.y, -r38.w, r38.x, r0.y
  
  mul r3.xyzw, r0.zzzz, cb1[41].xyzw
  mad r3.xyzw, r0.yyyy, cb1[40].xyzw, r3.xyzw
  mad r3.xyzw, r0.wwww, cb1[42].xyzw, r3.xyzw
  add r3.xyzw, r3.xyzw, cb1[43].xyzw
  div r0.yzw, r3.xxyz, r3.wwww
  ld_raw r3.x, l(0), g2.xxxx
  ld_raw r3.y, l(0), g4.xxxx
  ld_indexable(texture2d)(float,float,float,float) r4.xyz, r1.xyww, t0.xyzw
  ld_indexable(texture2d)(float,float,float,float) r5.xyz, r1.xyww, t2.xyzw
  ld_indexable(texture2d)(float,float,float,float) r6.xyzw, r1.xyww, t3.xyzw
  ld_indexable(texture2d)(float,float,float,float) r7.xyzw, r1.xyww, t4.xyzw
  ftou r3.z, cb1[135].x
  iadd r3.w, r1.y, r1.x
  iadd r3.z, r3.z, r3.w
  and r3.z, r3.z, l(1)
  mad r4.xyz, r4.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
  dp3 r3.w, r4.xyzx, r4.xyzx
  rsq r3.w, r3.w
  mul r8.xyz, r3.wwww, r4.xyzx
  and r9.xyz, r0.xxxx, l(16, 32, 64, 0)
  movc r6.xyzw, r9.xxxx, l(0,0,0,0), r6.xyzw
  movc r0.x, r9.z, l(0), l(1.000000)
  movc r7.xyzw, r9.yyyy, r0.xxxx, r7.xyzw
  mul r0.x, r2.y, l(0.080000)
  mad r9.xyz, -r2.yyyy, l(0.080000, 0.080000, 0.080000, 0.000000), r5.xyzx
  mad r9.xyz, r2.xxxx, r9.xyzx, r0.xxxx
  ieq r0.x, r2.w, l(5)
  lt r4.w, l(0.000000), cb1[139].x
  lt r5.w, l(0.000000), cb1[169].w
  and r4.w, r4.w, r5.w
  ne r5.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb1[139].x
  movc r10.xyz, r5.wwww, l(1.000000,1.000000,1.000000,0), r5.xyzx
  movc r11.xy, r3.zzzz, l(1.000000,0,0,0), l(0,1.000000,0,0)
  mul r12.xyz, r9.xyzx, r11.yyyy
  mul r12.w, r2.y, r11.y
  movc r10.xyz, r4.wwww, r11.xxxx, r10.xyzx
  mov r9.w, r2.y
  movc r11.xyzw, r4.wwww, r12.xyzw, r9.xyzw
  movc r11.xyz, r0.xxxx, r11.xyzx, r9.xyzx
  mov r10.w, r11.w
  mov r9.xyz, r5.xyzx
  movc r5.xyzw, r0.xxxx, r10.xyzw, r9.xyzw
  mad r9.xyz, -r5.xyzx, r2.xxxx, r5.xyzx
  mad r9.xyz, r9.xyzx, cb1[120].wwww, cb1[120].xyzx
  mad r10.xyz, r11.xyzx, cb1[121].wwww, cb1[121].xyzx
  utof r11.xy, r1.xyxx
  add r11.xy, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
  mul r11.xy, r11.xyxx, cb1[118].zwzz
  sample_l_indexable(texture2d)(float,float,float,float) r11.x, r11.xyxx, t6.xyzw, s0, l(0.000000)
  add r12.xyz, r0.yzwy, -cb1[55].xyzx
  dp3 r2.y, r12.xyzx, r12.xyzx
  rsq r2.y, r2.y
  mul r12.xyz, r2.yyyy, r12.xyzx
  eq r2.y, cb1[169].w, l(0.000000)
  dp3 r3.z, r12.xyzx, r8.xyzx
  add r3.z, r3.z, r3.z
  mad r13.xyz, r8.xyzx, -r3.zzzz, r12.xyzx
  mad r13.xyz, -r4.xyzx, r3.wwww, r13.xyzx
  dp3 r3.z, r8.xyzx, -r12.xyzx
  add r4.w, |r3.z|, l(0.000010)
  min r4.w, r4.w, l(1.000000)
  mul_sat r8.w, r10.y, l(50.000000)
  mul r14.xyz, r9.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
  mov_sat r15.xyzw, r6.xyzw
  mul r9.w, r15.y, l(50.000000)
  min r9.w, r9.w, l(1.000000)
  mad r10.w, r6.w, l(-2.900000), l(3.000000)
  add r16.y, -r6.w, l(1.000000)
  max r11.zw, r2.zzzz, l(0.000000, 0.000000, 0.00392156886, 0.040000)
  min r11.z, r11.z, l(1.000000)
  mad r12.w, |r3.z|, l(-0.156583), l(1.57079637)
  add r13.w, -|r3.z|, l(1.000000)
  sqrt r13.w, r13.w
  mul r14.w, r12.w, r13.w
  ge r16.z, r3.z, l(0.000000)
  mad r12.w, -r12.w, r13.w, l(3.14159274)
  movc r12.w, r16.z, r14.w, r12.w
  add r12.w, -r12.w, l(1.57079637)
  mad r17.xyz, -r3.zzzz, r8.xyzx, -r12.xyzx
  dp3 r13.w, r17.xyzx, r17.xyzx
  mul r11.z, r11.z, r11.z
  add r14.w, r11.z, r11.z
  mad r16.z, -r3.z, r3.z, l(1.000000)
  sqrt r16.z, r16.z
  mul r16.w, r3.z, l(-0.0699428469)
  mul r18.xyzw, r11.zzzz, l(0.500000, 1.41421354, 1.25331414, 5.01325655)
  add r11.z, r5.w, r5.w
  mul r17.w, r18.x, r18.x
  log r19.xyz, r5.xyzx
  mul r14.w, r14.w, r14.w
  rsq r18.x, r13.w
  mul r20.xyz, r17.xyzx, r18.xxxx
  dp3 r18.x, r5.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
  div r21.xyz, r5.xyzx, r18.xxxx
  log r21.xyz, r21.xyzx
  sqrt r5.xyz, r5.xyzx
  mul r5.w, r5.w, l(0.080000)
  mad r22.xy, r6.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
  dp2 r18.x, l(1.000000, 1.000000, 0.000000, 0.000000), |r22.xyxx|
  add r23.z, -r18.x, l(1.000000)
  lt r18.x, r23.z, l(0.000000)
  add r22.zw, -|r22.yyyx|, l(0.000000, 0.000000, 1.000000, 1.000000)
  ge r24.xy, r22.xyxx, l(0.000000, 0.000000, 0.000000, 0.000000)
  movc r24.xy, r24.xyxx, l(1.000000,1.000000,0,0), l(-1.000000,-1.000000,0,0)
  mul r22.zw, r22.zzzw, r24.xxxy
  movc r23.xy, r18.xxxx, r22.zwzz, r22.xyxx
  dp3 r18.x, r23.xyzx, r23.xyzx
  rsq r18.x, r18.x
  mul r22.xyz, r18.xxxx, r23.xyzx
  mul r23.xyzw, r6.xyzw, r6.xyzz
  mad r4.xyz, -r4.xyzx, r3.wwww, -r22.xyzx
  mad r4.xyz, r23.wwww, r4.xyzx, r22.xyzx
  dp3 r3.w, r4.xyzx, r4.xyzx
  rsq r3.w, r3.w
  mul r4.xyz, r3.wwww, r4.xyzx
  mov r24.y, l(1.000000)
  mov r25.x, r6.y
  mov r11.y, l(1.000000)
  mov r25.y, r2.z
  mov r25.z, l(1.000000)
  mov r26.xyz, l(0,0,0,0)
  mov r27.w, l(0)
  mov r2.z, l(0)
  loop 
    uge r3.w, r2.z, r3.x
    breakc_nz r3.w
    ld_structured r3.w, r2.z, l(0), g3.xxxx
    lt r6.y, l(0.000000), cb2[r3.w + 0].w
    eq r18.x, l(0.000000), cb3[r3.w + 1024].w
    add r28.xyz, -r0.yzwy, cb3[r3.w + 0].xyzx
    dp3 r19.w, r28.xyzx, r28.xyzx
    rsq r20.w, r19.w
    mul r29.xyz, r20.wwww, r28.xyzx
    if_nz r18.x
      lt r18.x, l(0.000000), cb2[r3.w + 1024].w
      if_nz r18.x
        mul r30.xyz, cb2[r3.w + 0].xyzx, cb2[r3.w + 1024].wwww
        mad r31.xyz, -r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx
        mad r30.xyz, r30.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx
        dp3 r18.x, r31.xyzx, r31.xyzx
        dp3 r21.w, r30.xyzx, r30.xyzx
        rsq r22.w, r18.x
        rsq r23.w, r21.w
        mul r18.x, r18.x, r22.w
        mul r21.w, r21.w, r23.w
        dp3 r24.w, r31.xyzx, r30.xyzx
        mad r18.x, r18.x, r21.w, r24.w
        mad r18.x, r18.x, l(0.500000), l(1.000000)
        rcp r32.y, r18.x
        dp3 r18.x, r8.xyzx, r31.xyzx
        dp3 r21.w, r8.xyzx, r30.xyzx
        mul r21.w, r23.w, r21.w
        mad r18.x, r18.x, r22.w, r21.w
        mul_sat r32.x, r18.x, l(0.500000)
      else 
        add r18.x, r19.w, l(1.000000)
        rcp r32.y, r18.x
        dp3 r18.x, r8.xyzx, r29.xyzx
        mov_sat r21.w, r18.x
        lt r22.w, l(0.000000), cb2[r3.w + 1024].z
        mul r23.w, cb2[r3.w + 1024].z, cb2[r3.w + 1024].z
        div r23.w, r23.w, r19.w
        min r23.w, r23.w, l(1.000000)
        sqrt r23.w, r23.w
        lt r24.w, r18.x, r23.w
        max r25.w, r18.x, -r23.w
        add r25.w, r23.w, r25.w
        mul r25.w, r25.w, r25.w
        mul r23.w, r23.w, l(4.000000)
        div r23.w, r25.w, r23.w
        movc r18.x, r24.w, r23.w, r18.x
        movc r32.x, r22.w, r18.x, r21.w
      endif 
      mul r18.x, cb3[r3.w + 0].w, cb3[r3.w + 0].w
      mul r18.x, r18.x, r19.w
      mad r18.x, -r18.x, r18.x, l(1.000000)
      max r18.x, r18.x, l(0.000000)
      mul r32.z, r18.x, r18.x
    else 
      dp3_sat r24.x, r8.xyzx, r29.xyzx
      mul r30.xyz, r28.xyzx, cb3[r3.w + 0].wwww
      dp3 r18.x, r30.xyzx, r30.xyzx
      min r18.x, r18.x, l(1.000000)
      add r18.x, -r18.x, l(1.000000)
      log r18.x, r18.x
      mul r18.x, r18.x, cb3[r3.w + 1024].w
      exp r24.z, r18.x
      mov r32.xyz, r24.xyzx
    endif 
    dp3 r18.x, r29.xyzx, cb2[r3.w + 0].xyzx
    add r18.x, r18.x, -cb2[r3.w + 1024].x
    mul_sat r18.x, r18.x, cb2[r3.w + 1024].y
    mul r18.x, r18.x, r18.x
    movc r6.y, r6.y, r18.x, l(1.000000)
    lt r18.x, l(0.000000), r32.z
    lt r19.w, l(0.000000), r6.y
    and r18.x, r18.x, r19.w
    if_nz r18.x
      dp4 r18.x, cb2[r3.w + 2048].xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
      ftou r19.w, r18.x
      if_nz r19.w
        dp4 r19.w, r7.xyzw, cb2[r3.w + 2048].xyzw
        add r19.w, r19.w, l(-1.000000)
        mad r24.xz, r18.xxxx, r19.wwww, l(1.000000, 0.000000, 1.000000, 0.000000)
      else 
        mov r24.xz, r11.xxyx
      endif 
      mul r18.x, r32.z, r32.y
      mul r6.y, r6.y, r18.x
      mul r24.xw, r24.xxxz, r6.yyyy
      max r29.xyz, r25.xyzx, |cb2[r3.w + 0].wwww|
      mul r30.xyz, r29.xyzx, r29.xyzx
      mad r6.y, -r29.y, r29.y, l(1.000000)
      sqrt r18.x, r6.y
      mad r18.x, r29.y, r29.y, r18.x
      mul r18.x, r6.y, r18.x
      mad r29.yzw, r18.xxxx, r13.xxyz, r8.xxyz
      dp3 r18.x, r29.yzwy, r29.yzwy
      rsq r18.x, r18.x
      mul r29.yzw, r18.xxxx, r29.yyzw
      lt r31.xy, l(0.000000, 0.000000, 0.000000, 0.000000), cb2[r3.w + 1024].wzww
      if_nz r31.x
        mul_sat r18.x, r20.w, cb2[r3.w + 1024].w
        mad r31.xzw, r18.xxxx, l(0.500000, 0.000000, 0.500000, 0.500000), r30.xxyz
        min r31.xzw, r31.xxzw, l(1.000000, 0.000000, 1.000000, 1.000000)
        div r31.xzw, r30.xxyz, r31.xxzw
        mul r32.yzw, cb2[r3.w + 0].xxyz, cb2[r3.w + 1024].wwww
        mad r33.xyz, -r32.yzwy, l(0.500000, 0.500000, 0.500000, 0.000000), r28.xyzx
        dp3 r18.x, r29.yzwy, r32.yzwy
        mad r34.xyz, r18.xxxx, r29.yzwy, -r32.yzwy
        dp3 r19.w, r33.xyzx, r34.xyzx
        mul r18.x, r18.x, r18.x
        mad r18.x, cb2[r3.w + 1024].w, cb2[r3.w + 1024].w, -r18.x
        div_sat r18.x, r19.w, r18.x
        mad r28.xyz, r18.xxxx, r32.yzwy, r33.xyzx
      else 
        mov r31.xzw, l(1.000000,0,1.000000,1.000000)
      endif 
      if_nz r31.y
        mul_sat r18.x, r20.w, cb2[r3.w + 1024].z
        mad r32.yzw, r18.xxxx, l(0.000000, 0.500000, 0.500000, 0.500000), r30.xxyz
        min r32.yzw, r32.yyzw, l(0.000000, 1.000000, 1.000000, 1.000000)
        div r30.xzw, r30.xxyz, r32.yyzw
        mul r30.xzw, r30.xxzw, r30.xxzw
        mul r31.xzw, r30.xxzw, r31.xxzw
        dp3 r18.x, r28.xyzx, r29.yzwy
        mad r29.yzw, r18.xxxx, r29.yyzw, -r28.xxyz
        dp3 r18.x, r29.yzwy, r29.yzwy
        rsq r18.x, r18.x
        mul_sat r18.x, r18.x, cb2[r3.w + 1024].z
        mad r28.xyz, r29.yzwy, r18.xxxx, r28.xyzx
      endif 
      dp3 r18.x, r28.xyzx, r28.xyzx
      rsq r18.x, r18.x
      mul r29.yzw, r18.xxxx, r28.xxyz
      switch r2.w
        case l(0)
        case l(1)
        case l(2)
        case l(3)
        case l(5)
        case l(6)
        mad r32.yzw, r28.xxyz, r18.xxxx, -r12.xxyz
        dp3 r19.w, r32.yzwy, r32.yzwy
        rsq r19.w, r19.w
        mul r32.yzw, r19.wwww, r32.yyzw
        dp3_sat r19.w, r8.xyzx, r29.yzwy
        dp3_sat r20.w, r8.xyzx, r32.yzwy
        dp3_sat r21.w, -r12.xyzx, r32.yzwy
        mul r22.w, r30.y, r30.y
        mad r23.w, r20.w, r22.w, -r20.w
        mad r20.w, r23.w, r20.w, l(1.000000)
        mul r20.w, r20.w, r20.w
        mul r20.w, r20.w, l(3.14159274)
        div r20.w, r22.w, r20.w
        mul r20.w, r31.z, r20.w
        mad r22.w, r4.w, r6.y, r30.y
        mad r23.w, r19.w, r6.y, r30.y
        mul r23.w, r4.w, r23.w
        mad r19.w, r19.w, r22.w, r23.w
        rcp r19.w, r19.w
        mul r19.w, r19.w, r20.w
        add r20.w, -r21.w, l(1.000000)
        mul r21.w, r20.w, r20.w
        mul r21.w, r21.w, r21.w
        mul r22.w, r20.w, r21.w
        mad r20.w, -r21.w, r20.w, l(1.000000)
        mul r32.yzw, r10.xxyz, r20.wwww
        mad r32.yzw, r8.wwww, r22.wwww, r32.yyzw
        mul r19.w, r19.w, l(0.500000)
        mul r32.yzw, r32.yyzw, r19.wwww
        mad r30.xzw, r14.xxyz, r31.wwww, r32.yyzw
        break 
        case l(4)
        mad r32.yzw, r28.xxyz, r18.xxxx, -r12.xxyz
        dp3 r19.w, r32.yzwy, r32.yzwy
        rsq r19.w, r19.w
        mul r32.yzw, r19.wwww, r32.yyzw
        dp3_sat r19.w, r8.xyzx, r29.yzwy
        dp3_sat r20.w, r8.xyzx, r32.yzwy
        dp3_sat r21.w, -r12.xyzx, r32.yzwy
        mul r22.w, r29.x, r29.x
        mul r22.w, r22.w, r22.w
        mad r23.w, r20.w, r22.w, -r20.w
        mad r23.w, r23.w, r20.w, l(1.000000)
        mul r23.w, r23.w, r23.w
        mul r23.w, r23.w, l(3.14159274)
        div r22.w, r22.w, r23.w
        mul r22.w, r31.x, r22.w
        mul r23.w, r21.w, r21.w
        mad r23.w, r23.w, l(4.000000), l(0.000010)
        rcp r23.w, r23.w
        add r21.w, -r21.w, l(1.000000)
        mul r25.w, r21.w, r21.w
        mul r25.w, r25.w, r25.w
        mul r26.w, r21.w, r25.w
        mad r21.w, -r25.w, r21.w, l(1.000000)
        mad r25.w, r21.w, l(0.040000), r26.w
        mul r28.w, r6.x, r25.w
        mul r22.w, r22.w, r23.w
        mad r23.w, -r25.w, r6.x, l(1.000000)
        mul r25.w, r30.y, r30.y
        mad r29.x, r20.w, r25.w, -r20.w
        mad r20.w, r29.x, r20.w, l(1.000000)
        mul r20.w, r20.w, r20.w
        mul r20.w, r20.w, l(3.14159274)
        div r20.w, r25.w, r20.w
        mul r20.w, r31.z, r20.w
        mul r25.w, r30.y, l(0.500000)
        mad r29.x, -r30.y, l(0.500000), l(1.000000)
        mad r31.x, r4.w, r29.x, r25.w
        mad r19.w, r19.w, r29.x, r25.w
        mul r19.w, r19.w, r31.x
        div r19.w, l(0.250000), r19.w
        mul r32.yzw, r10.xxyz, r21.wwww
        mad r32.yzw, r8.wwww, r26.wwww, r32.yyzw
        mul r19.w, r19.w, r20.w
        mul r32.yzw, r32.yyzw, r19.wwww
        mad r32.yzw, r14.xxyz, r31.wwww, r32.yyzw
        mul r32.yzw, r23.wwww, r32.yyzw
        mad r30.xzw, r22.wwww, r28.wwww, r32.yyzw
        break 
        case l(8)
        mad r32.yzw, r28.xxyz, r18.xxxx, -r12.xxyz
        dp3 r19.w, r32.yzwy, r32.yzwy
        rsq r19.w, r19.w
        mul r32.yzw, r19.wwww, r32.yyzw
        dp3_sat r19.w, r8.xyzx, r29.yzwy
        dp3_sat r20.w, r8.xyzx, r32.yzwy
        dp3_sat r21.w, -r12.xyzx, r32.yzwy
        add r21.w, -r21.w, l(1.000000)
        mul r22.w, r21.w, r21.w
        mul r22.w, r22.w, r22.w
        mul r23.w, r21.w, r22.w
        mad r21.w, -r22.w, r21.w, l(1.000000)
        mul r32.yzw, r15.xxyz, r21.wwww
        mad r32.yzw, r9.wwww, r23.wwww, r32.yyzw
        mul r22.w, r30.y, r30.y
        mad r25.w, -r22.w, r20.w, r20.w
        mad r25.w, r25.w, r20.w, r22.w
        mul r26.w, r22.w, l(4.000000)
        mad r28.w, r22.w, l(4.000000), l(1.000000)
        mul r28.w, r28.w, l(3.14159274)
        rcp r28.w, r28.w
        mul r26.w, r22.w, r26.w
        mul r25.w, r25.w, r25.w
        div r25.w, r26.w, r25.w
        add r25.w, r25.w, l(1.000000)
        mul r25.w, r25.w, r28.w
        add r26.w, r4.w, r19.w
        mad r26.w, -r19.w, r4.w, r26.w
        mul r26.w, r26.w, l(4.000000)
        rcp r26.w, r26.w
        mul r25.w, r25.w, r26.w
        mul r33.xyz, r10.xyzx, r21.wwww
        mad r33.xyz, r8.wwww, r23.wwww, r33.xyzx
        mad r21.w, r22.w, r20.w, -r20.w
        mad r20.w, r21.w, r20.w, l(1.000000)
        mul r20.w, r20.w, r20.w
        mul r20.w, r20.w, l(3.14159274)
        div r20.w, r22.w, r20.w
        mul r20.w, r31.z, r20.w
        mad r21.w, r4.w, r6.y, r30.y
        mad r22.w, r19.w, r6.y, r30.y
        mul r22.w, r4.w, r22.w
        mad r19.w, r19.w, r21.w, r22.w
        rcp r19.w, r19.w
        mul r19.w, r19.w, r20.w
        mul r19.w, r19.w, l(0.500000)
        mul r33.xyz, r33.xyzx, r19.wwww
        mad r32.yzw, r25.wwww, r32.yyzw, -r33.xxyz
        mad r32.yzw, r15.wwww, r32.yyzw, r33.xxyz
        mad r30.xzw, r14.xxyz, r31.wwww, r32.yyzw
        break 
        case l(9)
        mad r31.xyw, r28.xyxz, r18.xxxx, -r12.xyxz
        dp3 r19.w, r31.xywx, r31.xywx
        rsq r19.w, r19.w
        mul r31.xyw, r19.wwww, r31.xyxw
        dp3_sat r19.w, r8.xyzx, r29.yzwy
        dp3_sat r20.w, r8.xyzx, r31.xywx
        dp3_sat r21.w, -r12.xyzx, r31.xywx
        mul r22.w, r30.y, r30.y
        mad r23.w, r20.w, r22.w, -r20.w
        mad r20.w, r23.w, r20.w, l(1.000000)
        mul r20.w, r20.w, r20.w
        mul r20.w, r20.w, l(3.14159274)
        div r20.w, r22.w, r20.w
        mul r20.w, r31.z, r20.w
        mad r22.w, r4.w, r6.y, r30.y
        mad r6.y, r19.w, r6.y, r30.y
        mul r6.y, r4.w, r6.y
        mad r6.y, r19.w, r22.w, r6.y
        rcp r6.y, r6.y
        mul r6.y, r6.y, r20.w
        add r19.w, -r21.w, l(1.000000)
        mul r20.w, r19.w, r19.w
        mul r20.w, r20.w, r20.w
        mul r21.w, r19.w, r20.w
        mad r19.w, -r20.w, r19.w, l(1.000000)
        mul r31.xyz, r10.xyzx, r19.wwww
        mad r31.xyz, r8.wwww, r21.wwww, r31.xyzx
        mul r6.y, r6.y, l(0.500000)
        mul r30.xzw, r31.xxyz, r6.yyyy
        break 
        default 
        mov r30.xzw, l(0,0,0,0)
        break 
      endswitch 
      mul r6.y, r24.x, r32.x
      mul r31.xyz, r6.yyyy, cb3[r3.w + 1024].xyzx
      mul r32.xyz, r31.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
      dp3 r6.y, r32.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
      and r6.y, r2.y, r6.y
      and r6.y, r0.x, r6.y
      switch r2.w
        case l(2)
        mad r33.xyz, r28.xyzx, r18.xxxx, -r12.xyzx
        dp3 r19.w, r33.xyzx, r33.xyzx
        rsq r19.w, r19.w
        mul r33.xyz, r19.wwww, r33.xyzx
        dp3_sat r19.w, r29.yzwy, r12.xyzx
        log r19.w, r19.w
        mul r19.w, r19.w, l(12.000000)
        exp r19.w, r19.w
        mul r19.w, r10.w, r19.w
        dp3 r20.w, r8.xyzx, r33.xyzx
        mad r20.w, r20.w, r6.w, -r6.w
        add_sat r20.w, r20.w, l(1.000000)
        mul r21.w, r20.w, l(0.159154937)
        mad r20.w, -r20.w, l(0.159154937), l(1.000000)
        mad r19.w, r19.w, r20.w, r21.w
        mul r32.xyz, r19.wwww, r23.xyzx
        break 
        case l(3)
        dp3 r19.w, r8.xyzx, r29.yzwy
        mad_sat r16.x, r19.w, l(0.500000), l(0.500000)
        sample_l_indexable(texture2d)(float,float,float,float) r33.xyz, r16.xyxx, t7.xyzw, s1, l(0.000000)
        mul r32.xyz, r23.xyzx, r33.xyzx
        break 
        case l(6)
        dp3 r16.x, -r8.xyzx, r29.yzwy
        add r16.x, r16.x, l(0.500000)
        mul_sat r16.x, r16.x, l(0.444444448)
        dp3_sat r19.w, -r12.xyzx, -r29.yzwy
        mul r19.w, r19.w, r19.w
        mad r19.w, r19.w, l(-0.640000), l(1.000000)
        mul r19.w, r19.w, r19.w
        div r19.w, l(0.114591561), r19.w
        mul r16.x, r16.x, r19.w
        mul r32.xyz, r23.xyzx, r16.xxxx
        break 
        case l(7)
        dp3 r16.x, -r12.xyzx, r29.yzwy
        dp3 r19.w, r8.xyzx, r29.yzwy
        mad r20.w, |r19.w|, l(-0.156583), l(1.57079637)
        add r21.w, -|r19.w|, l(1.000000)
        sqrt r21.w, r21.w
        mul r22.w, r20.w, r21.w
        ge r23.w, r19.w, l(0.000000)
        mad r20.w, -r20.w, r21.w, l(3.14159274)
        movc r20.w, r23.w, r22.w, r20.w
        add r20.w, -r20.w, l(1.57079637)
        add r20.w, r12.w, -r20.w
        mul r20.w, |r20.w|, l(0.500000)
        sincos null, r20.w, r20.w
        mad r33.xyz, -r19.wwww, r8.xyzx, r29.yzwy
        dp3 r21.w, r33.xyzx, r17.xyzx
        dp3 r22.w, r33.xyzx, r33.xyzx
        mad r22.w, r22.w, r13.w, l(0.000100)
        rsq r22.w, r22.w
        mul r21.w, r21.w, r22.w
        mad r33.xyz, r21.wwww, l(0.500000, -3.650000, 17.000000, 0.000000), l(0.500000, -3.980000, -16.780001, 0.000000)
        mov_sat r33.x, r33.x
        sqrt r22.w, r33.x
        div r33.xw, l(1.190000, 0.000000, 0.000000, 0.800000), r20.wwww
        mad r23.w, r20.w, l(0.360000), r33.x
        mul r24.x, r16.z, r22.w
        mad r24.x, r24.x, l(0.997551), r16.w
        mul r25.w, r18.y, r22.w
        add r19.w, r3.z, r19.w
        mad r24.x, -r24.x, l(-0.139885694), r19.w
        mul r24.x, r24.x, r24.x
        mul r24.x, r24.x, l(-0.500000)
        mul r26.w, r25.w, r25.w
        div r24.x, r24.x, r26.w
        mul r24.x, r24.x, l(1.442695)
        exp r24.x, r24.x
        mul r25.w, r25.w, l(2.50662827)
        div r24.x, r24.x, r25.w
        mul r24.x, r22.w, r24.x
        mad_sat r16.x, r16.x, l(0.500000), l(0.500000)
        sqrt r16.x, r16.x
        add r16.x, -r16.x, l(1.000000)
        mul r25.w, r16.x, r16.x
        mul r25.w, r25.w, r25.w
        mul r16.x, r16.x, r25.w
        mad r16.x, r16.x, l(0.953479409), l(0.0465205684)
        mul r16.x, r24.x, r16.x
        mul r16.x, r11.z, r16.x
        add r34.xy, r19.wwww, l(-0.035000, -0.140000, 0.000000, 0.000000)
        mul r34.xy, r34.xyxx, r34.xyxx
        mul r34.xy, r34.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
        div r19.w, r34.x, r17.w
        mul r19.w, r19.w, l(1.442695)
        exp r19.w, r19.w
        div r19.w, r19.w, r18.z
        div r23.w, l(1.000000, 1.000000, 1.000000, 1.000000), r23.w
        mad r21.w, -r21.w, l(0.800000), l(0.600000)
        mad r21.w, r23.w, r21.w, l(1.000000)
        mul r21.w, r21.w, r22.w
        mad r22.w, -r21.w, r21.w, l(1.000000)
        max r22.w, r22.w, l(0.000000)
        sqrt r22.w, r22.w
        mad r22.w, -r20.w, r22.w, l(1.000000)
        mul r24.x, r22.w, r22.w
        mul r24.x, r24.x, r24.x
        mul r22.w, r22.w, r24.x
        mad r22.w, r22.w, l(0.953479409), l(0.0465205684)
        add r22.w, -r22.w, l(1.000000)
        mul r22.w, r22.w, r22.w
        mul r21.w, r23.w, r21.w
        mad r21.w, -r21.w, r21.w, l(1.000000)
        sqrt r21.w, r21.w
        mul r21.w, r21.w, l(0.500000)
        div r21.w, r21.w, r20.w
        mul r34.xzw, r19.xxyz, r21.wwww
        exp r34.xzw, r34.xxzw
        mul r33.xy, r33.yzyy, l(1.442695, 1.442695, 0.000000, 0.000000)
        exp r33.xy, r33.xyxx
        mul r19.w, r19.w, r33.x
        mul r19.w, r22.w, r19.w
        mul r34.xzw, r34.xxzw, r19.wwww
        mad r34.xzw, r16.xxxx, l(0.250000, 0.000000, 0.250000, 0.250000), r34.xxzw
        div r16.x, r34.y, r14.w
        mul r16.x, r16.x, l(1.442695)
        exp r16.x, r16.x
        div r16.x, r16.x, r18.w
        mad r19.w, -r20.w, l(0.500000), l(1.000000)
        mul r20.w, r19.w, r19.w
        mul r20.w, r20.w, r20.w
        mul r19.w, r19.w, r20.w
        mad r19.w, r19.w, l(0.953479409), l(0.0465205684)
        add r20.w, -r19.w, l(1.000000)
        mul r20.w, r20.w, r20.w
        mul r19.w, r19.w, r20.w
        mul r33.xzw, r19.xxyz, r33.wwww
        exp r33.xzw, r33.xxzw
        mul r16.x, r33.y, r16.x
        mul r16.x, r19.w, r16.x
        mad r33.xyz, r16.xxxx, r33.xzwx, r34.xzwx
        dp3 r16.x, r20.xyzx, r29.yzwy
        add r16.x, r16.x, l(1.000000)
        mul_sat r16.x, r16.x, l(0.250000)
        mul r16.x, r2.x, r16.x
        mul r16.x, r16.x, l(0.318309873)
        add r19.w, -r24.z, l(1.000000)
        mul r34.xyz, r21.xyzx, r19.wwww
        exp r34.xyz, r34.xyzx
        mul r35.xyz, r5.xyzx, r16.xxxx
        mad r33.xyz, r35.xyzx, r34.xyzx, r33.xyzx
        min r32.xyz, -r33.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
        mov r32.xyz, -r32.xyzx
        break 
        case l(9)
        mad r28.xyz, r28.xyzx, r18.xxxx, -r12.xyzx
        dp3 r16.x, r28.xyzx, r28.xyzx
        rsq r16.x, r16.x
        mul r28.xyz, r16.xxxx, r28.xyzx
        dp3_sat r16.x, -r12.xyzx, r28.xyzx
        add r16.x, -r16.x, l(1.000000)
        mul r18.x, r16.x, r16.x
        mul r18.x, r18.x, r18.x
        mul r19.w, r16.x, r18.x
        mad r16.x, -r18.x, r16.x, l(1.000000)
        mad r16.x, r16.x, r5.w, r19.w
        dp3_sat r18.x, r22.xyzx, r29.yzwy
        mad r24.xz, r18.xxxx, l(-11.000000, 0.000000, -11.000000, 0.000000), l(12.000000, 0.000000, 13.000000, 0.000000)
        mul r19.w, r24.z, l(0.200000)
        dp3_sat r20.w, r4.xyzx, r29.yzwy
        log r20.w, r20.w
        mul r20.w, r20.w, r24.x
        exp r20.w, r20.w
        mad r19.w, r19.w, r20.w, l(0.600000)
        dp3 r20.w, r8.xyzx, r29.yzwy
        add r20.w, r20.w, l(0.150000)
        mul_sat r20.w, r20.w, l(0.756143689)
        add r16.x, -r16.x, l(1.000000)
        mad r18.x, r18.x, r19.w, -r20.w
        mad r18.x, r6.z, r18.x, r20.w
        mul r16.x, r16.x, r18.x
        mul r28.xyz, r9.xyzx, r16.xxxx
        mul r32.xyz, r28.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
        break 
        default 
        mov r32.xyz, l(0,0,0,0)
        break 
      endswitch 
      mul r24.xzw, r24.wwww, cb3[r3.w + 1024].xxyz
      mul r24.xzw, r24.xxzw, r32.xxyz
      mad r28.xyz, r30.xzwx, r31.xyzx, r24.xzwx
    else 
      mov r28.xyz, l(0,0,0,0)
      mov r6.y, l(0)
    endif 
    and r28.w, r2.y, r6.y
    mov r27.xyz, r26.xyzx
    add r27.xyzw, r28.xyzw, r27.xyzw
    iadd r2.z, r2.z, l(1)
    mov r26.xyz, r27.xyzx
  endloop 
  mul r0.x, r11.w, r11.w
  mul r0.x, r0.x, r0.x
  mov r27.xyz, r26.xyzx
  mov r2.x, l(0)
  loop 
    uge r2.y, r2.x, r3.y
    breakc_nz r2.y
    ld_structured r2.y, r2.x, l(0), g5.xxxx
    eq r2.z, l(0.000000), cb3[r2.y + 1024].w
    add r3.xzw, -r0.yyzw, cb3[r2.y + 0].xxyz
    dp3 r2.w, r3.xzwx, r3.xzwx
    add r4.x, r2.w, l(1.000000)
    div r4.x, l(1.000000, 1.000000, 1.000000, 1.000000), r4.x
    mul r4.y, cb3[r2.y + 0].w, cb3[r2.y + 0].w
    mul r4.y, r2.w, r4.y
    mad r4.y, -r4.y, r4.y, l(1.000000)
    max r4.y, r4.y, l(0.000000)
    mul r4.y, r4.y, r4.y
    mul r4.x, r4.y, r4.x
    mul r4.yzw, r3.xxzw, cb3[r2.y + 0].wwww
    dp3 r4.y, r4.yzwy, r4.yzwy
    min r4.y, r4.y, l(1.000000)
    add r4.y, -r4.y, l(1.000000)
    log r4.y, r4.y
    mul r4.y, r4.y, cb3[r2.y + 1024].w
    exp r4.y, r4.y
    movc r2.z, r2.z, r4.x, r4.y
    lt r4.x, l(0.000000), r2.z
    if_nz r4.x
      rsq r2.w, r2.w
      mul r4.xyz, r2.wwww, r3.xzwx
      dp3_sat r4.x, r8.xyzx, r4.xyzx
      mul r2.z, r11.x, r2.z
      mul r2.z, r2.z, r4.x
      mul r4.xyz, r2.zzzz, cb3[r2.y + 1024].xyzx
      mad r2.yzw, r3.xxzw, r2.wwww, -r12.xxyz
      dp3 r3.x, r2.yzwy, r2.yzwy
      rsq r3.x, r3.x
      mul r2.yzw, r2.yyzw, r3.xxxx
      dp3_sat r2.y, r8.xyzx, r2.yzwy
      mad r2.z, r2.y, r0.x, -r2.y
      mad r2.y, r2.z, r2.y, l(1.000000)
      mul r2.y, r2.y, r2.y
      mul r2.y, r2.y, l(3.14159274)
      div r2.y, r0.x, r2.y
      mul r2.y, r2.y, l(0.250000)
      mad r2.yzw, r2.yyyy, r10.xxyz, r14.xxyz
      mul r2.yzw, r2.yyzw, r4.xxyz
    else 
      mov r2.yzw, l(0,0,0,0)
    endif 
    add r27.xyz, r2.yzwy, r27.xyzx
    iadd r2.x, r2.x, l(1)
  endloop 
else 
  mov r27.xyzw, l(0,0,0,0)
endif 
ult r0.xy, vThreadID.xyxx, cb0[0].zwzz
and r0.x, r0.y, r0.x
if_nz r0.x
  ld_indexable(texture2d)(float,float,float,float) r0.xyzw, r1.xyzw, t8.xyzw
  add r0.xyzw, r27.xyzw, r0.xyzw
  store_uav_typed u0.xyzw, r1.xyyy, r0.xyzw
endif 
ret 
// Approximately 0 instruction slots used
