//2D lighting PS 1.
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v0.6.181 on Wed Jun  7 00:05:34 2023
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xy          0     NONE   float   xy
// TEXCOORD                 1   xyz         1     NONE   float   xyz
// SV_POSITION              0   xyzw        2      POS   float   xy
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_constantbuffer CB0[224], immediateIndexed
dcl_constantbuffer CB1[10], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_sampler s6, mode_default
dcl_sampler s7, mode_default
dcl_sampler s8, 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_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (uint,uint,uint,uint) t10
dcl_input_ps linear v0.xy
dcl_input_ps linear v1.xyz
dcl_input_ps_siv linear noperspective v2.xy, position
dcl_output o0.xyzw
dcl_temps 29
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r25.xyzw, l(0, 0, 0, 0), t125.xyzw
sample_l_indexable(texture2d)(float,float,float,float) r0.xyzw, v0.xyxx, t3.xyzw, s3, l(0.000000)
mul r1.xy, v0.xyxx, cb0[135].xyxx
ftou r1.xy, r1.xyxx
mul r0.w, r0.w, l(255.000000)
round_ne r0.w, r0.w
ftou r0.w, r0.w
and r2.x, r0.w, l(15)
ult r2.y, l(0), r2.x
mov r1.zw, l(0,0,0,0)
ld_indexable(texture2d)(uint,uint,uint,uint) r1.z, r1.xyzw, t10.yzxw
and r1.z, r1.z, cb1[2].y
ine r1.z, r1.z, l(0)
and r1.z, r1.z, r2.y
if_nz r1.z
  sample_l_indexable(texture2d)(float,float,float,float) r3.xyzw, v0.xyxx, t2.xyzw, s2, l(0.000000)
  sample_l_indexable(texture2d)(float,float,float,float) r1.z, v0.xyxx, t1.yzxw, s1, l(0.000000)
  mad r1.w, r1.z, cb0[65].x, cb0[65].y
  mad r1.z, r1.z, cb0[65].z, -cb0[65].w
  div r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r1.z
  add r1.z, r1.z, r1.w
  
  mov r31.xyz, v1.xyzx
  mul r32.w, cb0[0].x, cb0[0].x
  mad r32.w, cb0[1].x, cb0[1].x, r32.w
  mad r32.w, cb0[2].x, cb0[2].x, r32.w
  div r32.x, r25.x, r32.w
  mad r31.x, -r32.x, cb0[0].x, r31.x
  mad r31.y, -r32.x, cb0[1].x, r31.y
  mad r31.z, -r32.x, cb0[2].x, r31.z
  
  mad r2.yzw, r31.xxyz, r1.zzzz, cb0[67].xxyz
  dp3 r1.w, r31.xyzx, r31.xyzx
  rsq r1.w, r1.w
  mul r4.xyz, r1.wwww, r31.xyzx
  lt r1.w, cb1[1].z, l(0.000000)
  mul r3.w, r3.w, l(3.999000)
  ftou r3.w, r3.w
  and r3.w, r3.w, l(2)
  ine r3.w, r3.w, l(0)
  and r4.w, cb1[2].y, l(3)
  ine r4.w, r4.w, l(0)
  and r3.w, r3.w, r4.w
  movc r3.w, r3.w, cb1[9].x, l(1.000000)
  utof r4.w, cb0[147].y
  mad r5.xy, r4.wwww, l(32.665001, 11.815000, 0.000000, 0.000000), v2.xyxx
  dp2 r4.w, r5.xyxx, l(0.0671105608, 0.00583714992, 0.000000, 0.000000)
  frc r4.w, r4.w
  mul r4.w, r4.w, l(52.982918)
  frc r4.w, r4.w
  sample_l_indexable(texture2d)(float,float,float,float) r5.xyzw, v0.xyxx, t8.xyzw, s8, l(0.000000)
  mul r6.xyzw, r5.xyzw, r5.xyzw
  mul r5.z, r1.z, cb0[37].y
  if_nz cb1[2].x
    sample_l_indexable(texture2d)(float,float,float,float) r7.xyzw, v0.xyxx, t6.xyzw, s6, l(0.000000)
    and r8.xy, r0.wwww, l(32, 64, 0, 0)
    movc r5.w, r8.y, l(0), l(1.000000)
    movc r7.xyzw, r8.xxxx, r5.wwww, r7.xyzw
    dp4 r5.w, cb1[0].xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
    dp4 r7.x, r7.xyzw, cb1[0].xyzw
    add r7.x, r7.x, l(-1.000000)
    mad r5.w, r5.w, r7.x, l(1.000000)
    mad_sat r1.z, r1.z, cb1[1].x, cb1[1].y
    mul r1.z, r1.z, r1.z
    mad r5.xy, -r5.xyxx, r5.xyxx, r5.wwww
    mad r5.xy, r1.zzzz, r5.xyxx, r6.xyxx
    min r1.z, r6.w, r5.y
    mul r5.x, r6.z, r5.x
    mul r5.y, r6.z, r1.z
    ult r1.z, l(1), cb1[2].x
    lt r5.w, l(0.000000), |cb1[1].z|
    and r1.z, r1.z, r5.w
    movc r1.w, r1.w, l(1.000000), r5.z
    mul r1.w, r1.w, |cb1[1].z|
    and r1.z, r1.w, r1.z
  else
    sample_l_indexable(texture2d)(float,float,float,float) r5.x, v0.xyxx, t7.xyzw, s7, l(0.000000)
    mov r5.y, l(1.000000)
    mov r1.z, l(0)
  endif
  ult r1.w, cb1[2].x, l(2)
  ieq r6.xy, r2.xxxx, l(9, 7, 0, 0)
  and r1.w, r1.w, r6.y
  or r1.w, r6.x, r1.w
  mul r5.z, r5.z, l(0.200000)
  movc r1.z, r1.w, r5.z, r1.z
  lt r1.w, l(0.000000), r1.z
  if_nz r1.w
    add r1.w, r4.w, l(-0.500000)
    add r2.yzw, r2.yyzw, cb0[70].xxyz
    mul r7.xyzw, r2.zzzz, cb0[1].xyzw
    mad r7.xyzw, r2.yyyy, cb0[0].xyzw, r7.xyzw
    mad r7.xyzw, r2.wwww, cb0[2].xyzw, r7.xyzw
    add r7.xyzw, r7.xyzw, cb0[3].xyzw
    mul r2.yzw, r1.zzzz, cb1[5].xxyz
    mul r8.xyzw, r2.zzzz, cb0[1].xyzw
    mad r8.xyzw, r2.yyyy, cb0[0].xyzw, r8.xyzw
    mad r8.xyzw, r2.wwww, cb0[2].xyzw, r8.xyzw
    add r8.xyzw, r7.xyzw, r8.xyzw
	
	mad r7.x, r25.x, r7.w, r7.x
	mad r8.x, r25.x, r8.w, r8.x
	
    div r2.yzw, r7.xxyz, r7.wwww
    div r8.xyz, r8.xyzx, r8.wwww
    add r8.xyz, -r2.yzwy, r8.xyzx
    mad r9.xy, r2.yzyy, cb0[66].xyxx, cb0[66].wzww
    mul r10.xy, r8.xyxx, cb0[66].xyxx
    mad r5.zw, r1.zzzz, cb0[30].zzzw, r7.zzzw
    div r1.z, r5.z, r5.w
    add r1.z, -r2.w, r1.z
    mul r4.w, |r1.z|, l(0.250000)
    mad r7.xyzw, r1.wwww, l(0.125000, 0.125000, 0.125000, 0.125000), l(0.125000, 0.250000, 0.375000, 0.500000)
    mov r10.z, r8.z
    mov r9.z, r2.w
    mad r11.xyz, r10.xyzx, r7.xxxx, r9.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r2.w, r11.xyxx, t1.yzwx, s1, l(0.000000)
    add r2.w, -r2.w, r11.z
    mad r2.w, |r1.z|, l(0.250000), r2.w
    lt r2.w, |r2.w|, r4.w
    movc r2.w, r2.w, r7.x, l(-1.000000)
    mad r11.xyz, r10.xyzx, r7.yyyy, r9.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r5.z, r11.xyxx, t1.yzxw, s1, l(0.000000)
    add r5.z, -r5.z, r11.z
    mad r5.z, |r1.z|, l(0.250000), r5.z
    lt r5.z, |r5.z|, r4.w
    lt r5.w, r2.w, l(0.000000)
    and r5.z, r5.w, r5.z
    movc r2.w, r5.z, r7.y, r2.w
    mad r11.xyz, r10.xyzx, r7.zzzz, r9.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r5.z, r11.xyxx, t1.yzxw, s1, l(0.000000)
    add r5.z, -r5.z, r11.z
    mad r5.z, |r1.z|, l(0.250000), r5.z
    lt r5.z, |r5.z|, r4.w
    lt r5.w, r2.w, l(0.000000)
    and r5.z, r5.w, r5.z
    movc r2.w, r5.z, r7.z, r2.w
    mad r7.xyz, r10.xyzx, r7.wwww, r9.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r5.z, r7.xyxx, t1.yzxw, s1, l(0.000000)
    add r5.z, -r5.z, r7.z
    mad r5.z, |r1.z|, l(0.250000), r5.z
    lt r5.z, |r5.z|, r4.w
    lt r5.w, r2.w, l(0.000000)
    and r5.z, r5.w, r5.z
    movc r2.w, r5.z, r7.w, r2.w
    mad r7.xyzw, r1.wwww, l(0.125000, 0.125000, 0.125000, 0.125000), l(0.625000, 0.750000, 0.875000, 1.000000)
    mad r11.xyz, r10.xyzx, r7.xxxx, r9.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r1.w, r11.xyxx, t1.yzwx, s1, l(0.000000)
    add r1.w, -r1.w, r11.z
    mad r1.w, |r1.z|, l(0.250000), r1.w
    lt r1.w, |r1.w|, r4.w
    lt r5.z, r2.w, l(0.000000)
    and r1.w, r1.w, r5.z
    movc r1.w, r1.w, r7.x, r2.w
    mad r11.xyz, r10.xyzx, r7.yyyy, r9.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r2.w, r11.xyxx, t1.yzwx, s1, l(0.000000)
    add r2.w, -r2.w, r11.z
    mad r2.w, |r1.z|, l(0.250000), r2.w
    lt r2.w, |r2.w|, r4.w
    lt r5.z, r1.w, l(0.000000)
    and r2.w, r2.w, r5.z
    movc r1.w, r2.w, r7.y, r1.w
    mad r11.xyz, r10.xyzx, r7.zzzz, r9.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r2.w, r11.xyxx, t1.yzwx, s1, l(0.000000)
    add r2.w, -r2.w, r11.z
    mad r2.w, |r1.z|, l(0.250000), r2.w
    lt r2.w, |r2.w|, r4.w
    lt r5.z, r1.w, l(0.000000)
    and r2.w, r2.w, r5.z
    movc r1.w, r2.w, r7.z, r1.w
    mad r7.xyz, r10.xyzx, r7.wwww, r9.xyzx
    sample_l_indexable(texture2d)(float,float,float,float) r2.w, r7.xyxx, t1.yzwx, s1, l(0.000000)
    add r2.w, -r2.w, r7.z
    mad r1.z, |r1.z|, l(0.250000), r2.w
    lt r1.z, |r1.z|, r4.w
    lt r2.w, r1.w, l(0.000000)
    and r1.z, r1.z, r2.w
    movc r1.z, r1.z, r7.w, r1.w
    lt r1.w, l(0.000000), r1.z
    and r1.w, r1.w, l(0x3f800000)
    mad r2.yz, r8.xxyx, r1.zzzz, r2.yyzy
    mad r2.yz, |r2.yyzy|, l(0.000000, 6.000000, 6.000000, 0.000000), l(0.000000, -5.000000, -5.000000, 0.000000)
    max r2.yz, r2.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000)
    dp2 r1.z, r2.yzyy, r2.yzyy
    add r1.z, -r1.z, l(1.000000)
    max r1.z, r1.z, l(0.000000)
    mad r1.z, -r1.w, r1.z, l(1.000000)
    mul r5.x, r1.z, r5.x
    or r1.w, r6.x, r6.y
    mad r1.z, r1.z, l(0.500000), l(0.500000)
    mul r1.z, r1.z, r5.y
    movc r5.y, r1.w, r5.y, r1.z
  endif
  add r1.z, r5.y, r5.x
  lt r1.z, l(0.000000), r1.z
  if_nz r1.z
    sample_l_indexable(texture2d)(float,float,float,float) r7.xyz, v0.xyxx, t4.xyzw, s4, l(0.000000)
    sample_l_indexable(texture2d)(float,float,float,float) r8.xyzw, v0.xyxx, t5.xyzw, s5, l(0.000000)
    ftou r1.z, cb0[155].x
    iadd r1.x, r1.y, r1.x
    iadd r1.x, r1.z, r1.x
    and r1.x, r1.x, l(1)
    mad r1.yzw, r3.xxyz, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, -1.000000, -1.000000, -1.000000)
    dp3 r2.y, r1.yzwy, r1.yzwy
    rsq r2.y, r2.y
    mul r3.xyz, r1.yzwy, r2.yyyy
    and r0.w, r0.w, l(16)
    movc r8.xyzw, r0.wwww, l(0,0,0,0), r8.wxyz
    movc r0.w, r6.x, l(0), r0.x
    mul r2.z, r0.y, l(0.080000)
    mad r6.yzw, -r0.yyyy, l(0.000000, 0.080000, 0.080000, 0.080000), r7.xxyz
    mad r9.xyz, r0.wwww, r6.yzwy, r2.zzzz
    ieq r2.z, r2.x, l(5)
    or r2.z, r6.x, r2.z
    lt r2.w, l(0.000000), cb0[159].x
    lt r4.w, l(0.000000), cb0[204].z
    and r2.w, r2.w, r4.w
    ne r4.w, l(0.000000, 0.000000, 0.000000, 0.000000), cb0[159].x
    movc r6.xyz, r4.wwww, l(1.000000,1.000000,1.000000,0), r7.xyzx
    movc r5.zw, r1.xxxx, l(0,0,1.000000,0), l(0,0,0,1.000000)
    mul r10.xyz, r5.wwww, r9.xyzx
    mul r10.w, r0.y, r5.w
    movc r6.xyz, r2.wwww, r5.zzzz, r6.xyzx
    mov r9.w, r0.y
    movc r10.xyzw, r2.wwww, r10.xyzw, r9.xyzw
    mov r6.w, r10.w
    mov r7.w, r9.w
    movc r6.xyzw, r2.zzzz, r6.xyzw, r7.xyzw
    movc r7.xyz, r2.zzzz, r10.xyzx, r9.xyzx
    mad r9.xyz, -r6.xyzx, r0.wwww, r6.xyzx
    mad r9.xyz, r9.xyzx, cb0[139].wwww, cb0[139].xyzx
    mad r7.xyz, r7.xyzx, cb0[140].wwww, cb0[140].xyzx
    mul r0.y, cb1[7].w, l(0.500000)
    mad r10.xyz, -r0.yyyy, cb1[6].xyzx, cb1[5].xyzx
    mad r11.xyz, r0.yyyy, cb1[6].xyzx, cb1[5].xyzx
    lt r0.y, l(0.000000), cb1[7].w
    if_nz r0.y
      dp3 r1.x, r10.xyzx, r10.xyzx
      dp3 r2.w, r11.xyzx, r11.xyzx
      rsq r1.x, r1.x
      rsq r2.w, r2.w
      mul r4.w, r1.x, r2.w
      dp3 r5.z, r10.xyzx, r11.xyzx
      mul r5.z, r4.w, r5.z
      mad r5.w, r5.z, l(0.500000), r4.w
      add r5.w, r5.w, l(0.500000)
      div r4.w, r4.w, r5.w
      dp3 r5.w, r3.xyzx, r10.xyzx
      dp3 r7.w, r3.xyzx, r11.xyzx
      mul r2.w, r2.w, r7.w
      mad r1.x, r5.w, r1.x, r2.w
      mul r1.x, r1.x, l(0.500000)
    else
      dp3 r2.w, r10.xyzx, r10.xyzx
      add r5.w, r2.w, l(1.000000)
      rcp r4.w, r5.w
      rsq r2.w, r2.w
      mul r12.xyz, r2.wwww, r10.xyzx
      dp3 r1.x, r3.xyzx, r12.xyzx
      mov r5.z, l(1.000000)
    endif
    lt r2.w, l(0.000000), cb1[6].w
    mul r5.w, cb1[6].w, cb1[6].w
    mul_sat r4.w, r4.w, r5.w
    sqrt r4.w, r4.w
    lt r5.w, r1.x, r4.w
    max r7.w, r1.x, -r4.w
    add r7.w, r4.w, r7.w
    mul r7.w, r7.w, r7.w
    mul r4.w, r4.w, l(4.000000)
    div r4.w, r7.w, r4.w
    movc r4.w, r5.w, r4.w, r1.x
    movc_sat r1.x, r2.w, r4.w, r1.x
    dp3 r2.w, r4.xyzx, r3.xyzx
    add r2.w, r2.w, r2.w
    mad r12.xyz, r3.xyzx, -r2.wwww, r4.xyzx
    add r11.xyz, -r10.xyzx, r11.xyzx
    dp3 r2.w, r12.xyzx, r11.xyzx
    mad r12.xyz, r2.wwww, r12.xyzx, -r11.xyzx
    dp3 r4.w, r10.xyzx, r12.xyzx
    mul r2.w, r2.w, r2.w
    mad r2.w, cb1[7].w, cb1[7].w, -r2.w
    div_sat r2.w, r4.w, r2.w
    mad r11.xyz, r2.wwww, r11.xyzx, r10.xyzx
    movc r10.xyz, r0.yyyy, r11.xyzx, r10.xyzx
    dp3 r0.y, r10.xyzx, r10.xyzx
    rsq r0.y, r0.y
    mul r11.xyz, r0.yyyy, r10.xyzx
    max r0.z, r0.z, cb0[223].y
    mul r2.w, r0.z, r0.z
    mul r4.w, r0.y, cb1[6].w
    mad r5.w, -r0.z, r0.z, l(1.000000)
    mul_sat r4.w, r4.w, r5.w
    mul_sat r7.w, r0.y, cb1[7].z
    switch r2.x
      case l(1)
      case l(10)
      case l(11)
      dp3 r2.x, r3.xyzx, r11.xyzx
      dp3 r9.w, r3.xyzx, -r4.xyzx
      dp3 r10.w, -r4.xyzx, r11.xyzx
      lt r11.w, l(0.000000), r4.w
      if_nz r11.w
        mad r12.w, -r4.w, r4.w, l(1.000000)
        sqrt r12.w, r12.w
        dp2 r13.w, r9.wwww, r2.xxxx
        add r14.w, -r10.w, r13.w
        ge r15.x, r14.w, r12.w
        if_nz r15.x
          mov r15.x, l(1.000000)
          mov r15.y, |r9.w|
        else
          mad r15.z, -r14.w, r14.w, l(1.000000)
          rsq r15.z, r15.z
          mul r15.z, r4.w, r15.z
          mad r15.w, -r14.w, r2.x, r9.w
          mul r16.x, r15.w, r15.z
          mul r16.y, r9.w, r9.w
          mad r16.y, r16.y, l(2.000000), l(-1.000000)
          mad r14.w, -r14.w, r10.w, r16.y
          mul r14.w, r14.w, r15.z
          mad r16.y, -r2.x, r2.x, l(1.000000)
          mad r16.y, -r9.w, r9.w, r16.y
          mad r16.y, -r10.w, r10.w, r16.y
          mad_sat r13.w, r13.w, r10.w, r16.y
          sqrt r13.w, r13.w
          mul r13.w, r13.w, r15.z
          mul r16.y, r9.w, r13.w
          add r16.z, r16.y, r16.y
          mad r16.w, r2.x, r12.w, r9.w
          mad r15.z, r15.z, r15.w, r16.w
          mad r15.w, r10.w, r12.w, r14.w
          add r15.w, r15.w, l(1.000000)
          mul r17.x, r13.w, r15.w
          mul r17.y, r15.w, r15.z
          mul r17.z, r15.z, r16.z
          mul r16.y, r16.y, r15.z
          mul r16.y, r16.y, l(0.500000)
          mad r16.y, r17.x, l(-0.500000), r16.y
          mul r16.y, r16.y, r17.y
          mad r17.w, -r17.x, l(2.000000), r17.z
          mul r17.z, r17.w, r17.z
          mad r17.x, r17.x, r17.x, r17.z
          mul r17.z, r15.w, r15.w
          mad r15.w, r10.w, r12.w, r15.w
          mad r15.w, r15.w, l(-0.500000), l(-0.500000)
          mul r15.w, r15.w, r17.y
          mad r15.w, r16.w, r17.z, r15.w
          mad r15.z, r15.z, r15.w, r17.x
          add r15.w, r16.y, r16.y
          mul r16.w, r16.y, r16.y
          mad r16.w, r15.z, r15.z, r16.w
          div r15.w, r15.w, r16.w
          mul r15.z, r15.z, r15.w
          mad r15.w, -r15.w, r16.y, l(1.000000)
          mul r13.w, r13.w, r15.z
          mad r13.w, r15.w, r16.x, r13.w
          mul r15.z, r16.z, r15.z
          mad r14.w, r15.w, r14.w, r15.z
          mad r13.w, r2.x, r12.w, r13.w
          mad r12.w, r10.w, r12.w, r14.w
          mad r14.w, r12.w, l(2.000000), l(2.000000)
          rsq r14.w, r14.w
          add r13.w, r9.w, r13.w
          mul_sat r15.x, r14.w, r13.w
          mad_sat r15.y, r14.w, r12.w, r14.w
        endif
      else
        mad r12.w, r10.w, l(2.000000), l(2.000000)
        rsq r12.w, r12.w
        add r2.x, r2.x, r9.w
        mul_sat r15.x, r12.w, r2.x
        mad_sat r15.y, r12.w, r10.w, r12.w
      endif
      add r2.x, |r9.w|, l(0.000010)
      min r2.x, r2.x, l(1.000000)
      mul r16.xyz, r1.xxxx, r9.xyzx
      mul r12.xyz, r16.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
      mul r9.w, r2.w, r2.w
      lt r10.w, l(0.000000), r7.w
      mul r12.w, r7.w, r7.w
      mad r13.w, r15.y, l(3.600000), l(0.400000)
      div r12.w, r12.w, r13.w
      mad r12.w, r2.w, r2.w, r12.w
      min r12.w, r12.w, l(1.000000)
      movc r16.x, r10.w, r12.w, r9.w
      mul r9.w, r4.w, l(0.250000)
      ishr r10.w, r16.x, l(1)
      iadd r10.w, r10.w, l(0x1fbd1df5)
      mad r10.w, r10.w, l(3.000000), r4.w
      mul r9.w, r9.w, r10.w
      add r10.w, r15.y, l(0.001000)
      div r9.w, r9.w, r10.w
      add r17.x, r9.w, r16.x
      div r17.y, r16.x, r17.x
      mov r16.y, l(1.000000)
      movc r15.zw, r11.wwww, r17.xxxy, r16.xxxy
      lt r9.w, r5.z, l(1.000000)
      add r11.w, -r5.z, l(1.000100)
      add r12.w, r5.z, l(1.000000)
      div r11.w, r11.w, r12.w
      sqrt r11.w, r11.w
      mul r12.w, r11.w, l(0.250000)
      ishr r13.w, r15.z, l(1)
      iadd r13.w, r13.w, l(0x1fbd1df5)
      mad r11.w, r13.w, l(3.000000), r11.w
      mul r11.w, r11.w, r12.w
      div r10.w, r11.w, r10.w
      add r10.w, r10.w, r15.z
      div r10.w, r15.z, r10.w
      sqrt r10.w, r10.w
      mul r10.w, r10.w, r15.w
      movc r9.w, r9.w, r10.w, r15.w
      mad r10.w, r15.x, r16.x, -r15.x
      mad r10.w, r10.w, r15.x, l(1.000000)
      mul r10.w, r10.w, r10.w
      mul r10.w, r10.w, l(3.14159274)
      div r10.w, r16.x, r10.w
      mul r9.w, r9.w, r10.w
      sqrt r10.w, r16.x
      add r11.w, -r10.w, l(1.000000)
      mad r12.w, r2.x, r11.w, r10.w
      mad r10.w, r1.x, r11.w, r10.w
      mul r2.x, r2.x, r10.w
      mad r2.x, r1.x, r12.w, r2.x
      rcp r2.x, r2.x
      mul r2.x, r2.x, r9.w
      add r9.w, -r15.y, l(1.000000)
      mul r10.w, r9.w, r9.w
      mul r10.w, r10.w, r10.w
      mul r11.w, r9.w, r10.w
      mul_sat r12.w, r7.y, l(50.000000)
      mad r9.w, -r10.w, r9.w, l(1.000000)
      mul r15.xyz, r7.xyzx, r9.wwww
      mad r15.xyz, r12.wwww, r11.wwww, r15.xyzx
      mul r2.x, r2.x, l(0.500000)
      mul r15.xyz, r15.xyzx, r2.xxxx
      mul r13.xyz, r1.xxxx, r15.xyzx
      mov r14.xyz, l(0,0,0,0)
      break
      case l(2)
      dp3 r2.x, r3.xyzx, r11.xyzx
      dp3 r9.w, r3.xyzx, -r4.xyzx
      dp3 r10.w, -r4.xyzx, r11.xyzx
      lt r11.w, l(0.000000), r4.w
      if_nz r11.w
        mad r12.w, -r4.w, r4.w, l(1.000000)
        sqrt r12.w, r12.w
        dp2 r13.w, r9.wwww, r2.xxxx
        add r14.w, -r10.w, r13.w
        ge r15.x, r14.w, r12.w
        if_nz r15.x
          mov r15.x, l(1.000000)
          mov r15.y, |r9.w|
        else
          mad r15.z, -r14.w, r14.w, l(1.000000)
          rsq r15.z, r15.z
          mul r15.z, r4.w, r15.z
          mad r15.w, -r14.w, r2.x, r9.w
          mul r16.x, r15.w, r15.z
          mul r16.y, r9.w, r9.w
          mad r16.y, r16.y, l(2.000000), l(-1.000000)
          mad r14.w, -r14.w, r10.w, r16.y
          mul r14.w, r14.w, r15.z
          mad r16.y, -r2.x, r2.x, l(1.000000)
          mad r16.y, -r9.w, r9.w, r16.y
          mad r16.y, -r10.w, r10.w, r16.y
          mad_sat r13.w, r13.w, r10.w, r16.y
          sqrt r13.w, r13.w
          mul r13.w, r13.w, r15.z
          mul r16.y, r9.w, r13.w
          add r16.z, r16.y, r16.y
          mad r16.w, r2.x, r12.w, r9.w
          mad r15.z, r15.z, r15.w, r16.w
          mad r15.w, r10.w, r12.w, r14.w
          add r15.w, r15.w, l(1.000000)
          mul r17.x, r13.w, r15.w
          mul r17.y, r15.w, r15.z
          mul r17.z, r15.z, r16.z
          mul r16.y, r16.y, r15.z
          mul r16.y, r16.y, l(0.500000)
          mad r16.y, r17.x, l(-0.500000), r16.y
          mul r16.y, r16.y, r17.y
          mad r17.w, -r17.x, l(2.000000), r17.z
          mul r17.z, r17.w, r17.z
          mad r17.x, r17.x, r17.x, r17.z
          mul r17.z, r15.w, r15.w
          mad r15.w, r10.w, r12.w, r15.w
          mad r15.w, r15.w, l(-0.500000), l(-0.500000)
          mul r15.w, r15.w, r17.y
          mad r15.w, r16.w, r17.z, r15.w
          mad r15.z, r15.z, r15.w, r17.x
          add r15.w, r16.y, r16.y
          mul r16.w, r16.y, r16.y
          mad r16.w, r15.z, r15.z, r16.w
          div r15.w, r15.w, r16.w
          mul r15.z, r15.z, r15.w
          mad r15.w, -r15.w, r16.y, l(1.000000)
          mul r13.w, r13.w, r15.z
          mad r13.w, r15.w, r16.x, r13.w
          mul r15.z, r16.z, r15.z
          mad r14.w, r15.w, r14.w, r15.z
          mad r13.w, r2.x, r12.w, r13.w
          mad r12.w, r10.w, r12.w, r14.w
          mad r14.w, r12.w, l(2.000000), l(2.000000)
          rsq r14.w, r14.w
          add r13.w, r9.w, r13.w
          mul_sat r15.x, r14.w, r13.w
          mad_sat r15.y, r14.w, r12.w, r14.w
        endif
      else
        mad r12.w, r10.w, l(2.000000), l(2.000000)
        rsq r12.w, r12.w
        add r2.x, r2.x, r9.w
        mul_sat r15.x, r12.w, r2.x
        mad_sat r15.y, r12.w, r10.w, r12.w
      endif
      add r2.x, |r9.w|, l(0.000010)
      min r2.x, r2.x, l(1.000000)
      mul r16.xyz, r1.xxxx, r9.xyzx
      mul r12.xyz, r16.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
      mul r9.w, r2.w, r2.w
      lt r10.w, l(0.000000), r7.w
      mul r12.w, r7.w, r7.w
      mad r13.w, r15.y, l(3.600000), l(0.400000)
      div r12.w, r12.w, r13.w
      mad r12.w, r2.w, r2.w, r12.w
      min r12.w, r12.w, l(1.000000)
      movc r16.x, r10.w, r12.w, r9.w
      mul r9.w, r4.w, l(0.250000)
      ishr r10.w, r16.x, l(1)
      iadd r10.w, r10.w, l(0x1fbd1df5)
      mad r10.w, r10.w, l(3.000000), r4.w
      mul r9.w, r9.w, r10.w
      add r10.w, r15.y, l(0.001000)
      div r9.w, r9.w, r10.w
      add r17.x, r9.w, r16.x
      div r17.y, r16.x, r17.x
      mov r16.y, l(1.000000)
      movc r15.zw, r11.wwww, r17.xxxy, r16.xxxy
      lt r9.w, r5.z, l(1.000000)
      add r11.w, -r5.z, l(1.000100)
      add r12.w, r5.z, l(1.000000)
      div r11.w, r11.w, r12.w
      sqrt r11.w, r11.w
      mul r12.w, r11.w, l(0.250000)
      ishr r13.w, r15.z, l(1)
      iadd r13.w, r13.w, l(0x1fbd1df5)
      mad r11.w, r13.w, l(3.000000), r11.w
      mul r11.w, r11.w, r12.w
      div r10.w, r11.w, r10.w
      add r10.w, r10.w, r15.z
      div r10.w, r15.z, r10.w
      sqrt r10.w, r10.w
      mul r10.w, r10.w, r15.w
      movc r9.w, r9.w, r10.w, r15.w
      mad r10.w, r15.x, r16.x, -r15.x
      mad r10.w, r10.w, r15.x, l(1.000000)
      mul r10.w, r10.w, r10.w
      mul r10.w, r10.w, l(3.14159274)
      div r10.w, r16.x, r10.w
      mul r9.w, r9.w, r10.w
      sqrt r10.w, r16.x
      add r11.w, -r10.w, l(1.000000)
      mad r12.w, r2.x, r11.w, r10.w
      mad r10.w, r1.x, r11.w, r10.w
      mul r2.x, r2.x, r10.w
      mad r2.x, r1.x, r12.w, r2.x
      rcp r2.x, r2.x
      mul r2.x, r2.x, r9.w
      add r9.w, -r15.y, l(1.000000)
      mul r10.w, r9.w, r9.w
      mul r10.w, r10.w, r10.w
      mul r11.w, r9.w, r10.w
      mul_sat r12.w, r7.y, l(50.000000)
      mad r9.w, -r10.w, r9.w, l(1.000000)
      mul r15.xyz, r7.xyzx, r9.wwww
      mad r15.xyz, r12.wwww, r11.wwww, r15.xyzx
      mul r2.x, r2.x, l(0.500000)
      mul r15.xyz, r15.xyzx, r2.xxxx
      mul r13.xyz, r1.xxxx, r15.xyzx
      mul r15.xyz, r8.yzwy, r8.yzwy
      mad r10.xyz, r10.xyzx, r0.yyyy, -r4.xyzx
      dp3 r0.y, r10.xyzx, r10.xyzx
      rsq r0.y, r0.y
      mul r10.xyz, r0.yyyy, r10.xyzx
      dp3_sat r0.y, r11.xyzx, r4.xyzx
      log r0.y, r0.y
      mul r0.y, r0.y, l(12.000000)
      exp r0.y, r0.y
      mad r2.x, r8.x, l(-2.900000), l(3.000000)
      mul r0.y, r0.y, r2.x
      dp3 r2.x, r3.xyzx, r10.xyzx
      mad r2.x, r2.x, r8.x, l(1.000000)
      add_sat r2.x, -r8.x, r2.x
      mul r9.w, r2.x, l(0.159154937)
      mad r2.x, -r2.x, l(0.159154937), l(1.000000)
      mad r0.y, r0.y, r2.x, r9.w
      mul r14.xyz, r15.xyzx, r0.yyyy
      break
      case l(3)
      dp3 r0.y, r3.xyzx, r11.xyzx
      dp3 r2.x, r3.xyzx, -r4.xyzx
      dp3 r9.w, -r4.xyzx, r11.xyzx
      lt r10.x, l(0.000000), r4.w
      if_nz r10.x
        mad r10.y, -r4.w, r4.w, l(1.000000)
        sqrt r10.y, r10.y
        dp2 r10.z, r2.xxxx, r0.yyyy
        add r10.w, -r9.w, r10.z
        ge r11.w, r10.w, r10.y
        if_nz r11.w
          mov r11.w, l(1.000000)
          mov r12.w, |r2.x|
        else
          mad r13.w, -r10.w, r10.w, l(1.000000)
          rsq r13.w, r13.w
          mul r13.w, r4.w, r13.w
          mad r14.w, -r10.w, r0.y, r2.x
          mul r15.x, r13.w, r14.w
          mul r15.y, r2.x, r2.x
          mad r15.y, r15.y, l(2.000000), l(-1.000000)
          mad r10.w, -r10.w, r9.w, r15.y
          mad r15.y, -r0.y, r0.y, l(1.000000)
          mad r15.y, -r2.x, r2.x, r15.y
          mad r15.y, -r9.w, r9.w, r15.y
          mad_sat r10.z, r10.z, r9.w, r15.y
          sqrt r10.z, r10.z
          mul r10.zw, r10.zzzw, r13.wwww
          mul r15.y, r2.x, r10.z
          add r15.z, r15.y, r15.y
          mad r15.w, r0.y, r10.y, r2.x
          mad r13.w, r13.w, r14.w, r15.w
          mad r14.w, r9.w, r10.y, r10.w
          add r14.w, r14.w, l(1.000000)
          mul r16.x, r10.z, r14.w
          mul r16.y, r13.w, r14.w
          mul r16.z, r13.w, r15.z
          mul r15.y, r15.y, r13.w
          mul r15.y, r15.y, l(0.500000)
          mad r15.y, r16.x, l(-0.500000), r15.y
          mul r15.y, r15.y, r16.y
          mad r16.w, -r16.x, l(2.000000), r16.z
          mul r16.z, r16.w, r16.z
          mad r16.x, r16.x, r16.x, r16.z
          mul r16.z, r14.w, r14.w
          mad r14.w, r9.w, r10.y, r14.w
          mad r14.w, r14.w, l(-0.500000), l(-0.500000)
          mul r14.w, r14.w, r16.y
          mad r14.w, r15.w, r16.z, r14.w
          mad r13.w, r13.w, r14.w, r16.x
          add r14.w, r15.y, r15.y
          mul r15.w, r15.y, r15.y
          mad r15.w, r13.w, r13.w, r15.w
          div r14.w, r14.w, r15.w
          mul r13.w, r13.w, r14.w
          mad r14.w, -r14.w, r15.y, l(1.000000)
          mul r10.z, r10.z, r13.w
          mad r10.z, r14.w, r15.x, r10.z
          mul r13.w, r15.z, r13.w
          mad r10.w, r14.w, r10.w, r13.w
          mad r10.z, r0.y, r10.y, r10.z
          mad r10.y, r9.w, r10.y, r10.w
          mad r10.w, r10.y, l(2.000000), l(2.000000)
          rsq r10.w, r10.w
          add r10.z, r2.x, r10.z
          mul_sat r11.w, r10.w, r10.z
          mad_sat r12.w, r10.w, r10.y, r10.w
        endif
      else
        mad r10.y, r9.w, l(2.000000), l(2.000000)
        rsq r10.y, r10.y
        add r10.z, r0.y, r2.x
        mul_sat r11.w, r10.y, r10.z
        mad_sat r12.w, r10.y, r9.w, r10.y
      endif
      add r2.x, |r2.x|, l(0.000010)
      min r2.x, r2.x, l(1.000000)
      mul r10.yzw, r1.xxxx, r9.xxyz
      mul r12.xyz, r10.yzwy, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
      mul r9.w, r2.w, r2.w
      lt r10.y, l(0.000000), r7.w
      mul r10.z, r7.w, r7.w
      mad r10.w, r12.w, l(3.600000), l(0.400000)
      div r10.z, r10.z, r10.w
      mad r10.z, r2.w, r2.w, r10.z
      min r10.z, r10.z, l(1.000000)
      movc r15.x, r10.y, r10.z, r9.w
      mul r9.w, r4.w, l(0.250000)
      ishr r10.y, r15.x, l(1)
      iadd r10.y, r10.y, l(0x1fbd1df5)
      mad r10.y, r10.y, l(3.000000), r4.w
      mul r9.w, r9.w, r10.y
      add r10.y, r12.w, l(0.001000)
      div r9.w, r9.w, r10.y
      add r16.x, r9.w, r15.x
      div r16.y, r15.x, r16.x
      mov r15.y, l(1.000000)
      movc r10.xz, r10.xxxx, r16.xxyx, r15.xxyx
      lt r9.w, r5.z, l(1.000000)
      add r10.w, -r5.z, l(1.000100)
      add r13.w, r5.z, l(1.000000)
      div r10.w, r10.w, r13.w
      sqrt r10.w, r10.w
      mul r13.w, r10.w, l(0.250000)
      ishr r14.w, r10.x, l(1)
      iadd r14.w, r14.w, l(0x1fbd1df5)
      mad r10.w, r14.w, l(3.000000), r10.w
      mul r10.w, r10.w, r13.w
      div r10.y, r10.w, r10.y
      add r10.y, r10.y, r10.x
      div r10.x, r10.x, r10.y
      sqrt r10.x, r10.x
      mul r10.x, r10.x, r10.z
      movc r9.w, r9.w, r10.x, r10.z
      mad r10.x, r11.w, r15.x, -r11.w
      mad r10.x, r10.x, r11.w, l(1.000000)
      mul r10.x, r10.x, r10.x
      mul r10.x, r10.x, l(3.14159274)
      div r10.x, r15.x, r10.x
      mul r9.w, r9.w, r10.x
      sqrt r10.x, r15.x
      add r10.y, -r10.x, l(1.000000)
      mad r10.z, r2.x, r10.y, r10.x
      mad r10.x, r1.x, r10.y, r10.x
      mul r2.x, r2.x, r10.x
      mad r2.x, r1.x, r10.z, r2.x
      rcp r2.x, r2.x
      mul r2.x, r2.x, r9.w
      add r9.w, -r12.w, l(1.000000)
      mul r10.x, r9.w, r9.w
      mul r10.x, r10.x, r10.x
      mul r10.y, r9.w, r10.x
      mul_sat r10.z, r7.y, l(50.000000)
      mad r9.w, -r10.x, r9.w, l(1.000000)
      mul r15.xyz, r7.xyzx, r9.wwww
      mad r10.xyz, r10.zzzz, r10.yyyy, r15.xyzx
      mul r2.x, r2.x, l(0.500000)
      mul r10.xyz, r10.xyzx, r2.xxxx
      mul r13.xyz, r1.xxxx, r10.xyzx
      mul r10.xyz, r8.yzwy, r8.yzwy
      mad_sat r15.x, r0.y, l(0.500000), l(0.500000)
      add r15.y, -r8.x, l(1.000000)
      sample_l_indexable(texture2d)(float,float,float,float) r15.xyz, r15.xyxx, t0.xyzw, s0, l(0.000000)
      mul r14.xyz, r10.xyzx, r15.xyzx
      break
      case l(4)
      max r0.y, r8.z, l(0.020000)
      dp3 r10.x, r3.xyzx, r11.xyzx
      dp3 r2.x, r3.xyzx, -r4.xyzx
      dp3 r9.w, -r4.xyzx, r11.xyzx
      lt r10.w, l(0.000000), r4.w
      if_nz r10.w
        mad r11.w, -r4.w, r4.w, l(1.000000)
        sqrt r11.w, r11.w
        dp2 r12.w, r2.xxxx, r10.xxxx
        add r13.w, -r9.w, r12.w
        ge r14.w, r13.w, r11.w
        if_nz r14.w
          mov r10.z, |r2.x|
          mov r10.y, l(1.000000)
        else
          mad r14.w, -r13.w, r13.w, l(1.000000)
          rsq r14.w, r14.w
          mul r14.w, r4.w, r14.w
          mad r15.x, -r13.w, r10.x, r2.x
          mul r15.y, r14.w, r15.x
          mul r15.z, r2.x, r2.x
          mad r15.z, r15.z, l(2.000000), l(-1.000000)
          mad r13.w, -r13.w, r9.w, r15.z
          mul r13.w, r13.w, r14.w
          mad r15.z, -r10.x, r10.x, l(1.000000)
          mad r15.z, -r2.x, r2.x, r15.z
          mad r15.z, -r9.w, r9.w, r15.z
          mad_sat r12.w, r12.w, r9.w, r15.z
          sqrt r12.w, r12.w
          mul r12.w, r12.w, r14.w
          mul r15.z, r2.x, r12.w
          add r15.w, r15.z, r15.z
          mad r16.x, r10.x, r11.w, r2.x
          mad r14.w, r14.w, r15.x, r16.x
          mad r15.x, r9.w, r11.w, r13.w
          add r15.x, r15.x, l(1.000000)
          mul r16.y, r12.w, r15.x
          mul r16.z, r14.w, r15.x
          mul r16.w, r14.w, r15.w
          mul r15.z, r15.z, r14.w
          mul r15.z, r15.z, l(0.500000)
          mad r15.z, r16.y, l(-0.500000), r15.z
          mad r17.x, -r16.y, l(2.000000), r16.w
          mul r16.w, r16.w, r17.x
          mad r16.y, r16.y, r16.y, r16.w
          mul r16.w, r15.x, r15.x
          mad r15.x, r9.w, r11.w, r15.x
          mad r15.x, r15.x, l(-0.500000), l(-0.500000)
          mul r15.xz, r15.xxzx, r16.zzzz
          mad r15.x, r16.x, r16.w, r15.x
          mad r14.w, r14.w, r15.x, r16.y
          add r15.x, r15.z, r15.z
          mul r16.x, r15.z, r15.z
          mad r16.x, r14.w, r14.w, r16.x
          div r15.x, r15.x, r16.x
          mul r14.w, r14.w, r15.x
          mad r15.x, -r15.x, r15.z, l(1.000000)
          mul r12.w, r12.w, r14.w
          mad r12.w, r15.x, r15.y, r12.w
          mul r14.w, r15.w, r14.w
          mad r13.w, r15.x, r13.w, r14.w
          mad r10.x, r10.x, r11.w, r12.w
          mad r11.w, r9.w, r11.w, r13.w
          mad r12.w, r11.w, l(2.000000), l(2.000000)
          rsq r12.w, r12.w
          add r13.w, r2.x, r10.x
          mul_sat r10.y, r12.w, r13.w
          mad_sat r10.z, r12.w, r11.w, r12.w
        endif
      else
        mad r11.w, r9.w, l(2.000000), l(2.000000)
        rsq r11.w, r11.w
        add r12.w, r2.x, r10.x
        mul_sat r10.y, r11.w, r12.w
        mad_sat r10.z, r11.w, r9.w, r11.w
      endif
      add r2.x, |r2.x|, l(0.000010)
      min r2.x, r2.x, l(1.000000)
      add r9.w, -r10.z, l(1.000000)
      mul r11.w, r9.w, r9.w
      mul r11.w, r11.w, r11.w
      mul r12.w, r9.w, r11.w
      mad r9.w, -r11.w, r9.w, l(1.000000)
      mad r9.w, r9.w, l(0.040000), r12.w
      mul r0.y, r0.y, r0.y
      mul r11.w, r0.y, r0.y
      lt r12.w, l(0.000000), r7.w
      mul r13.w, r7.w, r7.w
      mad r14.w, r10.z, l(3.600000), l(0.400000)
      div r14.w, r13.w, r14.w
      mad r0.y, r0.y, r0.y, r14.w
      min r0.y, r0.y, l(1.000000)
      movc r15.x, r12.w, r0.y, r11.w
      mul r0.y, r4.w, l(0.250000)
      ishr r11.w, r15.x, l(1)
      iadd r11.w, r11.w, l(0x1fbd1df5)
      mad r11.w, r11.w, l(3.000000), r4.w
      mul r11.w, r0.y, r11.w
      add r14.w, r10.z, l(0.001000)
      div r11.w, r11.w, r14.w
      add r16.x, r11.w, r15.x
      div r16.y, r15.x, r16.x
      mov r15.yw, l(0,1.000000,0,1.000000)
      movc r16.xy, r10.wwww, r16.xyxx, r15.xyxx
      lt r11.w, r5.z, l(1.000000)
      add r15.y, -r5.z, l(1.000100)
      add r16.z, r5.z, l(1.000000)
      div r15.y, r15.y, r16.z
      sqrt r15.y, r15.y
      mul r16.z, r15.y, l(0.250000)
      ishr r16.w, r16.x, l(1)
      iadd r16.w, r16.w, l(0x1fbd1df5)
      mad r16.w, r16.w, l(3.000000), r15.y
      mul r16.w, r16.w, r16.z
      div r14.w, r16.w, r14.w
      add r14.w, r14.w, r16.x
      div r14.w, r16.x, r14.w
      sqrt r14.w, r14.w
      mul r14.w, r14.w, r16.y
      movc r14.w, r11.w, r14.w, r16.y
      mad r16.x, r10.y, r15.x, -r10.y
      mad r16.x, r16.x, r10.y, l(1.000000)
      mul r16.x, r16.x, r16.x
      mul r16.x, r16.x, l(3.14159274)
      div r16.x, r15.x, r16.x
      mul r14.w, r14.w, r16.x
      sqrt r15.x, r15.x
      add r16.x, -r15.x, l(1.000000)
      mad r16.y, r2.x, r16.x, r15.x
      mad r15.x, r1.x, r16.x, r15.x
      mul r15.x, r2.x, r15.x
      mad r15.x, r1.x, r16.y, r15.x
      rcp r15.x, r15.x
      mul r14.w, r14.w, r15.x
      mul r14.w, r9.w, r14.w
      mul r14.w, r1.x, r14.w
      mul r14.w, r8.y, r14.w
      add r9.w, -r9.w, l(1.000000)
      mul r9.w, r9.w, r9.w
      mad r15.x, -r10.z, l(0.220000), l(0.630000)
      mad r15.x, r15.x, r10.z, l(-0.745000)
      mul r16.x, r10.y, r15.x
      mad_sat r2.x, r2.x, l(0.666666687), -r16.x
      mad_sat r16.x, r10.x, l(0.666666687), -r16.x
      mad_sat r10.z, r10.z, l(0.666666687), -r15.x
      lt r15.x, l(0.000000), r16.x
      lt r16.y, l(0.000000), r2.x
      and r15.x, r15.x, r16.y
      rcp r16.y, r2.x
      rcp r16.w, r16.x
      add r16.y, r16.w, r16.y
      lt r16.w, l(0.000000), r0.w
      mul r17.xyz, r6.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
      log r17.xyz, r17.xyzx
      mul r17.xyz, r17.xyzx, l(-0.346573591, -0.346573591, -0.346573591, 0.000000)
      add r16.y, r16.y, l(-2.000000)
      max r16.y, r16.y, l(0.000000)
      mul r17.xyz, r16.yyyy, r17.xyzx
      mul r17.xyz, r17.xyzx, l(-1.442695, -1.442695, -1.442695, 0.000000)
      exp r17.xyz, r17.xyzx
      min r17.xyz, r17.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      add r17.xyz, r17.xyzx, l(-1.000000, -1.000000, -1.000000, 0.000000)
      mad r17.xyz, r0.wwww, r17.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
      movc r17.xyz, r16.wwww, r17.xyzx, l(1.000000,1.000000,1.000000,0)
      and r17.xyz, r15.xxxx, r17.xyzx
      mul r15.x, r2.w, r2.w
      mad r16.y, r10.z, l(3.600000), l(0.400000)
      div r13.w, r13.w, r16.y
      mad r13.w, r2.w, r2.w, r13.w
      min r13.w, r13.w, l(1.000000)
      movc r15.z, r12.w, r13.w, r15.x
      ishr r12.w, r15.z, l(1)
      iadd r12.w, r12.w, l(0x1fbd1df5)
      mad r12.w, r12.w, l(3.000000), r4.w
      mul r0.y, r0.y, r12.w
      add r12.w, r10.z, l(0.001000)
      div r0.y, r0.y, r12.w
      add r18.x, r0.y, r15.z
      div r18.y, r15.z, r18.x
      movc r15.xw, r10.wwww, r18.xxxy, r15.zzzw
      ishr r0.y, r15.x, l(1)
      iadd r0.y, r0.y, l(0x1fbd1df5)
      mad r0.y, r0.y, l(3.000000), r15.y
      mul r0.y, r0.y, r16.z
      div r0.y, r0.y, r12.w
      add r0.y, r0.y, r15.x
      div r0.y, r15.x, r0.y
      sqrt r0.y, r0.y
      mul r0.y, r0.y, r15.w
      movc r0.y, r11.w, r0.y, r15.w
      mul r15.xyw, r0.yyyy, r9.xyxz
      mul r15.xyw, r15.xyxw, l(0.318309873, 0.318309873, 0.000000, 0.318309873)
      mul r10.w, r9.w, r16.x
      mad r16.yzw, r10.wwww, r17.xxyz, -r10.xxxx
      mad r16.yzw, r8.yyyy, r16.yyzw, r10.xxxx
      mul r12.xyz, r15.xywx, r16.yzwy
      mad r10.w, r10.y, r15.z, -r10.y
      mad r10.y, r10.w, r10.y, l(1.000000)
      mul r10.y, r10.y, r10.y
      mul r10.y, r10.y, l(3.14159274)
      div r10.y, r15.z, r10.y
      sqrt r10.w, r15.z
      add r11.w, -r10.w, l(1.000000)
      mad r12.w, r2.x, r11.w, r10.w
      mad r10.w, r16.x, r11.w, r10.w
      mul r2.x, r2.x, r10.w
      mad r2.x, r16.x, r12.w, r2.x
      rcp r2.x, r2.x
      mul r2.x, r2.x, l(0.500000)
      add r10.z, -r10.z, l(1.000000)
      mul r10.w, r10.z, r10.z
      mul r10.w, r10.w, r10.w
      mul r11.w, r10.z, r10.w
      mul_sat r12.w, r7.y, l(50.000000)
      mad r10.z, -r10.w, r10.z, l(1.000000)
      mul r15.xyz, r7.xyzx, r10.zzzz
      mad r15.xyz, r12.wwww, r11.wwww, r15.xyzx
      mul r0.y, r0.y, r10.y
      mul r0.y, r2.x, r0.y
      mul r10.yzw, r15.xxyz, r0.yyyy
      mul r15.xyz, r9.wwww, r17.xyzx
      mad r15.xyz, r15.xyzx, r16.xxxx, -r10.xxxx
      mad r15.xyz, r8.yyyy, r15.xyzx, r10.xxxx
      mul r10.xyz, r10.yzwy, r15.xyzx
      mad r13.xyz, r14.wwww, l(0.500000, 0.500000, 0.500000, 0.000000), r10.xyzx
      mov r14.xyz, l(0,0,0,0)
      break
      case l(5)
      dp3 r0.y, r3.xyzx, r11.xyzx
      dp3 r2.x, r3.xyzx, -r4.xyzx
      dp3 r9.w, -r4.xyzx, r11.xyzx
      lt r10.x, l(0.000000), r4.w
      if_nz r10.x
        mad r10.y, -r4.w, r4.w, l(1.000000)
        sqrt r10.y, r10.y
        dp2 r10.z, r2.xxxx, r0.yyyy
        add r10.w, -r9.w, r10.z
        ge r11.w, r10.w, r10.y
        if_nz r11.w
          mov r11.w, l(1.000000)
          mov r12.w, |r2.x|
        else
          mad r13.w, -r10.w, r10.w, l(1.000000)
          rsq r13.w, r13.w
          mul r13.w, r4.w, r13.w
          mad r14.w, -r10.w, r0.y, r2.x
          mul r15.x, r13.w, r14.w
          mul r15.y, r2.x, r2.x
          mad r15.y, r15.y, l(2.000000), l(-1.000000)
          mad r10.w, -r10.w, r9.w, r15.y
          mad r15.y, -r0.y, r0.y, l(1.000000)
          mad r15.y, -r2.x, r2.x, r15.y
          mad r15.y, -r9.w, r9.w, r15.y
          mad_sat r10.z, r10.z, r9.w, r15.y
          sqrt r10.z, r10.z
          mul r10.zw, r10.zzzw, r13.wwww
          mul r15.y, r2.x, r10.z
          add r15.z, r15.y, r15.y
          mad r15.w, r0.y, r10.y, r2.x
          mad r13.w, r13.w, r14.w, r15.w
          mad r14.w, r9.w, r10.y, r10.w
          add r14.w, r14.w, l(1.000000)
          mul r16.x, r10.z, r14.w
          mul r16.y, r13.w, r14.w
          mul r16.z, r13.w, r15.z
          mul r15.y, r15.y, r13.w
          mul r15.y, r15.y, l(0.500000)
          mad r15.y, r16.x, l(-0.500000), r15.y
          mul r15.y, r15.y, r16.y
          mad r16.w, -r16.x, l(2.000000), r16.z
          mul r16.z, r16.w, r16.z
          mad r16.x, r16.x, r16.x, r16.z
          mul r16.z, r14.w, r14.w
          mad r14.w, r9.w, r10.y, r14.w
          mad r14.w, r14.w, l(-0.500000), l(-0.500000)
          mul r14.w, r14.w, r16.y
          mad r14.w, r15.w, r16.z, r14.w
          mad r13.w, r13.w, r14.w, r16.x
          add r14.w, r15.y, r15.y
          mul r15.w, r15.y, r15.y
          mad r15.w, r13.w, r13.w, r15.w
          div r14.w, r14.w, r15.w
          mul r13.w, r13.w, r14.w
          mad r14.w, -r14.w, r15.y, l(1.000000)
          mul r10.z, r10.z, r13.w
          mad r10.z, r14.w, r15.x, r10.z
          mul r13.w, r15.z, r13.w
          mad r10.w, r14.w, r10.w, r13.w
          mad r10.z, r0.y, r10.y, r10.z
          mad r10.y, r9.w, r10.y, r10.w
          mad r10.w, r10.y, l(2.000000), l(2.000000)
          rsq r10.w, r10.w
          add r10.z, r2.x, r10.z
          mul_sat r11.w, r10.w, r10.z
          mad_sat r12.w, r10.w, r10.y, r10.w
        endif
      else
        mad r10.y, r9.w, l(2.000000), l(2.000000)
        rsq r10.y, r10.y
        add r0.y, r0.y, r2.x
        mul_sat r11.w, r10.y, r0.y
        mad_sat r12.w, r10.y, r9.w, r10.y
      endif
      add r0.y, |r2.x|, l(0.000010)
      min r0.y, r0.y, l(1.000000)
      mul r2.x, r8.x, l(10.000000)
      mad r9.w, r8.y, l(255.000000), l(0.500000)
      ftou r15.y, r9.w
      mov r15.xzw, l(5,0,0,0)
      ld_indexable(texture2d)(float,float,float,float) r10.yzw, r15.xyzw, t9.wxyz
      dp2_sat r9.w, r10.yyyy, r0.zzzz
      max r9.w, r9.w, l(0.020000)
      dp2_sat r10.y, r10.zzzz, r0.zzzz
      mov_sat r2.x, r2.x
      add r9.w, r9.w, l(-1.000000)
      mad r9.w, r2.x, r9.w, l(1.000000)
      add r10.y, r10.y, l(-1.000000)
      mad r2.x, r2.x, r10.y, l(1.000000)
      mul r10.y, r12.w, r12.w
      dp2 r10.y, r10.yyyy, r0.zzzz
      add r10.y, r10.y, l(-0.500000)
      add r10.z, -r0.y, l(1.000000)
      mul r13.w, r10.z, r10.z
      mul r13.w, r13.w, r13.w
      mul r10.z, r10.z, r13.w
      mad r10.z, r10.y, r10.z, l(1.000000)
      add r13.w, -r1.x, l(1.000000)
      mul r14.w, r13.w, r13.w
      mul r14.w, r14.w, r14.w
      mul r13.w, r13.w, r14.w
      mad r10.y, r10.y, r13.w, l(1.000000)
      mul r10.y, r10.z, r10.y
      mul r10.y, r10.y, l(0.318309873)
      mul r15.xyz, r9.xyzx, r10.yyyy
      mul r12.xyz, r1.xxxx, r15.xyzx
      mul r9.w, r9.w, r9.w
      mul r10.y, r9.w, r9.w
      mul r2.x, r2.x, r2.x
      mul r10.z, r2.x, r2.x
      lt r13.w, l(0.000000), r7.w
      mul r14.w, r7.w, r7.w
      mad r15.x, r12.w, l(3.600000), l(0.400000)
      div r14.w, r14.w, r15.x
      mad r9.w, r9.w, r9.w, r14.w
      min r9.w, r9.w, l(1.000000)
      movc r15.x, r13.w, r9.w, r10.y
      mul r9.w, r4.w, l(0.250000)
      ishr r10.y, r15.x, l(1)
      iadd r10.y, r10.y, l(0x1fbd1df5)
      mad r10.y, r10.y, l(3.000000), r4.w
      mul r10.y, r9.w, r10.y
      add r16.x, r12.w, l(0.001000)
      div r10.y, r10.y, r16.x
      add r17.x, r10.y, r15.x
      div r17.y, r15.x, r17.x
      mov r15.yw, l(0,1.000000,0,1.000000)
      movc r16.yz, r10.xxxx, r17.xxyx, r15.xxyx
      lt r10.y, r5.z, l(1.000000)
      add r15.y, -r5.z, l(1.000100)
      add r16.w, r5.z, l(1.000000)
      div r15.y, r15.y, r16.w
      sqrt r15.y, r15.y
      mul r16.w, r15.y, l(0.250000)
      ishr r17.x, r16.y, l(1)
      iadd r17.x, r17.x, l(0x1fbd1df5)
      mad r17.x, r17.x, l(3.000000), r15.y
      mul r17.x, r16.w, r17.x
      div r17.x, r17.x, r16.x
      add r17.x, r16.y, r17.x
      div r16.y, r16.y, r17.x
      sqrt r16.y, r16.y
      mul r16.y, r16.y, r16.z
      movc r16.y, r10.y, r16.y, r16.z
      mad r2.x, r2.x, r2.x, r14.w
      min r2.x, r2.x, l(1.000000)
      movc r15.z, r13.w, r2.x, r10.z
      ishr r2.x, r15.z, l(1)
      iadd r2.x, r2.x, l(0x1fbd1df5)
      mad r2.x, r2.x, l(3.000000), r4.w
      mul r2.x, r2.x, r9.w
      div r2.x, r2.x, r16.x
      add r17.x, r2.x, r15.z
      div r17.y, r15.z, r17.x
      movc r10.xz, r10.xxxx, r17.xxyx, r15.zzwz
      ishr r2.x, r10.x, l(1)
      iadd r2.x, r2.x, l(0x1fbd1df5)
      mad r2.x, r2.x, l(3.000000), r15.y
      mul r2.x, r2.x, r16.w
      div r2.x, r2.x, r16.x
      add r2.x, r2.x, r10.x
      div r2.x, r10.x, r2.x
      sqrt r2.x, r2.x
      mul r2.x, r2.x, r10.z
      movc r2.x, r10.y, r2.x, r10.z
      mad r10.xy, r11.wwww, r15.xzxx, -r11.wwww
      mad r10.xy, r10.xyxx, r11.wwww, l(1.000000, 1.000000, 0.000000, 0.000000)
      mul r10.xy, r10.xyxx, r10.xyxx
      mul r10.xy, r10.xyxx, l(3.14159274, 3.14159274, 0.000000, 0.000000)
      div r10.xy, r15.xzxx, r10.xyxx
      mul r9.w, r16.y, r10.x
      mad r2.x, r10.y, r2.x, -r9.w
      mad r2.x, r10.w, r2.x, r9.w
      mad r9.w, r0.y, r5.w, r2.w
      mad r5.w, r1.x, r5.w, r2.w
      mul r0.y, r0.y, r5.w
      mad r0.y, r1.x, r9.w, r0.y
      rcp r0.y, r0.y
      mul r0.y, r0.y, r2.x
      add r2.x, -r12.w, l(1.000000)
      mul r5.w, r2.x, r2.x
      mul r5.w, r5.w, r5.w
      mul r9.w, r2.x, r5.w
      mul_sat r10.x, r7.y, l(50.000000)
      mad r2.x, -r5.w, r2.x, l(1.000000)
      mul r10.yzw, r7.xxyz, r2.xxxx
      mad r10.xyz, r10.xxxx, r9.wwww, r10.yzwy
      mul r0.y, r0.y, l(0.500000)
      mul r10.xyz, r10.xyzx, r0.yyyy
      mul r13.xyz, r1.xxxx, r10.xyzx
      mov r14.xyz, l(0,0,0,0)
      break
      case l(6)
      dp3 r0.y, r3.xyzx, r11.xyzx
      dp3 r2.x, r3.xyzx, -r4.xyzx
      dp3 r5.w, -r4.xyzx, r11.xyzx
      lt r9.w, l(0.000000), r4.w
      if_nz r9.w
        mad r10.x, -r4.w, r4.w, l(1.000000)
        sqrt r10.x, r10.x
        dp2 r10.y, r2.xxxx, r0.yyyy
        add r10.z, -r5.w, r10.y
        ge r10.w, r10.z, r10.x
        if_nz r10.w
          mov r10.w, l(1.000000)
          mov r11.w, |r2.x|
        else
          mad r12.w, -r10.z, r10.z, l(1.000000)
          rsq r12.w, r12.w
          mul r12.w, r4.w, r12.w
          mad r13.w, -r10.z, r0.y, r2.x
          mul r14.w, r12.w, r13.w
          mul r15.x, r2.x, r2.x
          mad r15.x, r15.x, l(2.000000), l(-1.000000)
          mad r10.z, -r10.z, r5.w, r15.x
          mad r15.x, -r0.y, r0.y, l(1.000000)
          mad r15.x, -r2.x, r2.x, r15.x
          mad r15.x, -r5.w, r5.w, r15.x
          mad_sat r10.y, r10.y, r5.w, r15.x
          sqrt r10.y, r10.y
          mul r10.yz, r10.yyzy, r12.wwww
          mul r15.x, r2.x, r10.y
          add r15.y, r15.x, r15.x
          mad r15.z, r0.y, r10.x, r2.x
          mad r12.w, r12.w, r13.w, r15.z
          mad r13.w, r5.w, r10.x, r10.z
          add r13.w, r13.w, l(1.000000)
          mul r15.w, r10.y, r13.w
          mul r16.x, r12.w, r13.w
          mul r16.y, r12.w, r15.y
          mul r15.x, r15.x, r12.w
          mul r15.x, r15.x, l(0.500000)
          mad r15.x, r15.w, l(-0.500000), r15.x
          mul r15.x, r15.x, r16.x
          mad r16.z, -r15.w, l(2.000000), r16.y
          mul r16.y, r16.z, r16.y
          mad r15.w, r15.w, r15.w, r16.y
          mul r16.y, r13.w, r13.w
          mad r13.w, r5.w, r10.x, r13.w
          mad r13.w, r13.w, l(-0.500000), l(-0.500000)
          mul r13.w, r13.w, r16.x
          mad r13.w, r15.z, r16.y, r13.w
          mad r12.w, r12.w, r13.w, r15.w
          add r13.w, r15.x, r15.x
          mul r15.z, r15.x, r15.x
          mad r15.z, r12.w, r12.w, r15.z
          div r13.w, r13.w, r15.z
          mul r12.w, r12.w, r13.w
          mad r13.w, -r13.w, r15.x, l(1.000000)
          mul r10.y, r10.y, r12.w
          mad r10.y, r13.w, r14.w, r10.y
          mul r12.w, r15.y, r12.w
          mad r10.z, r13.w, r10.z, r12.w
          mad r10.y, r0.y, r10.x, r10.y
          mad r10.x, r5.w, r10.x, r10.z
          mad r10.z, r10.x, l(2.000000), l(2.000000)
          rsq r10.z, r10.z
          add r10.y, r2.x, r10.y
          mul_sat r10.w, r10.z, r10.y
          mad_sat r11.w, r10.z, r10.x, r10.z
        endif
      else
        mad r10.x, r5.w, l(2.000000), l(2.000000)
        rsq r10.x, r10.x
        add r10.y, r0.y, r2.x
        mul_sat r10.w, r10.x, r10.y
        mad_sat r11.w, r10.x, r5.w, r10.x
      endif
      add r2.x, |r2.x|, l(0.000010)
      min r2.x, r2.x, l(1.000000)
      mul r10.xyz, r1.xxxx, r9.xyzx
      mul r12.xyz, r10.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
      mul r10.x, r2.w, r2.w
      lt r10.y, l(0.000000), r7.w
      mul r10.z, r7.w, r7.w
      mad r12.w, r11.w, l(3.600000), l(0.400000)
      div r10.z, r10.z, r12.w
      mad r10.z, r2.w, r2.w, r10.z
      min r10.z, r10.z, l(1.000000)
      movc r10.x, r10.y, r10.z, r10.x
      mul r10.z, r4.w, l(0.250000)
      ishr r12.w, r10.x, l(1)
      iadd r12.w, r12.w, l(0x1fbd1df5)
      mad r12.w, r12.w, l(3.000000), r4.w
      mul r10.z, r10.z, r12.w
      add r12.w, r11.w, l(0.001000)
      div r10.z, r10.z, r12.w
      add r15.x, r10.z, r10.x
      div r15.y, r10.x, r15.x
      mov r10.y, l(1.000000)
      movc r10.yz, r9.wwww, r15.xxyx, r10.xxyx
      lt r9.w, r5.z, l(1.000000)
      add r13.w, -r5.z, l(1.000100)
      add r14.w, r5.z, l(1.000000)
      div r13.w, r13.w, r14.w
      sqrt r13.w, r13.w
      mul r14.w, r13.w, l(0.250000)
      ishr r15.x, r10.y, l(1)
      iadd r15.x, r15.x, l(0x1fbd1df5)
      mad r13.w, r15.x, l(3.000000), r13.w
      mul r13.w, r13.w, r14.w
      div r12.w, r13.w, r12.w
      add r12.w, r10.y, r12.w
      div r10.y, r10.y, r12.w
      sqrt r10.y, r10.y
      mul r10.y, r10.y, r10.z
      movc r9.w, r9.w, r10.y, r10.z
      mad r10.y, r10.w, r10.x, -r10.w
      mad r10.y, r10.y, r10.w, l(1.000000)
      mul r10.y, r10.y, r10.y
      mul r10.y, r10.y, l(3.14159274)
      div r10.y, r10.x, r10.y
      mul r9.w, r9.w, r10.y
      sqrt r10.x, r10.x
      add r10.y, -r10.x, l(1.000000)
      mad r10.z, r2.x, r10.y, r10.x
      mad r10.x, r1.x, r10.y, r10.x
      mul r2.x, r2.x, r10.x
      mad r2.x, r1.x, r10.z, r2.x
      rcp r2.x, r2.x
      mul r2.x, r2.x, r9.w
      add r9.w, -r11.w, l(1.000000)
      mul r10.x, r9.w, r9.w
      mul r10.x, r10.x, r10.x
      mul r10.y, r9.w, r10.x
      mul_sat r10.z, r7.y, l(50.000000)
      mad r9.w, -r10.x, r9.w, l(1.000000)
      mul r15.xyz, r7.xyzx, r9.wwww
      mad r10.xyz, r10.zzzz, r10.yyyy, r15.xyzx
      mul r2.x, r2.x, l(0.500000)
      mul r10.xyz, r10.xyzx, r2.xxxx
      mul r13.xyz, r1.xxxx, r10.xyzx
      mul r10.xyz, r8.yzwy, r8.yzwy
      add r0.y, -r0.y, l(0.500000)
      mul_sat r0.y, r0.y, l(0.444444448)
      mov_sat r5.w, -r5.w
      mul r2.x, r5.w, r5.w
      mad r2.x, r2.x, l(-0.640000), l(1.000000)
      mul r2.x, r2.x, r2.x
      mul r2.x, r2.x, l(3.14159274)
      div r2.x, l(0.360000), r2.x
      mul r0.y, r0.y, r2.x
      mul r14.xyz, r10.xyzx, r0.yyyy
      break
      case l(7)
      max r0.y, r0.z, l(0.00392156886)
      min r0.y, r0.y, l(1.000000)
      dp3 r0.z, -r4.xyzx, r11.xyzx
      dp3 r2.x, r3.xyzx, r11.xyzx
      dp3 r5.w, r3.xyzx, -r4.xyzx
      mad r9.w, |r5.w|, l(-0.156583), l(1.57079637)
      add r10.x, -|r5.w|, l(1.000000)
      sqrt r10.x, r10.x
      mul r10.y, r9.w, r10.x
      ge r10.z, r5.w, l(0.000000)
      mad r9.w, -r9.w, r10.x, l(3.14159274)
      movc r9.w, r10.z, r10.y, r9.w
      add r9.w, -r9.w, l(1.57079637)
      mad r10.x, |r2.x|, l(-0.156583), l(1.57079637)
      add r10.y, -|r2.x|, l(1.000000)
      sqrt r10.z, r10.y
      mul r10.w, r10.z, r10.x
      ge r11.w, r2.x, l(0.000000)
      mad r10.x, -r10.x, r10.z, l(3.14159274)
      movc r10.x, r11.w, r10.w, r10.x
      add r10.x, -r10.x, l(1.57079637)
      add r9.w, r9.w, -r10.x
      mul r9.w, |r9.w|, l(0.500000)
      sincos null, r9.w, r9.w
      mad r10.xzw, -r2.xxxx, r3.xxyz, r11.xxyz
      mad r15.xyz, -r5.wwww, r3.xyzx, -r4.xyzx
      dp3 r11.w, r10.xzwx, r15.xyzx
      dp3 r10.x, r10.xzwx, r10.xzwx
      dp3 r10.z, r15.xyzx, r15.xyzx
      mad r10.x, r10.x, r10.z, l(0.000100)
      rsq r10.x, r10.x
      mul r10.x, r10.x, r11.w
      mad r16.xyz, r10.xxxx, l(0.500000, -3.650000, 17.000000, 0.000000), l(0.500000, -3.980000, -16.780001, 0.000000)
      mov_sat r16.x, r16.x
      sqrt r10.w, r16.x
      div r16.xw, l(1.190000, 0.000000, 0.000000, 0.800000), r9.wwww
      mad r11.w, r9.w, l(0.360000), r16.x
      mul r0.y, r0.y, r0.y
      mul r17.xyz, r0.yyyy, l(0.500000, 1.25331414, 5.01325655, 0.000000)
      add r12.w, r0.y, r0.y
      mul r13.w, r10.w, l(0.997551)
      mad r14.w, -r5.w, r5.w, l(1.000000)
      sqrt r14.w, r14.w
      mul r15.w, r5.w, l(-0.0699428469)
      mad r13.w, r13.w, r14.w, r15.w
      mul r0.y, r10.w, r0.y
      mul r18.xy, r0.yyyy, l(1.41421354, 3.54490757, 0.000000, 0.000000)
      add r0.y, r2.x, r5.w
      mad r2.x, -r13.w, l(-0.139885694), r0.y
      mul r2.x, r2.x, r2.x
      mul r2.x, r2.x, l(-0.500000)
      mul r5.w, r18.x, r18.x
      div r2.x, r2.x, r5.w
      mul r2.x, r2.x, l(1.442695)
      exp r2.x, r2.x
      div r2.x, r2.x, r18.y
      mul r2.x, r10.w, r2.x
      mad_sat r0.z, r0.z, l(0.500000), l(0.500000)
      sqrt r0.z, r0.z
      add r0.z, -r0.z, l(1.000000)
      mul r5.w, r0.z, r0.z
      mul r5.w, r5.w, r5.w
      mul r0.z, r0.z, r5.w
      mad r0.z, r0.z, l(0.953479409), l(0.0465205684)
      mul r0.z, r2.x, r0.z
      mul r0.z, r6.w, r0.z
      add r18.xy, r0.yyyy, l(-0.035000, -0.140000, 0.000000, 0.000000)
      mul r18.xy, r18.xyxx, r18.xyxx
      mul r18.xy, r18.xyxx, l(-0.500000, -0.500000, 0.000000, 0.000000)
      mul r0.y, r17.x, r17.x
      div r0.y, r18.x, r0.y
      mul r0.y, r0.y, l(1.442695)
      exp r0.y, r0.y
      div r0.y, r0.y, r17.y
      div r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r11.w
      mad r5.w, -r10.x, l(0.800000), l(0.600000)
      mad r5.w, r2.x, r5.w, l(1.000000)
      mul r5.w, r5.w, r10.w
      mad r10.x, -r5.w, r5.w, l(1.000000)
      max r10.x, r10.x, l(0.000000)
      sqrt r10.x, r10.x
      mad r10.x, -r9.w, r10.x, l(1.000000)
      mul r10.w, r10.x, r10.x
      mul r10.w, r10.w, r10.w
      mul r10.x, r10.x, r10.w
      mad r10.x, r10.x, l(0.953479409), l(0.0465205684)
      add r10.x, -r10.x, l(1.000000)
      mul r10.x, r10.x, r10.x
      mul r2.x, r2.x, r5.w
      mad r2.x, -r2.x, r2.x, l(1.000000)
      sqrt r2.x, r2.x
      mul r2.x, r2.x, l(0.500000)
      div r2.x, r2.x, r9.w
      log r17.xyw, r6.xyxz
      mul r18.xzw, r2.xxxx, r17.xxyw
      exp r18.xzw, r18.xxzw
      mul r16.xy, r16.yzyy, l(1.442695, 1.442695, 0.000000, 0.000000)
      exp r16.xy, r16.xyxx
      mul r0.y, r0.y, r16.x
      mul r0.y, r10.x, r0.y
      mul r18.xzw, r18.xxzw, r0.yyyy
      mad r18.xzw, r0.zzzz, l(0.500000, 0.000000, 0.500000, 0.500000), r18.xxzw
      mul r0.y, r12.w, r12.w
      div r0.y, r18.y, r0.y
      mul r0.y, r0.y, l(1.442695)
      exp r0.y, r0.y
      div r0.y, r0.y, r17.z
      mad r0.z, -r9.w, l(0.500000), l(1.000000)
      mul r2.x, r0.z, r0.z
      mul r2.x, r2.x, r2.x
      mul r0.z, r0.z, r2.x
      mad r0.z, r0.z, l(0.953479409), l(0.0465205684)
      add r2.x, -r0.z, l(1.000000)
      mul r2.x, r2.x, r2.x
      mul r0.z, r0.z, r2.x
      mul r16.xzw, r16.wwww, r17.xxyw
      exp r16.xzw, r16.xxzw
      mul r0.y, r16.y, r0.y
      mul r0.y, r0.z, r0.y
      mad r16.xyz, r0.yyyy, r16.xzwx, r18.xzwx
      rsq r0.y, r10.z
      mul r10.xzw, r0.yyyy, r15.xxyz
      dp3 r0.y, r10.xzwx, r11.xyzx
      add r0.y, r0.y, l(1.000000)
      mul_sat r0.y, r0.y, l(0.250000)
      add r0.z, -r0.y, r10.y
      mad r0.y, r0.z, l(0.330000), r0.y
      mul r0.y, r0.y, r0.w
      mul r0.y, r0.y, l(0.318309873)
      dp3 r0.z, r6.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
      div r10.xyz, r6.xyzx, r0.zzzz
      add r0.z, -r5.y, l(1.000000)
      log r10.xyz, r10.xyzx
      mul r10.xyz, r0.zzzz, r10.xyzx
      exp r10.xyz, r10.xyzx
      sqrt r6.xyz, r6.xyzx
      mul r0.yzw, r0.yyyy, r6.xxyz
      mad r0.yzw, r0.yyzw, r10.xxyz, r16.xxyz
      min r14.xyz, -r0.yzwy, l(0.000000, 0.000000, 0.000000, 0.000000)
      mov r12.xyz, l(0,0,0,0)
      mov r13.xyz, l(0,0,0,0)
      mov r14.xyz, -r14.xyzx
      break
      case l(8)
      mul r0.yzw, r8.yyzw, r8.yyzw
      mov_sat r8.x, r8.x
      dp3 r2.x, r3.xyzx, r11.xyzx
      dp3 r5.w, r3.xyzx, -r4.xyzx
      dp3 r6.x, -r4.xyzx, r11.xyzx
      lt r6.y, l(0.000000), r4.w
      if_nz r6.y
        mad r6.z, -r4.w, r4.w, l(1.000000)
        sqrt r6.z, r6.z
        dp2 r8.y, r5.wwww, r2.xxxx
        add r9.w, -r6.x, r8.y
        ge r10.x, r9.w, r6.z
        if_nz r10.x
          mov r10.x, l(1.000000)
          mov r10.y, |r5.w|
        else
          mad r10.z, -r9.w, r9.w, l(1.000000)
          rsq r10.z, r10.z
          mul r10.z, r4.w, r10.z
          mad r10.w, -r9.w, r2.x, r5.w
          mul r11.w, r10.w, r10.z
          mul r12.w, r5.w, r5.w
          mad r12.w, r12.w, l(2.000000), l(-1.000000)
          mad r9.w, -r9.w, r6.x, r12.w
          mul r9.w, r9.w, r10.z
          mad r12.w, -r2.x, r2.x, l(1.000000)
          mad r12.w, -r5.w, r5.w, r12.w
          mad r12.w, -r6.x, r6.x, r12.w
          mad_sat r8.y, r8.y, r6.x, r12.w
          sqrt r8.y, r8.y
          mul r8.y, r8.y, r10.z
          mul r12.w, r5.w, r8.y
          add r13.w, r12.w, r12.w
          mad r14.w, r2.x, r6.z, r5.w
          mad r10.z, r10.z, r10.w, r14.w
          mad r10.w, r6.x, r6.z, r9.w
          add r10.w, r10.w, l(1.000000)
          mul r15.x, r8.y, r10.w
          mul r15.y, r10.w, r10.z
          mul r15.z, r10.z, r13.w
          mul r12.w, r12.w, r10.z
          mul r12.w, r12.w, l(0.500000)
          mad r12.w, r15.x, l(-0.500000), r12.w
          mul r12.w, r12.w, r15.y
          mad r15.w, -r15.x, l(2.000000), r15.z
          mul r15.z, r15.w, r15.z
          mad r15.x, r15.x, r15.x, r15.z
          mul r15.z, r10.w, r10.w
          mad r10.w, r6.x, r6.z, r10.w
          mad r10.w, r10.w, l(-0.500000), l(-0.500000)
          mul r10.w, r10.w, r15.y
          mad r10.w, r14.w, r15.z, r10.w
          mad r10.z, r10.z, r10.w, r15.x
          add r10.w, r12.w, r12.w
          mul r14.w, r12.w, r12.w
          mad r14.w, r10.z, r10.z, r14.w
          div r10.w, r10.w, r14.w
          mul r10.z, r10.z, r10.w
          mad r10.w, -r10.w, r12.w, l(1.000000)
          mul r8.y, r8.y, r10.z
          mad r8.y, r10.w, r11.w, r8.y
          mul r10.z, r13.w, r10.z
          mad r9.w, r10.w, r9.w, r10.z
          mad r8.y, r2.x, r6.z, r8.y
          mad r6.z, r6.x, r6.z, r9.w
          mad r9.w, r6.z, l(2.000000), l(2.000000)
          rsq r9.w, r9.w
          add r8.y, r5.w, r8.y
          mul_sat r10.x, r9.w, r8.y
          mad_sat r10.y, r9.w, r6.z, r9.w
        endif
      else
        mad r6.z, r6.x, l(2.000000), l(2.000000)
        rsq r6.z, r6.z
        add r2.x, r2.x, r5.w
        mul_sat r10.x, r6.z, r2.x
        mad_sat r10.y, r6.z, r6.x, r6.z
      endif
      add r2.x, |r5.w|, l(0.000010)
      min r2.x, r2.x, l(1.000000)
      mul r5.w, r2.w, r2.w
      lt r6.x, l(0.000000), r7.w
      mul r6.z, r7.w, r7.w
      mad r8.y, r10.y, l(3.600000), l(0.400000)
      div r6.z, r6.z, r8.y
      mad r6.z, r2.w, r2.w, r6.z
      min r6.z, r6.z, l(1.000000)
      movc r15.x, r6.x, r6.z, r5.w
      mul r6.x, r4.w, l(0.250000)
      ishr r6.z, r15.x, l(1)
      iadd r6.z, r6.z, l(0x1fbd1df5)
      mad r6.z, r6.z, l(3.000000), r4.w
      mul r6.x, r6.z, r6.x
      add r6.z, r10.y, l(0.001000)
      div r6.x, r6.x, r6.z
      add r16.x, r6.x, r15.x
      div r16.y, r15.x, r16.x
      mov r15.y, l(1.000000)
      movc r6.xy, r6.yyyy, r16.xyxx, r15.xyxx
      lt r8.y, r5.z, l(1.000000)
      add r9.w, -r5.z, l(1.000100)
      add r10.z, r5.z, l(1.000000)
      div r9.w, r9.w, r10.z
      sqrt r9.w, r9.w
      mul r10.z, r9.w, l(0.250000)
      ishr r10.w, r6.x, l(1)
      iadd r10.w, r10.w, l(0x1fbd1df5)
      mad r9.w, r10.w, l(3.000000), r9.w
      mul r9.w, r9.w, r10.z
      div r6.z, r9.w, r6.z
      add r6.z, r6.z, r6.x
      div r6.x, r6.x, r6.z
      sqrt r6.x, r6.x
      mul r6.x, r6.x, r6.y
      movc r6.x, r8.y, r6.x, r6.y
      mad r6.y, r10.x, r15.x, -r10.x
      mad r6.y, r6.y, r10.x, l(1.000000)
      mul r6.y, r6.y, r6.y
      mul r6.y, r6.y, l(3.14159274)
      div r6.y, r15.x, r6.y
      mul r6.x, r6.x, r6.y
      sqrt r6.y, r15.x
      add r6.z, -r6.y, l(1.000000)
      mad r8.y, r2.x, r6.z, r6.y
      mad r6.y, r1.x, r6.z, r6.y
      mul r6.y, r2.x, r6.y
      mad r6.y, r1.x, r8.y, r6.y
      rcp r6.y, r6.y
      mul r6.x, r6.y, r6.x
      add r6.y, -r10.y, l(1.000000)
      mul r6.z, r6.y, r6.y
      mul r6.z, r6.z, r6.z
      mul r8.y, r6.y, r6.z
      mul_sat r9.w, r7.y, l(50.000000)
      mad r6.y, -r6.z, r6.y, l(1.000000)
      mul r7.xyz, r7.xyzx, r6.yyyy
      mad r7.xyz, r9.wwww, r8.yyyy, r7.xyzx
      mul r6.x, r6.x, l(0.500000)
      mul r7.xyz, r7.xyzx, r6.xxxx
      mul r7.xyz, r1.xxxx, r7.xyzx
      mad r6.x, -r5.w, r10.x, r10.x
      mad r6.x, r6.x, r10.x, r5.w
      mul r6.z, r5.w, l(4.000000)
      mad r9.w, r5.w, l(4.000000), l(1.000000)
      mul r9.w, r9.w, l(3.14159274)
      rcp r9.w, r9.w
      mul r5.w, r5.w, r6.z
      mul r6.x, r6.x, r6.x
      div r5.w, r5.w, r6.x
      add r5.w, r5.w, l(1.000000)
      mul r5.w, r5.w, r9.w
      add r6.x, r1.x, r2.x
      mad r2.x, -r1.x, r2.x, r6.x
      mul r2.x, r2.x, l(4.000000)
      rcp r2.x, r2.x
      mul r6.x, r0.z, l(50.000000)
      min r6.x, r6.x, l(1.000000)
      mul r0.yzw, r0.yyzw, r6.yyyy
      mad r0.yzw, r6.xxxx, r8.yyyy, r0.yyzw
      mul r2.x, r2.x, r5.w
      mul r2.x, r1.x, r2.x
      mul r6.xyz, r1.xxxx, r9.xyzx
      mul r12.xyz, r6.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
      mad r0.yzw, r2.xxxx, r0.yyzw, -r7.xxyz
      mad r13.xyz, r8.xxxx, r0.yzwy, r7.xyzx
      mov r14.xyz, l(0,0,0,0)
      break
      case l(9)
      mad r0.yz, r8.zzwz, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
      dp2 r0.w, l(1.000000, 1.000000, 0.000000, 0.000000), |r0.yzyy|
      add r6.z, -r0.w, l(1.000000)
      lt r0.w, r6.z, l(0.000000)
      add r7.xy, -|r0.zyzz|, l(1.000000, 1.000000, 0.000000, 0.000000)
      ge r8.yz, r0.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000)
      movc r8.yz, r8.yyzy, l(0,1.000000,1.000000,0), l(0,-1.000000,-1.000000,0)
      mul r7.xy, r7.xyxx, r8.yzyy
      movc r6.xy, r0.wwww, r7.xyxx, r0.yzyy
      dp3 r0.y, r6.xyzx, r6.xyzx
      rsq r0.y, r0.y
      mul r0.yzw, r0.yyyy, r6.xxyz
      add r2.x, -r8.x, l(1.000000)
      mul r0.x, r0.x, r2.x
      mad r1.yzw, -r1.yyzw, r2.yyyy, -r0.yyzw
      mad r1.yzw, r0.xxxx, r1.yyzw, r0.yyzw
      dp3 r0.x, r1.yzwy, r1.yzwy
      rsq r0.x, r0.x
      mul r1.yzw, r0.xxxx, r1.yyzw
      dp3 r0.x, r3.xyzx, r11.xyzx
      dp3 r2.y, r3.xyzx, -r4.xyzx
      dp3 r3.x, -r4.xyzx, r11.xyzx
      lt r3.y, l(0.000000), r4.w
      if_nz r3.y
        mad r3.z, -r4.w, r4.w, l(1.000000)
        sqrt r3.z, r3.z
        dp2 r4.x, r2.yyyy, r0.xxxx
        add r4.x, -r3.x, r4.x
        ge r4.y, r4.x, r3.z
        if_nz r4.y
          mov r4.y, l(1.000000)
          mov r4.z, |r2.y|
        else
          mad r5.w, -r4.x, r4.x, l(1.000000)
          rsq r5.w, r5.w
          mul r5.w, r4.w, r5.w
          mad r6.x, -r4.x, r0.x, r2.y
          mul r6.x, r5.w, r6.x
          dp2 r6.y, r2.yyyy, r2.yyyy
          add r6.y, r6.y, l(-1.000000)
          mad r4.x, -r4.x, r3.x, r6.y
          mul r4.x, r4.x, r5.w
          mad r5.w, r0.x, r3.z, r6.x
          mad r3.z, r3.x, r3.z, r4.x
          mad r4.x, r3.z, l(2.000000), l(2.000000)
          rsq r4.x, r4.x
          add r5.w, r2.y, r5.w
          mul_sat r4.y, r4.x, r5.w
          mad_sat r4.z, r4.x, r3.z, r4.x
        endif
      else
        mad r3.z, r3.x, l(2.000000), l(2.000000)
        rsq r3.z, r3.z
        add r0.x, r0.x, r2.y
        mul_sat r4.y, r3.z, r0.x
        mad_sat r4.z, r3.z, r3.x, r3.z
      endif
      add r0.x, |r2.y|, l(0.000010)
      min r0.x, r0.x, l(1.000000)
      mul r2.y, r6.w, l(0.080000)
      add r3.x, -r4.z, l(1.000000)
      mul r3.z, r3.x, r3.x
      mul r3.z, r3.z, r3.z
      mul r4.x, r3.x, r3.z
      mad r3.x, -r3.z, r3.x, l(1.000000)
      mad r2.y, r3.x, r2.y, r4.x
      mul r3.x, r2.w, r2.w
      lt r3.z, l(0.000000), r7.w
      mul r4.x, r7.w, r7.w
      mad r5.w, r4.z, l(3.600000), l(0.400000)
      div r4.x, r4.x, r5.w
      mad r2.w, r2.w, r2.w, r4.x
      min r2.w, r2.w, l(1.000000)
      movc r6.x, r3.z, r2.w, r3.x
      mul r2.w, r4.w, l(0.250000)
      ishr r3.x, r6.x, l(1)
      iadd r3.x, r3.x, l(0x1fbd1df5)
      mad r3.x, r3.x, l(3.000000), r4.w
      mul r2.w, r2.w, r3.x
      add r3.x, r4.z, l(0.001000)
      div r2.w, r2.w, r3.x
      add r7.x, r2.w, r6.x
      div r7.y, r6.x, r7.x
      mov r6.y, l(1.000000)
      movc r3.yz, r3.yyyy, r7.xxyx, r6.xxyx
      lt r2.w, r5.z, l(1.000000)
      add r4.x, -r5.z, l(1.000100)
      add r4.z, r5.z, l(1.000000)
      div r4.x, r4.x, r4.z
      sqrt r4.x, r4.x
      mul r4.z, r4.x, l(0.250000)
      ishr r4.w, r3.y, l(1)
      iadd r4.w, r4.w, l(0x1fbd1df5)
      mad r4.x, r4.w, l(3.000000), r4.x
      mul r4.x, r4.x, r4.z
      div r3.x, r4.x, r3.x
      add r3.x, r3.x, r3.y
      div r3.x, r3.y, r3.x
      sqrt r3.x, r3.x
      mul r3.x, r3.x, r3.z
      movc r2.w, r2.w, r3.x, r3.z
      mad r3.x, r4.y, r6.x, -r4.y
      mad r3.x, r3.x, r4.y, l(1.000000)
      mul r3.x, r3.x, r3.x
      mul r3.x, r3.x, l(3.14159274)
      div r3.x, r6.x, r3.x
      mul r2.w, r2.w, r3.x
      sqrt r3.x, r6.x
      add r3.y, -r3.x, l(1.000000)
      mad r3.z, r0.x, r3.y, r3.x
      mad r3.x, r1.x, r3.y, r3.x
      mul r0.x, r0.x, r3.x
      mad r0.x, r1.x, r3.z, r0.x
      rcp r0.x, r0.x
      mul r0.x, r0.x, l(0.500000)
      mul r2.w, r1.x, r2.w
      mul r0.x, r0.x, r2.w
      mul r13.xyz, r2.yyyy, r0.xxxx
      dp3_sat r0.x, r0.yzwy, r11.xyzx
      mad r0.yz, r0.xxxx, l(0.000000, -11.000000, -11.000000, 0.000000), l(0.000000, 12.000000, 13.000000, 0.000000)
      mul r0.z, r0.z, l(0.200000)
      dp3_sat r0.w, r1.yzwy, r11.xyzx
      log r0.w, r0.w
      mul r0.y, r0.w, r0.y
      exp r0.y, r0.y
      mad r0.y, r0.z, r0.y, l(0.800000)
      mad r0.x, r0.x, r0.y, -r1.x
      mad r0.x, r2.x, r0.x, r1.x
      add r0.y, -r2.y, l(1.000000)
      mul r0.x, r0.y, r0.x
      mul r0.xyz, r0.xxxx, r9.xyzx
      mul r14.xyz, r0.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
      mov r12.xyz, l(0,0,0,0)
      break
      default
      mov r12.xyz, l(0,0,0,0)
      mov r13.xyz, l(0,0,0,0)
      mov r14.xyz, l(0,0,0,0)
      break
    endswitch
    mul r0.xyz, r13.xyzx, cb1[5].wwww
    mul r1.xyz, r5.xxxx, cb1[4].xyzx
    mul r1.xyz, r3.wwww, r1.xyzx
    eq r0.w, cb0[204].z, l(0.000000)
    mul r2.xyw, r1.xyxz, r12.xyxz
    dp3 r1.w, r2.xywx, l(0.300000, 0.590000, 0.110000, 0.000000)
    and r1.w, r0.w, r1.w
    and r1.w, r1.w, r2.z
    mul r4.xyz, r0.xyzx, r1.xyzx
    mul r0.xyz, r5.yyyy, cb1[4].xyzx
    mul r0.xyz, r3.wwww, r0.xyzx
    mul r0.xyz, r0.xyzx, r14.xyzx
    dp3 r2.x, r0.xyzx, l(0.300000, 0.590000, 0.110000, 0.000000)
    add r2.x, r1.w, r2.x
    movc r0.w, r0.w, r2.x, r1.w
    and r0.w, r0.w, r2.z
    mad r1.xyz, r12.xyzx, r1.xyzx, r0.xyzx
  else
    mov r4.xyz, l(0,0,0,0)
    mov r0.w, l(0)
    mov r1.xyz, l(0,0,0,0)
  endif
  eq r0.x, cb0[204].z, l(0.000000)
  and r1.w, r0.w, r0.x
  mov r4.w, l(0)
  add r0.xyzw, r1.xyzw, r4.xyzw
else
  mov r0.xyzw, l(0,0,0,0)
endif
mul o0.xyzw, r0.xyzw, cb0[138].yyyy
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v0.6.181 on Wed Jun  7 00:05:34 2023
// Texture2D<uint4> t10 : register(t10);
//
// Texture2D<float4> t9 : register(t9);
//
// Texture2D<float4> t8 : register(t8);
//
// Texture2D<float4> t7 : register(t7);
//
// Texture2D<float4> t6 : register(t6);
//
// Texture2D<float4> t5 : register(t5);
//
// Texture2D<float4> t4 : register(t4);
//
// Texture2D<float4> t3 : register(t3);
//
// Texture2D<float4> t2 : register(t2);
//
// Texture2D<float4> t1 : register(t1);
//
// Texture2D<float4> t0 : register(t0);
//
// SamplerState s8_s : register(s8);
//
// SamplerState s7_s : register(s7);
//
// SamplerState s6_s : register(s6);
//
// SamplerState s5_s : register(s5);
//
// SamplerState s4_s : register(s4);
//
// SamplerState s3_s : register(s3);
//
// SamplerState s2_s : register(s2);
//
// SamplerState s1_s : register(s1);
//
// SamplerState s0_s : register(s0);
//
// cbuffer cb1 : register(b1)
// {
//   float4 cb1[10];
// }
//
// cbuffer cb0 : register(b0)
// {
//   float4 cb0[224];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main(
//   float4 v0 : TEXCOORD0,
//   float3 v1 : TEXCOORD1,
//   float4 v2 : SV_POSITION0,
//   out float4 o0 : SV_Target0)
// {
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r0.xyzw = t3.SampleLevel(s3_s, v0.xy, 0).xyzw;
//   r1.xy = cb0[135].xy * v0.xy;
//   r1.xy = (uint2)r1.xy;
//   r0.w = 255 * r0.w;
//   r0.w = round(r0.w);
//   r0.w = (uint)r0.w;
//   r2.x = (int)r0.w & 15;
//   r2.y = cmp(0 < (uint)r2.x);
//   r1.zw = float2(0,0);
//   r1.z = t10.Load(r1.xyz).x;
//   r1.z = (int)r1.z & asint(cb1[2].y);
//   r1.z = cmp((int)r1.z != 0);
//   r1.z = r1.z ? r2.y : 0;
//   if (r1.z != 0) {
//     r3.xyzw = t2.SampleLevel(s2_s, v0.xy, 0).xyzw;
//     r1.z = t1.SampleLevel(s1_s, v0.xy, 0).x;
//     r1.w = r1.z * cb0[65].x + cb0[65].y;
//     r1.z = r1.z * cb0[65].z + -cb0[65].w;
//     r1.z = 1 / r1.z;
//     r1.z = r1.w + r1.z;
//     r2.yzw = v1.xyz * r1.zzz + cb0[67].xyz;
//     r1.w = dot(v1.xyz, v1.xyz);
//     r1.w = rsqrt(r1.w);
//     r4.xyz = v1.xyz * r1.www;
//     r1.w = cmp(cb1[1].z < 0);
//     r3.w = 3.99900007 * r3.w;
//     r3.w = (uint)r3.w;
//     r3.w = (int)r3.w & 2;
//     r3.w = cmp((int)r3.w != 0);
//     r4.w = asint(cb1[2].y) & 3;
//     r4.w = cmp((int)r4.w != 0);
//     r3.w = r3.w ? r4.w : 0;
//     r3.w = r3.w ? cb1[9].x : 1;
//     r4.w = asuint(cb0[147].y);
//     r5.xy = r4.ww * float2(32.6650009,11.8149996) + v2.xy;
//     r4.w = dot(r5.xy, float2(0.0671105608,0.00583714992));
//     r4.w = frac(r4.w);
//     r4.w = 52.9829178 * r4.w;
//     r4.w = frac(r4.w);
//     r5.xyzw = t8.SampleLevel(s8_s, v0.xy, 0).xyzw;
//     r6.xyzw = r5.xyzw * r5.xyzw;
//     r5.z = cb0[37].y * r1.z;
//     if (cb1[2].x != 0) {
//       r7.xyzw = t6.SampleLevel(s6_s, v0.xy, 0).xyzw;
//       r8.xy = (int2)r0.ww & int2(32,64);
//       r5.w = r8.y ? 0 : 1;
//       r7.xyzw = r8.xxxx ? r5.wwww : r7.xyzw;
//       r5.w = dot(cb1[0].xyzw, float4(1,1,1,1));
//       r7.x = dot(r7.xyzw, cb1[0].xyzw);
//       r7.x = -1 + r7.x;
//       r5.w = r5.w * r7.x + 1;
//       r1.z = saturate(r1.z * cb1[1].x + cb1[1].y);
//       r1.z = r1.z * r1.z;
//       r5.xy = -r5.xy * r5.xy + r5.ww;
//       r5.xy = r1.zz * r5.xy + r6.xy;
//       r1.z = min(r5.y, r6.w);
//       r5.x = r5.x * r6.z;
//       r5.y = r1.z * r6.z;
//       r1.z = cmp(1 < asuint(cb1[2].x));
//       r5.w = cmp(0 < abs(cb1[1].z));
//       r1.z = r1.z ? r5.w : 0;
//       r1.w = r1.w ? 1 : r5.z;
//       r1.w = abs(cb1[1].z) * r1.w;
//       r1.z = r1.z ? r1.w : 0;
//     } else {
//       r5.x = t7.SampleLevel(s7_s, v0.xy, 0).x;
//       r5.y = 1;
//       r1.z = 0;
//     }
//     r1.w = cmp(asuint(cb1[2].x) < 2);
//     r6.xy = cmp((int2)r2.xx == int2(9,7));
//     r1.w = r1.w ? r6.y : 0;
//     r1.w = (int)r6.x | (int)r1.w;
//     r5.z = 0.200000003 * r5.z;
//     r1.z = r1.w ? r5.z : r1.z;
//     r1.w = cmp(0 < r1.z);
//     if (r1.w != 0) {
//       r1.w = -0.5 + r4.w;
//       r2.yzw = cb0[70].xyz + r2.yzw;
//       r7.xyzw = cb0[1].xyzw * r2.zzzz;
//       r7.xyzw = r2.yyyy * cb0[0].xyzw + r7.xyzw;
//       r7.xyzw = r2.wwww * cb0[2].xyzw + r7.xyzw;
//       r7.xyzw = cb0[3].xyzw + r7.xyzw;
//       r2.yzw = cb1[5].xyz * r1.zzz;
//       r8.xyzw = cb0[1].xyzw * r2.zzzz;
//       r8.xyzw = r2.yyyy * cb0[0].xyzw + r8.xyzw;
//       r8.xyzw = r2.wwww * cb0[2].xyzw + r8.xyzw;
//       r8.xyzw = r8.xyzw + r7.xyzw;
//       r2.yzw = r7.xyz / r7.www;
//       r8.xyz = r8.xyz / r8.www;
//       r8.xyz = r8.xyz + -r2.yzw;
//       r9.xy = r2.yz * cb0[66].xy + cb0[66].wz;
//       r10.xy = cb0[66].xy * r8.xy;
//       r5.zw = r1.zz * cb0[30].zw + r7.zw;
//       r1.z = r5.z / r5.w;
//       r1.z = r1.z + -r2.w;
//       r4.w = 0.25 * abs(r1.z);
//       r7.xyzw = r1.wwww * float4(0.125,0.125,0.125,0.125) + float4(0.125,0.25,0.375,0.5);
//       r10.z = r8.z;
//       r9.z = r2.w;
//       r11.xyz = r10.xyz * r7.xxx + r9.xyz;
//       r2.w = t1.SampleLevel(s1_s, r11.xy, 0).x;
//       r2.w = r11.z + -r2.w;
//       r2.w = abs(r1.z) * 0.25 + r2.w;
//       r2.w = cmp(abs(r2.w) < r4.w);
//       r2.w = r2.w ? r7.x : -1;
//       r11.xyz = r10.xyz * r7.yyy + r9.xyz;
//       r5.z = t1.SampleLevel(s1_s, r11.xy, 0).x;
//       r5.z = r11.z + -r5.z;
//       r5.z = abs(r1.z) * 0.25 + r5.z;
//       r5.z = cmp(abs(r5.z) < r4.w);
//       r5.w = cmp(r2.w < 0);
//       r5.z = r5.w ? r5.z : 0;
//       r2.w = r5.z ? r7.y : r2.w;
//       r11.xyz = r10.xyz * r7.zzz + r9.xyz;
//       r5.z = t1.SampleLevel(s1_s, r11.xy, 0).x;
//       r5.z = r11.z + -r5.z;
//       r5.z = abs(r1.z) * 0.25 + r5.z;
//       r5.z = cmp(abs(r5.z) < r4.w);
//       r5.w = cmp(r2.w < 0);
//       r5.z = r5.w ? r5.z : 0;
//       r2.w = r5.z ? r7.z : r2.w;
//       r7.xyz = r10.xyz * r7.www + r9.xyz;
//       r5.z = t1.SampleLevel(s1_s, r7.xy, 0).x;
//       r5.z = r7.z + -r5.z;
//       r5.z = abs(r1.z) * 0.25 + r5.z;
//       r5.z = cmp(abs(r5.z) < r4.w);
//       r5.w = cmp(r2.w < 0);
//       r5.z = r5.w ? r5.z : 0;
//       r2.w = r5.z ? r7.w : r2.w;
//       r7.xyzw = r1.wwww * float4(0.125,0.125,0.125,0.125) + float4(0.625,0.75,0.875,1);
//       r11.xyz = r10.xyz * r7.xxx + r9.xyz;
//       r1.w = t1.SampleLevel(s1_s, r11.xy, 0).x;
//       r1.w = r11.z + -r1.w;
//       r1.w = abs(r1.z) * 0.25 + r1.w;
//       r1.w = cmp(abs(r1.w) < r4.w);
//       r5.z = cmp(r2.w < 0);
//       r1.w = r1.w ? r5.z : 0;
//       r1.w = r1.w ? r7.x : r2.w;
//       r11.xyz = r10.xyz * r7.yyy + r9.xyz;
//       r2.w = t1.SampleLevel(s1_s, r11.xy, 0).x;
//       r2.w = r11.z + -r2.w;
//       r2.w = abs(r1.z) * 0.25 + r2.w;
//       r2.w = cmp(abs(r2.w) < r4.w);
//       r5.z = cmp(r1.w < 0);
//       r2.w = r2.w ? r5.z : 0;
//       r1.w = r2.w ? r7.y : r1.w;
//       r11.xyz = r10.xyz * r7.zzz + r9.xyz;
//       r2.w = t1.SampleLevel(s1_s, r11.xy, 0).x;
//       r2.w = r11.z + -r2.w;
//       r2.w = abs(r1.z) * 0.25 + r2.w;
//       r2.w = cmp(abs(r2.w) < r4.w);
//       r5.z = cmp(r1.w < 0);
//       r2.w = r2.w ? r5.z : 0;
//       r1.w = r2.w ? r7.z : r1.w;
//       r7.xyz = r10.xyz * r7.www + r9.xyz;
//       r2.w = t1.SampleLevel(s1_s, r7.xy, 0).x;
//       r2.w = r7.z + -r2.w;
//       r1.z = abs(r1.z) * 0.25 + r2.w;
//       r1.z = cmp(abs(r1.z) < r4.w);
//       r2.w = cmp(r1.w < 0);
//       r1.z = r1.z ? r2.w : 0;
//       r1.z = r1.z ? r7.w : r1.w;
//       r1.w = cmp(0 < r1.z);
//       r1.w = r1.w ? 1.000000 : 0;
//       r2.yz = r8.xy * r1.zz + r2.yz;
//       r2.yz = abs(r2.yz) * float2(6,6) + float2(-5,-5);
//       r2.yz = max(float2(0,0), r2.yz);
//       r1.z = dot(r2.yz, r2.yz);
//       r1.z = 1 + -r1.z;
//       r1.z = max(0, r1.z);
//       r1.z = -r1.w * r1.z + 1;
//       r5.x = r5.x * r1.z;
//       r1.w = (int)r6.x | (int)r6.y;
//       r1.z = r1.z * 0.5 + 0.5;
//       r1.z = r5.y * r1.z;
//       r5.y = r1.w ? r5.y : r1.z;
//     }
//     r1.z = r5.x + r5.y;
//     r1.z = cmp(0 < r1.z);
//     if (r1.z != 0) {
//       r7.xyz = t4.SampleLevel(s4_s, v0.xy, 0).xyz;
//       r8.xyzw = t5.SampleLevel(s5_s, v0.xy, 0).xyzw;
//       r1.z = (uint)cb0[155].x;
//       r1.x = (int)r1.y + (int)r1.x;
//       r1.x = (int)r1.z + (int)r1.x;
//       r1.x = (int)r1.x & 1;
//       r1.yzw = r3.xyz * float3(2,2,2) + float3(-1,-1,-1);
//       r2.y = dot(r1.yzw, r1.yzw);
//       r2.y = rsqrt(r2.y);
//       r3.xyz = r2.yyy * r1.yzw;
//       r0.w = (int)r0.w & 16;
//       r8.xyzw = r0.wwww ? float4(0,0,0,0) : r8.wxyz;
//       r0.w = r6.x ? 0 : r0.x;
//       r2.z = 0.0799999982 * r0.y;
//       r6.yzw = -r0.yyy * float3(0.0799999982,0.0799999982,0.0799999982) + r7.xyz;
//       r9.xyz = r0.www * r6.yzw + r2.zzz;
//       r2.z = cmp((int)r2.x == 5);
//       r2.z = (int)r6.x | (int)r2.z;
//       r2.w = cmp(0 < cb0[159].x);
//       r4.w = cmp(0 < cb0[204].z);
//       r2.w = r2.w ? r4.w : 0;
//       r4.w = cmp(0 != cb0[159].x);
//       r6.xyz = r4.www ? float3(1,1,1) : r7.xyz;
//       r5.zw = r1.xx ? float2(1,0) : float2(0,1);
//       r10.xyz = r9.xyz * r5.www;
//       r10.w = r5.w * r0.y;
//       r6.xyz = r2.www ? r5.zzz : r6.xyz;
//       r9.w = r0.y;
//       r10.xyzw = r2.wwww ? r10.xyzw : r9.xyzw;
//       r6.w = r10.w;
//       r7.w = r9.w;
//       r6.xyzw = r2.zzzz ? r6.xyzw : r7.xyzw;
//       r7.xyz = r2.zzz ? r10.xyz : r9.xyz;
//       r9.xyz = -r6.xyz * r0.www + r6.xyz;
//       r9.xyz = r9.xyz * cb0[139].www + cb0[139].xyz;
//       r7.xyz = r7.xyz * cb0[140].www + cb0[140].xyz;
//       r0.y = 0.5 * cb1[7].w;
//       r10.xyz = -r0.yyy * cb1[6].xyz + cb1[5].xyz;
//       r11.xyz = r0.yyy * cb1[6].xyz + cb1[5].xyz;
//       r0.y = cmp(0 < cb1[7].w);
//       if (r0.y != 0) {
//         r1.x = dot(r10.xyz, r10.xyz);
//         r2.w = dot(r11.xyz, r11.xyz);
//         r1.x = rsqrt(r1.x);
//         r2.w = rsqrt(r2.w);
//         r4.w = r2.w * r1.x;
//         r5.z = dot(r10.xyz, r11.xyz);
//         r5.z = r5.z * r4.w;
//         r5.w = r5.z * 0.5 + r4.w;
//         r5.w = 0.5 + r5.w;
//         r4.w = r4.w / r5.w;
//         r5.w = dot(r3.xyz, r10.xyz);
//         r7.w = dot(r3.xyz, r11.xyz);
//         r2.w = r7.w * r2.w;
//         r1.x = r5.w * r1.x + r2.w;
//         r1.x = 0.5 * r1.x;
//       } else {
//         r2.w = dot(r10.xyz, r10.xyz);
//         r5.w = 1 + r2.w;
//         r4.w = rcp(r5.w);
//         r2.w = rsqrt(r2.w);
//         r12.xyz = r10.xyz * r2.www;
//         r1.x = dot(r3.xyz, r12.xyz);
//         r5.z = 1;
//       }
//       r2.w = cmp(0 < cb1[6].w);
//       r5.w = cb1[6].w * cb1[6].w;
//       r4.w = saturate(r5.w * r4.w);
//       r4.w = sqrt(r4.w);
//       r5.w = cmp(r1.x < r4.w);
//       r7.w = max(-r4.w, r1.x);
//       r7.w = r7.w + r4.w;
//       r7.w = r7.w * r7.w;
//       r4.w = 4 * r4.w;
//       r4.w = r7.w / r4.w;
//       r4.w = r5.w ? r4.w : r1.x;
//       r1.x = saturate(r2.w ? r4.w : r1.x);
//       r2.w = dot(r4.xyz, r3.xyz);
//       r2.w = r2.w + r2.w;
//       r12.xyz = r3.xyz * -r2.www + r4.xyz;
//       r11.xyz = r11.xyz + -r10.xyz;
//       r2.w = dot(r12.xyz, r11.xyz);
//       r12.xyz = r2.www * r12.xyz + -r11.xyz;
//       r4.w = dot(r10.xyz, r12.xyz);
//       r2.w = r2.w * r2.w;
//       r2.w = cb1[7].w * cb1[7].w + -r2.w;
//       r2.w = saturate(r4.w / r2.w);
//       r11.xyz = r2.www * r11.xyz + r10.xyz;
//       r10.xyz = r0.yyy ? r11.xyz : r10.xyz;
//       r0.y = dot(r10.xyz, r10.xyz);
//       r0.y = rsqrt(r0.y);
//       r11.xyz = r10.xyz * r0.yyy;
//       r0.z = max(cb0[223].y, r0.z);
//       r2.w = r0.z * r0.z;
//       r4.w = cb1[6].w * r0.y;
//       r5.w = -r0.z * r0.z + 1;
//       r4.w = saturate(r5.w * r4.w);
//       r7.w = saturate(cb1[7].z * r0.y);
//       switch (r2.x) {
//         case 1 :        case 1 :        case 1 :        r2.x = dot(r3.xyz, r11.xyz);
//         r9.w = dot(r3.xyz, -r4.xyz);
//         r10.w = dot(-r4.xyz, r11.xyz);
//         r11.w = cmp(0 < r4.w);
//         if (r11.w != 0) {
//           r12.w = -r4.w * r4.w + 1;
//           r12.w = sqrt(r12.w);
//           r13.w = dot(r9.ww, r2.xx);
//           r14.w = r13.w + -r10.w;
//           r15.x = cmp(r14.w >= r12.w);
//           if (r15.x != 0) {
//             r15.x = 1;
//             r15.y = abs(r9.w);
//           } else {
//             r15.z = -r14.w * r14.w + 1;
//             r15.z = rsqrt(r15.z);
//             r15.z = r15.z * r4.w;
//             r15.w = -r14.w * r2.x + r9.w;
//             r16.x = r15.z * r15.w;
//             r16.y = r9.w * r9.w;
//             r16.y = r16.y * 2 + -1;
//             r14.w = -r14.w * r10.w + r16.y;
//             r14.w = r15.z * r14.w;
//             r16.y = -r2.x * r2.x + 1;
//             r16.y = -r9.w * r9.w + r16.y;
//             r16.y = -r10.w * r10.w + r16.y;
//             r13.w = saturate(r13.w * r10.w + r16.y);
//             r13.w = sqrt(r13.w);
//             r13.w = r15.z * r13.w;
//             r16.y = r13.w * r9.w;
//             r16.z = r16.y + r16.y;
//             r16.w = r2.x * r12.w + r9.w;
//             r15.z = r15.z * r15.w + r16.w;
//             r15.w = r10.w * r12.w + r14.w;
//             r15.w = 1 + r15.w;
//             r17.x = r15.w * r13.w;
//             r17.y = r15.z * r15.w;
//             r17.z = r16.z * r15.z;
//             r16.y = r15.z * r16.y;
//             r16.y = 0.5 * r16.y;
//             r16.y = r17.x * -0.5 + r16.y;
//             r16.y = r17.y * r16.y;
//             r17.w = -r17.x * 2 + r17.z;
//             r17.z = r17.z * r17.w;
//             r17.x = r17.x * r17.x + r17.z;
//             r17.z = r15.w * r15.w;
//             r15.w = r10.w * r12.w + r15.w;
//             r15.w = r15.w * -0.5 + -0.5;
//             r15.w = r17.y * r15.w;
//             r15.w = r16.w * r17.z + r15.w;
//             r15.z = r15.z * r15.w + r17.x;
//             r15.w = r16.y + r16.y;
//             r16.w = r16.y * r16.y;
//             r16.w = r15.z * r15.z + r16.w;
//             r15.w = r15.w / r16.w;
//             r15.z = r15.w * r15.z;
//             r15.w = -r15.w * r16.y + 1;
//             r13.w = r15.z * r13.w;
//             r13.w = r15.w * r16.x + r13.w;
//             r15.z = r15.z * r16.z;
//             r14.w = r15.w * r14.w + r15.z;
//             r13.w = r2.x * r12.w + r13.w;
//             r12.w = r10.w * r12.w + r14.w;
//             r14.w = r12.w * 2 + 2;
//             r14.w = rsqrt(r14.w);
//             r13.w = r13.w + r9.w;
//             r15.x = saturate(r13.w * r14.w);
//             r15.y = saturate(r14.w * r12.w + r14.w);
//           }
//         } else {
//           r12.w = r10.w * 2 + 2;
//           r12.w = rsqrt(r12.w);
//           r2.x = r9.w + r2.x;
//           r15.x = saturate(r2.x * r12.w);
//           r15.y = saturate(r12.w * r10.w + r12.w);
//         }
//         r2.x = 9.99999975e-06 + abs(r9.w);
//         r2.x = min(1, r2.x);
//         r16.xyz = r9.xyz * r1.xxx;
//         r12.xyz = float3(0.318309873,0.318309873,0.318309873) * r16.xyz;
//         r9.w = r2.w * r2.w;
//         r10.w = cmp(0 < r7.w);
//         r12.w = r7.w * r7.w;
//         r13.w = r15.y * 3.5999999 + 0.400000006;
//         r12.w = r12.w / r13.w;
//         r12.w = r2.w * r2.w + r12.w;
//         r12.w = min(1, r12.w);
//         r16.x = r10.w ? r12.w : r9.w;
//         r9.w = 0.25 * r4.w;
//         r10.w = (uint)r16.x >> 1;
//         r10.w = (int)r10.w + 0x1fbd1df5;
//         r10.w = r10.w * 3 + r4.w;
//         r9.w = r10.w * r9.w;
//         r10.w = 0.00100000005 + r15.y;
//         r9.w = r9.w / r10.w;
//         r17.x = r16.x + r9.w;
//         r17.y = r16.x / r17.x;
//         r16.y = 1;
//         r15.zw = r11.ww ? r17.xy : r16.xy;
//         r9.w = cmp(r5.z < 1);
//         r11.w = 1.00010002 + -r5.z;
//         r12.w = 1 + r5.z;
//         r11.w = r11.w / r12.w;
//         r11.w = sqrt(r11.w);
//         r12.w = 0.25 * r11.w;
//         r13.w = (uint)r15.z >> 1;
//         r13.w = (int)r13.w + 0x1fbd1df5;
//         r11.w = r13.w * 3 + r11.w;
//         r11.w = r12.w * r11.w;
//         r10.w = r11.w / r10.w;
//         r10.w = r15.z + r10.w;
//         r10.w = r15.z / r10.w;
//         r10.w = sqrt(r10.w);
//         r10.w = r15.w * r10.w;
//         r9.w = r9.w ? r10.w : r15.w;
//         r10.w = r15.x * r16.x + -r15.x;
//         r10.w = r10.w * r15.x + 1;
//         r10.w = r10.w * r10.w;
//         r10.w = 3.14159274 * r10.w;
//         r10.w = r16.x / r10.w;
//         r9.w = r10.w * r9.w;
//         r10.w = sqrt(r16.x);
//         r11.w = 1 + -r10.w;
//         r12.w = r2.x * r11.w + r10.w;
//         r10.w = r1.x * r11.w + r10.w;
//         r2.x = r10.w * r2.x;
//         r2.x = r1.x * r12.w + r2.x;
//         r2.x = rcp(r2.x);
//         r2.x = r9.w * r2.x;
//         r9.w = 1 + -r15.y;
//         r10.w = r9.w * r9.w;
//         r10.w = r10.w * r10.w;
//         r11.w = r10.w * r9.w;
//         r12.w = saturate(50 * r7.y);
//         r9.w = -r10.w * r9.w + 1;
//         r15.xyz = r9.www * r7.xyz;
//         r15.xyz = r12.www * r11.www + r15.xyz;
//         r2.x = 0.5 * r2.x;
//         r15.xyz = r2.xxx * r15.xyz;
//         r13.xyz = r15.xyz * r1.xxx;
//         r14.xyz = float3(0,0,0);
//         break;
//         case 2 :        r2.x = dot(r3.xyz, r11.xyz);
//         r9.w = dot(r3.xyz, -r4.xyz);
//         r10.w = dot(-r4.xyz, r11.xyz);
//         r11.w = cmp(0 < r4.w);
//         if (r11.w != 0) {
//           r12.w = -r4.w * r4.w + 1;
//           r12.w = sqrt(r12.w);
//           r13.w = dot(r9.ww, r2.xx);
//           r14.w = r13.w + -r10.w;
//           r15.x = cmp(r14.w >= r12.w);
//           if (r15.x != 0) {
//             r15.x = 1;
//             r15.y = abs(r9.w);
//           } else {
//             r15.z = -r14.w * r14.w + 1;
//             r15.z = rsqrt(r15.z);
//             r15.z = r15.z * r4.w;
//             r15.w = -r14.w * r2.x + r9.w;
//             r16.x = r15.z * r15.w;
//             r16.y = r9.w * r9.w;
//             r16.y = r16.y * 2 + -1;
//             r14.w = -r14.w * r10.w + r16.y;
//             r14.w = r15.z * r14.w;
//             r16.y = -r2.x * r2.x + 1;
//             r16.y = -r9.w * r9.w + r16.y;
//             r16.y = -r10.w * r10.w + r16.y;
//             r13.w = saturate(r13.w * r10.w + r16.y);
//             r13.w = sqrt(r13.w);
//             r13.w = r15.z * r13.w;
//             r16.y = r13.w * r9.w;
//             r16.z = r16.y + r16.y;
//             r16.w = r2.x * r12.w + r9.w;
//             r15.z = r15.z * r15.w + r16.w;
//             r15.w = r10.w * r12.w + r14.w;
//             r15.w = 1 + r15.w;
//             r17.x = r15.w * r13.w;
//             r17.y = r15.z * r15.w;
//             r17.z = r16.z * r15.z;
//             r16.y = r15.z * r16.y;
//             r16.y = 0.5 * r16.y;
//             r16.y = r17.x * -0.5 + r16.y;
//             r16.y = r17.y * r16.y;
//             r17.w = -r17.x * 2 + r17.z;
//             r17.z = r17.z * r17.w;
//             r17.x = r17.x * r17.x + r17.z;
//             r17.z = r15.w * r15.w;
//             r15.w = r10.w * r12.w + r15.w;
//             r15.w = r15.w * -0.5 + -0.5;
//             r15.w = r17.y * r15.w;
//             r15.w = r16.w * r17.z + r15.w;
//             r15.z = r15.z * r15.w + r17.x;
//             r15.w = r16.y + r16.y;
//             r16.w = r16.y * r16.y;
//             r16.w = r15.z * r15.z + r16.w;
//             r15.w = r15.w / r16.w;
//             r15.z = r15.w * r15.z;
//             r15.w = -r15.w * r16.y + 1;
//             r13.w = r15.z * r13.w;
//             r13.w = r15.w * r16.x + r13.w;
//             r15.z = r15.z * r16.z;
//             r14.w = r15.w * r14.w + r15.z;
//             r13.w = r2.x * r12.w + r13.w;
//             r12.w = r10.w * r12.w + r14.w;
//             r14.w = r12.w * 2 + 2;
//             r14.w = rsqrt(r14.w);
//             r13.w = r13.w + r9.w;
//             r15.x = saturate(r13.w * r14.w);
//             r15.y = saturate(r14.w * r12.w + r14.w);
//           }
//         } else {
//           r12.w = r10.w * 2 + 2;
//           r12.w = rsqrt(r12.w);
//           r2.x = r9.w + r2.x;
//           r15.x = saturate(r2.x * r12.w);
//           r15.y = saturate(r12.w * r10.w + r12.w);
//         }
//         r2.x = 9.99999975e-06 + abs(r9.w);
//         r2.x = min(1, r2.x);
//         r16.xyz = r9.xyz * r1.xxx;
//         r12.xyz = float3(0.318309873,0.318309873,0.318309873) * r16.xyz;
//         r9.w = r2.w * r2.w;
//         r10.w = cmp(0 < r7.w);
//         r12.w = r7.w * r7.w;
//         r13.w = r15.y * 3.5999999 + 0.400000006;
//         r12.w = r12.w / r13.w;
//         r12.w = r2.w * r2.w + r12.w;
//         r12.w = min(1, r12.w);
//         r16.x = r10.w ? r12.w : r9.w;
//         r9.w = 0.25 * r4.w;
//         r10.w = (uint)r16.x >> 1;
//         r10.w = (int)r10.w + 0x1fbd1df5;
//         r10.w = r10.w * 3 + r4.w;
//         r9.w = r10.w * r9.w;
//         r10.w = 0.00100000005 + r15.y;
//         r9.w = r9.w / r10.w;
//         r17.x = r16.x + r9.w;
//         r17.y = r16.x / r17.x;
//         r16.y = 1;
//         r15.zw = r11.ww ? r17.xy : r16.xy;
//         r9.w = cmp(r5.z < 1);
//         r11.w = 1.00010002 + -r5.z;
//         r12.w = 1 + r5.z;
//         r11.w = r11.w / r12.w;
//         r11.w = sqrt(r11.w);
//         r12.w = 0.25 * r11.w;
//         r13.w = (uint)r15.z >> 1;
//         r13.w = (int)r13.w + 0x1fbd1df5;
//         r11.w = r13.w * 3 + r11.w;
//         r11.w = r12.w * r11.w;
//         r10.w = r11.w / r10.w;
//         r10.w = r15.z + r10.w;
//         r10.w = r15.z / r10.w;
//         r10.w = sqrt(r10.w);
//         r10.w = r15.w * r10.w;
//         r9.w = r9.w ? r10.w : r15.w;
//         r10.w = r15.x * r16.x + -r15.x;
//         r10.w = r10.w * r15.x + 1;
//         r10.w = r10.w * r10.w;
//         r10.w = 3.14159274 * r10.w;
//         r10.w = r16.x / r10.w;
//         r9.w = r10.w * r9.w;
//         r10.w = sqrt(r16.x);
//         r11.w = 1 + -r10.w;
//         r12.w = r2.x * r11.w + r10.w;
//         r10.w = r1.x * r11.w + r10.w;
//         r2.x = r10.w * r2.x;
//         r2.x = r1.x * r12.w + r2.x;
//         r2.x = rcp(r2.x);
//         r2.x = r9.w * r2.x;
//         r9.w = 1 + -r15.y;
//         r10.w = r9.w * r9.w;
//         r10.w = r10.w * r10.w;
//         r11.w = r10.w * r9.w;
//         r12.w = saturate(50 * r7.y);
//         r9.w = -r10.w * r9.w + 1;
//         r15.xyz = r9.www * r7.xyz;
//         r15.xyz = r12.www * r11.www + r15.xyz;
//         r2.x = 0.5 * r2.x;
//         r15.xyz = r2.xxx * r15.xyz;
//         r13.xyz = r15.xyz * r1.xxx;
//         r15.xyz = r8.yzw * r8.yzw;
//         r10.xyz = r10.xyz * r0.yyy + -r4.xyz;
//         r0.y = dot(r10.xyz, r10.xyz);
//         r0.y = rsqrt(r0.y);
//         r10.xyz = r10.xyz * r0.yyy;
//         r0.y = saturate(dot(r11.xyz, r4.xyz));
//         r0.y = log2(r0.y);
//         r0.y = 12 * r0.y;
//         r0.y = exp2(r0.y);
//         r2.x = r8.x * -2.9000001 + 3;
//         r0.y = r2.x * r0.y;
//         r2.x = dot(r3.xyz, r10.xyz);
//         r2.x = r2.x * r8.x + 1;
//         r2.x = saturate(r2.x + -r8.x);
//         r9.w = 0.159154937 * r2.x;
//         r2.x = -r2.x * 0.159154937 + 1;
//         r0.y = r0.y * r2.x + r9.w;
//         r14.xyz = r0.yyy * r15.xyz;
//         break;
//         case 3 :        r0.y = dot(r3.xyz, r11.xyz);
//         r2.x = dot(r3.xyz, -r4.xyz);
//         r9.w = dot(-r4.xyz, r11.xyz);
//         r10.x = cmp(0 < r4.w);
//         if (r10.x != 0) {
//           r10.y = -r4.w * r4.w + 1;
//           r10.y = sqrt(r10.y);
//           r10.z = dot(r2.xx, r0.yy);
//           r10.w = r10.z + -r9.w;
//           r11.w = cmp(r10.w >= r10.y);
//           if (r11.w != 0) {
//             r11.w = 1;
//             r12.w = abs(r2.x);
//           } else {
//             r13.w = -r10.w * r10.w + 1;
//             r13.w = rsqrt(r13.w);
//             r13.w = r13.w * r4.w;
//             r14.w = -r10.w * r0.y + r2.x;
//             r15.x = r14.w * r13.w;
//             r15.y = r2.x * r2.x;
//             r15.y = r15.y * 2 + -1;
//             r10.w = -r10.w * r9.w + r15.y;
//             r15.y = -r0.y * r0.y + 1;
//             r15.y = -r2.x * r2.x + r15.y;
//             r15.y = -r9.w * r9.w + r15.y;
//             r10.z = saturate(r10.z * r9.w + r15.y);
//             r10.z = sqrt(r10.z);
//             r10.zw = r13.ww * r10.zw;
//             r15.y = r10.z * r2.x;
//             r15.z = r15.y + r15.y;
//             r15.w = r0.y * r10.y + r2.x;
//             r13.w = r13.w * r14.w + r15.w;
//             r14.w = r9.w * r10.y + r10.w;
//             r14.w = 1 + r14.w;
//             r16.x = r14.w * r10.z;
//             r16.y = r14.w * r13.w;
//             r16.z = r15.z * r13.w;
//             r15.y = r13.w * r15.y;
//             r15.y = 0.5 * r15.y;
//             r15.y = r16.x * -0.5 + r15.y;
//             r15.y = r16.y * r15.y;
//             r16.w = -r16.x * 2 + r16.z;
//             r16.z = r16.z * r16.w;
//             r16.x = r16.x * r16.x + r16.z;
//             r16.z = r14.w * r14.w;
//             r14.w = r9.w * r10.y + r14.w;
//             r14.w = r14.w * -0.5 + -0.5;
//             r14.w = r16.y * r14.w;
//             r14.w = r15.w * r16.z + r14.w;
//             r13.w = r13.w * r14.w + r16.x;
//             r14.w = r15.y + r15.y;
//             r15.w = r15.y * r15.y;
//             r15.w = r13.w * r13.w + r15.w;
//             r14.w = r14.w / r15.w;
//             r13.w = r14.w * r13.w;
//             r14.w = -r14.w * r15.y + 1;
//             r10.z = r13.w * r10.z;
//             r10.z = r14.w * r15.x + r10.z;
//             r13.w = r13.w * r15.z;
//             r10.w = r14.w * r10.w + r13.w;
//             r10.z = r0.y * r10.y + r10.z;
//             r10.y = r9.w * r10.y + r10.w;
//             r10.w = r10.y * 2 + 2;
//             r10.w = rsqrt(r10.w);
//             r10.z = r10.z + r2.x;
//             r11.w = saturate(r10.z * r10.w);
//             r12.w = saturate(r10.w * r10.y + r10.w);
//           }
//         } else {
//           r10.y = r9.w * 2 + 2;
//           r10.y = rsqrt(r10.y);
//           r10.z = r2.x + r0.y;
//           r11.w = saturate(r10.z * r10.y);
//           r12.w = saturate(r10.y * r9.w + r10.y);
//         }
//         r2.x = 9.99999975e-06 + abs(r2.x);
//         r2.x = min(1, r2.x);
//         r10.yzw = r9.xyz * r1.xxx;
//         r12.xyz = float3(0.318309873,0.318309873,0.318309873) * r10.yzw;
//         r9.w = r2.w * r2.w;
//         r10.y = cmp(0 < r7.w);
//         r10.z = r7.w * r7.w;
//         r10.w = r12.w * 3.5999999 + 0.400000006;
//         r10.z = r10.z / r10.w;
//         r10.z = r2.w * r2.w + r10.z;
//         r10.z = min(1, r10.z);
//         r15.x = r10.y ? r10.z : r9.w;
//         r9.w = 0.25 * r4.w;
//         r10.y = (uint)r15.x >> 1;
//         r10.y = (int)r10.y + 0x1fbd1df5;
//         r10.y = r10.y * 3 + r4.w;
//         r9.w = r10.y * r9.w;
//         r10.y = 0.00100000005 + r12.w;
//         r9.w = r9.w / r10.y;
//         r16.x = r15.x + r9.w;
//         r16.y = r15.x / r16.x;
//         r15.y = 1;
//         r10.xz = r10.xx ? r16.xy : r15.xy;
//         r9.w = cmp(r5.z < 1);
//         r10.w = 1.00010002 + -r5.z;
//         r13.w = 1 + r5.z;
//         r10.w = r10.w / r13.w;
//         r10.w = sqrt(r10.w);
//         r13.w = 0.25 * r10.w;
//         r14.w = (uint)r10.x >> 1;
//         r14.w = (int)r14.w + 0x1fbd1df5;
//         r10.w = r14.w * 3 + r10.w;
//         r10.w = r13.w * r10.w;
//         r10.y = r10.w / r10.y;
//         r10.y = r10.x + r10.y;
//         r10.x = r10.x / r10.y;
//         r10.x = sqrt(r10.x);
//         r10.x = r10.z * r10.x;
//         r9.w = r9.w ? r10.x : r10.z;
//         r10.x = r11.w * r15.x + -r11.w;
//         r10.x = r10.x * r11.w + 1;
//         r10.x = r10.x * r10.x;
//         r10.x = 3.14159274 * r10.x;
//         r10.x = r15.x / r10.x;
//         r9.w = r10.x * r9.w;
//         r10.x = sqrt(r15.x);
//         r10.y = 1 + -r10.x;
//         r10.z = r2.x * r10.y + r10.x;
//         r10.x = r1.x * r10.y + r10.x;
//         r2.x = r10.x * r2.x;
//         r2.x = r1.x * r10.z + r2.x;
//         r2.x = rcp(r2.x);
//         r2.x = r9.w * r2.x;
//         r9.w = 1 + -r12.w;
//         r10.x = r9.w * r9.w;
//         r10.x = r10.x * r10.x;
//         r10.y = r10.x * r9.w;
//         r10.z = saturate(50 * r7.y);
//         r9.w = -r10.x * r9.w + 1;
//         r15.xyz = r9.www * r7.xyz;
//         r10.xyz = r10.zzz * r10.yyy + r15.xyz;
//         r2.x = 0.5 * r2.x;
//         r10.xyz = r2.xxx * r10.xyz;
//         r13.xyz = r10.xyz * r1.xxx;
//         r10.xyz = r8.yzw * r8.yzw;
//         r15.x = saturate(r0.y * 0.5 + 0.5);
//         r15.y = 1 + -r8.x;
//         r15.xyz = t0.SampleLevel(s0_s, r15.xy, 0).xyz;
//         r14.xyz = r15.xyz * r10.xyz;
//         break;
//         case 4 :        r0.y = max(0.0199999996, r8.z);
//         r10.x = dot(r3.xyz, r11.xyz);
//         r2.x = dot(r3.xyz, -r4.xyz);
//         r9.w = dot(-r4.xyz, r11.xyz);
//         r10.w = cmp(0 < r4.w);
//         if (r10.w != 0) {
//           r11.w = -r4.w * r4.w + 1;
//           r11.w = sqrt(r11.w);
//           r12.w = dot(r2.xx, r10.xx);
//           r13.w = r12.w + -r9.w;
//           r14.w = cmp(r13.w >= r11.w);
//           if (r14.w != 0) {
//             r10.z = abs(r2.x);
//             r10.y = 1;
//           } else {
//             r14.w = -r13.w * r13.w + 1;
//             r14.w = rsqrt(r14.w);
//             r14.w = r14.w * r4.w;
//             r15.x = -r13.w * r10.x + r2.x;
//             r15.y = r15.x * r14.w;
//             r15.z = r2.x * r2.x;
//             r15.z = r15.z * 2 + -1;
//             r13.w = -r13.w * r9.w + r15.z;
//             r13.w = r14.w * r13.w;
//             r15.z = -r10.x * r10.x + 1;
//             r15.z = -r2.x * r2.x + r15.z;
//             r15.z = -r9.w * r9.w + r15.z;
//             r12.w = saturate(r12.w * r9.w + r15.z);
//             r12.w = sqrt(r12.w);
//             r12.w = r14.w * r12.w;
//             r15.z = r12.w * r2.x;
//             r15.w = r15.z + r15.z;
//             r16.x = r10.x * r11.w + r2.x;
//             r14.w = r14.w * r15.x + r16.x;
//             r15.x = r9.w * r11.w + r13.w;
//             r15.x = 1 + r15.x;
//             r16.y = r15.x * r12.w;
//             r16.z = r15.x * r14.w;
//             r16.w = r15.w * r14.w;
//             r15.z = r14.w * r15.z;
//             r15.z = 0.5 * r15.z;
//             r15.z = r16.y * -0.5 + r15.z;
//             r17.x = -r16.y * 2 + r16.w;
//             r16.w = r17.x * r16.w;
//             r16.y = r16.y * r16.y + r16.w;
//             r16.w = r15.x * r15.x;
//             r15.x = r9.w * r11.w + r15.x;
//             r15.x = r15.x * -0.5 + -0.5;
//             r15.xz = r16.zz * r15.xz;
//             r15.x = r16.x * r16.w + r15.x;
//             r14.w = r14.w * r15.x + r16.y;
//             r15.x = r15.z + r15.z;
//             r16.x = r15.z * r15.z;
//             r16.x = r14.w * r14.w + r16.x;
//             r15.x = r15.x / r16.x;
//             r14.w = r15.x * r14.w;
//             r15.x = -r15.x * r15.z + 1;
//             r12.w = r14.w * r12.w;
//             r12.w = r15.x * r15.y + r12.w;
//             r14.w = r14.w * r15.w;
//             r13.w = r15.x * r13.w + r14.w;
//             r10.x = r10.x * r11.w + r12.w;
//             r11.w = r9.w * r11.w + r13.w;
//             r12.w = r11.w * 2 + 2;
//             r12.w = rsqrt(r12.w);
//             r13.w = r10.x + r2.x;
//             r10.y = saturate(r13.w * r12.w);
//             r10.z = saturate(r12.w * r11.w + r12.w);
//           }
//         } else {
//           r11.w = r9.w * 2 + 2;
//           r11.w = rsqrt(r11.w);
//           r12.w = r10.x + r2.x;
//           r10.y = saturate(r12.w * r11.w);
//           r10.z = saturate(r11.w * r9.w + r11.w);
//         }
//         r2.x = 9.99999975e-06 + abs(r2.x);
//         r2.x = min(1, r2.x);
//         r9.w = 1 + -r10.z;
//         r11.w = r9.w * r9.w;
//         r11.w = r11.w * r11.w;
//         r12.w = r11.w * r9.w;
//         r9.w = -r11.w * r9.w + 1;
//         r9.w = r9.w * 0.0399999991 + r12.w;
//         r0.y = r0.y * r0.y;
//         r11.w = r0.y * r0.y;
//         r12.w = cmp(0 < r7.w);
//         r13.w = r7.w * r7.w;
//         r14.w = r10.z * 3.5999999 + 0.400000006;
//         r14.w = r13.w / r14.w;
//         r0.y = r0.y * r0.y + r14.w;
//         r0.y = min(1, r0.y);
//         r15.x = r12.w ? r0.y : r11.w;
//         r0.y = 0.25 * r4.w;
//         r11.w = (uint)r15.x >> 1;
//         r11.w = (int)r11.w + 0x1fbd1df5;
//         r11.w = r11.w * 3 + r4.w;
//         r11.w = r11.w * r0.y;
//         r14.w = 0.00100000005 + r10.z;
//         r11.w = r11.w / r14.w;
//         r16.x = r15.x + r11.w;
//         r16.y = r15.x / r16.x;
//         r15.yw = float2(1,1);
//         r16.xy = r10.ww ? r16.xy : r15.xy;
//         r11.w = cmp(r5.z < 1);
//         r15.y = 1.00010002 + -r5.z;
//         r16.z = 1 + r5.z;
//         r15.y = r15.y / r16.z;
//         r15.y = sqrt(r15.y);
//         r16.z = 0.25 * r15.y;
//         r16.w = (uint)r16.x >> 1;
//         r16.w = (int)r16.w + 0x1fbd1df5;
//         r16.w = r16.w * 3 + r15.y;
//         r16.w = r16.z * r16.w;
//         r14.w = r16.w / r14.w;
//         r14.w = r16.x + r14.w;
//         r14.w = r16.x / r14.w;
//         r14.w = sqrt(r14.w);
//         r14.w = r16.y * r14.w;
//         r14.w = r11.w ? r14.w : r16.y;
//         r16.x = r10.y * r15.x + -r10.y;
//         r16.x = r16.x * r10.y + 1;
//         r16.x = r16.x * r16.x;
//         r16.x = 3.14159274 * r16.x;
//         r16.x = r15.x / r16.x;
//         r14.w = r16.x * r14.w;
//         r15.x = sqrt(r15.x);
//         r16.x = 1 + -r15.x;
//         r16.y = r2.x * r16.x + r15.x;
//         r15.x = r1.x * r16.x + r15.x;
//         r15.x = r15.x * r2.x;
//         r15.x = r1.x * r16.y + r15.x;
//         r15.x = rcp(r15.x);
//         r14.w = r15.x * r14.w;
//         r14.w = r14.w * r9.w;
//         r14.w = r14.w * r1.x;
//         r14.w = r14.w * r8.y;
//         r9.w = 1 + -r9.w;
//         r9.w = r9.w * r9.w;
//         r15.x = -r10.z * 0.219999999 + 0.629999995;
//         r15.x = r15.x * r10.z + -0.745000005;
//         r16.x = r15.x * r10.y;
//         r2.x = saturate(r2.x * 0.666666687 + -r16.x);
//         r16.x = saturate(r10.x * 0.666666687 + -r16.x);
//         r10.z = saturate(r10.z * 0.666666687 + -r15.x);
//         r15.x = cmp(0 < r16.x);
//         r16.y = cmp(0 < r2.x);
//         r15.x = r15.x ? r16.y : 0;
//         r16.y = rcp(r2.x);
//         r16.w = rcp(r16.x);
//         r16.y = r16.y + r16.w;
//         r16.w = cmp(0 < r0.w);
//         r17.xyz = float3(0.318309873,0.318309873,0.318309873) * r6.xyz;
//         r17.xyz = log2(r17.xyz);
//         r17.xyz = float3(-0.346573591,-0.346573591,-0.346573591) * r17.xyz;
//         r16.y = -2 + r16.y;
//         r16.y = max(0, r16.y);
//         r17.xyz = r17.xyz * r16.yyy;
//         r17.xyz = float3(-1.44269502,-1.44269502,-1.44269502) * r17.xyz;
//         r17.xyz = exp2(r17.xyz);
//         r17.xyz = min(float3(1,1,1), r17.xyz);
//         r17.xyz = float3(-1,-1,-1) + r17.xyz;
//         r17.xyz = r0.www * r17.xyz + float3(1,1,1);
//         r17.xyz = r16.www ? r17.xyz : float3(1,1,1);
//         r17.xyz = r15.xxx ? r17.xyz : 0;
//         r15.x = r2.w * r2.w;
//         r16.y = r10.z * 3.5999999 + 0.400000006;
//         r13.w = r13.w / r16.y;
//         r13.w = r2.w * r2.w + r13.w;
//         r13.w = min(1, r13.w);
//         r15.z = r12.w ? r13.w : r15.x;
//         r12.w = (uint)r15.z >> 1;
//         r12.w = (int)r12.w + 0x1fbd1df5;
//         r12.w = r12.w * 3 + r4.w;
//         r0.y = r12.w * r0.y;
//         r12.w = 0.00100000005 + r10.z;
//         r0.y = r0.y / r12.w;
//         r18.x = r15.z + r0.y;
//         r18.y = r15.z / r18.x;
//         r15.xw = r10.ww ? r18.xy : r15.zw;
//         r0.y = (uint)r15.x >> 1;
//         r0.y = (int)r0.y + 0x1fbd1df5;
//         r0.y = r0.y * 3 + r15.y;
//         r0.y = r16.z * r0.y;
//         r0.y = r0.y / r12.w;
//         r0.y = r15.x + r0.y;
//         r0.y = r15.x / r0.y;
//         r0.y = sqrt(r0.y);
//         r0.y = r15.w * r0.y;
//         r0.y = r11.w ? r0.y : r15.w;
//         r15.xyw = r9.xyz * r0.yyy;
//         r15.xyw = float3(0.318309873,0.318309873,0.318309873) * r15.xyw;
//         r10.w = r16.x * r9.w;
//         r16.yzw = r10.www * r17.xyz + -r10.xxx;
//         r16.yzw = r8.yyy * r16.yzw + r10.xxx;
//         r12.xyz = r16.yzw * r15.xyw;
//         r10.w = r10.y * r15.z + -r10.y;
//         r10.y = r10.w * r10.y + 1;
//         r10.y = r10.y * r10.y;
//         r10.y = 3.14159274 * r10.y;
//         r10.y = r15.z / r10.y;
//         r10.w = sqrt(r15.z);
//         r11.w = 1 + -r10.w;
//         r12.w = r2.x * r11.w + r10.w;
//         r10.w = r16.x * r11.w + r10.w;
//         r2.x = r10.w * r2.x;
//         r2.x = r16.x * r12.w + r2.x;
//         r2.x = rcp(r2.x);
//         r2.x = 0.5 * r2.x;
//         r10.z = 1 + -r10.z;
//         r10.w = r10.z * r10.z;
//         r10.w = r10.w * r10.w;
//         r11.w = r10.w * r10.z;
//         r12.w = saturate(50 * r7.y);
//         r10.z = -r10.w * r10.z + 1;
//         r15.xyz = r10.zzz * r7.xyz;
//         r15.xyz = r12.www * r11.www + r15.xyz;
//         r0.y = r10.y * r0.y;
//         r0.y = r0.y * r2.x;
//         r10.yzw = r0.yyy * r15.xyz;
//         r15.xyz = r17.xyz * r9.www;
//         r15.xyz = r15.xyz * r16.xxx + -r10.xxx;
//         r15.xyz = r8.yyy * r15.xyz + r10.xxx;
//         r10.xyz = r15.xyz * r10.yzw;
//         r13.xyz = r14.www * float3(0.5,0.5,0.5) + r10.xyz;
//         r14.xyz = float3(0,0,0);
//         break;
//         case 5 :        r0.y = dot(r3.xyz, r11.xyz);
//         r2.x = dot(r3.xyz, -r4.xyz);
//         r9.w = dot(-r4.xyz, r11.xyz);
//         r10.x = cmp(0 < r4.w);
//         if (r10.x != 0) {
//           r10.y = -r4.w * r4.w + 1;
//           r10.y = sqrt(r10.y);
//           r10.z = dot(r2.xx, r0.yy);
//           r10.w = r10.z + -r9.w;
//           r11.w = cmp(r10.w >= r10.y);
//           if (r11.w != 0) {
//             r11.w = 1;
//             r12.w = abs(r2.x);
//           } else {
//             r13.w = -r10.w * r10.w + 1;
//             r13.w = rsqrt(r13.w);
//             r13.w = r13.w * r4.w;
//             r14.w = -r10.w * r0.y + r2.x;
//             r15.x = r14.w * r13.w;
//             r15.y = r2.x * r2.x;
//             r15.y = r15.y * 2 + -1;
//             r10.w = -r10.w * r9.w + r15.y;
//             r15.y = -r0.y * r0.y + 1;
//             r15.y = -r2.x * r2.x + r15.y;
//             r15.y = -r9.w * r9.w + r15.y;
//             r10.z = saturate(r10.z * r9.w + r15.y);
//             r10.z = sqrt(r10.z);
//             r10.zw = r13.ww * r10.zw;
//             r15.y = r10.z * r2.x;
//             r15.z = r15.y + r15.y;
//             r15.w = r0.y * r10.y + r2.x;
//             r13.w = r13.w * r14.w + r15.w;
//             r14.w = r9.w * r10.y + r10.w;
//             r14.w = 1 + r14.w;
//             r16.x = r14.w * r10.z;
//             r16.y = r14.w * r13.w;
//             r16.z = r15.z * r13.w;
//             r15.y = r13.w * r15.y;
//             r15.y = 0.5 * r15.y;
//             r15.y = r16.x * -0.5 + r15.y;
//             r15.y = r16.y * r15.y;
//             r16.w = -r16.x * 2 + r16.z;
//             r16.z = r16.z * r16.w;
//             r16.x = r16.x * r16.x + r16.z;
//             r16.z = r14.w * r14.w;
//             r14.w = r9.w * r10.y + r14.w;
//             r14.w = r14.w * -0.5 + -0.5;
//             r14.w = r16.y * r14.w;
//             r14.w = r15.w * r16.z + r14.w;
//             r13.w = r13.w * r14.w + r16.x;
//             r14.w = r15.y + r15.y;
//             r15.w = r15.y * r15.y;
//             r15.w = r13.w * r13.w + r15.w;
//             r14.w = r14.w / r15.w;
//             r13.w = r14.w * r13.w;
//             r14.w = -r14.w * r15.y + 1;
//             r10.z = r13.w * r10.z;
//             r10.z = r14.w * r15.x + r10.z;
//             r13.w = r13.w * r15.z;
//             r10.w = r14.w * r10.w + r13.w;
//             r10.z = r0.y * r10.y + r10.z;
//             r10.y = r9.w * r10.y + r10.w;
//             r10.w = r10.y * 2 + 2;
//             r10.w = rsqrt(r10.w);
//             r10.z = r10.z + r2.x;
//             r11.w = saturate(r10.z * r10.w);
//             r12.w = saturate(r10.w * r10.y + r10.w);
//           }
//         } else {
//           r10.y = r9.w * 2 + 2;
//           r10.y = rsqrt(r10.y);
//           r0.y = r2.x + r0.y;
//           r11.w = saturate(r0.y * r10.y);
//           r12.w = saturate(r10.y * r9.w + r10.y);
//         }
//         r0.y = 9.99999975e-06 + abs(r2.x);
//         r0.y = min(1, r0.y);
//         r2.x = 10 * r8.x;
//         r9.w = r8.y * 255 + 0.5;
//         r15.y = (uint)r9.w;
//         r15.xzw = float3(5,0,0);
//         r10.yzw = t9.Load(r15.xyz).xyz;
//         r9.w = saturate(dot(r10.yy, r0.zz));
//         r9.w = max(0.0199999996, r9.w);
//         r10.y = saturate(dot(r10.zz, r0.zz));
//         r2.x = saturate(r2.x);
//         r9.w = -1 + r9.w;
//         r9.w = r2.x * r9.w + 1;
//         r10.y = -1 + r10.y;
//         r2.x = r2.x * r10.y + 1;
//         r10.y = r12.w * r12.w;
//         r10.y = dot(r10.yy, r0.zz);
//         r10.y = -0.5 + r10.y;
//         r10.z = 1 + -r0.y;
//         r13.w = r10.z * r10.z;
//         r13.w = r13.w * r13.w;
//         r10.z = r13.w * r10.z;
//         r10.z = r10.y * r10.z + 1;
//         r13.w = 1 + -r1.x;
//         r14.w = r13.w * r13.w;
//         r14.w = r14.w * r14.w;
//         r13.w = r14.w * r13.w;
//         r10.y = r10.y * r13.w + 1;
//         r10.y = r10.y * r10.z;
//         r10.y = 0.318309873 * r10.y;
//         r15.xyz = r10.yyy * r9.xyz;
//         r12.xyz = r15.xyz * r1.xxx;
//         r9.w = r9.w * r9.w;
//         r10.y = r9.w * r9.w;
//         r2.x = r2.x * r2.x;
//         r10.z = r2.x * r2.x;
//         r13.w = cmp(0 < r7.w);
//         r14.w = r7.w * r7.w;
//         r15.x = r12.w * 3.5999999 + 0.400000006;
//         r14.w = r14.w / r15.x;
//         r9.w = r9.w * r9.w + r14.w;
//         r9.w = min(1, r9.w);
//         r15.x = r13.w ? r9.w : r10.y;
//         r9.w = 0.25 * r4.w;
//         r10.y = (uint)r15.x >> 1;
//         r10.y = (int)r10.y + 0x1fbd1df5;
//         r10.y = r10.y * 3 + r4.w;
//         r10.y = r10.y * r9.w;
//         r16.x = 0.00100000005 + r12.w;
//         r10.y = r10.y / r16.x;
//         r17.x = r15.x + r10.y;
//         r17.y = r15.x / r17.x;
//         r15.yw = float2(1,1);
//         r16.yz = r10.xx ? r17.xy : r15.xy;
//         r10.y = cmp(r5.z < 1);
//         r15.y = 1.00010002 + -r5.z;
//         r16.w = 1 + r5.z;
//         r15.y = r15.y / r16.w;
//         r15.y = sqrt(r15.y);
//         r16.w = 0.25 * r15.y;
//         r17.x = (uint)r16.y >> 1;
//         r17.x = (int)r17.x + 0x1fbd1df5;
//         r17.x = r17.x * 3 + r15.y;
//         r17.x = r17.x * r16.w;
//         r17.x = r17.x / r16.x;
//         r17.x = r17.x + r16.y;
//         r16.y = r16.y / r17.x;
//         r16.y = sqrt(r16.y);
//         r16.y = r16.z * r16.y;
//         r16.y = r10.y ? r16.y : r16.z;
//         r2.x = r2.x * r2.x + r14.w;
//         r2.x = min(1, r2.x);
//         r15.z = r13.w ? r2.x : r10.z;
//         r2.x = (uint)r15.z >> 1;
//         r2.x = (int)r2.x + 0x1fbd1df5;
//         r2.x = r2.x * 3 + r4.w;
//         r2.x = r9.w * r2.x;
//         r2.x = r2.x / r16.x;
//         r17.x = r15.z + r2.x;
//         r17.y = r15.z / r17.x;
//         r10.xz = r10.xx ? r17.xy : r15.zw;
//         r2.x = (uint)r10.x >> 1;
//         r2.x = (int)r2.x + 0x1fbd1df5;
//         r2.x = r2.x * 3 + r15.y;
//         r2.x = r16.w * r2.x;
//         r2.x = r2.x / r16.x;
//         r2.x = r10.x + r2.x;
//         r2.x = r10.x / r2.x;
//         r2.x = sqrt(r2.x);
//         r2.x = r10.z * r2.x;
//         r2.x = r10.y ? r2.x : r10.z;
//         r10.xy = r11.ww * r15.xz + -r11.ww;
//         r10.xy = r10.xy * r11.ww + float2(1,1);
//         r10.xy = r10.xy * r10.xy;
//         r10.xy = float2(3.14159274,3.14159274) * r10.xy;
//         r10.xy = r15.xz / r10.xy;
//         r9.w = r10.x * r16.y;
//         r2.x = r10.y * r2.x + -r9.w;
//         r2.x = r10.w * r2.x + r9.w;
//         r9.w = r0.y * r5.w + r2.w;
//         r5.w = r1.x * r5.w + r2.w;
//         r0.y = r5.w * r0.y;
//         r0.y = r1.x * r9.w + r0.y;
//         r0.y = rcp(r0.y);
//         r0.y = r2.x * r0.y;
//         r2.x = 1 + -r12.w;
//         r5.w = r2.x * r2.x;
//         r5.w = r5.w * r5.w;
//         r9.w = r5.w * r2.x;
//         r10.x = saturate(50 * r7.y);
//         r2.x = -r5.w * r2.x + 1;
//         r10.yzw = r2.xxx * r7.xyz;
//         r10.xyz = r10.xxx * r9.www + r10.yzw;
//         r0.y = 0.5 * r0.y;
//         r10.xyz = r0.yyy * r10.xyz;
//         r13.xyz = r10.xyz * r1.xxx;
//         r14.xyz = float3(0,0,0);
//         break;
//         case 6 :        r0.y = dot(r3.xyz, r11.xyz);
//         r2.x = dot(r3.xyz, -r4.xyz);
//         r5.w = dot(-r4.xyz, r11.xyz);
//         r9.w = cmp(0 < r4.w);
//         if (r9.w != 0) {
//           r10.x = -r4.w * r4.w + 1;
//           r10.x = sqrt(r10.x);
//           r10.y = dot(r2.xx, r0.yy);
//           r10.z = r10.y + -r5.w;
//           r10.w = cmp(r10.z >= r10.x);
//           if (r10.w != 0) {
//             r10.w = 1;
//             r11.w = abs(r2.x);
//           } else {
//             r12.w = -r10.z * r10.z + 1;
//             r12.w = rsqrt(r12.w);
//             r12.w = r12.w * r4.w;
//             r13.w = -r10.z * r0.y + r2.x;
//             r14.w = r13.w * r12.w;
//             r15.x = r2.x * r2.x;
//             r15.x = r15.x * 2 + -1;
//             r10.z = -r10.z * r5.w + r15.x;
//             r15.x = -r0.y * r0.y + 1;
//             r15.x = -r2.x * r2.x + r15.x;
//             r15.x = -r5.w * r5.w + r15.x;
//             r10.y = saturate(r10.y * r5.w + r15.x);
//             r10.y = sqrt(r10.y);
//             r10.yz = r12.ww * r10.yz;
//             r15.x = r10.y * r2.x;
//             r15.y = r15.x + r15.x;
//             r15.z = r0.y * r10.x + r2.x;
//             r12.w = r12.w * r13.w + r15.z;
//             r13.w = r5.w * r10.x + r10.z;
//             r13.w = 1 + r13.w;
//             r15.w = r13.w * r10.y;
//             r16.x = r13.w * r12.w;
//             r16.y = r15.y * r12.w;
//             r15.x = r12.w * r15.x;
//             r15.x = 0.5 * r15.x;
//             r15.x = r15.w * -0.5 + r15.x;
//             r15.x = r16.x * r15.x;
//             r16.z = -r15.w * 2 + r16.y;
//             r16.y = r16.y * r16.z;
//             r15.w = r15.w * r15.w + r16.y;
//             r16.y = r13.w * r13.w;
//             r13.w = r5.w * r10.x + r13.w;
//             r13.w = r13.w * -0.5 + -0.5;
//             r13.w = r16.x * r13.w;
//             r13.w = r15.z * r16.y + r13.w;
//             r12.w = r12.w * r13.w + r15.w;
//             r13.w = r15.x + r15.x;
//             r15.z = r15.x * r15.x;
//             r15.z = r12.w * r12.w + r15.z;
//             r13.w = r13.w / r15.z;
//             r12.w = r13.w * r12.w;
//             r13.w = -r13.w * r15.x + 1;
//             r10.y = r12.w * r10.y;
//             r10.y = r13.w * r14.w + r10.y;
//             r12.w = r12.w * r15.y;
//             r10.z = r13.w * r10.z + r12.w;
//             r10.y = r0.y * r10.x + r10.y;
//             r10.x = r5.w * r10.x + r10.z;
//             r10.z = r10.x * 2 + 2;
//             r10.z = rsqrt(r10.z);
//             r10.y = r10.y + r2.x;
//             r10.w = saturate(r10.y * r10.z);
//             r11.w = saturate(r10.z * r10.x + r10.z);
//           }
//         } else {
//           r10.x = r5.w * 2 + 2;
//           r10.x = rsqrt(r10.x);
//           r10.y = r2.x + r0.y;
//           r10.w = saturate(r10.y * r10.x);
//           r11.w = saturate(r10.x * r5.w + r10.x);
//         }
//         r2.x = 9.99999975e-06 + abs(r2.x);
//         r2.x = min(1, r2.x);
//         r10.xyz = r9.xyz * r1.xxx;
//         r12.xyz = float3(0.318309873,0.318309873,0.318309873) * r10.xyz;
//         r10.x = r2.w * r2.w;
//         r10.y = cmp(0 < r7.w);
//         r10.z = r7.w * r7.w;
//         r12.w = r11.w * 3.5999999 + 0.400000006;
//         r10.z = r10.z / r12.w;
//         r10.z = r2.w * r2.w + r10.z;
//         r10.z = min(1, r10.z);
//         r10.x = r10.y ? r10.z : r10.x;
//         r10.z = 0.25 * r4.w;
//         r12.w = (uint)r10.x >> 1;
//         r12.w = (int)r12.w + 0x1fbd1df5;
//         r12.w = r12.w * 3 + r4.w;
//         r10.z = r12.w * r10.z;
//         r12.w = 0.00100000005 + r11.w;
//         r10.z = r10.z / r12.w;
//         r15.x = r10.x + r10.z;
//         r15.y = r10.x / r15.x;
//         r10.y = 1;
//         r10.yz = r9.ww ? r15.xy : r10.xy;
//         r9.w = cmp(r5.z < 1);
//         r13.w = 1.00010002 + -r5.z;
//         r14.w = 1 + r5.z;
//         r13.w = r13.w / r14.w;
//         r13.w = sqrt(r13.w);
//         r14.w = 0.25 * r13.w;
//         r15.x = (uint)r10.y >> 1;
//         r15.x = (int)r15.x + 0x1fbd1df5;
//         r13.w = r15.x * 3 + r13.w;
//         r13.w = r14.w * r13.w;
//         r12.w = r13.w / r12.w;
//         r12.w = r12.w + r10.y;
//         r10.y = r10.y / r12.w;
//         r10.y = sqrt(r10.y);
//         r10.y = r10.z * r10.y;
//         r9.w = r9.w ? r10.y : r10.z;
//         r10.y = r10.w * r10.x + -r10.w;
//         r10.y = r10.y * r10.w + 1;
//         r10.y = r10.y * r10.y;
//         r10.y = 3.14159274 * r10.y;
//         r10.y = r10.x / r10.y;
//         r9.w = r10.y * r9.w;
//         r10.x = sqrt(r10.x);
//         r10.y = 1 + -r10.x;
//         r10.z = r2.x * r10.y + r10.x;
//         r10.x = r1.x * r10.y + r10.x;
//         r2.x = r10.x * r2.x;
//         r2.x = r1.x * r10.z + r2.x;
//         r2.x = rcp(r2.x);
//         r2.x = r9.w * r2.x;
//         r9.w = 1 + -r11.w;
//         r10.x = r9.w * r9.w;
//         r10.x = r10.x * r10.x;
//         r10.y = r10.x * r9.w;
//         r10.z = saturate(50 * r7.y);
//         r9.w = -r10.x * r9.w + 1;
//         r15.xyz = r9.www * r7.xyz;
//         r10.xyz = r10.zzz * r10.yyy + r15.xyz;
//         r2.x = 0.5 * r2.x;
//         r10.xyz = r2.xxx * r10.xyz;
//         r13.xyz = r10.xyz * r1.xxx;
//         r10.xyz = r8.yzw * r8.yzw;
//         r0.y = 0.5 + -r0.y;
//         r0.y = saturate(0.444444448 * r0.y);
//         r5.w = saturate(-r5.w);
//         r2.x = r5.w * r5.w;
//         r2.x = r2.x * -0.639999986 + 1;
//         r2.x = r2.x * r2.x;
//         r2.x = 3.14159274 * r2.x;
//         r2.x = 0.360000014 / r2.x;
//         r0.y = r2.x * r0.y;
//         r14.xyz = r0.yyy * r10.xyz;
//         break;
//         case 7 :        r0.y = max(0.00392156886, r0.z);
//         r0.y = min(1, r0.y);
//         r0.z = dot(-r4.xyz, r11.xyz);
//         r2.x = dot(r3.xyz, r11.xyz);
//         r5.w = dot(r3.xyz, -r4.xyz);
//         r9.w = abs(r5.w) * -0.156582996 + 1.57079637;
//         r10.x = 1 + -abs(r5.w);
//         r10.x = sqrt(r10.x);
//         r10.y = r10.x * r9.w;
//         r10.z = cmp(r5.w >= 0);
//         r9.w = -r9.w * r10.x + 3.14159274;
//         r9.w = r10.z ? r10.y : r9.w;
//         r9.w = 1.57079637 + -r9.w;
//         r10.x = abs(r2.x) * -0.156582996 + 1.57079637;
//         r10.y = 1 + -abs(r2.x);
//         r10.z = sqrt(r10.y);
//         r10.w = r10.x * r10.z;
//         r11.w = cmp(r2.x >= 0);
//         r10.x = -r10.x * r10.z + 3.14159274;
//         r10.x = r11.w ? r10.w : r10.x;
//         r10.x = 1.57079637 + -r10.x;
//         r9.w = -r10.x + r9.w;
//         r9.w = 0.5 * abs(r9.w);
//         r9.w = cos(r9.w);
//         r10.xzw = -r2.xxx * r3.xyz + r11.xyz;
//         r15.xyz = -r5.www * r3.xyz + -r4.xyz;
//         r11.w = dot(r10.xzw, r15.xyz);
//         r10.x = dot(r10.xzw, r10.xzw);
//         r10.z = dot(r15.xyz, r15.xyz);
//         r10.x = r10.x * r10.z + 9.99999975e-05;
//         r10.x = rsqrt(r10.x);
//         r10.x = r11.w * r10.x;
//         r16.xyz = r10.xxx * float3(0.5,-3.6500001,17) + float3(0.5,-3.98000002,-16.7800007);
//         r16.x = saturate(r16.x);
//         r10.w = sqrt(r16.x);
//         r16.xw = float2(1.19000006,0.800000012) / r9.ww;
//         r11.w = r9.w * 0.360000014 + r16.x;
//         r0.y = r0.y * r0.y;
//         r17.xyz = float3(0.5,1.25331414,5.01325655) * r0.yyy;
//         r12.w = r0.y + r0.y;
//         r13.w = 0.997551024 * r10.w;
//         r14.w = -r5.w * r5.w + 1;
//         r14.w = sqrt(r14.w);
//         r15.w = -0.0699428469 * r5.w;
//         r13.w = r13.w * r14.w + r15.w;
//         r0.y = r0.y * r10.w;
//         r18.xy = float2(1.41421354,3.54490757) * r0.yy;
//         r0.y = r5.w + r2.x;
//         r2.x = -r13.w * -0.139885694 + r0.y;
//         r2.x = r2.x * r2.x;
//         r2.x = -0.5 * r2.x;
//         r5.w = r18.x * r18.x;
//         r2.x = r2.x / r5.w;
//         r2.x = 1.44269502 * r2.x;
//         r2.x = exp2(r2.x);
//         r2.x = r2.x / r18.y;
//         r2.x = r2.x * r10.w;
//         r0.z = saturate(r0.z * 0.5 + 0.5);
//         r0.z = sqrt(r0.z);
//         r0.z = 1 + -r0.z;
//         r5.w = r0.z * r0.z;
//         r5.w = r5.w * r5.w;
//         r0.z = r5.w * r0.z;
//         r0.z = r0.z * 0.953479409 + 0.0465205684;
//         r0.z = r0.z * r2.x;
//         r0.z = r0.z * r6.w;
//         r18.xy = float2(-0.0350000001,-0.140000001) + r0.yy;
//         r18.xy = r18.xy * r18.xy;
//         r18.xy = float2(-0.5,-0.5) * r18.xy;
//         r0.y = r17.x * r17.x;
//         r0.y = r18.x / r0.y;
//         r0.y = 1.44269502 * r0.y;
//         r0.y = exp2(r0.y);
//         r0.y = r0.y / r17.y;
//         r2.x = 1 / r11.w;
//         r5.w = -r10.x * 0.800000012 + 0.600000024;
//         r5.w = r2.x * r5.w + 1;
//         r5.w = r10.w * r5.w;
//         r10.x = -r5.w * r5.w + 1;
//         r10.x = max(0, r10.x);
//         r10.x = sqrt(r10.x);
//         r10.x = -r9.w * r10.x + 1;
//         r10.w = r10.x * r10.x;
//         r10.w = r10.w * r10.w;
//         r10.x = r10.w * r10.x;
//         r10.x = r10.x * 0.953479409 + 0.0465205684;
//         r10.x = 1 + -r10.x;
//         r10.x = r10.x * r10.x;
//         r2.x = r5.w * r2.x;
//         r2.x = -r2.x * r2.x + 1;
//         r2.x = sqrt(r2.x);
//         r2.x = 0.5 * r2.x;
//         r2.x = r2.x / r9.w;
//         r17.xyw = log2(r6.xyz);
//         r18.xzw = r17.xyw * r2.xxx;
//         r18.xzw = exp2(r18.xzw);
//         r16.xy = float2(1.44269502,1.44269502) * r16.yz;
//         r16.xy = exp2(r16.xy);
//         r0.y = r16.x * r0.y;
//         r0.y = r0.y * r10.x;
//         r18.xzw = r0.yyy * r18.xzw;
//         r18.xzw = r0.zzz * float3(0.5,0.5,0.5) + r18.xzw;
//         r0.y = r12.w * r12.w;
//         r0.y = r18.y / r0.y;
//         r0.y = 1.44269502 * r0.y;
//         r0.y = exp2(r0.y);
//         r0.y = r0.y / r17.z;
//         r0.z = -r9.w * 0.5 + 1;
//         r2.x = r0.z * r0.z;
//         r2.x = r2.x * r2.x;
//         r0.z = r2.x * r0.z;
//         r0.z = r0.z * 0.953479409 + 0.0465205684;
//         r2.x = 1 + -r0.z;
//         r2.x = r2.x * r2.x;
//         r0.z = r2.x * r0.z;
//         r16.xzw = r17.xyw * r16.www;
//         r16.xzw = exp2(r16.xzw);
//         r0.y = r0.y * r16.y;
//         r0.y = r0.y * r0.z;
//         r16.xyz = r0.yyy * r16.xzw + r18.xzw;
//         r0.y = rsqrt(r10.z);
//         r10.xzw = r15.xyz * r0.yyy;
//         r0.y = dot(r10.xzw, r11.xyz);
//         r0.y = 1 + r0.y;
//         r0.y = saturate(0.25 * r0.y);
//         r0.z = r10.y + -r0.y;
//         r0.y = r0.z * 0.330000013 + r0.y;
//         r0.y = r0.w * r0.y;
//         r0.y = 0.318309873 * r0.y;
//         r0.z = dot(r6.xyz, float3(0.300000012,0.589999974,0.109999999));
//         r10.xyz = r6.xyz / r0.zzz;
//         r0.z = 1 + -r5.y;
//         r10.xyz = log2(r10.xyz);
//         r10.xyz = r10.xyz * r0.zzz;
//         r10.xyz = exp2(r10.xyz);
//         r6.xyz = sqrt(r6.xyz);
//         r0.yzw = r6.xyz * r0.yyy;
//         r0.yzw = r0.yzw * r10.xyz + r16.xyz;
//         r14.xyz = min(float3(0,0,0), -r0.yzw);
//         r12.xyz = float3(0,0,0);
//         r13.xyz = float3(0,0,0);
//         r14.xyz = -r14.xyz;
//         break;
//         case 8 :        r0.yzw = r8.yzw * r8.yzw;
//         r8.x = saturate(r8.x);
//         r2.x = dot(r3.xyz, r11.xyz);
//         r5.w = dot(r3.xyz, -r4.xyz);
//         r6.x = dot(-r4.xyz, r11.xyz);
//         r6.y = cmp(0 < r4.w);
//         if (r6.y != 0) {
//           r6.z = -r4.w * r4.w + 1;
//           r6.z = sqrt(r6.z);
//           r8.y = dot(r5.ww, r2.xx);
//           r9.w = r8.y + -r6.x;
//           r10.x = cmp(r9.w >= r6.z);
//           if (r10.x != 0) {
//             r10.x = 1;
//             r10.y = abs(r5.w);
//           } else {
//             r10.z = -r9.w * r9.w + 1;
//             r10.z = rsqrt(r10.z);
//             r10.z = r10.z * r4.w;
//             r10.w = -r9.w * r2.x + r5.w;
//             r11.w = r10.z * r10.w;
//             r12.w = r5.w * r5.w;
//             r12.w = r12.w * 2 + -1;
//             r9.w = -r9.w * r6.x + r12.w;
//             r9.w = r10.z * r9.w;
//             r12.w = -r2.x * r2.x + 1;
//             r12.w = -r5.w * r5.w + r12.w;
//             r12.w = -r6.x * r6.x + r12.w;
//             r8.y = saturate(r8.y * r6.x + r12.w);
//             r8.y = sqrt(r8.y);
//             r8.y = r10.z * r8.y;
//             r12.w = r8.y * r5.w;
//             r13.w = r12.w + r12.w;
//             r14.w = r2.x * r6.z + r5.w;
//             r10.z = r10.z * r10.w + r14.w;
//             r10.w = r6.x * r6.z + r9.w;
//             r10.w = 1 + r10.w;
//             r15.x = r10.w * r8.y;
//             r15.y = r10.z * r10.w;
//             r15.z = r13.w * r10.z;
//             r12.w = r10.z * r12.w;
//             r12.w = 0.5 * r12.w;
//             r12.w = r15.x * -0.5 + r12.w;
//             r12.w = r15.y * r12.w;
//             r15.w = -r15.x * 2 + r15.z;
//             r15.z = r15.z * r15.w;
//             r15.x = r15.x * r15.x + r15.z;
//             r15.z = r10.w * r10.w;
//             r10.w = r6.x * r6.z + r10.w;
//             r10.w = r10.w * -0.5 + -0.5;
//             r10.w = r15.y * r10.w;
//             r10.w = r14.w * r15.z + r10.w;
//             r10.z = r10.z * r10.w + r15.x;
//             r10.w = r12.w + r12.w;
//             r14.w = r12.w * r12.w;
//             r14.w = r10.z * r10.z + r14.w;
//             r10.w = r10.w / r14.w;
//             r10.z = r10.w * r10.z;
//             r10.w = -r10.w * r12.w + 1;
//             r8.y = r10.z * r8.y;
//             r8.y = r10.w * r11.w + r8.y;
//             r10.z = r10.z * r13.w;
//             r9.w = r10.w * r9.w + r10.z;
//             r8.y = r2.x * r6.z + r8.y;
//             r6.z = r6.x * r6.z + r9.w;
//             r9.w = r6.z * 2 + 2;
//             r9.w = rsqrt(r9.w);
//             r8.y = r8.y + r5.w;
//             r10.x = saturate(r8.y * r9.w);
//             r10.y = saturate(r9.w * r6.z + r9.w);
//           }
//         } else {
//           r6.z = r6.x * 2 + 2;
//           r6.z = rsqrt(r6.z);
//           r2.x = r5.w + r2.x;
//           r10.x = saturate(r2.x * r6.z);
//           r10.y = saturate(r6.z * r6.x + r6.z);
//         }
//         r2.x = 9.99999975e-06 + abs(r5.w);
//         r2.x = min(1, r2.x);
//         r5.w = r2.w * r2.w;
//         r6.x = cmp(0 < r7.w);
//         r6.z = r7.w * r7.w;
//         r8.y = r10.y * 3.5999999 + 0.400000006;
//         r6.z = r6.z / r8.y;
//         r6.z = r2.w * r2.w + r6.z;
//         r6.z = min(1, r6.z);
//         r15.x = r6.x ? r6.z : r5.w;
//         r6.x = 0.25 * r4.w;
//         r6.z = (uint)r15.x >> 1;
//         r6.z = (int)r6.z + 0x1fbd1df5;
//         r6.z = r6.z * 3 + r4.w;
//         r6.x = r6.x * r6.z;
//         r6.z = 0.00100000005 + r10.y;
//         r6.x = r6.x / r6.z;
//         r16.x = r15.x + r6.x;
//         r16.y = r15.x / r16.x;
//         r15.y = 1;
//         r6.xy = r6.yy ? r16.xy : r15.xy;
//         r8.y = cmp(r5.z < 1);
//         r9.w = 1.00010002 + -r5.z;
//         r10.z = 1 + r5.z;
//         r9.w = r9.w / r10.z;
//         r9.w = sqrt(r9.w);
//         r10.z = 0.25 * r9.w;
//         r10.w = (uint)r6.x >> 1;
//         r10.w = (int)r10.w + 0x1fbd1df5;
//         r9.w = r10.w * 3 + r9.w;
//         r9.w = r10.z * r9.w;
//         r6.z = r9.w / r6.z;
//         r6.z = r6.x + r6.z;
//         r6.x = r6.x / r6.z;
//         r6.x = sqrt(r6.x);
//         r6.x = r6.y * r6.x;
//         r6.x = r8.y ? r6.x : r6.y;
//         r6.y = r10.x * r15.x + -r10.x;
//         r6.y = r6.y * r10.x + 1;
//         r6.y = r6.y * r6.y;
//         r6.y = 3.14159274 * r6.y;
//         r6.y = r15.x / r6.y;
//         r6.x = r6.y * r6.x;
//         r6.y = sqrt(r15.x);
//         r6.z = 1 + -r6.y;
//         r8.y = r2.x * r6.z + r6.y;
//         r6.y = r1.x * r6.z + r6.y;
//         r6.y = r6.y * r2.x;
//         r6.y = r1.x * r8.y + r6.y;
//         r6.y = rcp(r6.y);
//         r6.x = r6.x * r6.y;
//         r6.y = 1 + -r10.y;
//         r6.z = r6.y * r6.y;
//         r6.z = r6.z * r6.z;
//         r8.y = r6.z * r6.y;
//         r9.w = saturate(50 * r7.y);
//         r6.y = -r6.z * r6.y + 1;
//         r7.xyz = r6.yyy * r7.xyz;
//         r7.xyz = r9.www * r8.yyy + r7.xyz;
//         r6.x = 0.5 * r6.x;
//         r7.xyz = r6.xxx * r7.xyz;
//         r7.xyz = r7.xyz * r1.xxx;
//         r6.x = -r5.w * r10.x + r10.x;
//         r6.x = r6.x * r10.x + r5.w;
//         r6.z = 4 * r5.w;
//         r9.w = r5.w * 4 + 1;
//         r9.w = 3.14159274 * r9.w;
//         r9.w = rcp(r9.w);
//         r5.w = r6.z * r5.w;
//         r6.x = r6.x * r6.x;
//         r5.w = r5.w / r6.x;
//         r5.w = 1 + r5.w;
//         r5.w = r9.w * r5.w;
//         r6.x = r2.x + r1.x;
//         r2.x = -r1.x * r2.x + r6.x;
//         r2.x = 4 * r2.x;
//         r2.x = rcp(r2.x);
//         r6.x = 50 * r0.z;
//         r6.x = min(1, r6.x);
//         r0.yzw = r6.yyy * r0.yzw;
//         r0.yzw = r6.xxx * r8.yyy + r0.yzw;
//         r2.x = r5.w * r2.x;
//         r2.x = r2.x * r1.x;
//         r6.xyz = r9.xyz * r1.xxx;
//         r12.xyz = float3(0.318309873,0.318309873,0.318309873) * r6.xyz;
//         r0.yzw = r2.xxx * r0.yzw + -r7.xyz;
//         r13.xyz = r8.xxx * r0.yzw + r7.xyz;
//         r14.xyz = float3(0,0,0);
//         break;
//         case 9 :        r0.yz = r8.zw * float2(2,2) + float2(-1,-1);
//         r0.w = dot(float2(1,1), abs(r0.yz));
//         r6.z = 1 + -r0.w;
//         r0.w = cmp(r6.z < 0);
//         r7.xy = float2(1,1) + -abs(r0.zy);
//         r8.yz = cmp(r0.yz >= float2(0,0));
//         r8.yz = r8.yz ? float2(1,1) : float2(-1,-1);
//         r7.xy = r8.yz * r7.xy;
//         r6.xy = r0.ww ? r7.xy : r0.yz;
//         r0.y = dot(r6.xyz, r6.xyz);
//         r0.y = rsqrt(r0.y);
//         r0.yzw = r6.xyz * r0.yyy;
//         r2.x = 1 + -r8.x;
//         r0.x = r2.x * r0.x;
//         r1.yzw = -r1.yzw * r2.yyy + -r0.yzw;
//         r1.yzw = r0.xxx * r1.yzw + r0.yzw;
//         r0.x = dot(r1.yzw, r1.yzw);
//         r0.x = rsqrt(r0.x);
//         r1.yzw = r1.yzw * r0.xxx;
//         r0.x = dot(r3.xyz, r11.xyz);
//         r2.y = dot(r3.xyz, -r4.xyz);
//         r3.x = dot(-r4.xyz, r11.xyz);
//         r3.y = cmp(0 < r4.w);
//         if (r3.y != 0) {
//           r3.z = -r4.w * r4.w + 1;
//           r3.z = sqrt(r3.z);
//           r4.x = dot(r2.yy, r0.xx);
//           r4.x = r4.x + -r3.x;
//           r4.y = cmp(r4.x >= r3.z);
//           if (r4.y != 0) {
//             r4.y = 1;
//             r4.z = abs(r2.y);
//           } else {
//             r5.w = -r4.x * r4.x + 1;
//             r5.w = rsqrt(r5.w);
//             r5.w = r5.w * r4.w;
//             r6.x = -r4.x * r0.x + r2.y;
//             r6.x = r6.x * r5.w;
//             r6.y = dot(r2.yy, r2.yy);
//             r6.y = -1 + r6.y;
//             r4.x = -r4.x * r3.x + r6.y;
//             r4.x = r5.w * r4.x;
//             r5.w = r0.x * r3.z + r6.x;
//             r3.z = r3.x * r3.z + r4.x;
//             r4.x = r3.z * 2 + 2;
//             r4.x = rsqrt(r4.x);
//             r5.w = r5.w + r2.y;
//             r4.y = saturate(r5.w * r4.x);
//             r4.z = saturate(r4.x * r3.z + r4.x);
//           }
//         } else {
//           r3.z = r3.x * 2 + 2;
//           r3.z = rsqrt(r3.z);
//           r0.x = r2.y + r0.x;
//           r4.y = saturate(r0.x * r3.z);
//           r4.z = saturate(r3.z * r3.x + r3.z);
//         }
//         r0.x = 9.99999975e-06 + abs(r2.y);
//         r0.x = min(1, r0.x);
//         r2.y = 0.0799999982 * r6.w;
//         r3.x = 1 + -r4.z;
//         r3.z = r3.x * r3.x;
//         r3.z = r3.z * r3.z;
//         r4.x = r3.z * r3.x;
//         r3.x = -r3.z * r3.x + 1;
//         r2.y = r3.x * r2.y + r4.x;
//         r3.x = r2.w * r2.w;
//         r3.z = cmp(0 < r7.w);
//         r4.x = r7.w * r7.w;
//         r5.w = r4.z * 3.5999999 + 0.400000006;
//         r4.x = r4.x / r5.w;
//         r2.w = r2.w * r2.w + r4.x;
//         r2.w = min(1, r2.w);
//         r6.x = r3.z ? r2.w : r3.x;
//         r2.w = 0.25 * r4.w;
//         r3.x = (uint)r6.x >> 1;
//         r3.x = (int)r3.x + 0x1fbd1df5;
//         r3.x = r3.x * 3 + r4.w;
//         r2.w = r3.x * r2.w;
//         r3.x = 0.00100000005 + r4.z;
//         r2.w = r2.w / r3.x;
//         r7.x = r6.x + r2.w;
//         r7.y = r6.x / r7.x;
//         r6.y = 1;
//         r3.yz = r3.yy ? r7.xy : r6.xy;
//         r2.w = cmp(r5.z < 1);
//         r4.x = 1.00010002 + -r5.z;
//         r4.z = 1 + r5.z;
//         r4.x = r4.x / r4.z;
//         r4.x = sqrt(r4.x);
//         r4.z = 0.25 * r4.x;
//         r4.w = (uint)r3.y >> 1;
//         r4.w = (int)r4.w + 0x1fbd1df5;
//         r4.x = r4.w * 3 + r4.x;
//         r4.x = r4.z * r4.x;
//         r3.x = r4.x / r3.x;
//         r3.x = r3.y + r3.x;
//         r3.x = r3.y / r3.x;
//         r3.x = sqrt(r3.x);
//         r3.x = r3.z * r3.x;
//         r2.w = r2.w ? r3.x : r3.z;
//         r3.x = r4.y * r6.x + -r4.y;
//         r3.x = r3.x * r4.y + 1;
//         r3.x = r3.x * r3.x;
//         r3.x = 3.14159274 * r3.x;
//         r3.x = r6.x / r3.x;
//         r2.w = r3.x * r2.w;
//         r3.x = sqrt(r6.x);
//         r3.y = 1 + -r3.x;
//         r3.z = r0.x * r3.y + r3.x;
//         r3.x = r1.x * r3.y + r3.x;
//         r0.x = r3.x * r0.x;
//         r0.x = r1.x * r3.z + r0.x;
//         r0.x = rcp(r0.x);
//         r0.x = 0.5 * r0.x;
//         r2.w = r2.w * r1.x;
//         r0.x = r2.w * r0.x;
//         r13.xyz = r0.xxx * r2.yyy;
//         r0.x = saturate(dot(r0.yzw, r11.xyz));
//         r0.yz = r0.xx * float2(-11,-11) + float2(12,13);
//         r0.z = 0.200000003 * r0.z;
//         r0.w = saturate(dot(r1.yzw, r11.xyz));
//         r0.w = log2(r0.w);
//         r0.y = r0.y * r0.w;
//         r0.y = exp2(r0.y);
//         r0.y = r0.z * r0.y + 0.800000012;
//         r0.x = r0.x * r0.y + -r1.x;
//         r0.x = r2.x * r0.x + r1.x;
//         r0.y = 1 + -r2.y;
//         r0.x = r0.x * r0.y;
//         r0.xyz = r9.xyz * r0.xxx;
//         r14.xyz = float3(0.318309873,0.318309873,0.318309873) * r0.xyz;
//         r12.xyz = float3(0,0,0);
//         break;
//         default :
//         r12.xyz = float3(0,0,0);
//         r13.xyz = float3(0,0,0);
//         r14.xyz = float3(0,0,0);
//         break;
//       }
//       r0.xyz = cb1[5].www * r13.xyz;
//       r1.xyz = cb1[4].xyz * r5.xxx;
//       r1.xyz = r1.xyz * r3.www;
//       r0.w = cmp(cb0[204].z == 0.000000);
//       r2.xyw = r12.xyz * r1.xyz;
//       r1.w = dot(r2.xyw, float3(0.300000012,0.589999974,0.109999999));
//       r1.w = r0.w ? r1.w : 0;
//       r1.w = r2.z ? r1.w : 0;
//       r4.xyz = r1.xyz * r0.xyz;
//       r0.xyz = cb1[4].xyz * r5.yyy;
//       r0.xyz = r0.xyz * r3.www;
//       r0.xyz = r14.xyz * r0.xyz;
//       r2.x = dot(r0.xyz, float3(0.300000012,0.589999974,0.109999999));
//       r2.x = r2.x + r1.w;
//       r0.w = r0.w ? r2.x : r1.w;
//       r0.w = r2.z ? r0.w : 0;
//       r1.xyz = r12.xyz * r1.xyz + r0.xyz;
//     } else {
//       r4.xyz = float3(0,0,0);
//       r0.w = 0;
//       r1.xyz = float3(0,0,0);
//     }
//     r0.x = cmp(cb0[204].z == 0.000000);
//     r1.w = r0.x ? r0.w : 0;
//     r4.w = 0;
//     r0.xyzw = r4.xyzw + r1.xyzw;
//   } else {
//     r0.xyzw = float4(0,0,0,0);
//   }
//   o0.xyzw = cb0[138].yyyy * r0.xyzw;
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// C:\GOG\HellbladeSenuasSacrifice\HellbladeGame\Binaries\Win64\ShaderFixes\9ea433f07713d9a7-ps_replace.txt(351,9-16): error X3532: error, duplicate case 1
// C:\GOG\HellbladeSenuasSacrifice\HellbladeGame\Binaries\Win64\ShaderFixes\9ea433f07713d9a7-ps_replace.txt(351,41-48): error X3532: error, duplicate case 1
/////////////////////////////////////////////////////////////////////////////
