//Specular PS manual 2. Small windows.
//
// Generated by Microsoft (R) D3D Shader Disassembler
//
//   using 3Dmigoto v1.3.16 on Sun Dec 18 18:27:23 2022
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyzw        0     NONE   float   xyzw
// TEXCOORD                 1   xyzw        1     NONE   float   xyzw
// TEXCOORD                 2   xyzw        2     NONE   float   xy w
// TEXCOORD                 3   xyzw        3     NONE   float      w
// TEXCOORD                 4   xyzw        4     NONE   float   xyzw
// TEXCOORD                 5   xyz         5     NONE   float   xyz
// TEXCOORD                 6   xyz         6     NONE   float   xyz
// TEXCOORD                 7   xyzw        7     NONE   float
// TEXCOORD                 8   xyzw        8     NONE   float
// SV_Position              0   xyzw        9      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_immediateConstantBuffer { { 1.000000, 0, 0, 0},
                              { 0, 1.000000, 0, 0},
                              { 0, 0, 1.000000, 0},
                              { 0, 0, 0, 1.000000} }
dcl_constantbuffer CB2[17], immediateIndexed
dcl_constantbuffer CB12[273], immediateIndexed
dcl_constantbuffer CB4[8], immediateIndexed
dcl_constantbuffer CB13[3323], dynamicIndexed
dcl_sampler s0, mode_default
dcl_sampler s9, mode_comparison
dcl_sampler s10, mode_default
dcl_sampler s11, mode_default
dcl_sampler s14, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2darray (float,float,float,float) t8
dcl_resource_texture2darray (float,float,float,float) t9
dcl_resource_texturecubearray (float,float,float,float) t10
dcl_resource_texture2darray (float,float,float,float) t14
dcl_resource_texture2darray (float,float,float,float) t19
dcl_resource_raw t20
dcl_resource_raw t21
dcl_resource_texture2d (float,float,float,float) t22
dcl_resource_texture2d (float,float,float,float) t23
dcl_resource_texture2d (float,float,float,float) t24
dcl_input_ps linear v0.xyzw
dcl_input_ps linear v1.xyzw
dcl_input_ps linear v2.xyw
dcl_input_ps linear v3.w
dcl_input_ps linear v4.xyzw
dcl_input_ps linear v5.xyz
dcl_input_ps linear v6.xyz
dcl_input_ps_siv linear noperspective v9.xy, position
dcl_output o0.xyzw
dcl_temps 44
dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r40.xyzw, l(0, 0, 0, 0), t125.xyzw
sample_indexable(texture2d)(float,float,float,float) r0.xyzw, v2.xyxx, t0.xyzw, s0
add r0.xyz, r0.xyzx, l(-0.500000, -0.500000, -0.500000, 0.000000)
add r0.xyz, r0.xyzx, r0.xyzx
mul r1.xyz, r0.yyyy, v4.xyzx
mov r2.x, v2.w
mov r2.y, v3.w
mov r2.z, v4.w
mad r1.xyz, v6.xyzx, r0.xxxx, r1.xyzx
mad r0.xyz, r2.xyzx, r0.zzzz, r1.xyzx
sample_indexable(texture2d)(float,float,float,float) r1.xyzw, v2.xyxx, t1.xyzw, s0
log r1.xyz, r1.xyzx
mul r1.xyz, r1.xyzx, l(2.200000, 2.200000, 2.200000, 0.000000)
exp r1.xyz, r1.xyzx
add r2.x, r1.y, r1.x
add r2.x, r1.z, r2.x
add r2.z, l(-1.000000), cb4[1].x
mul r2.yz, r2.xxzx, l(0.000000, 0.333300, 0.500000, 0.000000)
mov_sat r2.w, r2.z
mad r2.x, r2.x, l(-0.666600), l(1.000000)
mad r2.x, r2.w, r2.x, r2.y
mul r3.xyz, r1.xyzx, cb4[0].xyzx
mul_sat r3.xyz, r3.xyzx, l(1.500000, 1.500000, 1.500000, 0.000000)
mul_sat r2.x, |r2.z|, r2.x
add r2.yzw, -r1.xxyz, r3.xxyz
mad r1.xyz, r2.xxxx, r2.yzwy, r1.xyzx
min r1.w, r1.w, cb4[2].x
mul_sat r1.xyz, r1.wwww, r1.xyzx
log r0.w, r0.w
mul r0.w, r0.w, l(2.200000)
exp r0.w, r0.w
add r2.x, -r0.w, l(1.000000)
log r2.y, cb4[3].x
mul r2.y, r2.y, l(2.200000)
exp r2.y, r2.y
mad r2.z, r2.x, cb4[4].x, cb4[5].x
mul_sat r2.y, r2.z, r2.y
ftou r2.zw, v9.xxxy
dp3 r3.x, r0.xyzx, r0.xyzx
rsq r3.x, r3.x
mul r3.yzw, r0.xxyz, r3.xxxx
ushr r4.xyzw, r2.zwzw, l(4, 4, 5, 5)
ftoi r0.xy, cb12[24].xzxx
imad r0.xy, r4.ywyy, r0.xyxx, r4.xzxx
ishl r0.x, r0.x, l(8)
add r4.xyz, -v5.xyzx, cb12[0].xyzx

mul r30.xyz, r40.yyyy, cb12[207].xyzx
mad r4.xyz, r40.xxxx, r30.xyzx, r4.xyzx

dp3 r4.w, r4.xyzx, r4.xyzx
rsq r4.w, r4.w
mul r5.xyz, r4.wwww, r4.xyzx
xor r6.xy, r2.zwzz, l(2, 2, 0, 0)
imax r6.zw, r2.zzzw, -r2.zzzw
ushr r6.zw, r6.zzzw, l(0, 0, 1, 1)
ineg r7.xy, r6.zwzz
and r6.xy, r6.xyxx, l(0x80000000, 0x80000000, 0, 0)
movc r6.xy, r6.xyxx, r7.xyxx, r6.zwzz
mov r6.zw, l(0,0,0,0)
ld_indexable(texture2d)(float,float,float,float) r6.xy, r6.xyzw, t24.xyzw
add r7.xyz, v5.xyzx, -cb12[0].xyzx
dp3 r5.w, r7.xyzx, r7.xyzx
sqrt r5.w, r5.w
mov r8.x, cb12[1].z
mov r8.y, cb12[2].z
mov r8.z, cb12[3].z
dp3 r6.z, r8.xyzx, r7.xyzx
div r6.w, l(1.000000, 1.000000, 1.000000, 1.000000), cb12[21].y
mul r6.w, r5.w, r6.w
div r6.z, r6.w, r6.z
add r6.z, r5.w, -r6.z
mul_sat r6.z, r6.z, cb13[33].w
mul r6.z, r6.z, cb13[33].z
max r6.z, r6.z, l(0.001000)
div r6.w, r5.w, cb13[34].z
lt r7.w, r6.x, r6.y
if_nz r7.w
  lt r7.w, r6.w, r6.x
  lt r8.x, r6.y, r6.w
  mad r8.y, cb13[34].z, r6.x, -cb13[34].x
  mad_sat r8.y, -r8.y, cb13[34].y, l(1.000000)
  add r8.z, -r6.x, r6.w
  mul r8.z, r8.z, cb13[34].z
  div_sat r8.z, r8.z, r6.z
  mul r9.y, r8.z, r8.y
  or r7.w, r7.w, r8.x
  mov r9.x, l(1.000000)
  movc r8.xy, r7.wwww, l(0,1.000000,0,0), r9.xyxx
else
  lt r7.w, r6.y, r6.x
  lt r8.zw, r6.wwwx, r6.yyyw
  mad r6.x, cb13[34].z, r6.x, -cb13[34].x
  mad_sat r9.y, -r6.x, cb13[34].y, l(1.000000)
  add r6.x, -r6.y, r6.w
  mul r6.x, r6.x, cb13[34].z
  div_sat r6.x, r6.x, r6.z
  add r9.w, -r6.x, l(1.000000)
  mov r9.xz, l(1.000000,0,1.000000,0)
  movc r6.xy, r8.wwww, r9.xyxx, r9.zwzz
  movc r6.xy, r8.zzzz, l(1.000000,1.000000,0,0), r6.xyxx
  movc r8.xy, r7.wwww, r6.xyxx, l(0,1.000000,0,0)
endif
mad r6.x, -r8.y, r8.x, l(1.000000)
and r6.yz, r2.zzwz, l(0, 1, 1, 0)
movc r8.xy, r6.zzzz, l(1,3,0,0), l(2,0,0,0)
movc r6.w, r6.y, r8.x, r8.y
ubfe r8.xyzw, l(1, 1, 1, 1), l(1, 1, 2, 2), r2.zwzw
movc r9.xyzw, r8.yyww, l(1,3,1,3), l(2,0,2,0)
movc r8.xy, r8.xzxx, r9.xzxx, r9.ywyy
ishl r6.w, r6.w, l(4)
imad r6.w, r8.x, l(4), r6.w
iadd r6.w, r6.w, r8.y
itof r6.w, r6.w
add r6.w, r6.w, l(0.500000)
mul r7.w, r6.w, l(0.015625)
mul r8.xyz, v5.yyyy, cb12[2].xyzx
mad r8.xyz, cb12[1].xyzx, v5.xxxx, r8.xyzx
mad r8.xyz, cb12[3].xyzx, v5.zzzz, r8.xyzx
add r8.xyz, r8.xyzx, cb12[4].xyzx
mad r6.w, -r6.w, l(0.015625), l(1.000000)
mov r8.w, l(1.000000)
mov r9.xzw, l(0,0,0,0)
mov r10.xyzw, l(0,0,0,0)
mov r11.x, l(0)
loop
  uge r11.y, r11.x, l(192)
  breakc_nz r11.y
  imad r11.y, r0.y, l(192), r11.x
  ishl r11.y, r11.y, l(2)
  ld_raw_indexable(raw_buffer)(mixed,mixed,mixed,mixed) r11.y, r11.y, t21.xxxx
  uge r11.z, r11.y, l(192)
  if_nz r11.z
    break
  endif
  imul null, r11.y, r11.y, l(5)
  dp4 r12.x, r8.xyzw, cb13[r11.y + 2363].xyzw
  dp4 r12.y, r8.xyzw, cb13[r11.y + 2364].xyzw
  dp4 r12.z, r8.xyzw, cb13[r11.y + 2365].xyzw
  lt r13.xyz, |r12.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
  and r11.z, r13.y, r13.x
  and r11.z, r13.z, r11.z
  if_nz r11.z
    ushr r11.z, cb13[r11.y + 2366].w, l(16)
    utof r11.z, r11.z
    and r11.w, l(0x0000ffff), cb13[r11.y + 2366].w
    utof r11.w, r11.w
    mul r11.zw, r11.zzzw, l(0.000000, 0.000000, 0.0000152590219, 0.0000152590219)
    dp3 r12.x, r12.xyzx, r12.xyzx
    sqrt r12.x, r12.x
    add r12.x, -r12.x, l(1.000000)
    max r12.x, r12.x, l(0.000000)
    mul r12.xy, r12.xxxx, cb13[r11.y + 2367].wxww
    mov_sat r12.x, r12.x
    eq r12.z, l(-1.000000), cb13[r11.y + 2367].w
    ge r12.w, r11.z, r6.w
    and r9.y, r12.w, l(0x3f800000)
    ge r11.z, r11.z, r7.w
    and r11.z, r11.z, l(0x3f800000)
    mul r13.x, r11.z, r11.w
    min r13.y, r12.y, l(0.998037279)
    mul r13.zw, r12.xxxx, cb13[r11.y + 2367].yyyz
    movc r12.xyzw, r12.zzzz, r9.xyzw, r13.xyzw
    max r10.xyzw, r12.xyzw, r10.xyzw
  endif
  iadd r11.x, r11.x, l(1)
endloop
mul r0.y, r10.y, r10.y
lt r6.w, l(0.000000), r10.x
movc r7.w, r6.w, l(0), l(1.000000)
mul r6.x, r6.x, r6.x
min r6.x, r6.x, r7.w
max r0.y, r0.y, r6.x
add r0.y, -r0.y, l(1.000000)
add r6.x, -r10.x, l(1.000000)
add r7.w, -cb13[33].y, l(1.000000)
movc r6.x, r6.w, r6.x, r7.w
add r8.xy, -r10.zwzz, l(1.000000, 1.000000, 0.000000, 0.000000)
min r6.x, r6.x, r8.x
add r6.x, -r8.y, r6.x
mad_sat r6.x, r0.y, r6.x, r8.y
add_sat r0.y, -r0.y, l(1.000000)
ilt r6.w, l(0), cb13[35].x
if_nz r6.w
  add r8.xy, v5.xyxx, -cb12[0].xyxx
  dp2 r6.w, r8.xyxx, r8.xyxx
  sqrt r6.w, r6.w
  lt r7.w, r6.w, cb13[36].y
  if_nz r7.w
    mul r7.w, r6.w, cb13[37].z
    max r7.w, r7.w, l(1.000000)
    div r7.w, cb13[36].x, r7.w
    min r7.w, r7.w, l(1.000000)
    add r6.w, r6.w, cb13[36].z
    mul_sat r6.w, r6.w, cb13[36].w
    mov r8.y, l(0)
    mov r8.zw, l(0,0,0,0)
    mov r9.x, l(0)
    loop
      ige r9.y, r8.w, cb13[35].x
      mov r9.x, l(0)
      breakc_nz r9.y
      add r9.yz, v5.xxyx, -cb13[r8.w + 39].xxyx
      mul r10.xy, r9.yzyy, cb13[r8.w + 39].zwzz
      ge r9.yw, r10.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
      and r9.y, r9.w, r9.y
      ge r11.xy, l(1.000000, 1.000000, 0.000000, 0.000000), r10.xyxx
      and r9.y, r9.y, r11.x
      and r9.y, r11.y, r9.y
      if_nz r9.y
        itof r10.z, r8.w
        mad r10.w, -r9.z, cb13[r8.w + 39].w, l(1.000000)
        sample_l_indexable(texture2darray)(float,float,float,float) r9.z, r10.xwzx, t19.yzxw, s10, l(0.000000)
        mad r9.z, cb13[38].x, r9.z, cb13[38].y
        add r9.z, r9.z, -v5.z
        add r9.z, r9.z, l(-0.100000)
        mul_sat r9.z, r7.w, r9.z
        add r9.z, -r9.z, l(1.000000)
        add r9.w, -r9.z, l(1.000000)
        mad r8.z, r6.w, r9.w, r9.z
        mov r9.x, l(-1)
        break
      endif
      iadd r8.x, r8.w, l(1)
      mov r8.zw, r8.yyyx
      mov r9.x, r9.y
    endloop
  else
    mov r9.x, l(0)
  endif
else
  mov r9.x, l(0)
endif
movc r6.w, r9.x, r8.z, l(1.000000)
lt r7.w, l(0.000000), r6.w
if_nz r7.w
  dp3 r7.w, r3.yzwy, cb13[0].xyzx
  utof r2.zw, r2.zzzw
  dp2 r2.z, r2.zwzz, l(12.989800, 78.233002, 0.000000, 0.000000)
  sincos r2.z, null, r2.z
  mul r2.z, r2.z, l(43758.546875)
  frc r2.z, r2.z
  mul r2.z, r2.z, l(6.28318548)
  mul r8.xyz, v5.yyyy, cb13[5].xyzx
  mad r8.xyz, cb13[4].xyzx, v5.xxxx, r8.xyzx
  mad r8.xyz, cb13[6].xyzx, v5.zzzz, r8.xyzx
  add r8.xyz, r8.xyzx, cb13[7].xyzx
  ge r2.w, |r8.z|, l(0.999000)
  if_nz r2.w
    mov r8.w, l(1.000000)
  endif
  if_z r2.w
    add r9.xyzw, r8.xxxx, -cb13[8].xyzw
    add r10.xyzw, r8.yyyy, -cb13[9].xyzw
    max r9.xyzw, |r9.xyzw|, |r10.xyzw|
    lt r10.xyzw, r9.xyzw, cb13[10].xyzw
    and r10.xyzw, r10.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
    lt r11.xyzw, l(0.500000, 1.500000, 2.500000, 3.500000), cb13[15].zzzz
    and r11.xyzw, r11.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
    dp4 r2.w, r10.xyzw, r11.xyzw
    lt r10.x, r2.w, l(0.500000)
    if_nz r10.x
      mov r8.w, l(1.000000)
    endif
    if_z r10.x
      div r9.xyzw, r9.xyzw, cb13[10].xyzw
      add r11.xyzw, -cb13[17].xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
      add r9.xyzw, r9.xyzw, -r11.xyzw
      div_sat r9.xyzw, r9.xyzw, cb13[17].xyzw
      add r2.w, -r2.w, cb13[15].z
      ftoi r10.y, r2.w
      ftoi r10.z, cb13[15].z
      iadd r10.z, r10.z, l(-1)
      mul r11.xy, l(1.000000, -1.000000, 0.000000, 0.000000), cb13[r10.y + 11].zzzz
      mad r11.xy, r8.xyxx, r11.xyxx, cb13[r10.y + 11].xyxx
      max r7.w, r7.w, l(0.000000)
      sqrt r7.w, r7.w
      div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w
      add r7.w, r7.w, l(-1.000000)
      max r7.w, r7.w, l(1.000000)
      min r7.w, r7.w, l(4.000000)
      round_z r11.z, r2.w
      mul r2.w, r7.w, cb13[r10.y + 11].w
      ige r7.w, cb13[18].x, l(1)
      if_nz r7.w
        sincos r8.x, r12.x, r2.z
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r2.z, r11.xyzx, t8.xxxx, s9, r8.z
        mul r13.xyzw, r2.wwww, l(-0.263353914, 0.0396538191, -0.717202425, 0.368303299)
        mov r12.y, r12.x
        mov r12.z, r8.x
        mov r12.x, -r8.x
        mul r14.xyzw, r13.xxyy, r12.yzxy
        add r8.xy, r14.zwzz, r14.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        mov r14.z, r11.z
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r13.zzww, r12.yzxy
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(-0.0199530609, -0.398839206, -0.440993786, -0.221010)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(0.220039204, 0.294344813, -0.767565727, -0.148275301)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(-0.238101900, 0.547106206, 0.217303097, -0.134587899)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(-0.638777375, 0.756133914, -0.161414400, 0.977652073)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(0.215631902, 0.612341285, 0.232887506, 0.945287228)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(-0.944064379, 0.123607703, -0.740823686, -0.507683)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(-0.411301911, -0.890596688, -0.248642907, -0.621399283)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(0.696785, 0.264493704, 0.539436281, 0.817321479)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(0.615120828, -0.149864, 0.0936533585, -0.781747520)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(0.276806712, -0.489596814, 0.663918078, -0.600717187)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(0.388036907, -0.895089388, 0.991614401, -0.0793915167)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r13.zwzz, r13.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r13.xyzw, r2.wwww, l(0.783184826, 0.602934778, 0.899860322, -0.398354292)
        mul r15.xyzw, r12.yzxy, r13.xxyy
        add r8.xy, r15.zwzz, r15.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r12.xyzw, r12.yzxy, r13.zzww
        add r8.xy, r12.zwzz, r12.xyxx
        add r14.xy, r8.xyxx, r11.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r14.xyzx, t8.xxxx, s9, r8.z
        add r2.z, r2.z, r7.w
        mul r2.z, r2.z, l(0.0370370373)
        mul r2.z, r2.z, r2.z
      else
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r11.xyzx, t8.xxxx, s9, r8.z
        mad r12.xyzw, r2.wwww, l(-0.507720828, -0.617089927, -0.0515490212, -0.750809789), r11.xyxy
        mov r13.xy, r12.xyxx
        mov r13.z, r11.z
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mov r13.xy, r12.zwzz
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mad r12.xyzw, r2.wwww, l(-0.764104187, 0.200915202, 0.00728477398, -0.205947), r11.xyxy
        mov r13.xy, r12.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mov r13.xy, r12.zwzz
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mad r12.xyzw, r2.wwww, l(-0.366204, 0.732379675, -0.923958182, -0.255964309), r11.xyxy
        mov r13.xy, r12.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mov r13.xy, r12.zwzz
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mad r12.xyzw, r2.wwww, l(-0.286924, 0.278053, 0.772301197, 0.157332897), r11.xyxy
        mov r13.xy, r12.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mov r13.xy, r12.zwzz
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mad r12.xyzw, r2.wwww, l(0.378513, 0.405219913, 0.463021696, -0.691461921), r11.xyxy
        mov r13.xy, r12.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mov r13.xy, r12.zwzz
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r8.x, r13.xyzx, t8.xxxx, s9, r8.z
        add r7.w, r7.w, r8.x
        mad r12.xyzw, r2.wwww, l(0.423523, 0.863028, 0.855864286, -0.338255405), r11.xyxy
        mov r13.xy, r12.xyxx
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r2.w, r13.xyzx, t8.xxxx, s9, r8.z
        add r2.w, r2.w, r7.w
        mov r13.xy, r12.zwzz
        sample_c_lz_indexable(texture2darray)(float,float,float,float) r7.w, r13.xyzx, t8.xxxx, s9, r8.z
        add r2.w, r2.w, r7.w
        mul r2.w, r2.w, l(0.0769230798)
        mul r2.z, r2.w, r2.w
      endif
      itof r2.w, r10.z
      ge r2.w, r11.z, r2.w
      and r2.w, r2.w, l(0x3f800000)
      dp4 r7.w, r9.xyzw, icb[r10.z + 0].xyzw
      mad r2.z, r2.w, r7.w, r2.z
      min r2.z, r2.z, l(1.000000)
    else
      mov r2.z, l(1.000000)
    endif
    movc r8.w, r10.x, r8.w, r2.z
  endif
  mul r2.z, r6.w, r8.w
  mul r2.w, cb12[66].x, l(20.000000)
  round_z r8.zw, cb12[68].xxxy
  mov r9.xy, cb12[67].xyxx
  mov r9.z, l(0)
  add r9.xyz, r9.xyzx, v5.xyzx
  mul r9.xyz, r9.xyzx, l(0.010000, 0.010000, 0.010000, 0.000000)
  div r9.xyz, r9.xyzx, cb12[66].xxxx
  mul r10.xy, cb12[67].xyxx, l(20.000000, 20.000000, 0.000000, 0.000000)
  mov r10.z, l(0)
  add r10.xyz, r10.xyzx, v5.xyzx
  mul r10.xyz, r10.xyzx, l(0.010000, 0.010000, 0.010000, 0.000000)
  div r10.xyz, r10.xyzx, r2.wwww
  mul r9.zw, r9.zzzz, cb13[0].xxxy
  div r9.zw, r9.zzzw, cb13[0].zzzz
  add r8.xy, -r9.zwzz, r9.xyxx
  mul r9.xy, r10.zzzz, cb13[0].xyxx
  div r9.xy, r9.xyxx, cb13[0].zzzz
  add r9.xy, -r9.xyxx, r10.xyxx
  sample_l_indexable(texture2darray)(float,float,float,float) r2.w, r8.xyzx, t14.yzwx, s14, l(1.000000)
  sample_l_indexable(texture2darray)(float,float,float,float) r7.w, r8.xywx, t14.yzwx, s14, l(1.000000)
  add r7.w, -r2.w, r7.w
  mad r2.w, cb12[66].w, r7.w, r2.w
  mov r9.zw, r8.zzzw
  sample_l_indexable(texture2darray)(float,float,float,float) r7.w, r9.xyzx, t14.yzwx, s14, l(1.000000)
  sample_l_indexable(texture2darray)(float,float,float,float) r8.x, r9.xywx, t14.xyzw, s14, l(1.000000)
  add r8.x, -r7.w, r8.x
  mad r7.w, cb12[66].w, r8.x, r7.w
  add r8.x, cb13[0].z, l(-0.250000)
  add r8.y, r5.w, l(-100.000000)
  mul_sat r8.xy, r8.xyxx, l(10.000000, 0.00666666683, 0.000000, 0.000000)
  add r7.w, -r2.w, r7.w
  mad r2.w, r8.y, r7.w, r2.w
  mad r2.w, -r8.x, r2.w, l(1.000000)
  mul r6.w, r2.w, r2.z
endif
lt r2.z, l(0.000000), r6.w
if_nz r2.z
  dp3 r2.z, cb13[0].xyzx, r3.yzwy
  mov_sat r8.xyz, r2.zzzz
  add r2.w, r8.z, cb4[6].x
  lt r2.w, l(0.000000), r2.w
  if_nz r2.w
    mad r9.xyz, r4.xyzx, r4.wwww, cb13[0].xyzx
    dp3 r2.w, r9.xyzx, r9.xyzx
    rsq r2.w, r2.w
    mul r9.xyz, r2.wwww, r9.xyzx
    dp3 r2.w, r9.xyzx, r5.xyzx
    add r2.w, -|r2.w|, l(1.000000)
    max r2.w, r2.w, l(0.000000)
    mul r7.w, r2.w, r2.w
    mul r7.w, r7.w, r7.w
    mul r2.w, r2.w, r7.w
    add r7.w, -r2.y, l(1.000000)
    mul r8.w, r7.w, cb13[56].x
    mul r2.w, r2.w, r8.w
    add r8.w, cb13[56].z, l(1.000000)
    mad r8.w, -cb13[56].z, r2.x, r8.w
    div r2.w, r2.w, r8.w
    add r2.w, r2.w, r2.y
    add r8.w, -r2.w, l(1.000000)
    mul r8.w, r8.w, r8.z
    mul r10.xyz, r8.wwww, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
    lt r8.w, l(0.000000), cb4[6].x
    if_nz r8.w
      add r8.w, r2.z, l(1.000000)
      mul r8.w, r8.w, l(0.500000)
      dp3 r9.w, cb13[0].xyzx, -r5.xyzx
      add r9.w, r9.w, l(1.000000)
      mul r9.w, r9.w, l(0.500000)
      dp3 r10.w, r3.yzwy, -r5.xyzx
      add r10.w, r10.w, l(1.000000)
      mul r10.w, r10.w, cb12[36].w
      mul r9.w, r9.w, r9.w
      mul r10.w, r10.w, l(0.500000)
      mad r9.w, r9.w, r9.w, -r8.w
      mad r8.w, cb12[36].x, r9.w, r8.w
      mul r8.w, r8.w, r10.w
      mul r9.w, cb12[36].y, cb4[6].x
      mad r7.w, cb12[36].z, r7.w, -r10.z
      mad r7.w, r9.w, r7.w, r10.z
      mad r10.xyz, r8.wwww, cb4[6].xxxx, r7.wwww
    endif
    add r11.xy, v5.xyxx, -cb12[0].xyxx
    dp2 r7.w, r11.xyxx, r11.xyxx
    sqrt r7.w, r7.w
    mad_sat r8.w, v5.z, cb12[219].z, cb12[219].w
    add r11.xyz, cb13[51].xyzx, -cb13[52].xyzx
    mad r11.xyz, r8.wwww, r11.xyzx, cb13[52].xyzx
    mad_sat r7.w, r7.w, cb12[219].x, cb12[219].y
    add r11.xyz, r11.xyzx, -cb13[1].xyzx
    mad r11.xyz, r7.wwww, r11.xyzx, cb13[1].xyzx
    mul r10.xyz, r6.wwww, r10.xyzx
    mul r10.xyz, r11.xyzx, r10.xyzx
    lt r2.z, l(0.000000), r2.z
    if_nz r2.z
      dp3_sat r2.z, r3.yzwy, r9.xyzx
      dp3 r7.w, r3.yzwy, r5.xyzx
      mul r8.w, r0.w, r0.w
      mul r9.x, r8.w, r8.w
      mul r2.z, r2.z, r2.z
      mad r8.w, r8.w, r8.w, l(-1.000000)
      mad r2.z, r2.z, r8.w, l(1.000000)
      mul r2.z, r2.z, r2.z
      mul r2.z, r2.z, l(3.141520)
      div r2.z, r9.x, r2.z
      add r8.w, r0.w, l(1.000000)
      mul r8.w, r8.w, r8.w
      mul r9.x, r8.w, l(0.125000)
      mad r8.w, -r8.w, l(0.125000), l(1.000000)
      mad r9.y, r8.z, r8.w, r9.x
      div r9.y, r8.z, r9.y
      mad r8.w, |r7.w|, r8.w, r9.x
      div r8.w, |r7.w|, r8.w
      mul r8.w, r8.w, r9.y
      mul r2.z, r2.z, r8.w
      mul r2.z, r2.w, r2.z
      mul r2.w, |r7.w|, r8.z
      mad r2.w, r2.w, l(4.000000), l(0.000100)
      div r2.z, r2.z, r2.w
      mul r9.xyz, r8.zzzz, r2.zzzz
    else
      mov r9.xyz, l(0,0,0,0)
    endif
    mul r9.xyz, r6.wwww, r9.xyzx
    mul r9.xyz, r11.xyzx, r9.xyzx
  else
    mov r8.xyz, l(0,0,0,0)
    mov r10.xyz, l(0,0,0,0)
    mov r9.xyz, l(0,0,0,0)
  endif
else
  mov r8.xyz, l(0,0,0,0)
  mov r10.xyz, l(0,0,0,0)
  mov r9.xyz, l(0,0,0,0)
endif
min r8.xyz, r6.wwww, r8.xyzx
eq r2.z, r0.y, l(1.000000)
lt r2.w, cb2[16].x, l(0.000000)
movc r2.w, r2.w, l(1.000000), cb12[71].x
add r6.w, -r2.y, l(1.000000)
mul r7.w, r6.w, cb13[56].x
add r11.xy, cb13[56].zwzz, l(1.000000, 1.000000, 0.000000, 0.000000)
mad r11.xy, -cb13[56].zwzz, r2.xxxx, r11.xyxx
lt r2.x, l(0.000000), cb4[6].x
dp3 r8.w, r3.yzwy, -r5.xyzx
add r9.w, r8.w, l(1.000000)
mul r9.w, r9.w, cb12[36].w
mul r9.w, r9.w, l(0.500000)
mul r10.w, cb12[36].y, cb4[6].x
dp3 r11.z, r3.yzwy, r5.xyzx
mul r11.w, r0.w, r0.w
mul r12.x, r11.w, r11.w
mad r12.y, r11.w, r11.w, l(-1.000000)
add r0.w, r0.w, l(1.000000)
mul r0.w, r0.w, r0.w
mul r12.z, r0.w, l(0.125000)
mad r0.w, -r0.w, l(0.125000), l(1.000000)
mad r12.w, |r11.z|, r0.w, r12.z
div r12.w, |r11.z|, r12.w
mul r13.x, |r11.z|, l(4.000000)
and r13.y, r2.z, l(0x3f800000)
movc r2.z, r2.z, l(0), l(1.000000)
mov r14.xyz, r10.xyzx
mov r15.xyz, r9.xyzx
mov r13.z, l(0)
loop
  ige r13.w, r13.z, l(256)
  breakc_nz r13.w
  iadd r13.w, r0.x, r13.z
  ishl r13.w, r13.w, l(2)
  ld_raw_indexable(raw_buffer)(mixed,mixed,mixed,mixed) r13.w, r13.w, t20.xxxx
  uge r14.w, r13.w, l(256)
  if_nz r14.w
    break
  endif
  imul null, r13.w, r13.w, l(9)
  add r16.xyz, -v5.xyzx, cb13[r13.w + 58].xyzx
  dp3 r14.w, r16.xyzx, r16.xyzx
  sqrt r15.w, r14.w
  div r17.x, r15.w, cb13[r13.w + 58].w
  mul r17.y, r17.x, r17.x
  mad r17.y, -r17.y, r17.y, l(1.000000)
  max r17.y, r17.y, l(0.000000)
  mul r17.y, r17.y, r17.y
  and r18.xyz, l(1, 2048, 4096, 0), cb13[r13.w + 61].wwww
  lt r17.z, l(0.000000), cb13[r13.w + 63].z
  lt r17.w, l(0.000000), cb13[r13.w + 64].x
  mad r18.w, r14.w, cb13[r13.w + 63].x, l(1.000000)
  div r17.y, r17.y, r18.w
  if_nz r18.x
    rsq r18.w, r14.w
    mul r19.xyz, r16.xyzx, r18.wwww
    dp3 r18.w, -r19.xyzx, cb13[r13.w + 60].xyzx
    mad_sat r18.w, r18.w, cb13[r13.w + 62].y, cb13[r13.w + 62].z
    log r18.w, r18.w
    mul r18.w, r18.w, cb13[r13.w + 62].w
    exp r18.w, r18.w
    mul r17.y, r17.y, r18.w
  endif
  lt r18.w, l(0.000000), r17.y
  and r17.z, r17.z, r18.w
  if_nz r17.z
    if_nz r18.x
      add r19.xyz, v5.xyzx, -cb13[r13.w + 58].xyzx
      mul r20.xyz, cb13[r13.w + 60].zxyz, cb13[r13.w + 65].zwyz
      mad r20.xyz, cb13[r13.w + 60].yzxy, cb13[r13.w + 65].wyzw, -r20.xyzx
      dp3 r20.x, r20.xyzx, r19.xyzx
      dp3 r20.y, cb13[r13.w + 65].yzwy, r19.xyzx
      dp3 r20.z, cb13[r13.w + 60].xyzx, r19.xyzx
      mov r20.w, cb13[r13.w + 65].x
    else
      add r19.xyz, v5.xzyx, -cb13[r13.w + 58].xzyx
      div r21.xyz, r16.xyzx, r15.wwww
      max r15.w, |r21.z|, |r21.y|
      lt r15.w, r15.w, |r21.x|
      if_nz r15.w
        lt r15.w, l(0.000000), r21.x
        mul r22.xyz, r19.zyxz, l(1.000000, 1.000000, -1.000000, 0.000000)
        mov r22.w, cb13[r13.w + 65].x
        mul r23.xyz, r19.zyxz, l(-1.000000, 1.000000, 1.000000, 0.000000)
        mov r23.w, cb13[r13.w + 65].y
        movc r20.xyzw, r15.wwww, r22.xyzw, r23.xyzw
      else
        max r15.w, |r21.z|, |r21.x|
        lt r15.w, r15.w, |r21.y|
        if_nz r15.w
          lt r15.w, l(0.000000), r21.y
          mul r22.xyz, r19.xyzx, l(-1.000000, 1.000000, -1.000000, 0.000000)
          mov r22.w, cb13[r13.w + 65].z
          mov r19.w, cb13[r13.w + 65].w
          movc r20.xyzw, r15.wwww, r22.xyzw, r19.xyzw
        else
          lt r15.w, l(0.000000), r21.z
          mov r20.x, r19.x
          movc r20.y, r15.w, r19.z, -r19.z
          movc r20.z, r15.w, -r19.y, r19.y
          movc r20.w, r15.w, cb13[r13.w + 66].x, cb13[r13.w + 66].y
        endif
      endif
    endif
    mul r19.xy, r20.xyxx, cb13[r13.w + 63].yyyy
    div r19.xy, r19.xyxx, r20.zzzz
    mad r19.xy, r19.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
    bfi r15.w, l(10), l(2), r20.w, l(0)
    utof r20.x, r15.w
    ushr r21.xyz, r20.wwww, l(10, 20, 30, 0)
    bfi r19.zw, l(0, 0, 10, 10), l(0, 0, 2, 2), r21.xxxy, l(0, 0, 0, 0)
    utof r20.yz, r19.zzwz
    utof r21.z, r21.z
    lt r15.w, l(0.000000), r20.z
    if_nz r15.w
      mad r19.xy, r19.xyxx, r20.zzzz, r20.xyxx
      mul r21.xy, r19.xyxx, cb13[57].xxxx
      sample_l_indexable(texture2darray)(float,float,float,float) r15.w, r21.xyzx, t9.yzwx, s10, l(0.000000)
      mad r15.w, -r17.x, l(0.990000), r15.w
      mul r15.w, r15.w, l(144.269501)
      exp r15.w, r15.w
      min r15.w, r15.w, l(1.000000)
    else
      mov r15.w, l(1.000000)
    endif
  else
    mov r15.w, l(1.000000)
  endif
  and r17.z, r17.w, r18.w
  if_nz r17.z
    mov r16.w, cb13[r13.w + 64].y
    sample_l_indexable(texturecubearray)(float,float,float,float) r16.w, r16.xyzw, t10.yzwx, s10, l(0.000000)
    mad r16.w, -r17.x, l(0.990000), r16.w
    mul r16.w, r16.w, l(144.269501)
    exp r16.w, r16.w
    min r16.w, r16.w, l(1.000000)
    mul r15.w, r15.w, r16.w
  endif
  add r15.w, r15.w, l(-1.000000)
  mad r15.w, cb13[r13.w + 60].w, r15.w, l(1.000000)
  mul r15.w, r15.w, r17.y
  movc r16.w, r18.y, l(1.000000), r13.y
  movc r17.x, r18.z, l(1.000000), r2.z
  mul r16.w, r16.w, r17.x
  mul r15.w, r15.w, r16.w
  lt r16.w, l(0.000000), r15.w
  if_nz r16.w
    and r16.w, l(0x80000000), cb13[r13.w + 61].w
    movc r16.w, r16.w, r2.w, l(1.000000)
    mul r15.w, r15.w, r16.w
    rsq r14.w, r14.w
    mul r16.xyz, r14.wwww, r16.xyzx
    dp3 r14.w, r3.yzwy, r16.xyzx
    mov_sat r16.w, r14.w
    mad r17.xyz, r4.xyzx, r4.wwww, r16.xyzx
    dp3 r17.w, r17.xyzx, r17.xyzx
    rsq r17.w, r17.w
    mul r17.xyz, r17.wwww, r17.xyzx
    dp3 r17.w, r17.xyzx, r5.xyzx
    add r17.w, -|r17.w|, l(1.000000)
    max r17.w, r17.w, l(0.000000)
    mul r18.x, r17.w, r17.w
    mul r18.x, r18.x, r18.x
    mul r17.w, r17.w, r18.x
    mul r17.w, r7.w, r17.w
    div r17.w, r17.w, r11.x
    add r17.w, r2.y, r17.w
    add r18.x, -r17.w, l(1.000000)
    mul r18.x, r16.w, r18.x
    mul r18.xyz, r18.xxxx, l(0.318309873, 0.318309873, 0.318309873, 0.000000)
    if_nz r2.x
      add r18.w, r14.w, l(1.000000)
      mul r18.w, r18.w, l(0.500000)
      dp3 r16.x, r16.xyzx, -r5.xyzx
      add r16.x, r16.x, l(1.000000)
      mul r16.x, r16.x, l(0.500000)
      mul r16.x, r16.x, r16.x
      mad r16.x, r16.x, r16.x, -r18.w
      mad r16.x, cb12[36].x, r16.x, r18.w
      mul r16.x, r9.w, r16.x
      mad r16.y, cb12[36].z, r6.w, -r18.z
      mad r16.y, r10.w, r16.y, r18.z
      mad r18.xyz, r16.xxxx, cb4[6].xxxx, r16.yyyy
    endif
    mul r16.xyz, r18.xyzx, cb13[r13.w + 61].xyzx
    mad r14.xyz, r15.wwww, r16.xyzx, r14.xyzx
    lt r14.w, l(0.000000), r14.w
    if_nz r14.w
      dp3_sat r14.w, r3.yzwy, r17.xyzx
      mul r14.w, r14.w, r14.w
      mad r14.w, r14.w, r12.y, l(1.000000)
      mul r14.w, r14.w, r14.w
      mul r14.w, r14.w, l(3.141520)
      div r14.w, r12.x, r14.w
      mad r16.x, r16.w, r0.w, r12.z
      div r16.x, r16.w, r16.x
      mul r16.x, r12.w, r16.x
      mul r14.w, r14.w, r16.x
      mul r14.w, r17.w, r14.w
      mad r16.x, r13.x, r16.w, l(0.000100)
      div r14.w, r14.w, r16.x
      mul r16.xyz, r16.wwww, r14.wwww
    else
      mov r16.xyz, l(0,0,0,0)
    endif
    mul r16.xyz, r16.xyzx, cb13[r13.w + 61].xyzx
    mad r15.xyz, r15.wwww, r16.xyzx, r15.xyzx
  endif
  iadd r13.z, r13.z, l(1)
endloop
add r0.x, r8.w, r8.w
mad r2.xzw, r3.yyzw, -r0.xxxx, -r5.xxyz
dp3 r0.x, r2.xzwx, r2.xzwx
rsq r0.x, r0.x
mul r4.xyz, r0.xxxx, r2.xzwx
deriv_rtx_coarse r5.xyz, r4.xyzx
deriv_rty_coarse r9.xyz, r4.xyzx
movc r5.xyz, r6.yyyy, -r5.xyzx, r5.xyzx
movc r9.xyz, r6.zzzz, -r9.xyzx, r9.xyzx
mad r5.xyz, r2.xzwx, r0.xxxx, r5.xyzx
dp3 r0.w, r5.xyzx, r5.xyzx
rsq r0.w, r0.w
mul r5.xyz, r0.wwww, r5.xyzx
dp3 r0.w, r4.xyzx, r5.xyzx
add r4.w, -|r0.w|, l(1.000000)
sqrt r4.w, r4.w
mad r5.x, |r0.w|, l(-0.0187292993), l(0.074261)
mad r5.x, r5.x, |r0.w|, l(-0.212114394)
mad r5.x, r5.x, |r0.w|, l(1.57072878)
mul r5.y, r4.w, r5.x
mad r5.y, r5.y, l(-2.000000), l(3.14159274)
lt r0.w, r0.w, -r0.w
and r0.w, r0.w, r5.y
mad r0.w, r5.x, r4.w, r0.w
mul r0.w, r0.w, l(81.487328)
log r0.w, r0.w
mad r5.xyz, r2.xzwx, r0.xxxx, r9.xyzx
dp3 r0.x, r5.xyzx, r5.xyzx
rsq r0.x, r0.x
mul r5.xyz, r0.xxxx, r5.xyzx
dp3 r0.x, r4.xyzx, r5.xyzx
add r4.x, -|r0.x|, l(1.000000)
sqrt r4.x, r4.x
mad r4.y, |r0.x|, l(-0.0187292993), l(0.074261)
mad r4.y, r4.y, |r0.x|, l(-0.212114394)
mad r4.y, r4.y, |r0.x|, l(1.57072878)
mul r4.z, r4.x, r4.y
mad r4.z, r4.z, l(-2.000000), l(3.14159274)
lt r0.x, r0.x, -r0.x
and r0.x, r0.x, r4.z
mad r0.x, r4.y, r4.x, r0.x
mul r0.x, r0.x, l(81.487328)
log r0.x, r0.x
max r0.xw, r0.xxxw, l(0.000000, 0.000000, 0.000000, 0.000000)
max r0.x, r0.x, r0.w
mul r0.x, r0.x, l(0.625000)
mul r0.w, r11.w, l(10.500000)
max r0.x, r0.x, r0.w
lt r0.w, r3.w, l(0.000000)
and r3.w, r0.w, l(1)
mul r4.xyzw, r3.yzyz, l(0.500000, -0.500000, -0.500000, 0.500000)
mad r3.y, -r0.z, r3.x, l(1.000000)
rcp r3.y, r3.y
max r3.y, r3.y, l(-340282346638528859811704183484516925440.000000)
min r3.y, r3.y, l(340282346638528859811704183484516925440.000000)
mad r3.yz, r4.xxyx, r3.yyyy, l(0.000000, 0.500000, 0.500000, 0.000000)
mad r0.z, r0.z, r3.x, l(1.000000)
rcp r0.z, r0.z
max r0.z, r0.z, l(-340282346638528859811704183484516925440.000000)
min r0.z, r0.z, l(340282346638528859811704183484516925440.000000)
mad r4.xy, r4.zwzz, r0.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
movc r0.zw, r0.wwww, r3.yyyz, r4.xxxy
mad r0.zw, r0.zzzw, l(0.000000, 0.000000, 0.666666627, 0.666666627), l(0.000000, 0.000000, 0.166666672, 0.166666672)
itof r3.x, r3.w
mov r3.y, l(0)
add r0.zw, r0.zzzw, r3.xxxy
mul r3.xy, r0.zwzz, l(0.500000, 0.142857149, 0.000000, 0.000000)
mul r4.xyz, v5.yyyy, cb12[115].xyzx
mad r4.xyz, cb12[114].xyzx, v5.xxxx, r4.xyzx
mad r4.xyz, cb12[116].xyzx, v5.zzzz, r4.xyzx
add r4.xyz, r4.xyzx, cb12[117].xyzx
add r4.xyz, -|r4.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
and r0.zw, cb12[118].yyyy, l(0, 0, 1, 2)
movc r0.z, r0.z, l(1.000000), r0.y
add r4.w, -r0.y, l(1.000000)
movc r0.w, r0.w, l(1.000000), r4.w
mul r0.z, r0.w, r0.z
lt r5.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r4.xyzx
and r0.w, r5.y, r5.x
and r0.w, r5.z, r0.w
lt r5.x, l(0.000000), r0.z
and r0.w, r0.w, r5.x
if_nz r0.w
  mul_sat r4.xyz, r4.xyzx, cb12[113].xyzx
  mul r0.z, r0.z, cb12[112].x
  mul r0.z, r0.z, l(0.999990)
  mul r0.w, r4.y, r4.x
  mul r0.w, r4.z, r0.w
  mul r4.x, r0.w, r0.z
  mad r0.z, r0.z, r0.w, l(0.000010)
  mul r0.w, r4.x, cb12[118].x
  itof r4.x, cb12[123].x
  mad r3.z, r4.x, l(0.142857149), r3.y
  sample_l_indexable(texture2d)(float,float,float,float) r4.xyz, r3.xzxx, t22.xyzw, s11, l(0.000000)
  mul r4.xyz, r0.wwww, r4.xyzx
  mul r5.xyz, r2.zzzz, cb12[120].xyzx
  mad r5.xyz, cb12[119].xyzx, r2.xxxx, r5.xyzx
  mad r5.xyz, cb12[121].xyzx, r2.wwww, r5.xyzx
  mul r9.xyz, v5.yyyy, cb12[120].xyzx
  mad r9.xyz, cb12[119].xyzx, v5.xxxx, r9.xyzx
  mad r9.xyz, cb12[121].xyzx, v5.zzzz, r9.xyzx
  add r9.xyz, r9.xyzx, cb12[122].xyzx
  div r5.xyz, l(1.000000, 1.000000, 1.000000, 1.000000), r5.xyzx
  mad r10.xyz, -r9.xyzx, r5.xyzx, r5.xyzx
  mad r5.xyz, -r9.xyzx, r5.xyzx, -r5.xyzx
  max r5.xyz, r5.xyzx, r10.xyzx
  min r3.z, r5.z, r5.y
  min r3.z, r3.z, r5.x
  mad r5.xyz, r2.xzwx, r3.zzzz, v5.xyzx
  add r5.xyz, r5.xyzx, -cb12[112].yzwy
  dp3 r3.z, r5.xyzx, r5.xyzx
  rsq r3.z, r3.z
  mul r9.xyz, r3.zzzz, r5.xyzx
  lt r5.x, r9.z, l(0.000000)
  and r5.y, r5.x, l(1)
  mul r9.xyzw, r9.xyxy, l(0.500000, -0.500000, -0.500000, 0.500000)
  mad r6.y, -r5.z, r3.z, l(1.000000)
  rcp r6.y, r6.y
  max r6.y, r6.y, l(-340282346638528859811704183484516925440.000000)
  min r6.y, r6.y, l(340282346638528859811704183484516925440.000000)
  mad r6.yz, r9.xxyx, r6.yyyy, l(0.000000, 0.500000, 0.500000, 0.000000)
  mad r3.z, r5.z, r3.z, l(1.000000)
  rcp r3.z, r3.z
  max r3.z, r3.z, l(-340282346638528859811704183484516925440.000000)
  min r3.z, r3.z, l(340282346638528859811704183484516925440.000000)
  mad r9.xy, r9.zwzz, r3.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
  movc r5.xz, r5.xxxx, r6.yyzy, r9.xxyx
  mad r5.xz, r5.xxzx, l(0.666666627, 0.000000, 0.666666627, 0.000000), l(0.166666672, 0.000000, 0.166666672, 0.000000)
  itof r9.y, cb12[123].x
  itof r9.z, r5.y
  mov r9.xw, l(0,0,0,0)
  add r5.xy, r5.xzxx, r9.zwzz
  add r5.xy, r5.xyxx, r9.xyxx
  mul r5.xy, r5.xyxx, l(0.500000, 0.142857149, 0.000000, 0.000000)
  sample_l_indexable(texture2d)(float,float,float,float) r5.xyz, r5.xyxx, t23.xyzw, s11, r0.x
  mul r5.xyz, r0.wwww, r5.xyzx
else
  mov r4.xyz, l(0,0,0,0)
  mov r5.xyz, l(0,0,0,0)
  mov r0.z, l(0.000010)
endif
lt r0.w, r0.z, l(0.999000)
if_nz r0.w
  mul r9.xyz, v5.yyyy, cb12[127].xyzx
  mad r9.xyz, cb12[126].xyzx, v5.xxxx, r9.xyzx
  mad r9.xyz, cb12[128].xyzx, v5.zzzz, r9.xyzx
  add r9.xyz, r9.xyzx, cb12[129].xyzx
  add r9.xyz, -|r9.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
  and r6.yz, cb12[130].yyyy, l(0, 1, 2, 0)
  movc r3.z, r6.y, l(1.000000), r0.y
  movc r6.y, r6.z, l(1.000000), r4.w
  mul r3.z, r3.z, r6.y
  lt r10.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
  and r6.y, r10.y, r10.x
  and r6.y, r10.z, r6.y
  lt r6.z, l(0.000000), r3.z
  and r6.y, r6.z, r6.y
  if_nz r6.y
    mul_sat r9.xyz, r9.xyzx, cb12[125].xyzx
    add r6.y, -r0.z, l(1.000000)
    mul r3.z, r3.z, r6.y
    mul r3.z, r3.z, cb12[124].x
    mul r6.y, r9.y, r9.x
    mul r6.y, r9.z, r6.y
    mul r6.z, r3.z, r6.y
    mad r0.z, r3.z, r6.y, r0.z
    mul r3.z, r6.z, cb12[130].x
    itof r6.y, cb12[135].x
    mad r3.w, r6.y, l(0.142857149), r3.y
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r3.xwxx, t22.xyzw, s11, l(0.000000)
    mad r4.xyz, r3.zzzz, r9.xyzx, r4.xyzx
    mul r9.xyz, r2.zzzz, cb12[132].xyzx
    mad r9.xyz, cb12[131].xyzx, r2.xxxx, r9.xyzx
    mad r9.xyz, cb12[133].xyzx, r2.wwww, r9.xyzx
    mul r10.xyz, v5.yyyy, cb12[132].xyzx
    mad r10.xyz, cb12[131].xyzx, v5.xxxx, r10.xyzx
    mad r10.xyz, cb12[133].xyzx, v5.zzzz, r10.xyzx
    add r10.xyz, r10.xyzx, cb12[134].xyzx
    div r9.xyz, l(1.000000, 1.000000, 1.000000, 1.000000), r9.xyzx
    mad r12.xyz, -r10.xyzx, r9.xyzx, r9.xyzx
    mad r9.xyz, -r10.xyzx, r9.xyzx, -r9.xyzx
    max r9.xyz, r9.xyzx, r12.xyzx
    min r3.w, r9.z, r9.y
    min r3.w, r3.w, r9.x
    mad r9.xyz, r2.xzwx, r3.wwww, v5.xyzx
    add r9.xyz, r9.xyzx, -cb12[124].yzwy
    dp3 r3.w, r9.xyzx, r9.xyzx
    rsq r3.w, r3.w
    mul r9.xyw, r3.wwww, r9.xyxz
    lt r6.y, r9.w, l(0.000000)
    and r6.z, r6.y, l(1)
    mul r10.xyzw, r9.xyxy, l(0.500000, -0.500000, -0.500000, 0.500000)
    mad r7.w, -r9.z, r3.w, l(1.000000)
    rcp r7.w, r7.w
    max r7.w, r7.w, l(-340282346638528859811704183484516925440.000000)
    min r7.w, r7.w, l(340282346638528859811704183484516925440.000000)
    mad r9.xy, r10.xyxx, r7.wwww, l(0.500000, 0.500000, 0.000000, 0.000000)
    mad r3.w, r9.z, r3.w, l(1.000000)
    rcp r3.w, r3.w
    max r3.w, r3.w, l(-340282346638528859811704183484516925440.000000)
    min r3.w, r3.w, l(340282346638528859811704183484516925440.000000)
    mad r9.zw, r10.zzzw, r3.wwww, l(0.000000, 0.000000, 0.500000, 0.500000)
    movc r9.xy, r6.yyyy, r9.xyxx, r9.zwzz
    mad r9.xy, r9.xyxx, l(0.666666627, 0.666666627, 0.000000, 0.000000), l(0.166666672, 0.166666672, 0.000000, 0.000000)
    itof r10.y, cb12[135].x
    itof r10.z, r6.z
    mov r10.xw, l(0,0,0,0)
    add r6.yz, r9.xxyx, r10.zzwz
    add r6.yz, r6.yyzy, r10.xxyx
    mul r6.yz, r6.yyzy, l(0.000000, 0.500000, 0.142857149, 0.000000)
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r6.yzyy, t23.xyzw, s11, r0.x
    mad r5.xyz, r3.zzzz, r9.xyzx, r5.xyzx
  endif
endif
lt r3.z, r0.z, l(0.999000)
and r0.w, r0.w, r3.z
if_nz r0.w
  mul r9.xyz, v5.yyyy, cb12[139].xyzx
  mad r9.xyz, cb12[138].xyzx, v5.xxxx, r9.xyzx
  mad r9.xyz, cb12[140].xyzx, v5.zzzz, r9.xyzx
  add r9.xyz, r9.xyzx, cb12[141].xyzx
  add r9.xyz, -|r9.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
  and r3.zw, cb12[142].yyyy, l(0, 0, 1, 2)
  movc r3.z, r3.z, l(1.000000), r0.y
  movc r3.w, r3.w, l(1.000000), r4.w
  mul r3.z, r3.w, r3.z
  lt r10.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
  and r3.w, r10.y, r10.x
  and r3.w, r10.z, r3.w
  lt r6.y, l(0.000000), r3.z
  and r3.w, r3.w, r6.y
  if_nz r3.w
    mul_sat r9.xyz, r9.xyzx, cb12[137].xyzx
    add r3.w, -r0.z, l(1.000000)
    mul r3.z, r3.z, r3.w
    mul r3.z, r3.z, cb12[136].x
    mul r3.w, r9.y, r9.x
    mul r3.w, r9.z, r3.w
    mul r6.y, r3.w, r3.z
    mad r0.z, r3.z, r3.w, r0.z
    mul r3.z, r6.y, cb12[142].x
    itof r3.w, cb12[147].x
    mad r9.y, r3.w, l(0.142857149), r3.y
    mov r9.x, r3.x
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r9.xyxx, t22.xyzw, s11, l(0.000000)
    mad r4.xyz, r3.zzzz, r9.xyzx, r4.xyzx
    mul r9.xyz, r2.zzzz, cb12[144].xyzx
    mad r9.xyz, cb12[143].xyzx, r2.xxxx, r9.xyzx
    mad r9.xyz, cb12[145].xyzx, r2.wwww, r9.xyzx
    mul r10.xyz, v5.yyyy, cb12[144].xyzx
    mad r10.xyz, cb12[143].xyzx, v5.xxxx, r10.xyzx
    mad r10.xyz, cb12[145].xyzx, v5.zzzz, r10.xyzx
    add r10.xyz, r10.xyzx, cb12[146].xyzx
    div r9.xyz, l(1.000000, 1.000000, 1.000000, 1.000000), r9.xyzx
    mad r12.xyz, -r10.xyzx, r9.xyzx, r9.xyzx
    mad r9.xyz, -r10.xyzx, r9.xyzx, -r9.xyzx
    max r9.xyz, r9.xyzx, r12.xyzx
    min r3.w, r9.z, r9.y
    min r3.w, r3.w, r9.x
    mad r9.xyz, r2.xzwx, r3.wwww, v5.xyzx
    add r9.xyz, r9.xyzx, -cb12[136].yzwy
    dp3 r3.w, r9.xyzx, r9.xyzx
    rsq r3.w, r3.w
    mul r9.xyw, r3.wwww, r9.xyxz
    lt r6.y, r9.w, l(0.000000)
    and r6.z, r6.y, l(1)
    mul r10.xyzw, r9.xyxy, l(0.500000, -0.500000, -0.500000, 0.500000)
    mad r7.w, -r9.z, r3.w, l(1.000000)
    rcp r7.w, r7.w
    max r7.w, r7.w, l(-340282346638528859811704183484516925440.000000)
    min r7.w, r7.w, l(340282346638528859811704183484516925440.000000)
    mad r9.xy, r10.xyxx, r7.wwww, l(0.500000, 0.500000, 0.000000, 0.000000)
    mad r3.w, r9.z, r3.w, l(1.000000)
    rcp r3.w, r3.w
    max r3.w, r3.w, l(-340282346638528859811704183484516925440.000000)
    min r3.w, r3.w, l(340282346638528859811704183484516925440.000000)
    mad r9.zw, r10.zzzw, r3.wwww, l(0.000000, 0.000000, 0.500000, 0.500000)
    movc r9.xy, r6.yyyy, r9.xyxx, r9.zwzz
    mad r9.xy, r9.xyxx, l(0.666666627, 0.666666627, 0.000000, 0.000000), l(0.166666672, 0.166666672, 0.000000, 0.000000)
    itof r10.y, cb12[147].x
    itof r10.z, r6.z
    mov r10.xw, l(0,0,0,0)
    add r6.yz, r9.xxyx, r10.zzwz
    add r6.yz, r6.yyzy, r10.xxyx
    mul r6.yz, r6.yyzy, l(0.000000, 0.500000, 0.142857149, 0.000000)
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r6.yzyy, t23.xyzw, s11, r0.x
    mad r5.xyz, r3.zzzz, r9.xyzx, r5.xyzx
  endif
endif
lt r3.z, r0.z, l(0.999000)
and r0.w, r0.w, r3.z
if_nz r0.w
  mul r9.xyz, v5.yyyy, cb12[151].xyzx
  mad r9.xyz, cb12[150].xyzx, v5.xxxx, r9.xyzx
  mad r9.xyz, cb12[152].xyzx, v5.zzzz, r9.xyzx
  add r9.xyz, r9.xyzx, cb12[153].xyzx
  add r9.xyz, -|r9.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
  and r3.zw, cb12[154].yyyy, l(0, 0, 1, 2)
  movc r3.z, r3.z, l(1.000000), r0.y
  movc r3.w, r3.w, l(1.000000), r4.w
  mul r3.z, r3.w, r3.z
  lt r10.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
  and r3.w, r10.y, r10.x
  and r3.w, r10.z, r3.w
  lt r6.y, l(0.000000), r3.z
  and r3.w, r3.w, r6.y
  if_nz r3.w
    mul_sat r9.xyz, r9.xyzx, cb12[149].xyzx
    add r3.w, -r0.z, l(1.000000)
    mul r3.z, r3.z, r3.w
    mul r3.z, r3.z, cb12[148].x
    mul r3.w, r9.y, r9.x
    mul r3.w, r9.z, r3.w
    mul r6.y, r3.w, r3.z
    mad r0.z, r3.z, r3.w, r0.z
    mul r3.z, r6.y, cb12[154].x
    itof r3.w, cb12[159].x
    mad r9.y, r3.w, l(0.142857149), r3.y
    mov r9.x, r3.x
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r9.xyxx, t22.xyzw, s11, l(0.000000)
    mad r4.xyz, r3.zzzz, r9.xyzx, r4.xyzx
    mul r9.xyz, r2.zzzz, cb12[156].xyzx
    mad r9.xyz, cb12[155].xyzx, r2.xxxx, r9.xyzx
    mad r9.xyz, cb12[157].xyzx, r2.wwww, r9.xyzx
    mul r10.xyz, v5.yyyy, cb12[156].xyzx
    mad r10.xyz, cb12[155].xyzx, v5.xxxx, r10.xyzx
    mad r10.xyz, cb12[157].xyzx, v5.zzzz, r10.xyzx
    add r10.xyz, r10.xyzx, cb12[158].xyzx
    div r9.xyz, l(1.000000, 1.000000, 1.000000, 1.000000), r9.xyzx
    mad r12.xyz, -r10.xyzx, r9.xyzx, r9.xyzx
    mad r9.xyz, -r10.xyzx, r9.xyzx, -r9.xyzx
    max r9.xyz, r9.xyzx, r12.xyzx
    min r3.w, r9.z, r9.y
    min r3.w, r3.w, r9.x
    mad r9.xyz, r2.xzwx, r3.wwww, v5.xyzx
    add r9.xyz, r9.xyzx, -cb12[148].yzwy
    dp3 r3.w, r9.xyzx, r9.xyzx
    rsq r3.w, r3.w
    mul r9.xyw, r3.wwww, r9.xyxz
    lt r6.y, r9.w, l(0.000000)
    and r6.z, r6.y, l(1)
    mul r10.xyzw, r9.xyxy, l(0.500000, -0.500000, -0.500000, 0.500000)
    mad r7.w, -r9.z, r3.w, l(1.000000)
    rcp r7.w, r7.w
    max r7.w, r7.w, l(-340282346638528859811704183484516925440.000000)
    min r7.w, r7.w, l(340282346638528859811704183484516925440.000000)
    mad r9.xy, r10.xyxx, r7.wwww, l(0.500000, 0.500000, 0.000000, 0.000000)
    mad r3.w, r9.z, r3.w, l(1.000000)
    rcp r3.w, r3.w
    max r3.w, r3.w, l(-340282346638528859811704183484516925440.000000)
    min r3.w, r3.w, l(340282346638528859811704183484516925440.000000)
    mad r9.zw, r10.zzzw, r3.wwww, l(0.000000, 0.000000, 0.500000, 0.500000)
    movc r9.xy, r6.yyyy, r9.xyxx, r9.zwzz
    mad r9.xy, r9.xyxx, l(0.666666627, 0.666666627, 0.000000, 0.000000), l(0.166666672, 0.166666672, 0.000000, 0.000000)
    itof r10.y, cb12[159].x
    itof r10.z, r6.z
    mov r10.xw, l(0,0,0,0)
    add r6.yz, r9.xxyx, r10.zzwz
    add r6.yz, r6.yyzy, r10.xxyx
    mul r6.yz, r6.yyzy, l(0.000000, 0.500000, 0.142857149, 0.000000)
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r6.yzyy, t23.xyzw, s11, r0.x
    mad r5.xyz, r3.zzzz, r9.xyzx, r5.xyzx
  endif
endif
lt r3.z, r0.z, l(0.999000)
and r0.w, r0.w, r3.z
if_nz r0.w
  mul r9.xyz, v5.yyyy, cb12[163].xyzx
  mad r9.xyz, cb12[162].xyzx, v5.xxxx, r9.xyzx
  mad r9.xyz, cb12[164].xyzx, v5.zzzz, r9.xyzx
  add r9.xyz, r9.xyzx, cb12[165].xyzx
  add r9.xyz, -|r9.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
  and r3.zw, cb12[166].yyyy, l(0, 0, 1, 2)
  movc r3.z, r3.z, l(1.000000), r0.y
  movc r3.w, r3.w, l(1.000000), r4.w
  mul r3.z, r3.w, r3.z
  lt r10.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
  and r3.w, r10.y, r10.x
  and r3.w, r10.z, r3.w
  lt r6.y, l(0.000000), r3.z
  and r3.w, r3.w, r6.y
  if_nz r3.w
    mul_sat r9.xyz, r9.xyzx, cb12[161].xyzx
    add r3.w, -r0.z, l(1.000000)
    mul r3.z, r3.z, r3.w
    mul r3.z, r3.z, cb12[160].x
    mul r3.w, r9.y, r9.x
    mul r3.w, r9.z, r3.w
    mul r6.y, r3.w, r3.z
    mad r0.z, r3.z, r3.w, r0.z
    mul r3.z, r6.y, cb12[166].x
    itof r3.w, cb12[171].x
    mad r9.y, r3.w, l(0.142857149), r3.y
    mov r9.x, r3.x
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r9.xyxx, t22.xyzw, s11, l(0.000000)
    mad r4.xyz, r3.zzzz, r9.xyzx, r4.xyzx
    mul r9.xyz, r2.zzzz, cb12[168].xyzx
    mad r9.xyz, cb12[167].xyzx, r2.xxxx, r9.xyzx
    mad r9.xyz, cb12[169].xyzx, r2.wwww, r9.xyzx
    mul r10.xyz, v5.yyyy, cb12[168].xyzx
    mad r10.xyz, cb12[167].xyzx, v5.xxxx, r10.xyzx
    mad r10.xyz, cb12[169].xyzx, v5.zzzz, r10.xyzx
    add r10.xyz, r10.xyzx, cb12[170].xyzx
    div r9.xyz, l(1.000000, 1.000000, 1.000000, 1.000000), r9.xyzx
    mad r12.xyz, -r10.xyzx, r9.xyzx, r9.xyzx
    mad r9.xyz, -r10.xyzx, r9.xyzx, -r9.xyzx
    max r9.xyz, r9.xyzx, r12.xyzx
    min r3.w, r9.z, r9.y
    min r3.w, r3.w, r9.x
    mad r9.xyz, r2.xzwx, r3.wwww, v5.xyzx
    add r9.xyz, r9.xyzx, -cb12[160].yzwy
    dp3 r3.w, r9.xyzx, r9.xyzx
    rsq r3.w, r3.w
    mul r9.xyw, r3.wwww, r9.xyxz
    lt r6.y, r9.w, l(0.000000)
    and r6.z, r6.y, l(1)
    mul r10.xyzw, r9.xyxy, l(0.500000, -0.500000, -0.500000, 0.500000)
    mad r7.w, -r9.z, r3.w, l(1.000000)
    rcp r7.w, r7.w
    max r7.w, r7.w, l(-340282346638528859811704183484516925440.000000)
    min r7.w, r7.w, l(340282346638528859811704183484516925440.000000)
    mad r9.xy, r10.xyxx, r7.wwww, l(0.500000, 0.500000, 0.000000, 0.000000)
    mad r3.w, r9.z, r3.w, l(1.000000)
    rcp r3.w, r3.w
    max r3.w, r3.w, l(-340282346638528859811704183484516925440.000000)
    min r3.w, r3.w, l(340282346638528859811704183484516925440.000000)
    mad r9.zw, r10.zzzw, r3.wwww, l(0.000000, 0.000000, 0.500000, 0.500000)
    movc r9.xy, r6.yyyy, r9.xyxx, r9.zwzz
    mad r9.xy, r9.xyxx, l(0.666666627, 0.666666627, 0.000000, 0.000000), l(0.166666672, 0.166666672, 0.000000, 0.000000)
    itof r10.y, cb12[171].x
    itof r10.z, r6.z
    mov r10.xw, l(0,0,0,0)
    add r6.yz, r9.xxyx, r10.zzwz
    add r6.yz, r6.yyzy, r10.xxyx
    mul r6.yz, r6.yyzy, l(0.000000, 0.500000, 0.142857149, 0.000000)
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r6.yzyy, t23.xyzw, s11, r0.x
    mad r5.xyz, r3.zzzz, r9.xyzx, r5.xyzx
  endif
endif
lt r3.z, r0.z, l(0.999000)
and r0.w, r0.w, r3.z
if_nz r0.w
  mul r9.xyz, v5.yyyy, cb12[175].xyzx
  mad r9.xyz, cb12[174].xyzx, v5.xxxx, r9.xyzx
  mad r9.xyz, cb12[176].xyzx, v5.zzzz, r9.xyzx
  add r9.xyz, r9.xyzx, cb12[177].xyzx
  add r9.xyz, -|r9.xyzx|, l(1.000000, 1.000000, 1.000000, 0.000000)
  and r3.zw, cb12[178].yyyy, l(0, 0, 1, 2)
  movc r0.w, r3.z, l(1.000000), r0.y
  movc r3.z, r3.w, l(1.000000), r4.w
  mul r0.w, r0.w, r3.z
  lt r10.xyz, l(0.000000, 0.000000, 0.000000, 0.000000), r9.xyzx
  and r3.z, r10.y, r10.x
  and r3.z, r10.z, r3.z
  lt r3.w, l(0.000000), r0.w
  and r3.z, r3.w, r3.z
  if_nz r3.z
    mul_sat r9.xyz, r9.xyzx, cb12[173].xyzx
    add r3.z, -r0.z, l(1.000000)
    mul r0.w, r0.w, r3.z
    mul r0.w, r0.w, cb12[172].x
    mul r3.z, r9.y, r9.x
    mul r3.z, r9.z, r3.z
    mul r3.w, r0.w, r3.z
    mad r0.z, r0.w, r3.z, r0.z
    mul r0.w, r3.w, cb12[178].x
    itof r3.z, cb12[183].x
    mad r9.y, r3.z, l(0.142857149), r3.y
    mov r9.x, r3.x
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r9.xyxx, t22.xyzw, s11, l(0.000000)
    mad r4.xyz, r0.wwww, r9.xyzx, r4.xyzx
    mul r9.xyz, r2.zzzz, cb12[180].xyzx
    mad r9.xyz, cb12[179].xyzx, r2.xxxx, r9.xyzx
    mad r9.xyz, cb12[181].xyzx, r2.wwww, r9.xyzx
    mul r10.xyz, v5.yyyy, cb12[180].xyzx
    mad r10.xyz, cb12[179].xyzx, v5.xxxx, r10.xyzx
    mad r10.xyz, cb12[181].xyzx, v5.zzzz, r10.xyzx
    add r10.xyz, r10.xyzx, cb12[182].xyzx
    div r9.xyz, l(1.000000, 1.000000, 1.000000, 1.000000), r9.xyzx
    mad r12.xyz, -r10.xyzx, r9.xyzx, r9.xyzx
    mad r9.xyz, -r10.xyzx, r9.xyzx, -r9.xyzx
    max r9.xyz, r9.xyzx, r12.xyzx
    min r3.z, r9.z, r9.y
    min r3.z, r3.z, r9.x
    mad r9.xyz, r2.xzwx, r3.zzzz, v5.xyzx
    add r9.xyz, r9.xyzx, -cb12[172].yzwy
    dp3 r3.z, r9.xyzx, r9.xyzx
    rsq r3.z, r3.z
    mul r9.xyw, r3.zzzz, r9.xyxz
    lt r3.w, r9.w, l(0.000000)
    and r4.w, r3.w, l(1)
    mul r10.xyzw, r9.xyxy, l(0.500000, -0.500000, -0.500000, 0.500000)
    mad r6.y, -r9.z, r3.z, l(1.000000)
    rcp r6.y, r6.y
    max r6.y, r6.y, l(-340282346638528859811704183484516925440.000000)
    min r6.y, r6.y, l(340282346638528859811704183484516925440.000000)
    mad r6.yz, r10.xxyx, r6.yyyy, l(0.000000, 0.500000, 0.500000, 0.000000)
    mad r3.z, r9.z, r3.z, l(1.000000)
    rcp r3.z, r3.z
    max r3.z, r3.z, l(-340282346638528859811704183484516925440.000000)
    min r3.z, r3.z, l(340282346638528859811704183484516925440.000000)
    mad r9.xy, r10.zwzz, r3.zzzz, l(0.500000, 0.500000, 0.000000, 0.000000)
    movc r3.zw, r3.wwww, r6.yyyz, r9.xxxy
    mad r3.zw, r3.zzzw, l(0.000000, 0.000000, 0.666666627, 0.666666627), l(0.000000, 0.000000, 0.166666672, 0.166666672)
    itof r9.y, cb12[183].x
    itof r9.z, r4.w
    mov r9.xw, l(0,0,0,0)
    add r3.zw, r3.zzzw, r9.zzzw
    add r3.zw, r3.zzzw, r9.xxxy
    mul r3.zw, r3.zzzw, l(0.000000, 0.000000, 0.500000, 0.142857149)
    sample_l_indexable(texture2d)(float,float,float,float) r9.xyz, r3.zwzz, t23.xyzw, s11, r0.x
    mad r5.xyz, r0.wwww, r9.xyzx, r5.xyzx
  endif
endif
lt r0.w, r0.z, l(0.999000)
if_nz r0.w
  add r0.w, -r0.z, l(1.000000)
  mul r3.z, r0.w, cb12[100].x
  mad r0.z, r0.w, cb12[100].x, r0.z
  mul r0.w, r3.z, cb12[106].x
  itof r3.z, cb12[111].x
  mad r3.y, r3.z, l(0.142857149), r3.y
  sample_l_indexable(texture2d)(float,float,float,float) r3.xyz, r3.xyxx, t22.xyzw, s11, l(0.000000)
  mad r4.xyz, r0.wwww, r3.xyzx, r4.xyzx
  lt r3.x, r2.w, l(0.000000)
  and r3.y, r3.x, l(1)
  mul r9.xyzw, r2.xzxz, l(0.500000, -0.500000, -0.500000, 0.500000)
  add r2.x, -r2.w, l(1.000000)
  rcp r2.x, r2.x
  max r2.x, r2.x, l(-340282346638528859811704183484516925440.000000)
  min r2.x, r2.x, l(340282346638528859811704183484516925440.000000)
  mad r2.xz, r9.xxyx, r2.xxxx, l(0.500000, 0.000000, 0.500000, 0.000000)
  add r2.w, r2.w, l(1.000000)
  rcp r2.w, r2.w
  max r2.w, r2.w, l(-340282346638528859811704183484516925440.000000)
  min r2.w, r2.w, l(340282346638528859811704183484516925440.000000)
  mad r3.zw, r9.zzzw, r2.wwww, l(0.000000, 0.000000, 0.500000, 0.500000)
  movc r2.xz, r3.xxxx, r2.xxzx, r3.zzwz
  mad r2.xz, r2.xxzx, l(0.666666627, 0.000000, 0.666666627, 0.000000), l(0.166666672, 0.000000, 0.166666672, 0.000000)
  itof r9.y, cb12[111].x
  itof r9.z, r3.y
  mov r9.xw, l(0,0,0,0)
  add r2.xz, r2.xxzx, r9.zzwz
  add r2.xz, r2.xxzx, r9.xxyx
  mul r2.xz, r2.xxzx, l(0.500000, 0.000000, 0.142857149, 0.000000)
  sample_l_indexable(texture2d)(float,float,float,float) r2.xzw, r2.xzxx, t23.xwyz, s11, r0.x
  mad r5.xyz, r0.wwww, r2.xzwx, r5.xyzx
endif
div r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
mul r2.xzw, r0.xxxx, r4.xxyz
mul r0.xzw, r0.xxxx, r5.xxyz
lt r3.x, l(0.000000), cb12[74].x
movc r0.xzw, r3.xxxx, l(0,0,0,0), r0.xxzw
add r3.y, -cb2[16].y, |cb2[16].x|
mad r3.yzw, r8.xxyz, r3.yyyy, cb2[16].yyyy
add r4.x, -cb2[16].w, cb2[16].z
mad r4.xyz, r8.xyzx, r4.xxxx, cb2[16].wwww
mul r2.xzw, r2.xxzw, r3.yyzw
mul r0.xzw, r0.xxzw, r4.xxyz
dp2 r3.y, r7.xyxx, r7.xyxx
sqrt r3.y, r3.y
mad_sat r3.y, r3.y, cb12[219].x, cb12[219].y
add r3.z, cb12[185].z, l(-1.000000)
mad r3.y, r3.y, r3.z, l(1.000000)
add r3.z, -cb12[184].y, cb12[184].x
mad r4.xyz, r8.xyzx, r3.zzzz, cb12[184].yyyy
mul r4.xyz, r3.yyyy, r4.xyzx
add r3.z, -cb12[185].y, cb12[185].x
mad r5.xyz, r8.xyzx, r3.zzzz, cb12[185].yyyy
mul r3.yzw, r3.yyyy, r5.xxyz
movc r3.yzw, r3.xxxx, l(0,1.000000,1.000000,1.000000), r3.yyzw
mul r5.xyz, r14.xyzx, cb12[184].zzzz
mul r8.xyz, r15.xyzx, cb12[184].wwww
mul r2.xzw, r2.xxzw, r4.xxyz
max r4.x, |r11.z|, |r11.z|
add r4.x, -r4.x, l(1.000000)
max r4.x, r4.x, l(0.000000)
mul r4.y, r4.x, r4.x
mul r4.y, r4.y, r4.y
mul r4.x, r4.x, r4.y
min r4.y, cb13[56].y, l(1.000000)
mul r4.y, r6.w, r4.y
mul r4.x, r4.x, r4.y
div r4.x, r4.x, r11.y
add r2.y, r2.y, r4.x
add r4.x, -r2.y, l(1.000000)
mul r2.xzw, r2.xxzw, r4.xxxx
mul r0.xzw, r0.xxzw, r3.yyzw
mul r0.xzw, r2.yyyy, r0.xxzw
add r2.y, cb12[69].y, cb12[69].x
lt r0.y, r0.y, l(0.990000)
movc r0.y, r0.y, cb12[271].w, l(1.000000)
mul r4.xyzw, r0.yyyy, cb12[272].xyzw
log r0.y, r6.x
mul r3.yz, r0.yyyy, r4.xxyx
exp r3.yz, r3.yyzy
log r0.y, r2.y
mul r4.xy, r0.yyyy, r4.zwzz
exp r4.xy, r4.xyxx
mul r4.xzw, r4.xxxx, r5.xxyz
mul r5.xyz, r4.yyyy, r8.xyzx
mad r2.xyz, r2.xzwx, r3.yyyy, r4.xzwx
mad r1.xyz, r1.xyzx, r2.xyzx, r5.xyzx
mad r0.xyz, r0.xzwx, r3.zzzz, r1.xyzx
movc r0.xyz, r3.xxxx, r1.xyzx, r0.xyzx
div r1.xyz, r7.xyzx, r5.wwww
add r0.w, r5.w, -cb12[22].z
max r0.w, r0.w, l(0.000000)
min r0.w, r0.w, cb12[42].z
dp3 r1.x, cb12[38].xyzx, r1.xyzx
ieq r1.y, cb12[271].z, l(2)
lt r2.x, l(0.000000), r1.x
and r2.y, r2.x, l(1)
movc r1.y, r1.y, l(0), r2.y
movc r1.y, cb12[271].z, r1.y, l(1)
mul r2.y, |r1.x|, |r1.x|
mad_sat r2.z, r0.w, l(0.002000), l(-0.300000)
movc r1.y, r1.y, r2.z, l(1.000000)
mul r1.y, r1.y, r2.y
movc r2.yzw, r2.xxxx, cb12[39].xxyz, cb12[41].xxyz
add r2.yzw, r2.yyzw, -cb12[40].xxyz
mad r2.yzw, r1.yyyy, r2.yyzw, cb12[40].xxyz
movc r3.xyz, r2.xxxx, cb12[45].xyzx, cb12[47].xyzx
add r3.xyz, r3.xyzx, -cb12[46].xyzx
mad r3.xyz, r1.yyyy, r3.xyzx, cb12[46].xyzx
ge r1.y, r0.w, cb12[48].y
if_nz r1.y
  mad r1.y, r1.z, cb12[22].z, cb12[0].z
  mul r1.z, r0.w, r1.z
  mul r1.z, r1.z, l(0.062500)
  mul r2.x, r0.w, cb12[43].x
  mul r2.x, r2.x, l(0.062500)
  add r1.x, r1.x, cb12[42].x
  add r3.w, cb12[42].x, l(1.000000)
  div_sat r1.x, r1.x, r3.w
  add r3.w, -cb12[43].z, cb12[43].y
  mad r1.x, r1.x, r3.w, cb12[43].z
  add r1.y, r1.y, cb12[42].y
  mul r3.w, r1.x, r1.y
  mul r1.z, r1.x, r1.z
  mad r4.xyzw, r1.zzzz, l(16.000000, 15.000000, 14.000000, 13.000000), r3.wwww
  max r4.xyzw, r4.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  add r4.xyzw, r4.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  div_sat r4.xyzw, r2.xxxx, r4.xyzw
  add r4.xyzw, -r4.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  mul r4.x, r4.y, r4.x
  mul r4.x, r4.z, r4.x
  mul r4.x, r4.w, r4.x
  mad r5.xyzw, r1.zzzz, l(12.000000, 11.000000, 10.000000, 9.000000), r3.wwww
  max r5.xyzw, r5.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  add r5.xyzw, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  div_sat r5.xyzw, r2.xxxx, r5.xyzw
  add r5.xyzw, -r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  mul r4.x, r4.x, r5.x
  mul r4.x, r5.y, r4.x
  mul r4.x, r5.z, r4.x
  mul r4.x, r5.w, r4.x
  mad r5.xyzw, r1.zzzz, l(8.000000, 7.000000, 6.000000, 5.000000), r3.wwww
  max r5.xyzw, r5.xyzw, l(0.000000, 0.000000, 0.000000, 0.000000)
  add r5.xyzw, r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  div_sat r5.xyzw, r2.xxxx, r5.xyzw
  add r5.xyzw, -r5.xyzw, l(1.000000, 1.000000, 1.000000, 1.000000)
  mul r4.x, r4.x, r5.x
  mul r4.x, r5.y, r4.x
  mul r4.x, r5.z, r4.x
  mul r4.x, r5.w, r4.x
  mad r4.yz, r1.zzzz, l(0.000000, 4.000000, 3.000000, 0.000000), r3.wwww
  max r4.yz, r4.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000)
  add r4.yz, r4.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000)
  div_sat r4.yz, r2.xxxx, r4.yyzy
  add r4.yz, -r4.yyzy, l(0.000000, 1.000000, 1.000000, 0.000000)
  mul r4.x, r4.y, r4.x
  mul r4.x, r4.z, r4.x
  mad r3.w, r1.z, l(2.000000), r3.w
  max r3.w, r3.w, l(0.000000)
  add r3.w, r3.w, l(1.000000)
  div_sat r3.w, r2.x, r3.w
  add r3.w, -r3.w, l(1.000000)
  mul r3.w, r3.w, r4.x
  mad r1.x, r1.y, r1.x, r1.z
  max r1.x, r1.x, l(0.000000)
  add r1.x, r1.x, l(1.000000)
  div_sat r1.x, r2.x, r1.x
  add r1.x, -r1.x, l(1.000000)
  mad r1.x, -r3.w, r1.x, l(1.000000)
  add r0.w, r0.w, -cb12[48].y
  mul_sat r0.w, r0.w, cb12[48].z
else
  mov r1.x, l(1.000000)
  mov r0.w, l(0)
endif
log r1.x, r1.x
mul r1.y, r1.x, cb12[42].w
exp r1.y, r1.y
mul r1.y, r0.w, r1.y
mul r1.x, r1.x, cb12[48].x
exp r1.x, r1.x
mul r0.w, r0.w, r1.x
mad_sat r1.xz, r1.yyyy, cb12[190].xxzx, cb12[190].yywy
add r4.xyz, -r2.yzwy, cb12[189].xyzx
mad r4.xyz, r1.xxxx, r4.xyzx, r2.yzwy
add r1.x, cb12[189].w, l(-1.000000)
mad r1.x, r1.z, r1.x, l(1.000000)
mul_sat r4.w, r1.x, r1.y
lt r1.x, l(0.000000), cb12[193].x
if_nz r1.x
  mad_sat r1.xz, r1.yyyy, cb12[192].xxzx, cb12[192].yywy
  add r5.xyz, -r2.yzwy, cb12[191].xyzx
  mad r2.xyz, r1.xxxx, r5.xyzx, r2.yzwy
  add r1.x, cb12[191].w, l(-1.000000)
  mad r1.x, r1.z, r1.x, l(1.000000)
  mul_sat r2.w, r1.x, r1.y
  add r2.xyzw, -r4.xyzw, r2.xyzw
  mad r4.xyzw, cb12[193].xxxx, r2.xyzw, r4.xyzw
endif
dp3 r1.x, l(0.333000, 0.555000, 0.222000, 0.000000), r0.xyzx
mad r1.xyz, r1.xxxx, r3.xyzx, -r0.xyzx
mad r0.xyz, r0.wwww, r1.xyzx, r0.xyzx
add r1.xyz, -r0.xyzx, r4.xyzx
mad r0.xyz, r4.wwww, r1.xyzx, r0.xyzx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r1.xyz, r0.wwww, r0.xyzx
dp3 r0.w, r0.xyzx, l(0.299000, 0.587000, 0.114000, 0.000000)
mad_sat r0.w, cb4[7].x, r0.w, r1.w
min r1.xyz, r0.xyzx, r1.xyzx
add r0.xyz, r0.xyzx, -r1.xyzx
mad r0.xyz, r1.wwww, r0.xyzx, r1.xyzx
mul r0.xyz, r0.xyzx, cb2[2].xyzx
mul r0.w, r0.w, cb2[2].w
dp3 r1.x, l(0.333000, 0.555000, 0.222000, 0.000000), r0.xyzx
mad r1.xyz, r1.xxxx, v0.xyzx, -r0.xyzx
mad r0.xyz, v0.wwww, r1.xyzx, r0.xyzx
add r1.xyz, -r0.xyzx, v1.xyzx
mad r0.xyz, v1.wwww, r1.xyzx, r0.xyzx
mov_sat o0.w, r0.w
mul o0.xyz, r0.wwww, r0.xyzx
ret
// Approximately 0 instruction slots used

///////////////////////////////// HLSL Code /////////////////////////////////
// // ---- Created with 3Dmigoto v1.3.16 on Sun Dec 18 18:27:23 2022
// Texture2D<float4> t24 : register(t24);
//
// Texture2D<float4> t23 : register(t23);
//
// Texture2D<float4> t22 : register(t22);
//
// Texture2DArray<float4> t19 : register(t19);
//
// Texture2DArray<float4> t14 : register(t14);
//
// TextureCubeArray<float4> t10 : register(t10);
//
// Texture2DArray<float4> t9 : register(t9);
//
// Texture2DArray<float4> t8 : register(t8);
//
// Texture2D<float4> t1 : register(t1);
//
// Texture2D<float4> t0 : register(t0);
//
// SamplerState s14_s : register(s14);
//
// SamplerState s11_s : register(s11);
//
// SamplerState s10_s : register(s10);
//
// SamplerComparisonState s9_s : register(s9);
//
// SamplerState s0_s : register(s0);
//
// cbuffer cb13 : register(b13)
// {
//   float4 cb13[3323];
// }
//
// cbuffer cb4 : register(b4)
// {
//   float4 cb4[8];
// }
//
// cbuffer cb12 : register(b12)
// {
//   float4 cb12[273];
// }
//
// cbuffer cb2 : register(b2)
// {
//   float4 cb2[17];
// }
//
//
//
//
// // 3Dmigoto declarations
// #define cmp -
// Texture1D<float4> IniParams : register(t120);
// Texture2D<float4> StereoParams : register(t125);
//
//
// void main(
//   float4 v0 : TEXCOORD0,
//   float4 v1 : TEXCOORD1,
//   float4 v2 : TEXCOORD2,
//   float4 v3 : TEXCOORD3,
//   float4 v4 : TEXCOORD4,
//   float4 v5 : TEXCOORD5,
//   float4 v6 : TEXCOORD6,
//   float4 v7 : TEXCOORD7,
//   float4 v8 : TEXCOORD8,
//   float4 v9 : SV_Position0,
//   out float4 o0 : SV_Target0)
// {
//   const float4 icb[] = { { 1.000000, 0, 0, 0},
//                               { 0, 1.000000, 0, 0},
//                               { 0, 0, 1.000000, 0},
//                               { 0, 0, 0, 1.000000} };
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_resource_raw t20
// // Needs manual fix for instruction:
// // unknown dcl_: dcl_resource_raw t21
//   float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16,r17,r18,r19,r20,r21,r22,r23;
//   uint4 bitmask, uiDest;
//   float4 fDest;
//
//   r0.xyzw = t0.Sample(s0_s, v2.xy).xyzw;
//   r0.xyz = float3(-0.5,-0.5,-0.5) + r0.xyz;
//   r0.xyz = r0.xyz + r0.xyz;
//   r1.xyz = v4.xyz * r0.yyy;
//   r2.x = v2.w;
//   r2.y = v3.w;
//   r2.z = v4.w;
//   r1.xyz = v6.xyz * r0.xxx + r1.xyz;
//   r0.xyz = r2.xyz * r0.zzz + r1.xyz;
//   r1.xyzw = t1.Sample(s0_s, v2.xy).xyzw;
//   r1.xyz = log2(r1.xyz);
//   r1.xyz = float3(2.20000005,2.20000005,2.20000005) * r1.xyz;
//   r1.xyz = exp2(r1.xyz);
//   r2.x = r1.x + r1.y;
//   r2.x = r2.x + r1.z;
//   r2.z = cb4[1].x + -1;
//   r2.yz = float2(0.333299994,0.5) * r2.xz;
//   r2.w = saturate(r2.z);
//   r2.x = r2.x * -0.666599989 + 1;
//   r2.x = r2.w * r2.x + r2.y;
//   r3.xyz = cb4[0].xyz * r1.xyz;
//   r3.xyz = saturate(float3(1.5,1.5,1.5) * r3.xyz);
//   r2.x = saturate(r2.x * abs(r2.z));
//   r2.yzw = r3.xyz + -r1.xyz;
//   r1.xyz = r2.xxx * r2.yzw + r1.xyz;
//   r1.w = min(cb4[2].x, r1.w);
//   r1.xyz = saturate(r1.xyz * r1.www);
//   r0.w = log2(r0.w);
//   r0.w = 2.20000005 * r0.w;
//   r0.w = exp2(r0.w);
//   r2.x = 1 + -r0.w;
//   r2.y = log2(cb4[3].x);
//   r2.y = 2.20000005 * r2.y;
//   r2.y = exp2(r2.y);
//   r2.z = r2.x * cb4[4].x + cb4[5].x;
//   r2.y = saturate(r2.y * r2.z);
//   r2.zw = (uint2)v9.xy;
//   r3.x = dot(r0.xyz, r0.xyz);
//   r3.x = rsqrt(r3.x);
//   r3.yzw = r3.xxx * r0.xyz;
//   r4.xyzw = (uint4)r2.zwzw >> int4(4,4,5,5);
//   r0.xy = (int2)cb12[24].xz;
//   r0.xy = mad((int2)r4.yw, (int2)r0.xy, (int2)r4.xz);
//   r0.x = (uint)r0.x << 8;
//   r4.xyz = cb12[0].xyz + -v5.xyz;
//   r4.w = dot(r4.xyz, r4.xyz);
//   r4.w = rsqrt(r4.w);
//   r5.xyz = r4.xyz * r4.www;
//   r6.xy = (int2)r2.zw ^ int2(2,2);
//   r6.zw = max((int2)-r2.zw, (int2)r2.zw);
//   r6.zw = (uint2)r6.zw >> int2(1,1);
//   r7.xy = -(int2)r6.zw;
//   r6.xy = (int2)r6.xy & int2(0x80000000,0x80000000);
//   r6.xy = r6.xy ? r7.xy : r6.zw;
//   r6.zw = float2(0,0);
//   r6.xy = t24.Load(r6.xyz).xy;
//   r7.xyz = -cb12[0].xyz + v5.xyz;
//   r5.w = dot(r7.xyz, r7.xyz);
//   r5.w = sqrt(r5.w);
//   r8.x = cb12[1].z;
//   r8.y = cb12[2].z;
//   r8.z = cb12[3].z;
//   r6.z = dot(r8.xyz, r7.xyz);
//   r6.w = 1 / cb12[21].y;
//   r6.w = r6.w * r5.w;
//   r6.z = r6.w / r6.z;
//   r6.z = -r6.z + r5.w;
//   r6.z = saturate(cb13[33].w * r6.z);
//   r6.z = cb13[33].z * r6.z;
//   r6.z = max(0.00100000005, r6.z);
//   r6.w = r5.w / cb13[34].z;
//   r7.w = cmp(r6.x < r6.y);
//   if (r7.w != 0) {
//     r7.w = cmp(r6.w < r6.x);
//     r8.x = cmp(r6.y < r6.w);
//     r8.y = cb13[34].z * r6.x + -cb13[34].x;
//     r8.y = saturate(-r8.y * cb13[34].y + 1);
//     r8.z = r6.w + -r6.x;
//     r8.z = cb13[34].z * r8.z;
//     r8.z = saturate(r8.z / r6.z);
//     r9.y = r8.y * r8.z;
//     r7.w = (int)r7.w | (int)r8.x;
//     r9.x = 1;
//     r8.xy = r7.ww ? float2(0,1) : r9.xy;
//   } else {
//     r7.w = cmp(r6.y < r6.x);
//     r8.zw = cmp(r6.wx < r6.yw);
//     r6.x = cb13[34].z * r6.x + -cb13[34].x;
//     r9.y = saturate(-r6.x * cb13[34].y + 1);
//     r6.x = r6.w + -r6.y;
//     r6.x = cb13[34].z * r6.x;
//     r6.x = saturate(r6.x / r6.z);
//     r9.w = 1 + -r6.x;
//     r9.xz = float2(1,1);
//     r6.xy = r8.ww ? r9.xy : r9.zw;
//     r6.xy = r8.zz ? float2(1,1) : r6.xy;
//     r8.xy = r7.ww ? r6.xy : float2(0,1);
//   }
//   r6.x = -r8.y * r8.x + 1;
//   r6.yz = (int2)r2.zw & int2(1,1);
//   r8.xy = r6.zz ? float2(1,3) : float2(2,0);
//   r6.w = r6.y ? r8.x : r8.y;
//   if (1 == 0) r8.x = 0; else if (1+1 < 32) {   r8.x = (uint)r2.z << (32-(1 + 1)); r8.x = (uint)r8.x >> (32-1);  } else r8.x = (uint)r2.z >> 1;
//   if (1 == 0) r8.y = 0; else if (1+1 < 32) {   r8.y = (uint)r2.w << (32-(1 + 1)); r8.y = (uint)r8.y >> (32-1);  } else r8.y = (uint)r2.w >> 1;
//   if (1 == 0) r8.z = 0; else if (1+2 < 32) {   r8.z = (uint)r2.z << (32-(1 + 2)); r8.z = (uint)r8.z >> (32-1);  } else r8.z = (uint)r2.z >> 2;
//   if (1 == 0) r8.w = 0; else if (1+2 < 32) {   r8.w = (uint)r2.w << (32-(1 + 2)); r8.w = (uint)r8.w >> (32-1);  } else r8.w = (uint)r2.w >> 2;
//   r9.xyzw = r8.yyww ? float4(1,3,1,3) : float4(2,0,2,0);
//   r8.xy = r8.xz ? r9.xz : r9.yw;
//   r6.w = (uint)r6.w << 4;
//   r6.w = mad((int)r8.x, 4, (int)r6.w);
//   r6.w = (int)r6.w + (int)r8.y;
//   r6.w = (int)r6.w;
//   r6.w = 0.5 + r6.w;
//   r7.w = 0.015625 * r6.w;
//   r8.xyz = cb12[2].xyz * v5.yyy;
//   r8.xyz = cb12[1].xyz * v5.xxx + r8.xyz;
//   r8.xyz = cb12[3].xyz * v5.zzz + r8.xyz;
//   r8.xyz = cb12[4].xyz + r8.xyz;
//   r6.w = -r6.w * 0.015625 + 1;
//   r8.w = 1;
//   r9.xzw = float3(0,0,0);
//   r10.xyzw = float4(0,0,0,0);
//   r11.x = 0;
//   while (true) {
//     r11.y = cmp((uint)r11.x >= 192);
//     if (r11.y != 0) break;
//     r11.y = mad((int)r0.y, 192, (int)r11.x);
//     r11.y = (uint)r11.y << 2;
//   // No code for instruction (needs manual fix):
//     ld_raw_indexable(raw_buffer)(mixed,mixed,mixed,mixed) r11.y, r11.y, t21.xxxx
//     r11.z = cmp((uint)r11.y >= 192);
//     if (r11.z != 0) {
//       break;
//     }
//     r11.y = (int)r11.y * 5;
//     r12.x = dot(r8.xyzw, cb13[r11.y+2363].xyzw);
//     r12.y = dot(r8.xyzw, cb13[r11.y+2364].xyzw);
//     r12.z = dot(r8.xyzw, cb13[r11.y+2365].xyzw);
//     r13.xyz = cmp(abs(r12.xyz) < float3(1,1,1));
//     r11.z = r13.y ? r13.x : 0;
//     r11.z = r13.z ? r11.z : 0;
//     if (r11.z != 0) {
//       r11.z = asuint(cb13[r11.y+2366].w) >> 16;
//       r11.z = (uint)r11.z;
//       r11.w = 0x0000ffff & asint(cb13[r11.y+2366].w);
//       r11.w = (uint)r11.w;
//       r11.zw = float2(1.52590219e-05,1.52590219e-05) * r11.zw;
//       r12.x = dot(r12.xyz, r12.xyz);
//       r12.x = sqrt(r12.x);
//       r12.x = 1 + -r12.x;
//       r12.x = max(0, r12.x);
//       r12.xy = cb13[r11.y+2367].wx * r12.xx;
//       r12.x = saturate(r12.x);
//       r12.z = cmp(-1.000000 == cb13[r11.y+2367].w);
//       r12.w = cmp(r11.z >= r6.w);
//       r9.y = r12.w ? 1.000000 : 0;
//       r11.z = cmp(r11.z >= r7.w);
//       r11.z = r11.z ? 1.000000 : 0;
//       r13.x = r11.w * r11.z;
//       r13.y = min(0.998037279, r12.y);
//       r13.zw = cb13[r11.y+2367].yz * r12.xx;
//       r12.xyzw = r12.zzzz ? r9.xyzw : r13.xyzw;
//       r10.xyzw = max(r10.xyzw, r12.xyzw);
//     }
//     r11.x = (int)r11.x + 1;
//   }
//   r0.y = r10.y * r10.y;
//   r6.w = cmp(0 < r10.x);
//   r7.w = r6.w ? 0 : 1;
//   r6.x = r6.x * r6.x;
//   r6.x = min(r7.w, r6.x);
//   r0.y = max(r6.x, r0.y);
//   r0.y = 1 + -r0.y;
//   r6.x = 1 + -r10.x;
//   r7.w = 1 + -cb13[33].y;
//   r6.x = r6.w ? r6.x : r7.w;
//   r8.xy = float2(1,1) + -r10.zw;
//   r6.x = min(r8.x, r6.x);
//   r6.x = r6.x + -r8.y;
//   r6.x = saturate(r0.y * r6.x + r8.y);
//   r0.y = saturate(1 + -r0.y);
//   r6.w = cmp(0 < asint(cb13[35].x));
//   if (r6.w != 0) {
//     r8.xy = -cb12[0].xy + v5.xy;
//     r6.w = dot(r8.xy, r8.xy);
//     r6.w = sqrt(r6.w);
//     r7.w = cmp(r6.w < cb13[36].y);
//     if (r7.w != 0) {
//       r7.w = cb13[37].z * r6.w;
//       r7.w = max(1, r7.w);
//       r7.w = cb13[36].x / r7.w;
//       r7.w = min(1, r7.w);
//       r6.w = cb13[36].z + r6.w;
//       r6.w = saturate(cb13[36].w * r6.w);
//       r8.y = 0;
//       r8.zw = float2(0,0);
//       r9.x = 0;
//       while (true) {
//         r9.y = cmp((int)r8.w >= asint(cb13[35].x));
//         r9.x = 0;
//         if (r9.y != 0) break;
//         r9.yz = -cb13[r8.w+39].xy + v5.xy;
//         r10.xy = cb13[r8.w+39].zw * r9.yz;
//         r9.yw = cmp(r10.xy >= float2(0,0));
//         r9.y = r9.w ? r9.y : 0;
//         r11.xy = cmp(float2(1,1) >= r10.xy);
//         r9.y = r9.y ? r11.x : 0;
//         r9.y = r11.y ? r9.y : 0;
//         if (r9.y != 0) {
//           r10.z = (int)r8.w;
//           r10.w = -r9.z * cb13[r8.w+39].w + 1;
//           r9.z = t19.SampleLevel(s10_s, r10.xwz, 0).x;
//           r9.z = cb13[38].x * r9.z + cb13[38].y;
//           r9.z = -v5.z + r9.z;
//           r9.z = -0.100000001 + r9.z;
//           r9.z = saturate(r9.z * r7.w);
//           r9.z = 1 + -r9.z;
//           r9.w = 1 + -r9.z;
//           r8.z = r6.w * r9.w + r9.z;
//           r9.x = -1;
//           break;
//         }
//         r8.x = (int)r8.w + 1;
//         r8.zw = r8.yx;
//         r9.x = r9.y;
//       }
//     } else {
//       r9.x = 0;
//     }
//   } else {
//     r9.x = 0;
//   }
//   r6.w = r9.x ? r8.z : 1;
//   r7.w = cmp(0 < r6.w);
//   if (r7.w != 0) {
//     r7.w = dot(r3.yzw, cb13[0].xyz);
//     r2.zw = (uint2)r2.zw;
//     r2.z = dot(r2.zw, float2(12.9898005,78.2330017));
//     r2.z = sin(r2.z);
//     r2.z = 43758.5469 * r2.z;
//     r2.z = frac(r2.z);
//     r2.z = 6.28318548 * r2.z;
//     r8.xyz = cb13[5].xyz * v5.yyy;
//     r8.xyz = cb13[4].xyz * v5.xxx + r8.xyz;
//     r8.xyz = cb13[6].xyz * v5.zzz + r8.xyz;
//     r8.xyz = cb13[7].xyz + r8.xyz;
//     r2.w = cmp(abs(r8.z) >= 0.999000013);
//     if (r2.w != 0) {
//       r8.w = 1;
//     }
//     if (r2.w == 0) {
//       r9.xyzw = -cb13[8].xyzw + r8.xxxx;
//       r10.xyzw = -cb13[9].xyzw + r8.yyyy;
//       r9.xyzw = max(abs(r10.xyzw), abs(r9.xyzw));
//       r10.xyzw = cmp(r9.xyzw < cb13[10].xyzw);
//       r10.xyzw = r10.xyzw ? float4(1,1,1,1) : 0;
//       r11.xyzw = cmp(float4(0.5,1.5,2.5,3.5) < cb13[15].zzzz);
//       r11.xyzw = r11.xyzw ? float4(1,1,1,1) : 0;
//       r2.w = dot(r10.xyzw, r11.xyzw);
//       r10.x = cmp(r2.w < 0.5);
//       if (r10.x != 0) {
//         r8.w = 1;
//       }
//       if (r10.x == 0) {
//         r9.xyzw = r9.xyzw / cb13[10].xyzw;
//         r11.xyzw = float4(1,1,1,1) + -cb13[17].xyzw;
//         r9.xyzw = -r11.xyzw + r9.xyzw;
//         r9.xyzw = saturate(r9.xyzw / cb13[17].xyzw);
//         r2.w = cb13[15].z + -r2.w;
//         r10.y = (int)r2.w;
//         r10.z = (int)cb13[15].z;
//         r10.z = (int)r10.z + -1;
//         r11.xy = cb13[r10.y+11].zz * float2(1,-1);
//         r11.xy = r8.xy * r11.xy + cb13[r10.y+11].xy;
//         r7.w = max(0, r7.w);
//         r7.w = sqrt(r7.w);
//         r7.w = 1 / r7.w;
//         r7.w = -1 + r7.w;
//         r7.w = max(1, r7.w);
//         r7.w = min(4, r7.w);
//         r11.z = trunc(r2.w);
//         r2.w = cb13[r10.y+11].w * r7.w;
//         r7.w = cmp(asint(cb13[18].x) >= 1);
//         if (r7.w != 0) {
//           sincos(r2.z, r8.x, r12.x);
//           r2.z = t8.SampleCmpLevelZero(s9_s, r11.xyz, r8.z).x;
//           r13.xyzw = float4(-0.263353914,0.0396538191,-0.717202425,0.368303299) * r2.wwww;
//           r12.y = r12.x;
//           r12.z = r8.x;
//           r12.x = -r8.x;
//           r14.xyzw = r12.yzxy * r13.xxyy;
//           r8.xy = r14.xy + r14.zw;
//           r14.xy = r11.xy + r8.xy;
//           r14.z = r11.z;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r12.yzxy * r13.zzww;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(-0.0199530609,-0.398839206,-0.440993786,-0.22101) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(0.220039204,0.294344813,-0.767565727,-0.148275301) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(-0.2381019,0.547106206,0.217303097,-0.134587899) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(-0.638777375,0.756133914,-0.1614144,0.977652073) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(0.215631902,0.612341285,0.232887506,0.945287228) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(-0.944064379,0.123607703,-0.740823686,-0.507682979) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(-0.411301911,-0.890596688,-0.248642907,-0.621399283) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(0.696784973,0.264493704,0.539436281,0.817321479) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(0.615120828,-0.149864003,0.0936533585,-0.78174752) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(0.276806712,-0.489596814,0.663918078,-0.600717187) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(0.388036907,-0.895089388,0.991614401,-0.0793915167) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r13.xy + r13.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r13.xyzw = float4(0.783184826,0.602934778,0.899860322,-0.398354292) * r2.wwww;
//           r15.xyzw = r13.xxyy * r12.yzxy;
//           r8.xy = r15.xy + r15.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r12.xyzw = r13.zzww * r12.yzxy;
//           r8.xy = r12.xy + r12.zw;
//           r14.xy = r11.xy + r8.xy;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r14.xyz, r8.z).x;
//           r2.z = r7.w + r2.z;
//           r2.z = 0.0370370373 * r2.z;
//           r2.z = r2.z * r2.z;
//         } else {
//           r7.w = t8.SampleCmpLevelZero(s9_s, r11.xyz, r8.z).x;
//           r12.xyzw = r2.wwww * float4(-0.507720828,-0.617089927,-0.0515490212,-0.750809789) + r11.xyxy;
//           r13.xy = r12.xy;
//           r13.z = r11.z;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r13.xy = r12.zw;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r12.xyzw = r2.wwww * float4(-0.764104187,0.200915202,0.00728477398,-0.205946997) + r11.xyxy;
//           r13.xy = r12.xy;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r13.xy = r12.zw;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r12.xyzw = r2.wwww * float4(-0.366203994,0.732379675,-0.923958182,-0.255964309) + r11.xyxy;
//           r13.xy = r12.xy;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r13.xy = r12.zw;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r12.xyzw = r2.wwww * float4(-0.286924005,0.278052986,0.772301197,0.157332897) + r11.xyxy;
//           r13.xy = r12.xy;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r13.xy = r12.zw;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r12.xyzw = r2.wwww * float4(0.378513008,0.405219913,0.463021696,-0.691461921) + r11.xyxy;
//           r13.xy = r12.xy;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r13.xy = r12.zw;
//           r8.x = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r7.w = r8.x + r7.w;
//           r12.xyzw = r2.wwww * float4(0.423523009,0.86302799,0.855864286,-0.338255405) + r11.xyxy;
//           r13.xy = r12.xy;
//           r2.w = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r2.w = r7.w + r2.w;
//           r13.xy = r12.zw;
//           r7.w = t8.SampleCmpLevelZero(s9_s, r13.xyz, r8.z).x;
//           r2.w = r7.w + r2.w;
//           r2.w = 0.0769230798 * r2.w;
//           r2.z = r2.w * r2.w;
//         }
//         r2.w = (int)r10.z;
//         r2.w = cmp(r11.z >= r2.w);
//         r2.w = r2.w ? 1.000000 : 0;
//         r7.w = dot(r9.xyzw, icb[r10.z+0].xyzw);
//         r2.z = r2.w * r7.w + r2.z;
//         r2.z = min(1, r2.z);
//       } else {
//         r2.z = 1;
//       }
//       r8.w = r10.x ? r8.w : r2.z;
//     }
//     r2.z = r8.w * r6.w;
//     r2.w = 20 * cb12[66].x;
//     r8.zw = trunc(cb12[68].xy);
//     r9.xy = cb12[67].xy;
//     r9.z = 0;
//     r9.xyz = v5.xyz + r9.xyz;
//     r9.xyz = float3(0.00999999978,0.00999999978,0.00999999978) * r9.xyz;
//     r9.xyz = r9.xyz / cb12[66].xxx;
//     r10.xy = float2(20,20) * cb12[67].xy;
//     r10.z = 0;
//     r10.xyz = v5.xyz + r10.xyz;
//     r10.xyz = float3(0.00999999978,0.00999999978,0.00999999978) * r10.xyz;
//     r10.xyz = r10.xyz / r2.www;
//     r9.zw = cb13[0].xy * r9.zz;
//     r9.zw = r9.zw / cb13[0].zz;
//     r8.xy = r9.xy + -r9.zw;
//     r9.xy = cb13[0].xy * r10.zz;
//     r9.xy = r9.xy / cb13[0].zz;
//     r9.xy = r10.xy + -r9.xy;
//     r2.w = t14.SampleLevel(s14_s, r8.xyz, 1).x;
//     r7.w = t14.SampleLevel(s14_s, r8.xyw, 1).x;
//     r7.w = r7.w + -r2.w;
//     r2.w = cb12[66].w * r7.w + r2.w;
//     r9.zw = r8.zw;
//     r7.w = t14.SampleLevel(s14_s, r9.xyz, 1).x;
//     r8.x = t14.SampleLevel(s14_s, r9.xyw, 1).x;
//     r8.x = r8.x + -r7.w;
//     r7.w = cb12[66].w * r8.x + r7.w;
//     r8.x = -0.25 + cb13[0].z;
//     r8.y = -100 + r5.w;
//     r8.xy = saturate(float2(10,0.00666666683) * r8.xy);
//     r7.w = r7.w + -r2.w;
//     r2.w = r8.y * r7.w + r2.w;
//     r2.w = -r8.x * r2.w + 1;
//     r6.w = r2.z * r2.w;
//   }
//   r2.z = cmp(0 < r6.w);
//   if (r2.z != 0) {
//     r2.z = dot(cb13[0].xyz, r3.yzw);
//     r8.xyz = saturate(r2.zzz);
//     r2.w = cb4[6].x + r8.z;
//     r2.w = cmp(0 < r2.w);
//     if (r2.w != 0) {
//       r9.xyz = r4.xyz * r4.www + cb13[0].xyz;
//       r2.w = dot(r9.xyz, r9.xyz);
//       r2.w = rsqrt(r2.w);
//       r9.xyz = r9.xyz * r2.www;
//       r2.w = dot(r9.xyz, r5.xyz);
//       r2.w = 1 + -abs(r2.w);
//       r2.w = max(0, r2.w);
//       r7.w = r2.w * r2.w;
//       r7.w = r7.w * r7.w;
//       r2.w = r7.w * r2.w;
//       r7.w = 1 + -r2.y;
//       r8.w = cb13[56].x * r7.w;
//       r2.w = r8.w * r2.w;
//       r8.w = 1 + cb13[56].z;
//       r8.w = -cb13[56].z * r2.x + r8.w;
//       r2.w = r2.w / r8.w;
//       r2.w = r2.y + r2.w;
//       r8.w = 1 + -r2.w;
//       r8.w = r8.z * r8.w;
//       r10.xyz = float3(0.318309873,0.318309873,0.318309873) * r8.www;
//       r8.w = cmp(0 < cb4[6].x);
//       if (r8.w != 0) {
//         r8.w = 1 + r2.z;
//         r8.w = 0.5 * r8.w;
//         r9.w = dot(cb13[0].xyz, -r5.xyz);
//         r9.w = 1 + r9.w;
//         r9.w = 0.5 * r9.w;
//         r10.w = dot(r3.yzw, -r5.xyz);
//         r10.w = 1 + r10.w;
//         r10.w = cb12[36].w * r10.w;
//         r9.w = r9.w * r9.w;
//         r10.w = 0.5 * r10.w;
//         r9.w = r9.w * r9.w + -r8.w;
//         r8.w = cb12[36].x * r9.w + r8.w;
//         r8.w = r10.w * r8.w;
//         r9.w = cb4[6].x * cb12[36].y;
//         r7.w = cb12[36].z * r7.w + -r10.z;
//         r7.w = r9.w * r7.w + r10.z;
//         r10.xyz = r8.www * cb4[6].xxx + r7.www;
//       }
//       r11.xy = -cb12[0].xy + v5.xy;
//       r7.w = dot(r11.xy, r11.xy);
//       r7.w = sqrt(r7.w);
//       r8.w = saturate(v5.z * cb12[219].z + cb12[219].w);
//       r11.xyz = -cb13[52].xyz + cb13[51].xyz;
//       r11.xyz = r8.www * r11.xyz + cb13[52].xyz;
//       r7.w = saturate(r7.w * cb12[219].x + cb12[219].y);
//       r11.xyz = -cb13[1].xyz + r11.xyz;
//       r11.xyz = r7.www * r11.xyz + cb13[1].xyz;
//       r10.xyz = r10.xyz * r6.www;
//       r10.xyz = r10.xyz * r11.xyz;
//       r2.z = cmp(0 < r2.z);
//       if (r2.z != 0) {
//         r2.z = saturate(dot(r3.yzw, r9.xyz));
//         r7.w = dot(r3.yzw, r5.xyz);
//         r8.w = r0.w * r0.w;
//         r9.x = r8.w * r8.w;
//         r2.z = r2.z * r2.z;
//         r8.w = r8.w * r8.w + -1;
//         r2.z = r2.z * r8.w + 1;
//         r2.z = r2.z * r2.z;
//         r2.z = 3.14152002 * r2.z;
//         r2.z = r9.x / r2.z;
//         r8.w = 1 + r0.w;
//         r8.w = r8.w * r8.w;
//         r9.x = 0.125 * r8.w;
//         r8.w = -r8.w * 0.125 + 1;
//         r9.y = r8.z * r8.w + r9.x;
//         r9.y = r8.z / r9.y;
//         r8.w = abs(r7.w) * r8.w + r9.x;
//         r8.w = abs(r7.w) / r8.w;
//         r8.w = r9.y * r8.w;
//         r2.z = r8.w * r2.z;
//         r2.z = r2.z * r2.w;
//         r2.w = r8.z * abs(r7.w);
//         r2.w = r2.w * 4 + 9.99999975e-05;
//         r2.z = r2.z / r2.w;
//         r9.xyz = r2.zzz * r8.zzz;
//       } else {
//         r9.xyz = float3(0,0,0);
//       }
//       r9.xyz = r9.xyz * r6.www;
//       r9.xyz = r9.xyz * r11.xyz;
//     } else {
//       r8.xyz = float3(0,0,0);
//       r10.xyz = float3(0,0,0);
//       r9.xyz = float3(0,0,0);
//     }
//   } else {
//     r8.xyz = float3(0,0,0);
//     r10.xyz = float3(0,0,0);
//     r9.xyz = float3(0,0,0);
//   }
//   r8.xyz = min(r8.xyz, r6.www);
//   r2.z = cmp(r0.y == 1.000000);
//   r2.w = cmp(cb2[16].x < 0);
//   r2.w = r2.w ? 1 : cb12[71].x;
//   r6.w = 1 + -r2.y;
//   r7.w = cb13[56].x * r6.w;
//   r11.xy = float2(1,1) + cb13[56].zw;
//   r11.xy = -cb13[56].zw * r2.xx + r11.xy;
//   r2.x = cmp(0 < cb4[6].x);
//   r8.w = dot(r3.yzw, -r5.xyz);
//   r9.w = 1 + r8.w;
//   r9.w = cb12[36].w * r9.w;
//   r9.w = 0.5 * r9.w;
//   r10.w = cb4[6].x * cb12[36].y;
//   r11.z = dot(r3.yzw, r5.xyz);
//   r11.w = r0.w * r0.w;
//   r12.x = r11.w * r11.w;
//   r12.y = r11.w * r11.w + -1;
//   r0.w = 1 + r0.w;
//   r0.w = r0.w * r0.w;
//   r12.z = 0.125 * r0.w;
//   r0.w = -r0.w * 0.125 + 1;
//   r12.w = abs(r11.z) * r0.w + r12.z;
//   r12.w = abs(r11.z) / r12.w;
//   r13.x = 4 * abs(r11.z);
//   r13.y = r2.z ? 1.000000 : 0;
//   r2.z = r2.z ? 0 : 1;
//   r14.xyz = r10.xyz;
//   r15.xyz = r9.xyz;
//   r13.z = 0;
//   while (true) {
//     r13.w = cmp((int)r13.z >= 256);
//     if (r13.w != 0) break;
//     r13.w = (int)r0.x + (int)r13.z;
//     r13.w = (uint)r13.w << 2;
//   // No code for instruction (needs manual fix):
//     ld_raw_indexable(raw_buffer)(mixed,mixed,mixed,mixed) r13.w, r13.w, t20.xxxx
//     r14.w = cmp((uint)r13.w >= 256);
//     if (r14.w != 0) {
//       break;
//     }
//     r13.w = (int)r13.w * 9;
//     r16.xyz = cb13[r13.w+58].xyz + -v5.xyz;
//     r14.w = dot(r16.xyz, r16.xyz);
//     r15.w = sqrt(r14.w);
//     r17.x = r15.w / cb13[r13.w+58].w;
//     r17.y = r17.x * r17.x;
//     r17.y = -r17.y * r17.y + 1;
//     r17.y = max(0, r17.y);
//     r17.y = r17.y * r17.y;
//     r18.xyz = int3(1,2048,4096) & asint(cb13[r13.w+61].www);
//     r17.z = cmp(0 < cb13[r13.w+63].z);
//     r17.w = cmp(0 < cb13[r13.w+64].x);
//     r18.w = r14.w * cb13[r13.w+63].x + 1;
//     r17.y = r17.y / r18.w;
//     if (r18.x != 0) {
//       r18.w = rsqrt(r14.w);
//       r19.xyz = r18.www * r16.xyz;
//       r18.w = dot(-r19.xyz, cb13[r13.w+60].xyz);
//       r18.w = saturate(r18.w * cb13[r13.w+62].y + cb13[r13.w+62].z);
//       r18.w = log2(r18.w);
//       r18.w = cb13[r13.w+62].w * r18.w;
//       r18.w = exp2(r18.w);
//       r17.y = r18.w * r17.y;
//     }
//     r18.w = cmp(0 < r17.y);
//     r17.z = r17.z ? r18.w : 0;
//     if (r17.z != 0) {
//       if (r18.x != 0) {
//         r19.xyz = -cb13[r13.w+58].xyz + v5.xyz;
//         r20.xyz = cb13[r13.w+65].zwy * cb13[r13.w+60].zxy;
//         r20.xyz = cb13[r13.w+60].yzx * cb13[r13.w+65].wyz + -r20.xyz;
//         r20.x = dot(r20.xyz, r19.xyz);
//         r20.y = dot(cb13[r13.w+65].yzw, r19.xyz);
//         r20.z = dot(cb13[r13.w+60].xyz, r19.xyz);
//         r20.w = cb13[r13.w+65].x;
//       } else {
//         r19.xyz = -cb13[r13.w+58].xzy + v5.xzy;
//         r21.xyz = r16.xyz / r15.www;
//         r15.w = max(abs(r21.y), abs(r21.z));
//         r15.w = cmp(r15.w < abs(r21.x));
//         if (r15.w != 0) {
//           r15.w = cmp(0 < r21.x);
//           r22.xyz = float3(1,1,-1) * r19.zyx;
//           r22.w = cb13[r13.w+65].x;
//           r23.xyz = float3(-1,1,1) * r19.zyx;
//           r23.w = cb13[r13.w+65].y;
//           r20.xyzw = r15.wwww ? r22.xyzw : r23.xyzw;
//         } else {
//           r15.w = max(abs(r21.x), abs(r21.z));
//           r15.w = cmp(r15.w < abs(r21.y));
//           if (r15.w != 0) {
//             r15.w = cmp(0 < r21.y);
//             r22.xyz = float3(-1,1,-1) * r19.xyz;
//             r22.w = cb13[r13.w+65].z;
//             r19.w = cb13[r13.w+65].w;
//             r20.xyzw = r15.wwww ? r22.xyzw : r19.xyzw;
//           } else {
//             r15.w = cmp(0 < r21.z);
//             r20.x = r19.x;
//             r20.y = r15.w ? r19.z : -r19.z;
//             r20.z = r15.w ? -r19.y : r19.y;
//             r20.w = r15.w ? cb13[r13.w+66].x : cb13[r13.w+66].y;
//           }
//         }
//       }
//       r19.xy = cb13[r13.w+63].yy * r20.xy;
//       r19.xy = r19.xy / r20.zz;
//       r19.xy = r19.xy * float2(0.5,-0.5) + float2(0.5,0.5);
//       bitmask.w = ((~(-1 << 10)) << 2) & 0xffffffff;  r15.w = (((uint)r20.w << 2) & bitmask.w) | ((uint)0 & ~bitmask.w);
//       r20.x = (uint)r15.w;
//       r21.xyz = (uint3)r20.www >> int3(10,20,30);
//       bitmask.z = ((~(-1 << 10)) << 2) & 0xffffffff;  r19.z = (((uint)r21.x << 2) & bitmask.z) | ((uint)0 & ~bitmask.z);
//       bitmask.w = ((~(-1 << 10)) << 2) & 0xffffffff;  r19.w = (((uint)r21.y << 2) & bitmask.w) | ((uint)0 & ~bitmask.w);
//       r20.yz = (uint2)r19.zw;
//       r21.z = (uint)r21.z;
//       r15.w = cmp(0 < r20.z);
//       if (r15.w != 0) {
//         r19.xy = r19.xy * r20.zz + r20.xy;
//         r21.xy = cb13[57].xx * r19.xy;
//         r15.w = t9.SampleLevel(s10_s, r21.xyz, 0).x;
//         r15.w = -r17.x * 0.99000001 + r15.w;
//         r15.w = 144.269501 * r15.w;
//         r15.w = exp2(r15.w);
//         r15.w = min(1, r15.w);
//       } else {
//         r15.w = 1;
//       }
//     } else {
//       r15.w = 1;
//     }
//     r17.z = r17.w ? r18.w : 0;
//     if (r17.z != 0) {
//       r16.w = cb13[r13.w+64].y;
//       r16.w = t10.SampleLevel(s10_s, r16.xyzw, 0).x;
//       r16.w = -r17.x * 0.99000001 + r16.w;
//       r16.w = 144.269501 * r16.w;
//       r16.w = exp2(r16.w);
//       r16.w = min(1, r16.w);
//       r15.w = r16.w * r15.w;
//     }
//     r15.w = -1 + r15.w;
//     r15.w = cb13[r13.w+60].w * r15.w + 1;
//     r15.w = r17.y * r15.w;
//     r16.w = r18.y ? 1 : r13.y;
//     r17.x = r18.z ? 1 : r2.z;
//     r16.w = r17.x * r16.w;
//     r15.w = r16.w * r15.w;
//     r16.w = cmp(0 < r15.w);
//     if (r16.w != 0) {
//       r16.w = 0x80000000 & asint(cb13[r13.w+61].w);
//       r16.w = r16.w ? r2.w : 1;
//       r15.w = r16.w * r15.w;
//       r14.w = rsqrt(r14.w);
//       r16.xyz = r16.xyz * r14.www;
//       r14.w = dot(r3.yzw, r16.xyz);
//       r16.w = saturate(r14.w);
//       r17.xyz = r4.xyz * r4.www + r16.xyz;
//       r17.w = dot(r17.xyz, r17.xyz);
//       r17.w = rsqrt(r17.w);
//       r17.xyz = r17.xyz * r17.www;
//       r17.w = dot(r17.xyz, r5.xyz);
//       r17.w = 1 + -abs(r17.w);
//       r17.w = max(0, r17.w);
//       r18.x = r17.w * r17.w;
//       r18.x = r18.x * r18.x;
//       r17.w = r18.x * r17.w;
//       r17.w = r17.w * r7.w;
//       r17.w = r17.w / r11.x;
//       r17.w = r17.w + r2.y;
//       r18.x = 1 + -r17.w;
//       r18.x = r18.x * r16.w;
//       r18.xyz = float3(0.318309873,0.318309873,0.318309873) * r18.xxx;
//       if (r2.x != 0) {
//         r18.w = 1 + r14.w;
//         r18.w = 0.5 * r18.w;
//         r16.x = dot(r16.xyz, -r5.xyz);
//         r16.x = 1 + r16.x;
//         r16.x = 0.5 * r16.x;
//         r16.x = r16.x * r16.x;
//         r16.x = r16.x * r16.x + -r18.w;
//         r16.x = cb12[36].x * r16.x + r18.w;
//         r16.x = r16.x * r9.w;
//         r16.y = cb12[36].z * r6.w + -r18.z;
//         r16.y = r10.w * r16.y + r18.z;
//         r18.xyz = r16.xxx * cb4[6].xxx + r16.yyy;
//       }
//       r16.xyz = cb13[r13.w+61].xyz * r18.xyz;
//       r14.xyz = r15.www * r16.xyz + r14.xyz;
//       r14.w = cmp(0 < r14.w);
//       if (r14.w != 0) {
//         r14.w = saturate(dot(r3.yzw, r17.xyz));
//         r14.w = r14.w * r14.w;
//         r14.w = r14.w * r12.y + 1;
//         r14.w = r14.w * r14.w;
//         r14.w = 3.14152002 * r14.w;
//         r14.w = r12.x / r14.w;
//         r16.x = r16.w * r0.w + r12.z;
//         r16.x = r16.w / r16.x;
//         r16.x = r16.x * r12.w;
//         r14.w = r16.x * r14.w;
//         r14.w = r14.w * r17.w;
//         r16.x = r13.x * r16.w + 9.99999975e-05;
//         r14.w = r14.w / r16.x;
//         r16.xyz = r14.www * r16.www;
//       } else {
//         r16.xyz = float3(0,0,0);
//       }
//       r16.xyz = cb13[r13.w+61].xyz * r16.xyz;
//       r15.xyz = r15.www * r16.xyz + r15.xyz;
//     }
//     r13.z = (int)r13.z + 1;
//   }
//   r0.x = r8.w + r8.w;
//   r2.xzw = r3.yzw * -r0.xxx + -r5.xyz;
//   r0.x = dot(r2.xzw, r2.xzw);
//   r0.x = rsqrt(r0.x);
//   r4.xyz = r2.xzw * r0.xxx;
//   r5.xyz = ddx_coarse(r4.xyz);
//   r9.xyz = ddy_coarse(r4.xyz);
//   r5.xyz = r6.yyy ? -r5.xyz : r5.xyz;
//   r9.xyz = r6.zzz ? -r9.xyz : r9.xyz;
//   r5.xyz = r2.xzw * r0.xxx + r5.xyz;
//   r0.w = dot(r5.xyz, r5.xyz);
//   r0.w = rsqrt(r0.w);
//   r5.xyz = r5.xyz * r0.www;
//   r0.w = dot(r4.xyz, r5.xyz);
//   r4.w = 1 + -abs(r0.w);
//   r4.w = sqrt(r4.w);
//   r5.x = abs(r0.w) * -0.0187292993 + 0.0742610022;
//   r5.x = r5.x * abs(r0.w) + -0.212114394;
//   r5.x = r5.x * abs(r0.w) + 1.57072878;
//   r5.y = r5.x * r4.w;
//   r5.y = r5.y * -2 + 3.14159274;
//   r0.w = cmp(r0.w < -r0.w);
//   r0.w = r0.w ? r5.y : 0;
//   r0.w = r5.x * r4.w + r0.w;
//   r0.w = 81.4873276 * r0.w;
//   r0.w = log2(r0.w);
//   r5.xyz = r2.xzw * r0.xxx + r9.xyz;
//   r0.x = dot(r5.xyz, r5.xyz);
//   r0.x = rsqrt(r0.x);
//   r5.xyz = r5.xyz * r0.xxx;
//   r0.x = dot(r4.xyz, r5.xyz);
//   r4.x = 1 + -abs(r0.x);
//   r4.x = sqrt(r4.x);
//   r4.y = abs(r0.x) * -0.0187292993 + 0.0742610022;
//   r4.y = r4.y * abs(r0.x) + -0.212114394;
//   r4.y = r4.y * abs(r0.x) + 1.57072878;
//   r4.z = r4.y * r4.x;
//   r4.z = r4.z * -2 + 3.14159274;
//   r0.x = cmp(r0.x < -r0.x);
//   r0.x = r0.x ? r4.z : 0;
//   r0.x = r4.y * r4.x + r0.x;
//   r0.x = 81.4873276 * r0.x;
//   r0.x = log2(r0.x);
//   r0.xw = max(float2(0,0), r0.xw);
//   r0.x = max(r0.w, r0.x);
//   r0.x = 0.625 * r0.x;
//   r0.w = 10.5 * r11.w;
//   r0.x = max(r0.w, r0.x);
//   r0.w = cmp(r3.w < 0);
//   r3.w = r0.w ? 0.000000 : 0;
//   r4.xyzw = float4(0.5,-0.5,-0.5,0.5) * r3.yzyz;
//   r3.y = -r0.z * r3.x + 1;
//   r3.y = rcp(r3.y);
//   r3.y = max(-3.40282347e+38, r3.y);
//   r3.y = min(3.40282347e+38, r3.y);
//   r3.yz = r4.xy * r3.yy + float2(0.5,0.5);
//   r0.z = r0.z * r3.x + 1;
//   r0.z = rcp(r0.z);
//   r0.z = max(-3.40282347e+38, r0.z);
//   r0.z = min(3.40282347e+38, r0.z);
//   r4.xy = r4.zw * r0.zz + float2(0.5,0.5);
//   r0.zw = r0.ww ? r3.yz : r4.xy;
//   r0.zw = r0.zw * float2(0.666666627,0.666666627) + float2(0.166666672,0.166666672);
//   r3.x = (int)r3.w;
//   r3.y = 0;
//   r0.zw = r3.xy + r0.zw;
//   r3.xy = float2(0.5,0.142857149) * r0.zw;
//   r4.xyz = cb12[115].xyz * v5.yyy;
//   r4.xyz = cb12[114].xyz * v5.xxx + r4.xyz;
//   r4.xyz = cb12[116].xyz * v5.zzz + r4.xyz;
//   r4.xyz = cb12[117].xyz + r4.xyz;
//   r4.xyz = float3(1,1,1) + -abs(r4.xyz);
//   r0.zw = asint(cb12[118].yy) & int2(1,2);
//   r0.z = r0.z ? 1 : r0.y;
//   r4.w = 1 + -r0.y;
//   r0.w = r0.w ? 1 : r4.w;
//   r0.z = r0.z * r0.w;
//   r5.xyz = cmp(float3(0,0,0) < r4.xyz);
//   r0.w = r5.y ? r5.x : 0;
//   r0.w = r5.z ? r0.w : 0;
//   r5.x = cmp(0 < r0.z);
//   r0.w = r5.x ? r0.w : 0;
//   if (r0.w != 0) {
//     r4.xyz = saturate(cb12[113].xyz * r4.xyz);
//     r0.z = cb12[112].x * r0.z;
//     r0.z = 0.999989986 * r0.z;
//     r0.w = r4.x * r4.y;
//     r0.w = r0.w * r4.z;
//     r4.x = r0.z * r0.w;
//     r0.z = r0.z * r0.w + 9.99999975e-06;
//     r0.w = cb12[118].x * r4.x;
//     r4.x = asint(cb12[123].x);
//     r3.z = r4.x * 0.142857149 + r3.y;
//     r4.xyz = t22.SampleLevel(s11_s, r3.xz, 0).xyz;
//     r4.xyz = r4.xyz * r0.www;
//     r5.xyz = cb12[120].xyz * r2.zzz;
//     r5.xyz = cb12[119].xyz * r2.xxx + r5.xyz;
//     r5.xyz = cb12[121].xyz * r2.www + r5.xyz;
//     r9.xyz = cb12[120].xyz * v5.yyy;
//     r9.xyz = cb12[119].xyz * v5.xxx + r9.xyz;
//     r9.xyz = cb12[121].xyz * v5.zzz + r9.xyz;
//     r9.xyz = cb12[122].xyz + r9.xyz;
//     r5.xyz = float3(1,1,1) / r5.xyz;
//     r10.xyz = -r9.xyz * r5.xyz + r5.xyz;
//     r5.xyz = -r9.xyz * r5.xyz + -r5.xyz;
//     r5.xyz = max(r10.xyz, r5.xyz);
//     r3.z = min(r5.y, r5.z);
//     r3.z = min(r5.x, r3.z);
//     r5.xyz = r2.xzw * r3.zzz + v5.xyz;
//     r5.xyz = -cb12[112].yzw + r5.xyz;
//     r3.z = dot(r5.xyz, r5.xyz);
//     r3.z = rsqrt(r3.z);
//     r9.xyz = r5.xyz * r3.zzz;
//     r5.x = cmp(r9.z < 0);
//     r5.y = r5.x ? 0.000000 : 0;
//     r9.xyzw = float4(0.5,-0.5,-0.5,0.5) * r9.xyxy;
//     r6.y = -r5.z * r3.z + 1;
//     r6.y = rcp(r6.y);
//     r6.y = max(-3.40282347e+38, r6.y);
//     r6.y = min(3.40282347e+38, r6.y);
//     r6.yz = r9.xy * r6.yy + float2(0.5,0.5);
//     r3.z = r5.z * r3.z + 1;
//     r3.z = rcp(r3.z);
//     r3.z = max(-3.40282347e+38, r3.z);
//     r3.z = min(3.40282347e+38, r3.z);
//     r9.xy = r9.zw * r3.zz + float2(0.5,0.5);
//     r5.xz = r5.xx ? r6.yz : r9.xy;
//     r5.xz = r5.xz * float2(0.666666627,0.666666627) + float2(0.166666672,0.166666672);
//     r9.y = asint(cb12[123].x);
//     r9.z = (int)r5.y;
//     r9.xw = float2(0,0);
//     r5.xy = r9.zw + r5.xz;
//     r5.xy = r9.xy + r5.xy;
//     r5.xy = float2(0.5,0.142857149) * r5.xy;
//     r5.xyz = t23.SampleLevel(s11_s, r5.xy, r0.x).xyz;
//     r5.xyz = r5.xyz * r0.www;
//   } else {
//     r4.xyz = float3(0,0,0);
//     r5.xyz = float3(0,0,0);
//     r0.z = 9.99999975e-06;
//   }
//   r0.w = cmp(r0.z < 0.999000013);
//   if (r0.w != 0) {
//     r9.xyz = cb12[127].xyz * v5.yyy;
//     r9.xyz = cb12[126].xyz * v5.xxx + r9.xyz;
//     r9.xyz = cb12[128].xyz * v5.zzz + r9.xyz;
//     r9.xyz = cb12[129].xyz + r9.xyz;
//     r9.xyz = float3(1,1,1) + -abs(r9.xyz);
//     r6.yz = asint(cb12[130].yy) & int2(1,2);
//     r3.z = r6.y ? 1 : r0.y;
//     r6.y = r6.z ? 1 : r4.w;
//     r3.z = r6.y * r3.z;
//     r10.xyz = cmp(float3(0,0,0) < r9.xyz);
//     r6.y = r10.y ? r10.x : 0;
//     r6.y = r10.z ? r6.y : 0;
//     r6.z = cmp(0 < r3.z);
//     r6.y = r6.z ? r6.y : 0;
//     if (r6.y != 0) {
//       r9.xyz = saturate(cb12[125].xyz * r9.xyz);
//       r6.y = 1 + -r0.z;
//       r3.z = r6.y * r3.z;
//       r3.z = cb12[124].x * r3.z;
//       r6.y = r9.x * r9.y;
//       r6.y = r6.y * r9.z;
//       r6.z = r6.y * r3.z;
//       r0.z = r3.z * r6.y + r0.z;
//       r3.z = cb12[130].x * r6.z;
//       r6.y = asint(cb12[135].x);
//       r3.w = r6.y * 0.142857149 + r3.y;
//       r9.xyz = t22.SampleLevel(s11_s, r3.xw, 0).xyz;
//       r4.xyz = r3.zzz * r9.xyz + r4.xyz;
//       r9.xyz = cb12[132].xyz * r2.zzz;
//       r9.xyz = cb12[131].xyz * r2.xxx + r9.xyz;
//       r9.xyz = cb12[133].xyz * r2.www + r9.xyz;
//       r10.xyz = cb12[132].xyz * v5.yyy;
//       r10.xyz = cb12[131].xyz * v5.xxx + r10.xyz;
//       r10.xyz = cb12[133].xyz * v5.zzz + r10.xyz;
//       r10.xyz = cb12[134].xyz + r10.xyz;
//       r9.xyz = float3(1,1,1) / r9.xyz;
//       r12.xyz = -r10.xyz * r9.xyz + r9.xyz;
//       r9.xyz = -r10.xyz * r9.xyz + -r9.xyz;
//       r9.xyz = max(r12.xyz, r9.xyz);
//       r3.w = min(r9.y, r9.z);
//       r3.w = min(r9.x, r3.w);
//       r9.xyz = r2.xzw * r3.www + v5.xyz;
//       r9.xyz = -cb12[124].yzw + r9.xyz;
//       r3.w = dot(r9.xyz, r9.xyz);
//       r3.w = rsqrt(r3.w);
//       r9.xyw = r9.xyz * r3.www;
//       r6.y = cmp(r9.w < 0);
//       r6.z = r6.y ? 0.000000 : 0;
//       r10.xyzw = float4(0.5,-0.5,-0.5,0.5) * r9.xyxy;
//       r7.w = -r9.z * r3.w + 1;
//       r7.w = rcp(r7.w);
//       r7.w = max(-3.40282347e+38, r7.w);
//       r7.w = min(3.40282347e+38, r7.w);
//       r9.xy = r10.xy * r7.ww + float2(0.5,0.5);
//       r3.w = r9.z * r3.w + 1;
//       r3.w = rcp(r3.w);
//       r3.w = max(-3.40282347e+38, r3.w);
//       r3.w = min(3.40282347e+38, r3.w);
//       r9.zw = r10.zw * r3.ww + float2(0.5,0.5);
//       r9.xy = r6.yy ? r9.xy : r9.zw;
//       r9.xy = r9.xy * float2(0.666666627,0.666666627) + float2(0.166666672,0.166666672);
//       r10.y = asint(cb12[135].x);
//       r10.z = (int)r6.z;
//       r10.xw = float2(0,0);
//       r6.yz = r10.zw + r9.xy;
//       r6.yz = r10.xy + r6.yz;
//       r6.yz = float2(0.5,0.142857149) * r6.yz;
//       r9.xyz = t23.SampleLevel(s11_s, r6.yz, r0.x).xyz;
//       r5.xyz = r3.zzz * r9.xyz + r5.xyz;
//     }
//   }
//   r3.z = cmp(r0.z < 0.999000013);
//   r0.w = r0.w ? r3.z : 0;
//   if (r0.w != 0) {
//     r9.xyz = cb12[139].xyz * v5.yyy;
//     r9.xyz = cb12[138].xyz * v5.xxx + r9.xyz;
//     r9.xyz = cb12[140].xyz * v5.zzz + r9.xyz;
//     r9.xyz = cb12[141].xyz + r9.xyz;
//     r9.xyz = float3(1,1,1) + -abs(r9.xyz);
//     r3.zw = asint(cb12[142].yy) & int2(1,2);
//     r3.z = r3.z ? 1 : r0.y;
//     r3.w = r3.w ? 1 : r4.w;
//     r3.z = r3.z * r3.w;
//     r10.xyz = cmp(float3(0,0,0) < r9.xyz);
//     r3.w = r10.y ? r10.x : 0;
//     r3.w = r10.z ? r3.w : 0;
//     r6.y = cmp(0 < r3.z);
//     r3.w = r6.y ? r3.w : 0;
//     if (r3.w != 0) {
//       r9.xyz = saturate(cb12[137].xyz * r9.xyz);
//       r3.w = 1 + -r0.z;
//       r3.z = r3.w * r3.z;
//       r3.z = cb12[136].x * r3.z;
//       r3.w = r9.x * r9.y;
//       r3.w = r3.w * r9.z;
//       r6.y = r3.z * r3.w;
//       r0.z = r3.z * r3.w + r0.z;
//       r3.z = cb12[142].x * r6.y;
//       r3.w = asint(cb12[147].x);
//       r9.y = r3.w * 0.142857149 + r3.y;
//       r9.x = r3.x;
//       r9.xyz = t22.SampleLevel(s11_s, r9.xy, 0).xyz;
//       r4.xyz = r3.zzz * r9.xyz + r4.xyz;
//       r9.xyz = cb12[144].xyz * r2.zzz;
//       r9.xyz = cb12[143].xyz * r2.xxx + r9.xyz;
//       r9.xyz = cb12[145].xyz * r2.www + r9.xyz;
//       r10.xyz = cb12[144].xyz * v5.yyy;
//       r10.xyz = cb12[143].xyz * v5.xxx + r10.xyz;
//       r10.xyz = cb12[145].xyz * v5.zzz + r10.xyz;
//       r10.xyz = cb12[146].xyz + r10.xyz;
//       r9.xyz = float3(1,1,1) / r9.xyz;
//       r12.xyz = -r10.xyz * r9.xyz + r9.xyz;
//       r9.xyz = -r10.xyz * r9.xyz + -r9.xyz;
//       r9.xyz = max(r12.xyz, r9.xyz);
//       r3.w = min(r9.y, r9.z);
//       r3.w = min(r9.x, r3.w);
//       r9.xyz = r2.xzw * r3.www + v5.xyz;
//       r9.xyz = -cb12[136].yzw + r9.xyz;
//       r3.w = dot(r9.xyz, r9.xyz);
//       r3.w = rsqrt(r3.w);
//       r9.xyw = r9.xyz * r3.www;
//       r6.y = cmp(r9.w < 0);
//       r6.z = r6.y ? 0.000000 : 0;
//       r10.xyzw = float4(0.5,-0.5,-0.5,0.5) * r9.xyxy;
//       r7.w = -r9.z * r3.w + 1;
//       r7.w = rcp(r7.w);
//       r7.w = max(-3.40282347e+38, r7.w);
//       r7.w = min(3.40282347e+38, r7.w);
//       r9.xy = r10.xy * r7.ww + float2(0.5,0.5);
//       r3.w = r9.z * r3.w + 1;
//       r3.w = rcp(r3.w);
//       r3.w = max(-3.40282347e+38, r3.w);
//       r3.w = min(3.40282347e+38, r3.w);
//       r9.zw = r10.zw * r3.ww + float2(0.5,0.5);
//       r9.xy = r6.yy ? r9.xy : r9.zw;
//       r9.xy = r9.xy * float2(0.666666627,0.666666627) + float2(0.166666672,0.166666672);
//       r10.y = asint(cb12[147].x);
//       r10.z = (int)r6.z;
//       r10.xw = float2(0,0);
//       r6.yz = r10.zw + r9.xy;
//       r6.yz = r10.xy + r6.yz;
//       r6.yz = float2(0.5,0.142857149) * r6.yz;
//       r9.xyz = t23.SampleLevel(s11_s, r6.yz, r0.x).xyz;
//       r5.xyz = r3.zzz * r9.xyz + r5.xyz;
//     }
//   }
//   r3.z = cmp(r0.z < 0.999000013);
//   r0.w = r0.w ? r3.z : 0;
//   if (r0.w != 0) {
//     r9.xyz = cb12[151].xyz * v5.yyy;
//     r9.xyz = cb12[150].xyz * v5.xxx + r9.xyz;
//     r9.xyz = cb12[152].xyz * v5.zzz + r9.xyz;
//     r9.xyz = cb12[153].xyz + r9.xyz;
//     r9.xyz = float3(1,1,1) + -abs(r9.xyz);
//     r3.zw = asint(cb12[154].yy) & int2(1,2);
//     r3.z = r3.z ? 1 : r0.y;
//     r3.w = r3.w ? 1 : r4.w;
//     r3.z = r3.z * r3.w;
//     r10.xyz = cmp(float3(0,0,0) < r9.xyz);
//     r3.w = r10.y ? r10.x : 0;
//     r3.w = r10.z ? r3.w : 0;
//     r6.y = cmp(0 < r3.z);
//     r3.w = r6.y ? r3.w : 0;
//     if (r3.w != 0) {
//       r9.xyz = saturate(cb12[149].xyz * r9.xyz);
//       r3.w = 1 + -r0.z;
//       r3.z = r3.w * r3.z;
//       r3.z = cb12[148].x * r3.z;
//       r3.w = r9.x * r9.y;
//       r3.w = r3.w * r9.z;
//       r6.y = r3.z * r3.w;
//       r0.z = r3.z * r3.w + r0.z;
//       r3.z = cb12[154].x * r6.y;
//       r3.w = asint(cb12[159].x);
//       r9.y = r3.w * 0.142857149 + r3.y;
//       r9.x = r3.x;
//       r9.xyz = t22.SampleLevel(s11_s, r9.xy, 0).xyz;
//       r4.xyz = r3.zzz * r9.xyz + r4.xyz;
//       r9.xyz = cb12[156].xyz * r2.zzz;
//       r9.xyz = cb12[155].xyz * r2.xxx + r9.xyz;
//       r9.xyz = cb12[157].xyz * r2.www + r9.xyz;
//       r10.xyz = cb12[156].xyz * v5.yyy;
//       r10.xyz = cb12[155].xyz * v5.xxx + r10.xyz;
//       r10.xyz = cb12[157].xyz * v5.zzz + r10.xyz;
//       r10.xyz = cb12[158].xyz + r10.xyz;
//       r9.xyz = float3(1,1,1) / r9.xyz;
//       r12.xyz = -r10.xyz * r9.xyz + r9.xyz;
//       r9.xyz = -r10.xyz * r9.xyz + -r9.xyz;
//       r9.xyz = max(r12.xyz, r9.xyz);
//       r3.w = min(r9.y, r9.z);
//       r3.w = min(r9.x, r3.w);
//       r9.xyz = r2.xzw * r3.www + v5.xyz;
//       r9.xyz = -cb12[148].yzw + r9.xyz;
//       r3.w = dot(r9.xyz, r9.xyz);
//       r3.w = rsqrt(r3.w);
//       r9.xyw = r9.xyz * r3.www;
//       r6.y = cmp(r9.w < 0);
//       r6.z = r6.y ? 0.000000 : 0;
//       r10.xyzw = float4(0.5,-0.5,-0.5,0.5) * r9.xyxy;
//       r7.w = -r9.z * r3.w + 1;
//       r7.w = rcp(r7.w);
//       r7.w = max(-3.40282347e+38, r7.w);
//       r7.w = min(3.40282347e+38, r7.w);
//       r9.xy = r10.xy * r7.ww + float2(0.5,0.5);
//       r3.w = r9.z * r3.w + 1;
//       r3.w = rcp(r3.w);
//       r3.w = max(-3.40282347e+38, r3.w);
//       r3.w = min(3.40282347e+38, r3.w);
//       r9.zw = r10.zw * r3.ww + float2(0.5,0.5);
//       r9.xy = r6.yy ? r9.xy : r9.zw;
//       r9.xy = r9.xy * float2(0.666666627,0.666666627) + float2(0.166666672,0.166666672);
//       r10.y = asint(cb12[159].x);
//       r10.z = (int)r6.z;
//       r10.xw = float2(0,0);
//       r6.yz = r10.zw + r9.xy;
//       r6.yz = r10.xy + r6.yz;
//       r6.yz = float2(0.5,0.142857149) * r6.yz;
//       r9.xyz = t23.SampleLevel(s11_s, r6.yz, r0.x).xyz;
//       r5.xyz = r3.zzz * r9.xyz + r5.xyz;
//     }
//   }
//   r3.z = cmp(r0.z < 0.999000013);
//   r0.w = r0.w ? r3.z : 0;
//   if (r0.w != 0) {
//     r9.xyz = cb12[163].xyz * v5.yyy;
//     r9.xyz = cb12[162].xyz * v5.xxx + r9.xyz;
//     r9.xyz = cb12[164].xyz * v5.zzz + r9.xyz;
//     r9.xyz = cb12[165].xyz + r9.xyz;
//     r9.xyz = float3(1,1,1) + -abs(r9.xyz);
//     r3.zw = asint(cb12[166].yy) & int2(1,2);
//     r3.z = r3.z ? 1 : r0.y;
//     r3.w = r3.w ? 1 : r4.w;
//     r3.z = r3.z * r3.w;
//     r10.xyz = cmp(float3(0,0,0) < r9.xyz);
//     r3.w = r10.y ? r10.x : 0;
//     r3.w = r10.z ? r3.w : 0;
//     r6.y = cmp(0 < r3.z);
//     r3.w = r6.y ? r3.w : 0;
//     if (r3.w != 0) {
//       r9.xyz = saturate(cb12[161].xyz * r9.xyz);
//       r3.w = 1 + -r0.z;
//       r3.z = r3.w * r3.z;
//       r3.z = cb12[160].x * r3.z;
//       r3.w = r9.x * r9.y;
//       r3.w = r3.w * r9.z;
//       r6.y = r3.z * r3.w;
//       r0.z = r3.z * r3.w + r0.z;
//       r3.z = cb12[166].x * r6.y;
//       r3.w = asint(cb12[171].x);
//       r9.y = r3.w * 0.142857149 + r3.y;
//       r9.x = r3.x;
//       r9.xyz = t22.SampleLevel(s11_s, r9.xy, 0).xyz;
//       r4.xyz = r3.zzz * r9.xyz + r4.xyz;
//       r9.xyz = cb12[168].xyz * r2.zzz;
//       r9.xyz = cb12[167].xyz * r2.xxx + r9.xyz;
//       r9.xyz = cb12[169].xyz * r2.www + r9.xyz;
//       r10.xyz = cb12[168].xyz * v5.yyy;
//       r10.xyz = cb12[167].xyz * v5.xxx + r10.xyz;
//       r10.xyz = cb12[169].xyz * v5.zzz + r10.xyz;
//       r10.xyz = cb12[170].xyz + r10.xyz;
//       r9.xyz = float3(1,1,1) / r9.xyz;
//       r12.xyz = -r10.xyz * r9.xyz + r9.xyz;
//       r9.xyz = -r10.xyz * r9.xyz + -r9.xyz;
//       r9.xyz = max(r12.xyz, r9.xyz);
//       r3.w = min(r9.y, r9.z);
//       r3.w = min(r9.x, r3.w);
//       r9.xyz = r2.xzw * r3.www + v5.xyz;
//       r9.xyz = -cb12[160].yzw + r9.xyz;
//       r3.w = dot(r9.xyz, r9.xyz);
//       r3.w = rsqrt(r3.w);
//       r9.xyw = r9.xyz * r3.www;
//       r6.y = cmp(r9.w < 0);
//       r6.z = r6.y ? 0.000000 : 0;
//       r10.xyzw = float4(0.5,-0.5,-0.5,0.5) * r9.xyxy;
//       r7.w = -r9.z * r3.w + 1;
//       r7.w = rcp(r7.w);
//       r7.w = max(-3.40282347e+38, r7.w);
//       r7.w = min(3.40282347e+38, r7.w);
//       r9.xy = r10.xy * r7.ww + float2(0.5,0.5);
//       r3.w = r9.z * r3.w + 1;
//       r3.w = rcp(r3.w);
//       r3.w = max(-3.40282347e+38, r3.w);
//       r3.w = min(3.40282347e+38, r3.w);
//       r9.zw = r10.zw * r3.ww + float2(0.5,0.5);
//       r9.xy = r6.yy ? r9.xy : r9.zw;
//       r9.xy = r9.xy * float2(0.666666627,0.666666627) + float2(0.166666672,0.166666672);
//       r10.y = asint(cb12[171].x);
//       r10.z = (int)r6.z;
//       r10.xw = float2(0,0);
//       r6.yz = r10.zw + r9.xy;
//       r6.yz = r10.xy + r6.yz;
//       r6.yz = float2(0.5,0.142857149) * r6.yz;
//       r9.xyz = t23.SampleLevel(s11_s, r6.yz, r0.x).xyz;
//       r5.xyz = r3.zzz * r9.xyz + r5.xyz;
//     }
//   }
//   r3.z = cmp(r0.z < 0.999000013);
//   r0.w = r0.w ? r3.z : 0;
//   if (r0.w != 0) {
//     r9.xyz = cb12[175].xyz * v5.yyy;
//     r9.xyz = cb12[174].xyz * v5.xxx + r9.xyz;
//     r9.xyz = cb12[176].xyz * v5.zzz + r9.xyz;
//     r9.xyz = cb12[177].xyz + r9.xyz;
//     r9.xyz = float3(1,1,1) + -abs(r9.xyz);
//     r3.zw = asint(cb12[178].yy) & int2(1,2);
//     r0.w = r3.z ? 1 : r0.y;
//     r3.z = r3.w ? 1 : r4.w;
//     r0.w = r3.z * r0.w;
//     r10.xyz = cmp(float3(0,0,0) < r9.xyz);
//     r3.z = r10.y ? r10.x : 0;
//     r3.z = r10.z ? r3.z : 0;
//     r3.w = cmp(0 < r0.w);
//     r3.z = r3.w ? r3.z : 0;
//     if (r3.z != 0) {
//       r9.xyz = saturate(cb12[173].xyz * r9.xyz);
//       r3.z = 1 + -r0.z;
//       r0.w = r3.z * r0.w;
//       r0.w = cb12[172].x * r0.w;
//       r3.z = r9.x * r9.y;
//       r3.z = r3.z * r9.z;
//       r3.w = r3.z * r0.w;
//       r0.z = r0.w * r3.z + r0.z;
//       r0.w = cb12[178].x * r3.w;
//       r3.z = asint(cb12[183].x);
//       r9.y = r3.z * 0.142857149 + r3.y;
//       r9.x = r3.x;
//       r9.xyz = t22.SampleLevel(s11_s, r9.xy, 0).xyz;
//       r4.xyz = r0.www * r9.xyz + r4.xyz;
//       r9.xyz = cb12[180].xyz * r2.zzz;
//       r9.xyz = cb12[179].xyz * r2.xxx + r9.xyz;
//       r9.xyz = cb12[181].xyz * r2.www + r9.xyz;
//       r10.xyz = cb12[180].xyz * v5.yyy;
//       r10.xyz = cb12[179].xyz * v5.xxx + r10.xyz;
//       r10.xyz = cb12[181].xyz * v5.zzz + r10.xyz;
//       r10.xyz = cb12[182].xyz + r10.xyz;
//       r9.xyz = float3(1,1,1) / r9.xyz;
//       r12.xyz = -r10.xyz * r9.xyz + r9.xyz;
//       r9.xyz = -r10.xyz * r9.xyz + -r9.xyz;
//       r9.xyz = max(r12.xyz, r9.xyz);
//       r3.z = min(r9.y, r9.z);
//       r3.z = min(r9.x, r3.z);
//       r9.xyz = r2.xzw * r3.zzz + v5.xyz;
//       r9.xyz = -cb12[172].yzw + r9.xyz;
//       r3.z = dot(r9.xyz, r9.xyz);
//       r3.z = rsqrt(r3.z);
//       r9.xyw = r9.xyz * r3.zzz;
//       r3.w = cmp(r9.w < 0);
//       r4.w = r3.w ? 0.000000 : 0;
//       r10.xyzw = float4(0.5,-0.5,-0.5,0.5) * r9.xyxy;
//       r6.y = -r9.z * r3.z + 1;
//       r6.y = rcp(r6.y);
//       r6.y = max(-3.40282347e+38, r6.y);
//       r6.y = min(3.40282347e+38, r6.y);
//       r6.yz = r10.xy * r6.yy + float2(0.5,0.5);
//       r3.z = r9.z * r3.z + 1;
//       r3.z = rcp(r3.z);
//       r3.z = max(-3.40282347e+38, r3.z);
//       r3.z = min(3.40282347e+38, r3.z);
//       r9.xy = r10.zw * r3.zz + float2(0.5,0.5);
//       r3.zw = r3.ww ? r6.yz : r9.xy;
//       r3.zw = r3.zw * float2(0.666666627,0.666666627) + float2(0.166666672,0.166666672);
//       r9.y = asint(cb12[183].x);
//       r9.z = (int)r4.w;
//       r9.xw = float2(0,0);
//       r3.zw = r9.zw + r3.zw;
//       r3.zw = r9.xy + r3.zw;
//       r3.zw = float2(0.5,0.142857149) * r3.zw;
//       r9.xyz = t23.SampleLevel(s11_s, r3.zw, r0.x).xyz;
//       r5.xyz = r0.www * r9.xyz + r5.xyz;
//     }
//   }
//   r0.w = cmp(r0.z < 0.999000013);
//   if (r0.w != 0) {
//     r0.w = 1 + -r0.z;
//     r3.z = cb12[100].x * r0.w;
//     r0.z = r0.w * cb12[100].x + r0.z;
//     r0.w = cb12[106].x * r3.z;
//     r3.z = asint(cb12[111].x);
//     r3.y = r3.z * 0.142857149 + r3.y;
//     r3.xyz = t22.SampleLevel(s11_s, r3.xy, 0).xyz;
//     r4.xyz = r0.www * r3.xyz + r4.xyz;
//     r3.x = cmp(r2.w < 0);
//     r3.y = r3.x ? 0.000000 : 0;
//     r9.xyzw = float4(0.5,-0.5,-0.5,0.5) * r2.xzxz;
//     r2.x = 1 + -r2.w;
//     r2.x = rcp(r2.x);
//     r2.x = max(-3.40282347e+38, r2.x);
//     r2.x = min(3.40282347e+38, r2.x);
//     r2.xz = r9.xy * r2.xx + float2(0.5,0.5);
//     r2.w = 1 + r2.w;
//     r2.w = rcp(r2.w);
//     r2.w = max(-3.40282347e+38, r2.w);
//     r2.w = min(3.40282347e+38, r2.w);
//     r3.zw = r9.zw * r2.ww + float2(0.5,0.5);
//     r2.xz = r3.xx ? r2.xz : r3.zw;
//     r2.xz = r2.xz * float2(0.666666627,0.666666627) + float2(0.166666672,0.166666672);
//     r9.y = asint(cb12[111].x);
//     r9.z = (int)r3.y;
//     r9.xw = float2(0,0);
//     r2.xz = r9.zw + r2.xz;
//     r2.xz = r9.xy + r2.xz;
//     r2.xz = float2(0.5,0.142857149) * r2.xz;
//     r2.xzw = t23.SampleLevel(s11_s, r2.xz, r0.x).xyz;
//     r5.xyz = r0.www * r2.xzw + r5.xyz;
//   }
//   r0.x = 1 / r0.z;
//   r2.xzw = r4.xyz * r0.xxx;
//   r0.xzw = r5.xyz * r0.xxx;
//   r3.x = cmp(0 < cb12[74].x);
//   r0.xzw = r3.xxx ? float3(0,0,0) : r0.xzw;
//   r3.y = abs(cb2[16].x) + -cb2[16].y;
//   r3.yzw = r8.xyz * r3.yyy + cb2[16].yyy;
//   r4.x = cb2[16].z + -cb2[16].w;
//   r4.xyz = r8.xyz * r4.xxx + cb2[16].www;
//   r2.xzw = r3.yzw * r2.xzw;
//   r0.xzw = r4.xyz * r0.xzw;
//   r3.y = dot(r7.xy, r7.xy);
//   r3.y = sqrt(r3.y);
//   r3.y = saturate(r3.y * cb12[219].x + cb12[219].y);
//   r3.z = -1 + cb12[185].z;
//   r3.y = r3.y * r3.z + 1;
//   r3.z = cb12[184].x + -cb12[184].y;
//   r4.xyz = r8.xyz * r3.zzz + cb12[184].yyy;
//   r4.xyz = r4.xyz * r3.yyy;
//   r3.z = cb12[185].x + -cb12[185].y;
//   r5.xyz = r8.xyz * r3.zzz + cb12[185].yyy;
//   r3.yzw = r5.xyz * r3.yyy;
//   r3.yzw = r3.xxx ? float3(1,1,1) : r3.yzw;
//   r5.xyz = cb12[184].zzz * r14.xyz;
//   r8.xyz = cb12[184].www * r15.xyz;
//   r2.xzw = r4.xyz * r2.xzw;
//   r4.x = max(abs(r11.z), abs(r11.z));
//   r4.x = 1 + -r4.x;
//   r4.x = max(0, r4.x);
//   r4.y = r4.x * r4.x;
//   r4.y = r4.y * r4.y;
//   r4.x = r4.y * r4.x;
//   r4.y = min(1, cb13[56].y);
//   r4.y = r4.y * r6.w;
//   r4.x = r4.y * r4.x;
//   r4.x = r4.x / r11.y;
//   r2.y = r4.x + r2.y;
//   r4.x = 1 + -r2.y;
//   r2.xzw = r4.xxx * r2.xzw;
//   r0.xzw = r3.yzw * r0.xzw;
//   r0.xzw = r0.xzw * r2.yyy;
//   r2.y = cb12[69].x + cb12[69].y;
//   r0.y = cmp(r0.y < 0.99000001);
//   r0.y = r0.y ? cb12[271].w : 1;
//   r4.xyzw = cb12[272].xyzw * r0.yyyy;
//   r0.y = log2(r6.x);
//   r3.yz = r4.xy * r0.yy;
//   r3.yz = exp2(r3.yz);
//   r0.y = log2(r2.y);
//   r4.xy = r4.zw * r0.yy;
//   r4.xy = exp2(r4.xy);
//   r4.xzw = r5.xyz * r4.xxx;
//   r5.xyz = r8.xyz * r4.yyy;
//   r2.xyz = r2.xzw * r3.yyy + r4.xzw;
//   r1.xyz = r1.xyz * r2.xyz + r5.xyz;
//   r0.xyz = r0.xzw * r3.zzz + r1.xyz;
//   r0.xyz = r3.xxx ? r1.xyz : r0.xyz;
//   r1.xyz = r7.xyz / r5.www;
//   r0.w = -cb12[22].z + r5.w;
//   r0.w = max(0, r0.w);
//   r0.w = min(cb12[42].z, r0.w);
//   r1.x = dot(cb12[38].xyz, r1.xyz);
//   r1.y = cmp(asint(cb12[271].z) == 2);
//   r2.x = cmp(0 < r1.x);
//   r2.y = r2.x ? 0.000000 : 0;
//   r1.y = r1.y ? 0 : r2.y;
//   r1.y = cb12[271].z ? r1.y : 1;
//   r2.y = abs(r1.x) * abs(r1.x);
//   r2.z = saturate(r0.w * 0.00200000009 + -0.300000012);
//   r1.y = r1.y ? r2.z : 1;
//   r1.y = r2.y * r1.y;
//   r2.yzw = r2.xxx ? cb12[39].xyz : cb12[41].xyz;
//   r2.yzw = -cb12[40].xyz + r2.yzw;
//   r2.yzw = r1.yyy * r2.yzw + cb12[40].xyz;
//   r3.xyz = r2.xxx ? cb12[45].xyz : cb12[47].xyz;
//   r3.xyz = -cb12[46].xyz + r3.xyz;
//   r3.xyz = r1.yyy * r3.xyz + cb12[46].xyz;
//   r1.y = cmp(r0.w >= cb12[48].y);
//   if (r1.y != 0) {
//     r1.y = r1.z * cb12[22].z + cb12[0].z;
//     r1.z = r1.z * r0.w;
//     r1.z = 0.0625 * r1.z;
//     r2.x = cb12[43].x * r0.w;
//     r2.x = 0.0625 * r2.x;
//     r1.x = cb12[42].x + r1.x;
//     r3.w = 1 + cb12[42].x;
//     r1.x = saturate(r1.x / r3.w);
//     r3.w = cb12[43].y + -cb12[43].z;
//     r1.x = r1.x * r3.w + cb12[43].z;
//     r1.y = cb12[42].y + r1.y;
//     r3.w = r1.y * r1.x;
//     r1.z = r1.z * r1.x;
//     r4.xyzw = r1.zzzz * float4(16,15,14,13) + r3.wwww;
//     r4.xyzw = max(float4(0,0,0,0), r4.xyzw);
//     r4.xyzw = float4(1,1,1,1) + r4.xyzw;
//     r4.xyzw = saturate(r2.xxxx / r4.xyzw);
//     r4.xyzw = float4(1,1,1,1) + -r4.xyzw;
//     r4.x = r4.x * r4.y;
//     r4.x = r4.x * r4.z;
//     r4.x = r4.x * r4.w;
//     r5.xyzw = r1.zzzz * float4(12,11,10,9) + r3.wwww;
//     r5.xyzw = max(float4(0,0,0,0), r5.xyzw);
//     r5.xyzw = float4(1,1,1,1) + r5.xyzw;
//     r5.xyzw = saturate(r2.xxxx / r5.xyzw);
//     r5.xyzw = float4(1,1,1,1) + -r5.xyzw;
//     r4.x = r5.x * r4.x;
//     r4.x = r4.x * r5.y;
//     r4.x = r4.x * r5.z;
//     r4.x = r4.x * r5.w;
//     r5.xyzw = r1.zzzz * float4(8,7,6,5) + r3.wwww;
//     r5.xyzw = max(float4(0,0,0,0), r5.xyzw);
//     r5.xyzw = float4(1,1,1,1) + r5.xyzw;
//     r5.xyzw = saturate(r2.xxxx / r5.xyzw);
//     r5.xyzw = float4(1,1,1,1) + -r5.xyzw;
//     r4.x = r5.x * r4.x;
//     r4.x = r4.x * r5.y;
//     r4.x = r4.x * r5.z;
//     r4.x = r4.x * r5.w;
//     r4.yz = r1.zz * float2(4,3) + r3.ww;
//     r4.yz = max(float2(0,0), r4.yz);
//     r4.yz = float2(1,1) + r4.yz;
//     r4.yz = saturate(r2.xx / r4.yz);
//     r4.yz = float2(1,1) + -r4.yz;
//     r4.x = r4.x * r4.y;
//     r4.x = r4.x * r4.z;
//     r3.w = r1.z * 2 + r3.w;
//     r3.w = max(0, r3.w);
//     r3.w = 1 + r3.w;
//     r3.w = saturate(r2.x / r3.w);
//     r3.w = 1 + -r3.w;
//     r3.w = r4.x * r3.w;
//     r1.x = r1.y * r1.x + r1.z;
//     r1.x = max(0, r1.x);
//     r1.x = 1 + r1.x;
//     r1.x = saturate(r2.x / r1.x);
//     r1.x = 1 + -r1.x;
//     r1.x = -r3.w * r1.x + 1;
//     r0.w = -cb12[48].y + r0.w;
//     r0.w = saturate(cb12[48].z * r0.w);
//   } else {
//     r1.x = 1;
//     r0.w = 0;
//   }
//   r1.x = log2(r1.x);
//   r1.y = cb12[42].w * r1.x;
//   r1.y = exp2(r1.y);
//   r1.y = r1.y * r0.w;
//   r1.x = cb12[48].x * r1.x;
//   r1.x = exp2(r1.x);
//   r0.w = r1.x * r0.w;
//   r1.xz = saturate(r1.yy * cb12[190].xz + cb12[190].yw);
//   r4.xyz = cb12[189].xyz + -r2.yzw;
//   r4.xyz = r1.xxx * r4.xyz + r2.yzw;
//   r1.x = -1 + cb12[189].w;
//   r1.x = r1.z * r1.x + 1;
//   r4.w = saturate(r1.y * r1.x);
//   r1.x = cmp(0 < cb12[193].x);
//   if (r1.x != 0) {
//     r1.xz = saturate(r1.yy * cb12[192].xz + cb12[192].yw);
//     r5.xyz = cb12[191].xyz + -r2.yzw;
//     r2.xyz = r1.xxx * r5.xyz + r2.yzw;
//     r1.x = -1 + cb12[191].w;
//     r1.x = r1.z * r1.x + 1;
//     r2.w = saturate(r1.y * r1.x);
//     r2.xyzw = r2.xyzw + -r4.xyzw;
//     r4.xyzw = cb12[193].xxxx * r2.xyzw + r4.xyzw;
//   }
//   r1.x = dot(float3(0.333000004,0.555000007,0.222000003), r0.xyz);
//   r1.xyz = r1.xxx * r3.xyz + -r0.xyz;
//   r0.xyz = r0.www * r1.xyz + r0.xyz;
//   r1.xyz = r4.xyz + -r0.xyz;
//   r0.xyz = r4.www * r1.xyz + r0.xyz;
//   r0.w = dot(r0.xyz, r0.xyz);
//   r0.w = rsqrt(r0.w);
//   r1.xyz = r0.xyz * r0.www;
//   r0.w = dot(r0.xyz, float3(0.298999995,0.587000012,0.114));
//   r0.w = saturate(cb4[7].x * r0.w + r1.w);
//   r1.xyz = min(r1.xyz, r0.xyz);
//   r0.xyz = -r1.xyz + r0.xyz;
//   r0.xyz = r1.www * r0.xyz + r1.xyz;
//   r0.xyz = cb2[2].xyz * r0.xyz;
//   r0.w = cb2[2].w * r0.w;
//   r1.x = dot(float3(0.333000004,0.555000007,0.222000003), r0.xyz);
//   r1.xyz = r1.xxx * v0.xyz + -r0.xyz;
//   r0.xyz = v0.www * r1.xyz + r0.xyz;
//   r1.xyz = v1.xyz + -r0.xyz;
//   r0.xyz = v1.www * r1.xyz + r0.xyz;
//   o0.w = saturate(r0.w);
//   o0.xyz = r0.xyz * r0.www;
//   return;
// }
//////////////////////////////// HLSL Errors ////////////////////////////////
// F:\GOG\The Witcher 3 Wild Hunt GOTY\bin\x64\ShaderFixes\b211f74d53bfa59f-ps_replace.txt(215,22-31): error X3004: undeclared identifier 'raw_buffer'
// F:\GOG\The Witcher 3 Wild Hunt GOTY\bin\x64\ShaderFixes\b211f74d53bfa59f-ps_replace.txt(215,5-32): error X3004: undeclared identifier 'ld_raw_indexable'
/////////////////////////////////////////////////////////////////////////////
