// Skybox / ray-traced clouds pixel shader
//
// Generated by Microsoft (R) HLSL Shader Compiler 6.3.9600.16384
//
//   using 3Dmigoto v1.3.15 on Wed Mar 06 06:24:06 2019
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float4 litDir;                     // Offset:    0 Size:    16
//   float4 vEye;                       // Offset:   16 Size:    16
//   float4 fog;                        // Offset:   32 Size:    16
//   float4 Scat[4];                    // Offset:   48 Size:    64
//   row_major float4x4 g_mtPrevW2P;    // Offset:  112 Size:    64
//   float3 g_vBaseTexOffset;           // Offset:  176 Size:    12
//   float3 g_vBaseTexScale;            // Offset:  192 Size:    12
//   float3 g_vDetailTexOffset;         // Offset:  208 Size:    12
//   float3 g_vDetailTexScale;          // Offset:  224 Size:    12
//   float2 g_vDistortTexOffset;        // Offset:  240 Size:     8
//   float2 g_vDistortTexScale;         // Offset:  248 Size:     8
//   float2 g_vCirrusTexOffset;         // Offset:  256 Size:     8
//   float2 g_vCirrusTexScale;          // Offset:  264 Size:     8
//   float2 g_vCirrusDistortTexOffset;  // Offset:  272 Size:     8
//   float2 g_vCirrusDistortTexScale;   // Offset:  280 Size:     8
//   float4 g_vRaySampleNum;            // Offset:  288 Size:    16
//   float4 g_vEarthRadius;             // Offset:  304 Size:    16
//   float4 g_vCloudParams0;            // Offset:  320 Size:    16
//   float4 g_vCloudParams1;            // Offset:  336 Size:    16
//   float4 g_vCloudParams2;            // Offset:  352 Size:    16
//   float4 g_vDistortScale;            // Offset:  368 Size:    16
//   float4 g_vCirrusParams;            // Offset:  384 Size:    16
//   float2 g_vCirrusDistortScale;      // Offset:  400 Size:     8
//   float2 g_vErodeScale;              // Offset:  408 Size:     8
//   float4 g_vHgParams0;               // Offset:  416 Size:    16
//   float4 g_vHgParams1;               // Offset:  432 Size:    16
//   float4 g_vSky2SunRGB;              // Offset:  448 Size:    16
//   float4 g_vSky2SunDir;              // Offset:  464 Size:    16
//   float4 g_vSky2MoonRGB;             // Offset:  480 Size:    16
//   float4 g_vSky2MoonDir;             // Offset:  496 Size:    16
//   float4 g_vSky2RayleighExtinction;  // Offset:  512 Size:    16
//   float4 g_vSky2MieExtinction;       // Offset:  528 Size:    16
//   float4 g_vStableDim;               // Offset:  544 Size:    16
//   float4 g_vClampValue;              // Offset:  560 Size:    16
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// __smpsBase                        sampler      NA          NA    0        1
// __smpsDetail                      sampler      NA          NA    1        1
// __smpsDistort                     sampler      NA          NA    2        1
// __smpsCirrus                      sampler      NA          NA    3        1
// __smpsSkyAmbientAltitude2dTable    sampler      NA          NA    4        1
// __smpsTransmit2dTable             sampler      NA          NA    5        1
// __smpsSctr3dTable                 sampler      NA          NA    6        1
// sBase                             texture  float4          3d    0        1
// sDetail                           texture  float4          3d    1        1
// sDistort                          texture  float4          2d    2        1
// sCirrus                           texture  float4          2d    3        1
// sSkyAmbientAltitude2dTable        texture  float4          2d    4        1
// sTransmit2dTable                  texture  float4          2d    5        1
// sSctr3dTable                      texture  float4          3d    6        1
// $Globals                          cbuffer      NA          NA    0        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_ClipDistance          0   xyzw        0  CLIPDST   float
// SV_Position              0   xyzw        1      POS   float   xy
// TEXCOORD                 0   xyzw        2     NONE   float
// TEXCOORD                 1   xyz         3     NONE   float   xyz
// TEXCOORD                 2   xy          4     NONE   float   xy
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
// SV_Target                1   xy          1   TARGET   float   xy
//
ps_5_0
dcl_globalFlags refactoringAllowed
dcl_immediateConstantBuffer { { 0.437947, 0, 0, 0},
                              { 0.428696, 0, 0, 0},
                              { 0.306383, 0, 0, 0},
                              { 0.852527, 0, 0, 0},
                              { 0.974575, 0, 0, 0},
                              { 0.371207, 0, 0, 0},
                              { 0.878102, 0, 0, 0},
                              { 0.553908, 0, 0, 0},
                              { 0.045790, 0, 0, 0},
                              { 0.571123, 0, 0, 0},
                              { 0.781853, 0, 0, 0},
                              { 0.175776, 0, 0, 0},
                              { 0.199234, 0, 0, 0},
                              { 0.670537, 0, 0, 0},
                              { 0.298226, 0, 0, 0},
                              { 0.650794, 0, 0, 0} }
dcl_constantbuffer cb0[36], immediateIndexed
dcl_sampler s0, mode_default
dcl_sampler s1, mode_default
dcl_sampler s2, mode_default
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_sampler s6, mode_default
dcl_resource_texture3d (float,float,float,float) t0
dcl_resource_texture3d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2d (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture3d (float,float,float,float) t6
dcl_input_ps_siv linear noperspective v1.xy, position
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xy
dcl_output o0.xyzw
dcl_output o1.xy
dcl_temps 29

dcl_resource_texture2d (float,float,float,float) t121
ld_indexable(texture2d)(float,float,float,float) r28.xyzw, l(0, 0, 0, 0), t121.xyzw

dp3 r0.x, v3.xyzx, v3.xyzx
rsq r0.x, r0.x
mul r0.xyz, r0.xxxx, v3.xyzx
ge r0.w, l(0.000000), cb0[35].w
mov r1.yw, cb0[1].xxxz
mov r1.xz, -cb0[19].xxxx
add r2.xyz, -r1.yzwy, cb0[1].xyzx
div r3.xyz, r2.xyzx, |r2.yyyy|
mul r2.w, -r0.y, r3.y
min r3.w, cb0[1].y, l(0.000000)
add r4.x, r3.w, cb0[19].x
mul r3.w, -r0.y, r2.y
mul r4.w, r2.y, r2.y
mov r4.y, cb0[19].w
mov r4.z, cb0[32].w
mad r4.xyz, -r4.xyzx, r4.xyzx, r4.wwww
mad r4.xyz, r3.wwww, r3.wwww, -r4.xyzx
ge r5.xyz, r4.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
and r6.xyz, r5.xyzx, l(0x3f800000, 0x3f800000, 0x3f800000, 0)
max r4.xyz, r4.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
sqrt r4.xyz, r4.xyzx
mad r7.xy, -r2.yyyy, -r0.yyyy, -r4.xzxx
mad r7.zw, -r2.yyyy, -r0.yyyy, r4.yyyz
movc r4.xyz, r5.xyzx, l(-0.000000,-0.000000,-0.000000,0), l(-1.000000,-1.000000,-1.000000,0)
mad r5.xyzw, r6.xyzz, r7.xzyw, r4.xyzz
ge r4.xy, r5.zwzz, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r4.y, r4.y, r5.w, l(-1.000000)
movc r4.x, r4.x, r5.z, r4.y
lt r4.y, cb0[32].w, |r2.y|
lt r4.z, l(0.000000), r4.x
and r4.y, r4.z, r4.y
if_nz r4.y
  mad r6.xyz, r4.xxxx, -r0.xyzx, r2.xyzx
  mad r4.y, |r2.y|, r2.w, r4.x
  div r4.y, r4.y, cb0[32].w
  add r5.x, -r4.x, r5.x
  add r4.x, -r5.z, r5.w
  mov r4.z, cb0[32].w
else
  mov r6.xyz, r2.xyzx
  mov r4.z, |r2.y|
  mov r4.y, r2.w
endif
lt r2.x, l(0.000000), r5.x
dp3 r2.z, -r0.xyzx, -cb0[0].xyzx
movc r4.x, r2.x, r5.x, r4.x
min r5.z, r4.x, cb0[35].w
movc r5.z, r0.w, r4.x, r5.z
lt r5.w, r5.x, l(0.000000)
lt r6.w, cb0[1].y, cb0[20].x
and r5.w, r5.w, r6.w
not r6.w, r5.w
lt r7.x, l(-0.200000), cb0[29].y
and r7.y, r5.w, r7.x
or r7.y, r6.w, r7.y
lt r7.z, l(0.000000), cb0[28].w
and r7.y, r7.z, r7.y
lt r7.w, l(-0.200000), cb0[31].y
and r8.x, r5.w, r7.w
or r6.w, r6.w, r8.x
lt r8.x, l(0.000000), cb0[30].w
and r6.w, r6.w, r8.x
or r8.y, r6.w, r7.y
if_nz r7.y
  add r8.z, cb0[20].w, l(-32.000000)
  max r8.w, cb0[1].y, l(16.000000)
  min r8.z, r8.z, r8.w
  div_sat r8.z, r8.z, cb0[20].w
  rsq r8.z, r8.z
  div r9.x, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
  mad r8.z, r3.y, cb0[29].y, l(0.002500)
  max r8.z, r8.z, l(-0.197500)
  mul r8.z, r8.z, l(5.34962368)
  min r8.w, |r8.z|, l(1.000000)
  max r9.z, |r8.z|, l(1.000000)
  div r9.z, l(1.000000, 1.000000, 1.000000, 1.000000), r9.z
  mul r8.w, r8.w, r9.z
  mul r9.z, r8.w, r8.w
  mad r9.w, r9.z, l(0.0208350997), l(-0.085133)
  mad r9.w, r9.z, r9.w, l(0.180141)
  mad r9.w, r9.z, r9.w, l(-0.330299497)
  mad r9.z, r9.z, r9.w, l(0.999866)
  mul r9.w, r8.w, r9.z
  lt r10.x, l(1.000000), |r8.z|
  mad r9.w, r9.w, l(-2.000000), l(1.57079637)
  and r9.w, r10.x, r9.w
  mad r8.w, r8.w, r9.z, r9.w
  min r8.z, r8.z, l(1.000000)
  lt r8.z, r8.z, -r8.z
  movc r8.z, r8.z, -r8.w, r8.w
  mad r8.z, r8.z, l(0.909090877), l(0.740000)
  mul r9.y, r8.z, l(0.500000)
  mov_sat r9.xy, r9.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r9.xyzw, r9.xyxx, t4.xyzw, s4, l(0.000000)
  mov r10.xyz, cb0[28].xyzx
  mov r10.w, l(0.000010)
  mul r9.xyzw, r9.xyzw, r10.xyzw
  mul r9.xyz, r9.xyzx, l(0.000010, 0.000010, 0.000010, 0.000000)
  mul r10.xyz, r9.wwww, cb0[28].xyzx
else
  mov r9.xyz, l(0,0,0,0)
  mov r10.xyz, l(0,0,0,0)
endif
if_nz r6.w
  add r8.z, cb0[20].w, l(-32.000000)
  max r8.w, cb0[1].y, l(16.000000)
  min r8.z, r8.z, r8.w
  div_sat r8.z, r8.z, cb0[20].w
  rsq r8.z, r8.z
  div r11.x, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
  mad r8.z, r3.y, cb0[31].y, l(0.002500)
  max r8.z, r8.z, l(-0.197500)
  mul r8.z, r8.z, l(5.34962368)
  min r8.w, |r8.z|, l(1.000000)
  max r9.w, |r8.z|, l(1.000000)
  div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w
  mul r8.w, r8.w, r9.w
  mul r9.w, r8.w, r8.w
  mad r10.w, r9.w, l(0.0208350997), l(-0.085133)
  mad r10.w, r9.w, r10.w, l(0.180141)
  mad r10.w, r9.w, r10.w, l(-0.330299497)
  mad r9.w, r9.w, r10.w, l(0.999866)
  mul r10.w, r8.w, r9.w
  lt r11.z, l(1.000000), |r8.z|
  mad r10.w, r10.w, l(-2.000000), l(1.57079637)
  and r10.w, r11.z, r10.w
  mad r8.w, r8.w, r9.w, r10.w
  min r8.z, r8.z, l(1.000000)
  lt r8.z, r8.z, -r8.z
  movc r8.z, r8.z, -r8.w, r8.w
  mad r8.z, r8.z, l(0.909090877), l(0.740000)
  mul r11.y, r8.z, l(0.500000)
  mov_sat r11.xy, r11.xyxx
  sample_l_indexable(texture2d)(float,float,float,float) r11.xyzw, r11.xyxx, t4.xyzw, s4, l(0.000000)
  mov r12.xyz, cb0[30].xyzx
  mov r12.w, l(0.000010)
  mul r11.xyzw, r11.xyzw, r12.xyzw
  mad r9.xyz, r11.xyzx, l(0.000010, 0.000010, 0.000010, 0.000000), r9.xyzx
  mad r10.xyz, r11.wwww, cb0[30].xyzx, r10.xyzx
endif
add r9.xyz, r9.xyzx, -r10.xyzx
mad r9.xyz, cb0[23].wwww, r9.xyzx, r10.xyzx
mul r9.xyz, r9.xyzx, l(0.300000, 0.300000, 0.300000, 0.000000)
if_nz r5.w
  dp3 r5.w, cb0[29].xyzx, -r0.xyzx
  mad r8.z, r5.w, cb0[26].y, cb0[26].z
  log r8.z, |r8.z|
  mul r8.z, r8.z, l(-1.500000)
  exp r8.z, r8.z
  mul r8.z, r8.z, cb0[26].x
  mad r8.w, r5.w, cb0[27].y, cb0[27].z
  log r8.w, |r8.w|
  mul r8.w, r8.w, l(-1.500000)
  exp r8.w, r8.w
  mad r8.w, cb0[27].x, r8.w, -r8.z
  mad r8.z, cb0[26].w, r8.w, r8.z
  dp3 r8.w, cb0[31].xyzx, -r0.xyzx
  mad r9.w, r8.w, cb0[26].y, cb0[26].z
  log r9.w, |r9.w|
  mul r9.w, r9.w, l(-1.500000)
  exp r9.w, r9.w
  mul r9.w, r9.w, cb0[26].x
  mad r10.x, r8.w, cb0[27].y, cb0[27].z
  log r10.x, |r10.x|
  mul r10.x, r10.x, l(-1.500000)
  exp r10.x, r10.x
  mad r10.x, cb0[27].x, r10.x, -r9.w
  mad r9.w, cb0[26].w, r10.x, r9.w
  lt r10.x, cb0[21].x, l(1.000000)
  lt r10.y, l(0.000000), cb0[21].w
  and r10.x, r10.y, r10.x
  if_nz r10.x
    ftou r10.xy, v1.xyxx
    bfi r10.y, l(2), l(2), r10.y, l(0)
    bfi r10.x, l(2), l(0), r10.x, r10.y
    mad r10.yz, -cb0[19].yyzy, cb0[19].yyzy, r4.wwww
    mad r10.yz, r3.wwww, r3.wwww, -r10.yyzy
    ge r11.xy, r10.yzyy, l(0.000000, 0.000000, 0.000000, 0.000000)
    and r11.zw, r11.xxxy, l(0, 0, 0x3f800000, 0x3f800000)
    max r10.yz, r10.yyzy, l(0.000000, 0.000000, 0.000000, 0.000000)
    sqrt r10.yz, r10.yyzy
    mad r10.yz, -r2.yyyy, -r0.yyyy, r10.yyzy
    movc r11.xy, r11.xyxx, l(-0.000000,-0.000000,0,0), l(-1.000000,-1.000000,0,0)
    mad r10.yz, r11.zzwz, r10.yyzy, r11.xxyx
    add r3.w, -r10.y, r10.z
    ge r4.w, r3.w, l(0.000000)
    if_nz r4.w
      mad r4.w, |r0.y|, cb0[18].x, cb0[18].y
      div r10.z, l(1.310330), cb0[18].w
      mul r4.w, r4.w, r10.z
      min r4.w, r4.w, cb0[18].y
      round_pi r10.z, r4.w
      ftou r10.z, r10.z
      div r4.w, r3.w, r4.w
      mad r10.x, icb[r10.x + 0].x, cb0[18].z, r10.y
      mad r11.xyz, -r0.xyzx, r10.xxxx, cb0[1].xyzx
      mul r10.x, cb0[21].z, l(-0.399999976)
      mad r12.xyzw, cb0[21].yxxy, l(-2.000000, 5.000000, 5.000000, -6.000000), l(1.000000, 0.000000, 0.500000, 8.000000)
      mov_sat r12.xyz, r12.xyzx
      add r10.w, cb0[21].y, l(-0.500000)
      mad r10.w, |r10.w|, l(-2.000000), l(1.000000)
      max r10.w, r10.w, l(0.000000)
      mad_sat r11.w, cb0[21].y, l(2.000000), l(-1.000000)
      mul r13.xyz, r10.wwww, l(0.500000, 0.200000, 0.500000, 0.000000)
      mad r13.xyz, r12.xxxx, l(0.100000, 0.050000, 0.100000, 0.000000), r13.xyzx
      add r10.w, r11.w, r13.x
      mad r5.w, r5.w, l(-0.500000), l(0.500000)
      mad r8.w, r8.w, l(-0.500000), l(0.500000)
      and r7.x, r7.z, r7.x
      and r7.w, r7.w, r8.x
      mad r13.xy, r11.wwww, l(0.750000, 1.000000, 0.000000, 0.000000), r13.yzyy
      min r11.w, cb0[12].y, cb0[12].x
      mul r12.xy, r12.yzyy, cb0[25].zwzz
      mul r12.xy, r12.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
      add r12.z, -r13.x, r13.y
      mad r13.yzw, cb0[21].xxzz, l(0.000000, 1.200000, -9.900000, 0.500000), l(0.000000, -1.300000, 10.000000, 1.000000)
      add r14.x, cb0[20].w, l(-32.000000)
      sqrt r14.y, cb0[21].x
      add r14.z, -cb0[21].z, l(1.000000)
      mul r14.y, r14.z, r14.y
      max r14.y, r14.y, l(0.010000)
      mul r14.z, cb0[22].x, l(3.000000)
      add r14.w, cb0[22].x, cb0[22].x
      mad r15.x, cb0[22].x, l(4.000000), cb0[22].y
      mov r15.yzw, l(0,0,0,0)
      mov r16.xyz, r11.xyzx
      mov r16.w, l(1.000000)
      mov r17.xyzw, l(1.000000,0,0.000001,1)
      loop
        uge r18.x, r10.z, r17.w
        lt r18.y, l(0.00392156886), r16.w
        and r18.x, r18.y, r18.x
        breakc_z r18.x
        mad r18.xyz, -r0.xyzx, r4.wwww, r16.xyzx
        add r19.xyz, -r1.yzwy, r18.xyzx
        dp3 r18.w, r19.xyzx, r19.xyzx
        sqrt r18.w, r18.w
        add r19.w, r18.w, -cb0[19].y
        mul r20.x, r19.w, cb0[20].z
        lt r20.y, r10.w, r20.x
        if_nz r20.y
          break
        endif
        add r20.yz, r18.xxzx, -cb0[1].xxzx
        dp2 r20.y, r20.yzyy, r20.yzyy
        sqrt r20.y, r20.y
        mad r20.y, r20.y, r11.w, l(0.000010)
        rsq r20.y, r20.y
        min r20.y, r20.y, l(1.000000)
        mul r21.xyz, r20.yyyy, cb0[12].xzyx
        mad r21.xyz, r18.xzyx, r21.xyzx, cb0[11].xzyx
        sample_l_indexable(texture3d)(float,float,float,float) r21.xyzw, r21.xyzx, t0.xyzw, s0, l(0.000000)
        mul r20.z, r20.x, l(20.000000)
        mov_sat r20.z, r20.z
        mad r20.w, r19.w, cb0[20].z, -r13.x
        div_sat r20.w, r20.w, r12.z
        add r20.w, -r20.w, l(1.000000)
        mul r20.z, r20.w, r20.z
        mad_sat r20.z, r20.z, r13.y, l(1.000000)
        add r20.w, -r20.z, r21.x
        add r20.z, -r20.z, l(1.000000)
        div_sat r20.z, r20.w, r20.z
        mad_sat r22.x, r20.x, l(-2.000000), l(1.000000)
        mad r20.w, r19.w, cb0[20].z, l(-0.500000)
        mad r20.w, |r20.w|, l(-2.000000), l(1.000000)
        max r22.y, r20.w, l(0.000000)
        mad_sat r22.z, r20.x, l(2.000000), l(-1.000000)
        dp3 r20.w, r21.yzwy, r22.xyzx
        mad r20.z, -r20.w, r12.x, r20.z
        mad r20.w, -r20.w, r12.x, l(1.000000)
        div_sat r20.z, r20.z, r20.w
        ge r20.w, l(0.000000), r20.z
        if_nz r20.w
          iadd r20.w, r17.w, l(1)
          mov r16.xyz, r18.xyzx
          mov r17.w, r20.w
          continue
        endif
        add r21.xy, r18.yyyy, r18.xzxx
        mul r21.zw, r20.yyyy, cb0[15].zzzw
        mad r21.xy, r21.xyxx, r21.zwzz, cb0[15].xyxx
        sample_l_indexable(texture2d)(float,float,float,float) r21.xyz, r21.xyxx, t2.xyzw, s2, l(0.000000)
        mad r21.xyz, r21.xyzx, l(2.000000, 2.000000, 2.000000, 0.000000), l(-1.000000, -1.000000, -1.000000, 0.000000)
        mul r21.xyz, r21.xyzx, cb0[23].xyzx
        mad r23.xyz, r20.xxxx, l(5.000000, 5.000000, -0.500000, 0.000000), l(-2.000000, 0.500000, 1.000000, 0.000000)
        mul r24.xyz, r20.yyyy, cb0[14].xzyx
        mad r24.xyz, r18.xzyx, r24.xyzx, cb0[13].xzyx
        mad r21.xyz, r21.xyzx, r23.zzzz, r24.xyzx
        sample_l_indexable(texture3d)(float,float,float,float) r21.xyz, r21.xyzx, t1.xyzw, s1, l(0.000000)
        mov_sat r23.xy, r23.xyxx
        mad r24.xyz, r21.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
        mad r21.xyz, r23.xxxx, r24.xyzx, r21.xyzx
        mul r20.y, r12.y, r23.y
        dp3 r20.w, r21.xyzx, r22.xyzx
        mad r20.z, -r20.w, r20.y, r20.z
        mad r20.y, -r20.w, r20.y, l(1.000000)
        div_sat r20.y, r20.z, r20.y
        ge r20.z, l(0.000000), r20.y
        if_nz r20.z
          iadd r20.z, r17.w, l(1)
          mov r16.xyz, r18.xyzx
          mov r17.w, r20.z
          continue
        endif
        mul_sat r20.z, r12.w, r20.x
        mad r20.z, r20.z, r10.x, l(1.000000)
        mad_sat r20.w, r20.x, l(2.000000), l(0.200000)
        mul r20.w, r20.w, cb0[21].w
        mul r21.x, r13.w, r20.w
        max r21.y, r20.y, l(0.000001)
        mul r21.x, r21.y, r21.x
        mul r20.z, r20.z, r21.x
        mul r21.x, r4.w, -r20.z
        mul r21.x, r21.x, l(1.442695)
        exp r21.x, r21.x
        mul r16.w, r16.w, r21.x
        add r21.y, -r21.x, l(1.000000)
        utof r21.z, r17.w
        mad r17.y, r21.z, r21.y, r17.y
        add r17.z, r17.z, r21.y
        lt r21.z, l(0.300000), r17.x
        if_nz r21.z
          mul r20.w, r13.z, r20.w
          mul r20.y, r20.y, r20.w
          div r19.xyz, r19.xyzx, r18.wwww
          add r18.w, r1.x, r18.w
          if_nz r7.x
            dp3 r20.w, r19.xyzx, cb0[29].xyzx
            max r21.z, r18.w, l(16.000000)
            min r21.z, r14.x, r21.z
            div_sat r21.z, r21.z, cb0[20].w
            rsq r21.z, r21.z
            div r22.x, l(1.000000, 1.000000, 1.000000, 1.000000), r21.z
            add r20.w, r20.w, l(0.002500)
            max r20.w, r20.w, l(-0.197500)
            mul r20.w, r20.w, l(5.34962368)
            min r21.z, |r20.w|, l(1.000000)
            max r21.w, |r20.w|, l(1.000000)
            div r21.w, l(1.000000, 1.000000, 1.000000, 1.000000), r21.w
            mul r21.z, r21.w, r21.z
            mul r21.w, r21.z, r21.z
            mad r22.z, r21.w, l(0.0208350997), l(-0.085133)
            mad r22.z, r21.w, r22.z, l(0.180141)
            mad r22.z, r21.w, r22.z, l(-0.330299497)
            mad r21.w, r21.w, r22.z, l(0.999866)
            mul r22.z, r21.w, r21.z
            lt r22.w, l(1.000000), |r20.w|
            mad r22.z, r22.z, l(-2.000000), l(1.57079637)
            and r22.z, r22.w, r22.z
            mad r21.z, r21.z, r21.w, r22.z
            min r20.w, r20.w, l(1.000000)
            lt r20.w, r20.w, -r20.w
            movc r20.w, r20.w, -r21.z, r21.z
            mad r20.w, r20.w, l(0.909090877), l(0.740000)
            mul r22.y, r20.w, l(0.500000)
            mov_sat r22.xy, r22.xyxx
            sample_l_indexable(texture2d)(float,float,float,float) r23.xyzw, r22.xyxx, t4.xyzw, s4, l(0.000000)
            mul r20.w, r23.w, l(0.000010)
            mad r23.xyz, r23.xyzx, l(0.000010, 0.000010, 0.000010, 0.000000), -r20.wwww
            mad r23.xyz, cb0[23].wwww, r23.xyzx, r20.wwww
            mul r23.xyz, r14.yyyy, r23.xyzx
            mul r24.xyz, r14.yyyy, r23.xyzx
            mad_sat r20.w, -r19.w, cb0[20].z, l(1.000000)
            mul r20.w, r20.w, -r20.z
            mul r21.z, r20.w, l(1.442695)
            exp r21.z, r21.z
            mad r21.w, r20.w, l(0.00166666671), l(0.0104166670)
            mad r21.w, r20.w, r21.w, l(0.0555555560)
            mad r21.w, r20.w, r21.w, l(0.250000)
            mad r21.w, r20.w, r21.w, l(1.000000)
            add r22.z, |r20.w|, l(0.000100)
            log r22.z, r22.z
            mad r22.z, r22.z, l(0.693147182), l(0.577216)
            mad r21.w, r20.w, r21.w, r22.z
            mad r20.w, -r20.w, r21.w, r21.z
            max r20.w, r20.w, l(0.000000)
            mul r23.xyz, r20.wwww, r23.xyzx
            mul r20.w, r20.x, -r20.z
            mul r21.z, r20.w, l(1.442695)
            exp r21.z, r21.z
            mad r21.w, r20.w, l(0.00166666671), l(0.0104166670)
            mad r21.w, r20.w, r21.w, l(0.0555555560)
            mad r21.w, r20.w, r21.w, l(0.250000)
            mad r21.w, r20.w, r21.w, l(1.000000)
            add r22.z, |r20.w|, l(0.000100)
            log r22.z, r22.z
            mad r22.z, r22.z, l(0.693147182), l(0.577216)
            mad r21.w, r20.w, r21.w, r22.z
            mad r20.w, -r20.w, r21.w, r21.z
            max r20.w, r20.w, l(0.000000)
            mul r24.xyz, r20.wwww, r24.xyzx
            mul_sat r20.w, r20.x, l(0.500000)
            mad r23.xyz, r23.xyzx, r20.wwww, r24.xyzx
            mad r24.xyz, cb0[29].xzyx, cb0[22].xxxx, r18.xzyx
            add r25.xyz, -r1.yzwy, r24.xzyx
            dp3 r20.w, r25.xyzx, r25.xyzx
            sqrt r20.w, r20.w
            add r20.w, r20.w, -cb0[19].y
            mul r21.z, r20.w, cb0[20].z
            lt r21.w, r21.z, l(0.000000)
            lt r22.z, l(1.000000), r21.z
            or r21.w, r21.w, r22.z
            if_z r21.w
              add r22.zw, r24.xxxy, -cb0[1].xxxz
              dp2 r22.z, r22.zwzz, r22.zwzz
              sqrt r22.z, r22.z
              mul_sat r22.w, r12.w, r21.z
              mad r22.w, r22.w, r10.x, l(1.000000)
              mad r22.z, r22.z, r11.w, l(0.000010)
              rsq r22.z, r22.z
              min r22.z, r22.z, l(1.000000)
              mul r25.xyz, r22.zzzz, cb0[12].xzyx
              mad r25.xyz, r24.xyzx, r25.xyzx, cb0[11].xzyx
              sample_l_indexable(texture3d)(float,float,float,float) r25.xyzw, r25.xyzx, t0.xyzw, s0, l(0.000000)
              mul r23.w, r21.z, l(20.000000)
              mov_sat r23.w, r23.w
              mad r24.w, r20.w, cb0[20].z, -r13.x
              div_sat r24.w, r24.w, r12.z
              add r24.w, -r24.w, l(1.000000)
              mul r23.w, r23.w, r24.w
              mad_sat r23.w, r23.w, r13.y, l(1.000000)
              add r24.w, -r23.w, r25.x
              add r23.w, -r23.w, l(1.000000)
              div_sat r23.w, r24.w, r23.w
              mad_sat r26.xyz, r21.zzzz, l(-2.000000, 5.000000, 5.000000, 0.000000), l(1.000000, -2.000000, 0.500000, 0.000000)
              mad r20.w, r20.w, cb0[20].z, l(-0.500000)
              mad r20.w, |r20.w|, l(-2.000000), l(1.000000)
              max r27.x, r20.w, l(0.000000)
              mad_sat r27.yz, r21.zzzz, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, 0.200000, 0.000000)
              mov r27.w, r26.x
              dp3 r20.w, r25.zwyz, r27.xywx
              mad r21.z, -r20.w, r12.x, r23.w
              mad r20.w, -r20.w, r12.x, l(1.000000)
              div_sat r20.w, r21.z, r20.w
              mul r25.xyz, r22.zzzz, cb0[14].xzyx
              mad r24.xyz, r24.xyzx, r25.xyzx, cb0[13].xzyx
              sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t1.xyzw, s1, l(0.000000)
              mad r25.xyz, r24.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
              mad r24.xyz, r26.yyyy, r25.xyzx, r24.xyzx
              mul r21.z, r12.y, r26.z
              dp3 r22.z, r24.yzxy, r27.xywx
              mad r20.w, -r22.z, r21.z, r20.w
              mad r21.z, -r22.z, r21.z, l(1.000000)
              div_sat r20.w, r20.w, r21.z
              dp2 r20.w, r20.wwww, r22.wwww
              mul r21.z, r27.z, cb0[21].w
              mul r20.w, r20.w, r21.z
              mul r20.w, -r20.w, cb0[22].x
              mul r20.w, r20.w, l(1.442695)
              exp r20.w, r20.w
              if_z r21.w
                mad r24.xyz, cb0[29].xzyx, r14.wwww, r18.xzyx
                add r25.xyz, -r1.yzwy, r24.xzyx
                dp3 r21.z, r25.xyzx, r25.xyzx
                sqrt r21.z, r21.z
                add r21.z, r21.z, -cb0[19].y
                mul r22.z, r21.z, cb0[20].z
                lt r22.w, r22.z, l(0.000000)
                lt r23.w, l(1.000000), r22.z
                or r22.w, r22.w, r23.w
                if_z r22.w
                  add r25.xy, r24.xyxx, -cb0[1].xzxx
                  dp2 r23.w, r25.xyxx, r25.xyxx
                  sqrt r23.w, r23.w
                  mul_sat r24.w, r12.w, r22.z
                  mad r24.w, r24.w, r10.x, l(1.000000)
                  mad r23.w, r23.w, r11.w, l(0.000010)
                  rsq r23.w, r23.w
                  min r23.w, r23.w, l(1.000000)
                  mul r25.xyz, r23.wwww, cb0[12].xzyx
                  mad r25.xyz, r24.xyzx, r25.xyzx, cb0[11].xzyx
                  sample_l_indexable(texture3d)(float,float,float,float) r25.xyzw, r25.xyzx, t0.xyzw, s0, l(0.000000)
                  mul r26.x, r22.z, l(20.000000)
                  mov_sat r26.x, r26.x
                  mad r26.y, r21.z, cb0[20].z, -r13.x
                  div_sat r26.y, r26.y, r12.z
                  add r26.y, -r26.y, l(1.000000)
                  mul r26.x, r26.y, r26.x
                  mad_sat r26.x, r26.x, r13.y, l(1.000000)
                  add r25.x, r25.x, -r26.x
                  add r26.x, -r26.x, l(1.000000)
                  div_sat r25.x, r25.x, r26.x
                  mad_sat r26.xyz, r22.zzzz, l(-2.000000, 5.000000, 5.000000, 0.000000), l(1.000000, -2.000000, 0.500000, 0.000000)
                  mad r21.z, r21.z, cb0[20].z, l(-0.500000)
                  mad r21.z, |r21.z|, l(-2.000000), l(1.000000)
                  max r27.x, r21.z, l(0.000000)
                  mad_sat r27.yz, r22.zzzz, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, 0.200000, 0.000000)
                  mov r27.w, r26.x
                  dp3 r21.z, r25.zwyz, r27.xywx
                  mad r22.z, -r21.z, r12.x, r25.x
                  mad r21.z, -r21.z, r12.x, l(1.000000)
                  div_sat r21.z, r22.z, r21.z
                  mul r25.xyz, r23.wwww, cb0[14].xzyx
                  mad r24.xyz, r24.xyzx, r25.xyzx, cb0[13].xzyx
                  sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t1.xyzw, s1, l(0.000000)
                  mad r25.xyz, r24.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
                  mad r24.xyz, r26.yyyy, r25.xyzx, r24.xyzx
                  mul r22.z, r12.y, r26.z
                  dp3 r23.w, r24.yzxy, r27.xywx
                  mad r21.z, -r23.w, r22.z, r21.z
                  mad r22.z, -r23.w, r22.z, l(1.000000)
                  div_sat r21.z, r21.z, r22.z
                  dp2 r21.z, r21.zzzz, r24.wwww
                  mul r22.z, r27.z, cb0[21].w
                  mul r21.z, r21.z, r22.z
                  mul r21.z, -r21.z, cb0[22].x
                  mul r21.z, r21.z, l(1.442695)
                  exp r21.z, r21.z
                  mul r20.w, r20.w, r21.z
                endif
              else
                mov r22.w, l(-1)
              endif
              or r21.z, r21.w, r22.w
            else
              mov r20.w, l(1.000000)
              mov r21.z, l(-1)
            endif
            if_z r21.z
              mad r24.xyz, cb0[29].xzyx, r14.zzzz, r18.xzyx
              add r25.xyz, -r1.yzwy, r24.xzyx
              dp3 r21.z, r25.xyzx, r25.xyzx
              sqrt r21.z, r21.z
              add r21.z, r21.z, -cb0[19].y
              mul r21.w, r21.z, cb0[20].z
              lt r22.z, r21.w, l(0.000000)
              lt r22.w, l(1.000000), r21.w
              or r22.z, r22.w, r22.z
              if_z r22.z
                add r25.xy, r24.xyxx, -cb0[1].xzxx
                dp2 r22.w, r25.xyxx, r25.xyxx
                sqrt r22.w, r22.w
                mul_sat r23.w, r12.w, r21.w
                mad r23.w, r23.w, r10.x, l(1.000000)
                mad r22.w, r22.w, r11.w, l(0.000010)
                rsq r22.w, r22.w
                min r22.w, r22.w, l(1.000000)
                mul r25.xyz, r22.wwww, cb0[12].xzyx
                mad r25.xyz, r24.xyzx, r25.xyzx, cb0[11].xzyx
                sample_l_indexable(texture3d)(float,float,float,float) r25.xyzw, r25.xyzx, t0.xyzw, s0, l(0.000000)
                mul r24.w, r21.w, l(20.000000)
                mov_sat r24.w, r24.w
                mad r26.x, r21.z, cb0[20].z, -r13.x
                div_sat r26.x, r26.x, r12.z
                add r26.x, -r26.x, l(1.000000)
                mul r24.w, r24.w, r26.x
                mad_sat r24.w, r24.w, r13.y, l(1.000000)
                add r25.x, -r24.w, r25.x
                add r24.w, -r24.w, l(1.000000)
                div_sat r24.w, r25.x, r24.w
                mad_sat r26.xyz, r21.wwww, l(-2.000000, 5.000000, 5.000000, 0.000000), l(1.000000, -2.000000, 0.500000, 0.000000)
                mad r21.z, r21.z, cb0[20].z, l(-0.500000)
                mad r21.z, |r21.z|, l(-2.000000), l(1.000000)
                max r27.x, r21.z, l(0.000000)
                mad_sat r27.yz, r21.wwww, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, 0.200000, 0.000000)
                mov r27.w, r26.x
                dp3 r21.z, r25.zwyz, r27.xywx
                mad r21.w, -r21.z, r12.x, r24.w
                mad r21.z, -r21.z, r12.x, l(1.000000)
                div_sat r21.z, r21.w, r21.z
                mul r25.xyz, r22.wwww, cb0[14].xzyx
                mad r24.xyz, r24.xyzx, r25.xyzx, cb0[13].xzyx
                sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t1.xyzw, s1, l(0.000000)
                mad r25.xyz, r24.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
                mad r24.xyz, r26.yyyy, r25.xyzx, r24.xyzx
                mul r21.w, r12.y, r26.z
                dp3 r22.w, r24.yzxy, r27.xywx
                mad r21.z, -r22.w, r21.w, r21.z
                mad r21.w, -r22.w, r21.w, l(1.000000)
                div_sat r21.z, r21.z, r21.w
                dp2 r21.z, r21.zzzz, r23.wwww
                mul r21.w, r27.z, cb0[21].w
                mul r21.z, r21.w, r21.z
                mul r21.z, -r21.z, cb0[22].x
                mul r21.z, r21.z, l(1.442695)
                exp r21.z, r21.z
                mul r20.w, r20.w, r21.z
              endif
            else
              mov r22.z, l(-1)
            endif
            if_z r22.z
              mad r24.xyz, cb0[29].xzyx, r15.xxxx, r18.xzyx
              add r25.xyz, -r1.yzwy, r24.xzyx
              dp3 r21.z, r25.xyzx, r25.xyzx
              sqrt r21.z, r21.z
              add r21.z, r21.z, -cb0[19].y
              mul r21.w, r21.z, cb0[20].z
              lt r22.z, r21.w, l(0.000000)
              lt r22.w, l(1.000000), r21.w
              or r22.z, r22.w, r22.z
              if_z r22.z
                add r22.zw, r24.xxxy, -cb0[1].xxxz
                dp2 r22.z, r22.zwzz, r22.zwzz
                sqrt r22.z, r22.z
                mul_sat r22.w, r12.w, r21.w
                mad r22.w, r22.w, r10.x, l(1.000000)
                mad r22.z, r22.z, r11.w, l(0.000010)
                rsq r22.z, r22.z
                min r22.z, r22.z, l(1.000000)
                mul r25.xyz, r22.zzzz, cb0[12].xzyx
                mad r25.xyz, r24.xyzx, r25.xyzx, cb0[11].xzyx
                sample_l_indexable(texture3d)(float,float,float,float) r25.xyzw, r25.xyzx, t0.xyzw, s0, l(0.000000)
                mul r23.w, r21.w, l(20.000000)
                mov_sat r23.w, r23.w
                mad r24.w, r21.z, cb0[20].z, -r13.x
                div_sat r24.w, r24.w, r12.z
                add r24.w, -r24.w, l(1.000000)
                mul r23.w, r23.w, r24.w
                mad_sat r23.w, r23.w, r13.y, l(1.000000)
                add r24.w, -r23.w, r25.x
                add r23.w, -r23.w, l(1.000000)
                div_sat r23.w, r24.w, r23.w
                mad_sat r26.xyz, r21.wwww, l(-2.000000, 5.000000, 5.000000, 0.000000), l(1.000000, -2.000000, 0.500000, 0.000000)
                mad r21.z, r21.z, cb0[20].z, l(-0.500000)
                mad r21.z, |r21.z|, l(-2.000000), l(1.000000)
                max r27.x, r21.z, l(0.000000)
                mad_sat r27.yz, r21.wwww, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, 0.200000, 0.000000)
                mov r27.w, r26.x
                dp3 r21.z, r25.zwyz, r27.xywx
                mad r21.w, -r21.z, r12.x, r23.w
                mad r21.z, -r21.z, r12.x, l(1.000000)
                div_sat r21.z, r21.w, r21.z
                mul r25.xyz, r22.zzzz, cb0[14].xzyx
                mad r24.xyz, r24.xyzx, r25.xyzx, cb0[13].xzyx
                sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t1.xyzw, s1, l(0.000000)
                mad r25.xyz, r24.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
                mad r24.xyz, r26.yyyy, r25.xyzx, r24.xyzx
                mul r21.w, r12.y, r26.z
                dp3 r22.z, r24.yzxy, r27.xywx
                mad r21.z, -r22.z, r21.w, r21.z
                mad r21.w, -r22.z, r21.w, l(1.000000)
                div_sat r21.z, r21.z, r21.w
                mul r21.z, r22.w, r21.z
                mul r21.z, r21.z, l(1.500000)
                mul r21.w, r27.z, cb0[21].w
                mul r21.z, r21.w, r21.z
                mul r21.z, -r21.z, cb0[22].x
                mul r21.z, r21.z, l(1.442695)
                exp r21.z, r21.z
                mul r20.w, r20.w, r21.z
              endif
            endif
            min r20.w, r20.w, l(1.000000)
            mul r21.z, r20.w, -r20.w
            mad r21.z, r5.w, r21.z, l(1.000000)
            mul r20.w, r20.w, r21.z
            sample_l_indexable(texture2d)(float,float,float,float) r22.xyz, r22.xyxx, t5.xyzw, s5, l(0.000000)
            mul r20.w, r8.z, r20.w
            mad r22.xyz, r22.xyzx, r20.wwww, r23.xyzx
            mul r22.xyz, r22.xyzx, cb0[28].xyzx
          else
            mov r22.xyz, l(0,0,0,0)
          endif
          if_nz r7.w
            dp3 r19.x, r19.xyzx, cb0[31].xyzx
            max r18.w, r18.w, l(16.000000)
            min r18.w, r14.x, r18.w
            div_sat r18.w, r18.w, cb0[20].w
            rsq r18.w, r18.w
            div r23.x, l(1.000000, 1.000000, 1.000000, 1.000000), r18.w
            add r18.w, r19.x, l(0.002500)
            max r18.w, r18.w, l(-0.197500)
            mul r18.w, r18.w, l(5.34962368)
            min r19.x, |r18.w|, l(1.000000)
            max r19.y, |r18.w|, l(1.000000)
            div r19.y, l(1.000000, 1.000000, 1.000000, 1.000000), r19.y
            mul r19.x, r19.y, r19.x
            mul r19.y, r19.x, r19.x
            mad r19.z, r19.y, l(0.0208350997), l(-0.085133)
            mad r19.z, r19.y, r19.z, l(0.180141)
            mad r19.z, r19.y, r19.z, l(-0.330299497)
            mad r19.y, r19.y, r19.z, l(0.999866)
            mul r19.z, r19.y, r19.x
            lt r20.w, l(1.000000), |r18.w|
            mad r19.z, r19.z, l(-2.000000), l(1.57079637)
            and r19.z, r20.w, r19.z
            mad r19.x, r19.x, r19.y, r19.z
            min r18.w, r18.w, l(1.000000)
            lt r18.w, r18.w, -r18.w
            movc r18.w, r18.w, -r19.x, r19.x
            mad r18.w, r18.w, l(0.909090877), l(0.740000)
            mul r23.y, r18.w, l(0.500000)
            mov_sat r23.xy, r23.xyxx
            sample_l_indexable(texture2d)(float,float,float,float) r24.xyzw, r23.xyxx, t4.xyzw, s4, l(0.000000)
            mul r18.w, r24.w, l(0.000010)
            mad r19.xyz, r24.xyzx, l(0.000010, 0.000010, 0.000010, 0.000000), -r18.wwww
            mad r19.xyz, cb0[23].wwww, r19.xyzx, r18.wwww
            mul r19.xyz, r14.yyyy, r19.xyzx
            mul r24.xyz, r14.yyyy, r19.xyzx
            mad_sat r18.w, -r19.w, cb0[20].z, l(1.000000)
            mul r18.w, r18.w, -r20.z
            mul r19.w, r18.w, l(1.442695)
            exp r19.w, r19.w
            mad r20.w, r18.w, l(0.00166666671), l(0.0104166670)
            mad r20.w, r18.w, r20.w, l(0.0555555560)
            mad r20.w, r18.w, r20.w, l(0.250000)
            mad r20.w, r18.w, r20.w, l(1.000000)
            add r21.z, |r18.w|, l(0.000100)
            log r21.z, r21.z
            mad r21.z, r21.z, l(0.693147182), l(0.577216)
            mad r20.w, r18.w, r20.w, r21.z
            mad r18.w, -r18.w, r20.w, r19.w
            max r18.w, r18.w, l(0.000000)
            mul r19.xyz, r18.wwww, r19.xyzx
            mul r18.w, r20.x, -r20.z
            mul r19.w, r18.w, l(1.442695)
            exp r19.w, r19.w
            mad r20.w, r18.w, l(0.00166666671), l(0.0104166670)
            mad r20.w, r18.w, r20.w, l(0.0555555560)
            mad r20.w, r18.w, r20.w, l(0.250000)
            mad r20.w, r18.w, r20.w, l(1.000000)
            add r21.z, |r18.w|, l(0.000100)
            log r21.z, r21.z
            mad r21.z, r21.z, l(0.693147182), l(0.577216)
            mad r20.w, r18.w, r20.w, r21.z
            mad r18.w, -r18.w, r20.w, r19.w
            max r18.w, r18.w, l(0.000000)
            mul r24.xyz, r18.wwww, r24.xyzx
            mul_sat r18.w, r20.x, l(0.500000)
            mad r19.xyz, r19.xyzx, r18.wwww, r24.xyzx
            mad r24.xyz, cb0[31].xzyx, cb0[22].xxxx, r18.xzyx
            add r25.xyz, -r1.yzwy, r24.xzyx
            dp3 r18.w, r25.xyzx, r25.xyzx
            sqrt r18.w, r18.w
            add r18.w, r18.w, -cb0[19].y
            mul r19.w, r18.w, cb0[20].z
            lt r20.x, r19.w, l(0.000000)
            lt r20.w, l(1.000000), r19.w
            or r20.x, r20.w, r20.x
            if_z r20.x
              add r21.zw, r24.xxxy, -cb0[1].xxxz
              dp2 r20.w, r21.zwzz, r21.zwzz
              sqrt r20.w, r20.w
              mul_sat r21.z, r12.w, r19.w
              mad r21.z, r21.z, r10.x, l(1.000000)
              mad r20.w, r20.w, r11.w, l(0.000010)
              rsq r20.w, r20.w
              min r20.w, r20.w, l(1.000000)
              mul r25.xyz, r20.wwww, cb0[12].xzyx
              mad r25.xyz, r24.xyzx, r25.xyzx, cb0[11].xzyx
              sample_l_indexable(texture3d)(float,float,float,float) r25.xyzw, r25.xyzx, t0.xyzw, s0, l(0.000000)
              mul r21.w, r19.w, l(20.000000)
              mov_sat r21.w, r21.w
              mad r22.w, r18.w, cb0[20].z, -r13.x
              div_sat r22.w, r22.w, r12.z
              add r22.w, -r22.w, l(1.000000)
              mul r21.w, r21.w, r22.w
              mad_sat r21.w, r21.w, r13.y, l(1.000000)
              add r22.w, -r21.w, r25.x
              add r21.w, -r21.w, l(1.000000)
              div_sat r21.w, r22.w, r21.w
              mad_sat r26.xyz, r19.wwww, l(-2.000000, 5.000000, 5.000000, 0.000000), l(1.000000, -2.000000, 0.500000, 0.000000)
              mad r18.w, r18.w, cb0[20].z, l(-0.500000)
              mad r18.w, |r18.w|, l(-2.000000), l(1.000000)
              max r27.x, r18.w, l(0.000000)
              mad_sat r27.yz, r19.wwww, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, 0.200000, 0.000000)
              mov r27.w, r26.x
              dp3 r18.w, r25.zwyz, r27.xywx
              mad r19.w, -r18.w, r12.x, r21.w
              mad r18.w, -r18.w, r12.x, l(1.000000)
              div_sat r18.w, r19.w, r18.w
              mul r25.xyz, r20.wwww, cb0[14].xzyx
              mad r24.xyz, r24.xyzx, r25.xyzx, cb0[13].xzyx
              sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t1.xyzw, s1, l(0.000000)
              mad r25.xyz, r24.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
              mad r24.xyz, r26.yyyy, r25.xyzx, r24.xyzx
              mul r19.w, r12.y, r26.z
              dp3 r20.w, r24.yzxy, r27.xywx
              mad r18.w, -r20.w, r19.w, r18.w
              mad r19.w, -r20.w, r19.w, l(1.000000)
              div_sat r18.w, r18.w, r19.w
              dp2 r18.w, r18.wwww, r21.zzzz
              mul r19.w, r27.z, cb0[21].w
              mul r18.w, r18.w, r19.w
              mul r18.w, -r18.w, cb0[22].x
              mul r18.w, r18.w, l(1.442695)
              exp r18.w, r18.w
              if_z r20.x
                mad r24.xyz, cb0[31].xzyx, r14.wwww, r18.xzyx
                add r25.xyz, -r1.yzwy, r24.xzyx
                dp3 r19.w, r25.xyzx, r25.xyzx
                sqrt r19.w, r19.w
                add r19.w, r19.w, -cb0[19].y
                mul r20.w, r19.w, cb0[20].z
                lt r21.z, r20.w, l(0.000000)
                lt r21.w, l(1.000000), r20.w
                or r21.z, r21.w, r21.z
                if_z r21.z
                  add r23.zw, r24.xxxy, -cb0[1].xxxz
                  dp2 r21.w, r23.zwzz, r23.zwzz
                  sqrt r21.w, r21.w
                  mul_sat r22.w, r12.w, r20.w
                  mad r22.w, r22.w, r10.x, l(1.000000)
                  mad r21.w, r21.w, r11.w, l(0.000010)
                  rsq r21.w, r21.w
                  min r21.w, r21.w, l(1.000000)
                  mul r25.xyz, r21.wwww, cb0[12].xzyx
                  mad r25.xyz, r24.xyzx, r25.xyzx, cb0[11].xzyx
                  sample_l_indexable(texture3d)(float,float,float,float) r25.xyzw, r25.xyzx, t0.xyzw, s0, l(0.000000)
                  mul r23.z, r20.w, l(20.000000)
                  mov_sat r23.z, r23.z
                  mad r23.w, r19.w, cb0[20].z, -r13.x
                  div_sat r23.w, r23.w, r12.z
                  add r23.w, -r23.w, l(1.000000)
                  mul r23.z, r23.w, r23.z
                  mad_sat r23.z, r23.z, r13.y, l(1.000000)
                  add r23.w, -r23.z, r25.x
                  add r23.z, -r23.z, l(1.000000)
                  div_sat r23.z, r23.w, r23.z
                  mad_sat r26.xyz, r20.wwww, l(-2.000000, 5.000000, 5.000000, 0.000000), l(1.000000, -2.000000, 0.500000, 0.000000)
                  mad r19.w, r19.w, cb0[20].z, l(-0.500000)
                  mad r19.w, |r19.w|, l(-2.000000), l(1.000000)
                  max r27.x, r19.w, l(0.000000)
                  mad_sat r27.yz, r20.wwww, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, 0.200000, 0.000000)
                  mov r27.w, r26.x
                  dp3 r19.w, r25.zwyz, r27.xywx
                  mad r20.w, -r19.w, r12.x, r23.z
                  mad r19.w, -r19.w, r12.x, l(1.000000)
                  div_sat r19.w, r20.w, r19.w
                  mul r25.xyz, r21.wwww, cb0[14].xzyx
                  mad r24.xyz, r24.xyzx, r25.xyzx, cb0[13].xzyx
                  sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t1.xyzw, s1, l(0.000000)
                  mad r25.xyz, r24.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
                  mad r24.xyz, r26.yyyy, r25.xyzx, r24.xyzx
                  mul r20.w, r12.y, r26.z
                  dp3 r21.w, r24.yzxy, r27.xywx
                  mad r19.w, -r21.w, r20.w, r19.w
                  mad r20.w, -r21.w, r20.w, l(1.000000)
                  div_sat r19.w, r19.w, r20.w
                  dp2 r19.w, r19.wwww, r22.wwww
                  mul r20.w, r27.z, cb0[21].w
                  mul r19.w, r19.w, r20.w
                  mul r19.w, -r19.w, cb0[22].x
                  mul r19.w, r19.w, l(1.442695)
                  exp r19.w, r19.w
                  mul r18.w, r18.w, r19.w
                endif
              else
                mov r21.z, l(-1)
              endif
              or r19.w, r20.x, r21.z
            else
              mov r18.w, l(1.000000)
              mov r19.w, l(-1)
            endif
            if_z r19.w
              mad r24.xyz, cb0[31].xzyx, r14.zzzz, r18.xzyx
              add r25.xyz, -r1.yzwy, r24.xzyx
              dp3 r19.w, r25.xyzx, r25.xyzx
              sqrt r19.w, r19.w
              add r19.w, r19.w, -cb0[19].y
              mul r20.x, r19.w, cb0[20].z
              lt r20.w, r20.x, l(0.000000)
              lt r21.z, l(1.000000), r20.x
              or r20.w, r20.w, r21.z
              if_z r20.w
                add r21.zw, r24.xxxy, -cb0[1].xxxz
                dp2 r21.z, r21.zwzz, r21.zwzz
                sqrt r21.z, r21.z
                mul_sat r21.w, r12.w, r20.x
                mad r21.w, r21.w, r10.x, l(1.000000)
                mad r21.z, r21.z, r11.w, l(0.000010)
                rsq r21.z, r21.z
                min r21.z, r21.z, l(1.000000)
                mul r25.xyz, r21.zzzz, cb0[12].xzyx
                mad r25.xyz, r24.xyzx, r25.xyzx, cb0[11].xzyx
                sample_l_indexable(texture3d)(float,float,float,float) r25.xyzw, r25.xyzx, t0.xyzw, s0, l(0.000000)
                mul r22.w, r20.x, l(20.000000)
                mov_sat r22.w, r22.w
                mad r23.z, r19.w, cb0[20].z, -r13.x
                div_sat r23.z, r23.z, r12.z
                add r23.z, -r23.z, l(1.000000)
                mul r22.w, r22.w, r23.z
                mad_sat r22.w, r22.w, r13.y, l(1.000000)
                add r23.z, -r22.w, r25.x
                add r22.w, -r22.w, l(1.000000)
                div_sat r22.w, r23.z, r22.w
                mad_sat r26.xyz, r20.xxxx, l(-2.000000, 5.000000, 5.000000, 0.000000), l(1.000000, -2.000000, 0.500000, 0.000000)
                mad r19.w, r19.w, cb0[20].z, l(-0.500000)
                mad r19.w, |r19.w|, l(-2.000000), l(1.000000)
                max r27.x, r19.w, l(0.000000)
                mad_sat r27.yz, r20.xxxx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, 0.200000, 0.000000)
                mov r27.w, r26.x
                dp3 r19.w, r25.zwyz, r27.xywx
                mad r20.x, -r19.w, r12.x, r22.w
                mad r19.w, -r19.w, r12.x, l(1.000000)
                div_sat r19.w, r20.x, r19.w
                mul r25.xyz, r21.zzzz, cb0[14].xzyx
                mad r24.xyz, r24.xyzx, r25.xyzx, cb0[13].xzyx
                sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t1.xyzw, s1, l(0.000000)
                mad r25.xyz, r24.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
                mad r24.xyz, r26.yyyy, r25.xyzx, r24.xyzx
                mul r20.x, r12.y, r26.z
                dp3 r21.z, r24.yzxy, r27.xywx
                mad r19.w, -r21.z, r20.x, r19.w
                mad r20.x, -r21.z, r20.x, l(1.000000)
                div_sat r19.w, r19.w, r20.x
                dp2 r19.w, r19.wwww, r21.wwww
                mul r20.x, r27.z, cb0[21].w
                mul r19.w, r19.w, r20.x
                mul r19.w, -r19.w, cb0[22].x
                mul r19.w, r19.w, l(1.442695)
                exp r19.w, r19.w
                mul r18.w, r18.w, r19.w
              endif
            else
              mov r20.w, l(-1)
            endif
            if_z r20.w
              mad r24.xyz, cb0[31].xzyx, r15.xxxx, r18.xzyx
              add r25.xyz, -r1.yzwy, r24.xzyx
              dp3 r19.w, r25.xyzx, r25.xyzx
              sqrt r19.w, r19.w
              add r19.w, r19.w, -cb0[19].y
              mul r20.x, r19.w, cb0[20].z
              lt r20.w, r20.x, l(0.000000)
              lt r21.z, l(1.000000), r20.x
              or r20.w, r20.w, r21.z
              if_z r20.w
                add r21.zw, r24.xxxy, -cb0[1].xxxz
                dp2 r20.w, r21.zwzz, r21.zwzz
                sqrt r20.w, r20.w
                mul_sat r21.z, r12.w, r20.x
                mad r21.z, r21.z, r10.x, l(1.000000)
                mad r20.w, r20.w, r11.w, l(0.000010)
                rsq r20.w, r20.w
                min r20.w, r20.w, l(1.000000)
                mul r25.xyz, r20.wwww, cb0[12].xzyx
                mad r25.xyz, r24.xyzx, r25.xyzx, cb0[11].xzyx
                sample_l_indexable(texture3d)(float,float,float,float) r25.xyzw, r25.xyzx, t0.xyzw, s0, l(0.000000)
                mul r21.w, r20.x, l(20.000000)
                mov_sat r21.w, r21.w
                mad r22.w, r19.w, cb0[20].z, -r13.x
                div_sat r22.w, r22.w, r12.z
                add r22.w, -r22.w, l(1.000000)
                mul r21.w, r21.w, r22.w
                mad_sat r21.w, r21.w, r13.y, l(1.000000)
                add r22.w, -r21.w, r25.x
                add r21.w, -r21.w, l(1.000000)
                div_sat r21.w, r22.w, r21.w
                mad_sat r26.xyz, r20.xxxx, l(-2.000000, 5.000000, 5.000000, 0.000000), l(1.000000, -2.000000, 0.500000, 0.000000)
                mad r19.w, r19.w, cb0[20].z, l(-0.500000)
                mad r19.w, |r19.w|, l(-2.000000), l(1.000000)
                max r27.x, r19.w, l(0.000000)
                mad_sat r27.yz, r20.xxxx, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, 0.200000, 0.000000)
                mov r27.w, r26.x
                dp3 r19.w, r25.zwyz, r27.xywx
                mad r20.x, -r19.w, r12.x, r21.w
                mad r19.w, -r19.w, r12.x, l(1.000000)
                div_sat r19.w, r20.x, r19.w
                mul r25.xyz, r20.wwww, cb0[14].xzyx
                mad r24.xyz, r24.xyzx, r25.xyzx, cb0[13].xzyx
                sample_l_indexable(texture3d)(float,float,float,float) r24.xyz, r24.xyzx, t1.xyzw, s1, l(0.000000)
                mad r25.xyz, r24.xyzx, l(-2.000000, -2.000000, -2.000000, 0.000000), l(1.000000, 1.000000, 1.000000, 0.000000)
                mad r24.xyz, r26.yyyy, r25.xyzx, r24.xyzx
                mul r20.x, r12.y, r26.z
                dp3 r20.w, r24.yzxy, r27.xywx
                mad r19.w, -r20.w, r20.x, r19.w
                mad r20.x, -r20.w, r20.x, l(1.000000)
                div_sat r19.w, r19.w, r20.x
                mul r19.w, r21.z, r19.w
                mul r19.w, r19.w, l(1.500000)
                mul r20.x, r27.z, cb0[21].w
                mul r19.w, r19.w, r20.x
                mul r19.w, -r19.w, cb0[22].x
                mul r19.w, r19.w, l(1.442695)
                exp r19.w, r19.w
                mul r18.w, r18.w, r19.w
              endif
            endif
            min r18.w, r18.w, l(1.000000)
            mul r19.w, r18.w, -r18.w
            mad r19.w, r8.w, r19.w, l(1.000000)
            mul r18.w, r18.w, r19.w
            sample_l_indexable(texture2d)(float,float,float,float) r23.xyz, r23.xyxx, t5.xyzw, s5, l(0.000000)
            mul r18.w, r9.w, r18.w
            mad r19.xyz, r23.xyzx, r18.wwww, r19.xyzx
            mad r22.xyz, r19.xyzx, cb0[30].xyzx, r22.xyzx
          endif
          mul r19.xyz, r20.yyyy, r22.xyzx
          div r18.w, r21.y, r20.z
          mul r19.xyz, r18.wwww, r19.xyzx
          mad r15.yzw, r19.xxyz, r17.xxxx, r15.yyzw
          mul r17.x, r17.x, r21.x
        endif
        iadd r17.w, r17.w, l(1)
        mov r16.xyz, r18.xyzx
      endloop
      lt r5.w, r17.x, l(1.000000)
      add r7.x, -r17.x, l(1.000000)
      div r10.xzw, r15.yyzw, r7.xxxx
      movc r10.xzw, r5.wwww, r10.xxzw, r15.yyzw
      add_sat r11.x, r16.w, l(-0.00393700786)
      div r5.w, r17.y, r17.z
      lt r7.x, r17.z, l(0.00392156886)
      mul r4.w, r4.w, r5.w
      movc r3.w, r7.x, r3.w, r4.w
      add r4.x, r10.y, r3.w
    else
      mov r10.xzw, l(0,0,0,0)
      mov r11.x, l(1.000000)
    endif
    mad r12.xyz, -r0.xyzx, r4.xxxx, cb0[1].xyzx
    lt r3.w, r11.x, l(1.000000)
    if_nz r3.w
      div_sat r3.w, cb0[35].w, r4.x
      movc r3.w, r0.w, l(1.000000), r3.w
      min r4.w, r4.x, cb0[35].w
      movc r4.x, r0.w, r4.x, r4.w
      mul r4.w, -r0.y, r4.x
      max r5.w, cb0[3].w, cb0[4].w
      add r7.x, |r2.y|, -cb0[2].w
      add r7.x, -r5.w, r7.x
      div r5.w, r7.x, r5.w
      ge r7.x, l(10.000000), r5.w
      if_nz r7.x
        lt r7.x, l(0.000000), r5.w
        if_nz r7.x
          mul r5.w, r5.w, l(-1.442695)
          exp r5.w, r5.w
        else
          mov r5.w, l(1.000000)
        endif
        mul r13.xyz, -r0.xyzx, r3.zxyz
        mad r13.xyz, -r0.zxyz, r3.xyzx, -r13.xyzx
        dp2 r7.x, r13.yzyy, r13.yzyy
        rsq r7.x, r7.x
        mul r13.xyz, r7.xxxx, r13.xyzx
        mul r14.xyz, r3.zxyz, r13.xyzx
        mad r13.xyz, r3.yzxy, r13.yzxy, -r14.xyzx
        add r7.x, -|r2.w|, l(1.000000)
        mul r4.x, r4.x, r7.x
        mul r4.x, r4.x, cb0[2].y
        max r4.x, r4.x, l(0.000000)
        log r4.x, r4.x
        mul r4.x, r4.x, cb0[2].z
        exp r4.x, r4.x
        mul r4.x, r4.x, cb0[2].x
        mul r4.w, r3.y, r4.w
        mul r13.xyz, r4.xxxx, r13.xyzx
        mad r13.xyz, r3.xyzx, r4.wwww, r13.xyzx
        dp3 r4.x, r13.xyzx, r13.xyzx
        sqrt r4.x, r4.x
        div r4.w, r13.y, r4.x
        min r4.x, r5.z, r4.x
        mul r4.w, r2.y, r4.w
        div r13.xz, r4.wwww, |r2.yyyy|
        mov r14.x, cb0[3].w
        mov r14.y, cb0[4].w
        div r15.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000), r14.xxyy
        mul r15.xyzw, |r2.yyyy|, r15.xyzw
        sqrt r15.xyzw, r15.xyzw
        div r4.w, r4.x, |r2.y|
        add r13.yw, r4.wwww, r13.zzzz
        mul r15.xyzw, r13.xyzw, r15.xyzw
        mul r16.xyzw, r15.xyzw, r15.xyzw
        ge r7.xw, r15.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000)
        movc r17.xz, r7.xxwx, l(1.000000,0,1.000000,0), l(-1.000000,0,-1.000000,0)
        lt r7.xw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.yyyw
        lt r11.zw, r15.yyyw, l(0.000000, 0.000000, 0.000000, 0.000000)
        iadd r7.xw, -r7.xxxw, r11.zzzw
        itof r17.yw, r7.xxxw
        lt r7.xw, r17.xxxz, r17.yyyw
        mul r11.zw, r16.xxxz, l(0.000000, 0.000000, 1.442695, 1.442695)
        exp r11.zw, r11.zzzw
        and r7.xw, r7.xxxw, r11.zzzw
        mad r16.xyzw, r16.xyzw, l(1.520000, 1.520000, 1.520000, 1.520000), l(4.000000, 4.000000, 4.000000, 4.000000)
        sqrt r16.xyzw, r16.xyzw
        mad r15.xyzw, |r15.xyzw|, l(2.319300, 2.319300, 2.319300, 2.319300), r16.xyzw
        mad r4.w, r4.w, l(0.500000), r13.z
        div r13.xyzw, r17.xyzw, r15.xyzw
        mul r4.x, r4.w, r4.x
        div r4.xw, -r4.xxxx, r14.xxxy
        mul r4.xw, r4.xxxw, l(1.442695, 0.000000, 0.000000, 1.442695)
        exp r4.xw, r4.xxxw
        mov r11.zw, l(0,0,1.000000,1.000000)
        mul r4.xw, r4.xxxw, r13.yyyw
        mul r8.w, |r2.y|, l(6.283185)
        mul r13.yw, r14.xxxy, r8.wwww
        sqrt r13.yw, r13.yyyw
        add r8.w, -|r2.y|, cb0[2].w
        div r14.xy, r8.wwww, r14.xyxx
        mul r14.xy, r14.xyxx, l(1.442695, 1.442695, 0.000000, 0.000000)
        exp r14.xy, r14.xyxx
        mul r13.yw, r13.yyyw, r14.xxxy
        mad r4.xw, r13.xxxz, r11.zzzw, -r4.xxxw
        add r4.xw, r4.xxxw, r7.xxxw
        mul r4.xw, r4.xxxw, r13.yyyw
        mul r13.xyz, r4.wwww, cb0[33].xyzx
        mad r13.xyz, cb0[32].xyzx, r4.xxxx, r13.xyzx
        mul r13.xyz, r13.xyzx, l(-1.442695, -1.442695, -1.442695, 0.000000)
        exp r13.xyz, r13.xyzx
        min r13.xyz, r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
        add r13.xyz, -r13.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
        mul r13.xyw, r5.wwww, r13.xyxz
        mad r4.x, r2.z, r2.z, l(1.000000)
        mad r4.w, r2.z, cb0[5].w, cb0[6].w
        max r4.w, r4.w, l(0.000100)
        log r4.w, r4.w
        mul r4.w, r4.w, l(-1.500000)
        exp r4.w, r4.w
        mul r14.xyz, r4.wwww, cb0[6].xyzx
        mad r14.xyz, cb0[5].xyzx, r4.xxxx, r14.xyzx
        mad r14.xyz, r9.xyzx, r13.xywx, r14.xyzx
        add r14.xyz, -r10.xzwx, r14.xyzx
        mad r10.xzw, r13.xxyw, r14.xxyz, r10.xxzw
        add r4.x, r13.y, r13.x
        mad r4.x, r13.z, r5.w, r4.x
        mad r4.x, -r4.x, l(0.333333343), l(1.000000)
        max r4.x, r4.x, l(0.000000)
      else
        mov r4.x, l(1.000000)
      endif
      add r4.w, -r11.x, l(1.000000)
      mul r3.w, r3.w, r4.w
      mad r3.w, -r3.w, r4.x, l(1.000000)
      movc r3.w, r0.w, r11.x, r3.w
    else
      mov r3.w, l(1.000000)
    endif
    mov r4.x, l(1.000000)
  else
    mov r10.xzw, l(0,0,0,0)
    mov r12.xyz, -r0.xyzx
    mov r4.x, l(0)
    mov r11.x, l(1.000000)
    mov r3.w, l(1.000000)
  endif
  lt r4.w, l(0.000000), r11.x
  lt r5.w, cb0[24].y, l(1.000000)
  and r4.w, r4.w, r5.w
  lt r5.w, l(0.000000), cb0[24].z
  and r4.w, r4.w, r5.w
  if_nz r4.w
    mul r7.xw, -r0.xxxz, r5.yyyy
    mad r13.xyz, -r0.xyzx, r5.yyyy, cb0[1].xyzx
    add r1.yzw, -r1.yyzw, r13.xxyz
    dp2 r4.w, r7.xwxx, r7.xwxx
    sqrt r4.w, r4.w
    min r5.w, cb0[16].w, cb0[16].z
    mad r4.w, r4.w, r5.w, l(0.000010)
    rsq r4.w, r4.w
    min r4.w, r4.w, l(1.000000)
    mul r7.xw, r4.wwww, cb0[17].zzzw
    mad r7.xw, r13.xxxz, r7.xxxw, cb0[17].xxxy
    sample_l_indexable(texture2d)(float,float,float,float) r7.xw, r7.xwxx, t2.xywz, s2, l(0.000000)
    mad r7.xw, r7.xxxw, l(2.000000, 0.000000, 0.000000, 2.000000), l(-1.000000, 0.000000, 0.000000, -1.000000)
    mul r11.zw, r4.wwww, cb0[16].zzzw
    mad r11.zw, r13.xxxz, r11.zzzw, cb0[16].xxxy
    mad r7.xw, r7.xxxw, cb0[25].xxxy, r11.zzzw
    add r4.w, -cb0[24].y, l(1.000000)
    mul_sat r5.w, r4.w, l(4.000000)
    mul r5.w, r5.w, l(0.950000)
    sample_l_indexable(texture2d)(float,float,float,float) r13.xyz, r7.xwxx, t3.xyzw, s3, l(0.000000)
    mad_sat r14.x, cb0[24].w, l(-2.000000), l(1.000000)
    add r7.x, cb0[24].w, l(-0.500000)
    mad r7.x, |r7.x|, l(-2.000000), l(1.000000)
    max r14.y, r7.x, l(0.000000)
    mad_sat r14.z, cb0[24].w, l(2.000000), l(-1.000000)
    dp3 r7.x, r13.xyzx, r14.xyzx
    mad r5.w, r7.x, r5.w, -cb0[24].y
    div_sat r5.w, r5.w, r4.w
    mul r7.x, r5.w, cb0[24].z
    lt r7.w, l(0.000000), r7.x
    if_nz r7.w
      lt r7.w, cb0[29].w, cb0[29].y
      and r7.z, r7.z, r7.w
      if_nz r7.z
        dp3 r7.z, r1.yzwy, r1.yzwy
        sqrt r7.z, r7.z
        div r13.xyz, r1.yzwy, r7.zzzz
        add r7.z, r1.x, r7.z
        dp3 r7.w, r13.xyzx, cb0[29].xyzx
        add r8.w, cb0[20].w, l(-32.000000)
        max r7.z, r7.z, l(16.000000)
        min r7.z, r8.w, r7.z
        div_sat r7.z, r7.z, cb0[20].w
        rsq r7.z, r7.z
        div r13.x, l(1.000000, 1.000000, 1.000000, 1.000000), r7.z
        add r7.z, r7.w, l(0.002500)
        max r7.z, r7.z, l(-0.197500)
        mul r7.z, r7.z, l(5.34962368)
        min r7.w, |r7.z|, l(1.000000)
        max r8.w, |r7.z|, l(1.000000)
        div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w
        mul r7.w, r7.w, r8.w
        mul r8.w, r7.w, r7.w
        mad r10.y, r8.w, l(0.0208350997), l(-0.085133)
        mad r10.y, r8.w, r10.y, l(0.180141)
        mad r10.y, r8.w, r10.y, l(-0.330299497)
        mad r8.w, r8.w, r10.y, l(0.999866)
        mul r10.y, r7.w, r8.w
        lt r11.z, l(1.000000), |r7.z|
        mad r10.y, r10.y, l(-2.000000), l(1.57079637)
        and r10.y, r11.z, r10.y
        mad r7.w, r7.w, r8.w, r10.y
        min r7.z, r7.z, l(1.000000)
        lt r7.z, r7.z, -r7.z
        movc r7.z, r7.z, -r7.w, r7.w
        mad r7.z, r7.z, l(0.909090877), l(0.740000)
        mul r13.y, r7.z, l(0.500000)
        mov_sat r13.xy, r13.xyxx
        sample_l_indexable(texture2d)(float,float,float,float) r14.xyz, r13.xyxx, t4.xyzw, s4, l(0.000000)
        mul r14.xyz, r14.xyzx, cb0[28].xyzx
        sample_l_indexable(texture2d)(float,float,float,float) r13.xyz, r13.xyxx, t5.xyzw, s5, l(0.000000)
        mul r13.xyz, r13.xyzx, cb0[28].xyzx
        mul r7.z, r8.z, l(100.000000)
        mul r14.xyz, r14.xyzx, l(0.000010, 0.000010, 0.000010, 0.000000)
        mad r13.xyz, r13.xyzx, r7.zzzz, r14.xyzx
      else
        mov r13.xyz, l(0,0,0,0)
      endif
      lt r7.z, cb0[29].w, cb0[31].y
      and r7.z, r8.x, r7.z
      if_nz r7.z
        dp3 r7.z, r1.yzwy, r1.yzwy
        sqrt r7.z, r7.z
        div r1.yzw, r1.yyzw, r7.zzzz
        add r7.z, r1.x, r7.z
        dp3 r1.y, r1.yzwy, cb0[31].xyzx
        add r1.z, cb0[20].w, l(-32.000000)
        max r1.w, r7.z, l(16.000000)
        min r1.z, r1.z, r1.w
        div_sat r1.z, r1.z, cb0[20].w
        rsq r1.z, r1.z
        div r14.x, l(1.000000, 1.000000, 1.000000, 1.000000), r1.z
        add r1.y, r1.y, l(0.002500)
        max r1.y, r1.y, l(-0.197500)
        mul r1.y, r1.y, l(5.34962368)
        min r1.z, |r1.y|, l(1.000000)
        max r1.w, |r1.y|, l(1.000000)
        div r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r1.w
        mul r1.z, r1.w, r1.z
        mul r1.w, r1.z, r1.z
        mad r7.z, r1.w, l(0.0208350997), l(-0.085133)
        mad r7.z, r1.w, r7.z, l(0.180141)
        mad r7.z, r1.w, r7.z, l(-0.330299497)
        mad r1.w, r1.w, r7.z, l(0.999866)
        mul r7.z, r1.w, r1.z
        lt r7.w, l(1.000000), |r1.y|
        mad r7.z, r7.z, l(-2.000000), l(1.57079637)
        and r7.z, r7.w, r7.z
        mad r1.z, r1.z, r1.w, r7.z
        min r1.y, r1.y, l(1.000000)
        lt r1.y, r1.y, -r1.y
        movc r1.y, r1.y, -r1.z, r1.z
        mad r1.y, r1.y, l(0.909090877), l(0.740000)
        mul r14.y, r1.y, l(0.500000)
        mov_sat r14.xy, r14.xyxx
        sample_l_indexable(texture2d)(float,float,float,float) r1.yzw, r14.xyxx, t4.wxyz, s4, l(0.000000)
        mul r1.yzw, r1.yyzw, cb0[30].xxyz
        sample_l_indexable(texture2d)(float,float,float,float) r8.xzw, r14.xyxx, t5.xwyz, s5, l(0.000000)
        mul r8.xzw, r8.xxzw, cb0[30].xxyz
        mul r7.z, r9.w, l(100.000000)
        mul r1.yzw, r1.yyzw, l(0.000000, 0.000010, 0.000010, 0.000010)
        mad r1.yzw, r8.xxzw, r7.zzzz, r1.yyzw
      else
        mov r1.yzw, l(0,0,0,0)
      endif
      mul_sat r4.w, r4.w, l(0.500000)
      mul r4.w, r4.w, r7.x
      add r1.yzw, r1.yyzw, r13.xxyz
      add r1.yzw, r1.yyzw, l(0.000000, 0.00000807749984, 0.00000807749984, 0.00000807749984)
      mul r1.yzw, r4.wwww, r1.yyzw
      mad_sat r11.y, -r5.w, cb0[24].z, l(1.000000)
    else
      mov r1.yzw, l(0,0,0,0)
      mov r11.y, l(1.000000)
    endif
    lt r4.w, r11.y, l(1.000000)
    if_nz r4.w
      div_sat r4.w, cb0[35].w, r5.y
      movc r4.w, r0.w, l(1.000000), r4.w
      min r5.w, r5.y, cb0[35].w
      movc r5.y, r0.w, r5.y, r5.w
      mul r5.w, -r0.y, r5.y
      max r7.x, cb0[3].w, cb0[4].w
      add r7.z, |r2.y|, -cb0[2].w
      add r7.z, -r7.x, r7.z
      div r7.x, r7.z, r7.x
      ge r7.z, l(10.000000), r7.x
      if_nz r7.z
        lt r7.z, l(0.000000), r7.x
        if_nz r7.z
          mul r7.x, r7.x, l(-1.442695)
          exp r7.x, r7.x
        else
          mov r7.x, l(1.000000)
        endif
        mul r8.xzw, -r0.xxyz, r3.zzxy
        mad r8.xzw, -r0.zzxy, r3.xxyz, -r8.xxzw
        dp2 r7.z, r8.zwzz, r8.zwzz
        rsq r7.z, r7.z
        mul r8.xzw, r7.zzzz, r8.xxzw
        mul r13.xyz, r3.zxyz, r8.xzwx
        mad r8.xzw, r3.yyzx, r8.zzwx, -r13.xxyz
        add r7.z, -|r2.w|, l(1.000000)
        mul r5.y, r5.y, r7.z
        mul r5.y, r5.y, cb0[2].y
        max r5.y, r5.y, l(0.000000)
        log r5.y, r5.y
        mul r5.y, r5.y, cb0[2].z
        exp r5.y, r5.y
        mul r5.y, r5.y, cb0[2].x
        mul r5.w, r3.y, r5.w
        mul r8.xzw, r5.yyyy, r8.xxzw
        mad r8.xzw, r3.xxyz, r5.wwww, r8.xxzw
        dp3 r5.y, r8.xzwx, r8.xzwx
        sqrt r5.y, r5.y
        div r5.w, r8.z, r5.y
        min r5.y, r5.z, r5.y
        mul r5.w, r2.y, r5.w
        div r13.xz, r5.wwww, |r2.yyyy|
        mov r14.x, cb0[3].w
        mov r14.y, cb0[4].w
        div r15.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000), r14.xxyy
        mul r15.xyzw, |r2.yyyy|, r15.xyzw
        sqrt r15.xyzw, r15.xyzw
        div r5.w, r5.y, |r2.y|
        add r13.yw, r5.wwww, r13.zzzz
        mul r15.xyzw, r13.xyzw, r15.xyzw
        mul r16.xyzw, r15.xyzw, r15.xyzw
        ge r7.zw, r15.xxxz, l(0.000000, 0.000000, 0.000000, 0.000000)
        movc r17.xz, r7.zzwz, l(1.000000,0,1.000000,0), l(-1.000000,0,-1.000000,0)
        lt r7.zw, l(0.000000, 0.000000, 0.000000, 0.000000), r15.yyyw
        lt r8.xz, r15.yywy, l(0.000000, 0.000000, 0.000000, 0.000000)
        iadd r7.zw, -r7.zzzw, r8.xxxz
        itof r17.yw, r7.zzzw
        lt r7.zw, r17.xxxz, r17.yyyw
        mul r8.xz, r16.xxzx, l(1.442695, 0.000000, 1.442695, 0.000000)
        exp r8.xz, r8.xxzx
        and r7.zw, r7.zzzw, r8.xxxz
        mad r16.xyzw, r16.xyzw, l(1.520000, 1.520000, 1.520000, 1.520000), l(4.000000, 4.000000, 4.000000, 4.000000)
        sqrt r16.xyzw, r16.xyzw
        mad r15.xyzw, |r15.xyzw|, l(2.319300, 2.319300, 2.319300, 2.319300), r16.xyzw
        mad r5.w, r5.w, l(0.500000), r13.z
        div r13.xyzw, r17.xyzw, r15.xyzw
        mul r5.y, r5.w, r5.y
        div r5.yw, -r5.yyyy, r14.xxxy
        mul r5.yw, r5.yyyw, l(0.000000, 1.442695, 0.000000, 1.442695)
        exp r5.yw, r5.yyyw
        mov r8.xz, l(1.000000,0,1.000000,0)
        mul r5.yw, r5.yyyw, r13.yyyw
        mul r8.w, |r2.y|, l(6.283185)
        mul r11.zw, r14.xxxy, r8.wwww
        sqrt r11.zw, r11.zzzw
        add r8.w, -|r2.y|, cb0[2].w
        div r13.yw, r8.wwww, r14.xxxy
        mul r13.yw, r13.yyyw, l(0.000000, 1.442695, 0.000000, 1.442695)
        exp r13.yw, r13.yyyw
        mul r11.zw, r11.zzzw, r13.yyyw
        mad r5.yw, r13.xxxz, r8.xxxz, -r5.yyyw
        add r5.yw, r5.yyyw, r7.zzzw
        mul r5.yw, r5.yyyw, r11.zzzw
        mul r8.xzw, r5.wwww, cb0[33].xxyz
        mad r8.xzw, cb0[32].xxyz, r5.yyyy, r8.xxzw
        mul r8.xzw, r8.xxzw, l(-1.442695, 0.000000, -1.442695, -1.442695)
        exp r8.xzw, r8.xxzw
        min r8.xzw, r8.xxzw, l(1.000000, 0.000000, 1.000000, 1.000000)
        add r8.xzw, -r8.xxzw, l(1.000000, 0.000000, 1.000000, 1.000000)
        mul r13.xyz, r7.xxxx, r8.xzwx
        mad r5.y, r2.z, r2.z, l(1.000000)
        mad r5.w, r2.z, cb0[5].w, cb0[6].w
        max r5.w, r5.w, l(0.000100)
        log r5.w, r5.w
        mul r5.w, r5.w, l(-1.500000)
        exp r5.w, r5.w
        mul r14.xyz, r5.wwww, cb0[6].xyzx
        mad r14.xyz, cb0[5].xyzx, r5.yyyy, r14.xyzx
        mad r14.xyz, r9.xyzx, r13.xyzx, r14.xyzx
        add r14.xyz, -r1.yzwy, r14.xyzx
        mad r1.yzw, r13.xxyz, r14.xxyz, r1.yyzw
        add r5.y, r13.y, r13.x
        mad r5.y, r8.w, r7.x, r5.y
        mad r5.y, -r5.y, l(0.333333343), l(1.000000)
        max r5.y, r5.y, l(0.000000)
      else
        mov r5.y, l(1.000000)
      endif
      add r5.w, -r11.y, l(1.000000)
      mul r4.w, r4.w, r5.w
      mad r4.w, -r4.w, r5.y, l(1.000000)
      movc r0.w, r0.w, r11.y, r4.w
    else
      mov r0.w, l(1.000000)
    endif
  else
    mov r1.yzw, l(0,0,0,0)
    mov r11.y, l(1.000000)
    mov r0.w, l(1.000000)
  endif
else
  mov r10.xzw, l(0,0,0,0)
  mov r1.yzw, l(0,0,0,0)
  mov r11.xy, l(1.000000,1.000000,0,0)
  mov r12.xyz, -r0.xyzx
  mov r4.x, l(0)
  mov r3.w, l(1.000000)
  mov r0.w, l(1.000000)
endif
mul r4.w, r11.y, r11.x
if_nz r8.y
  if_nz r7.y
    mul r5.y, r3.y, cb0[29].y
    dp3 r5.w, -r0.xyzx, cb0[29].xyzx
    add r7.x, cb0[19].x, cb0[20].w
    ge r7.x, r7.x, r4.z
    if_nz r7.x
      add r7.x, r1.x, r4.z
      add r7.yz, cb0[20].wwww, l(0.000000, -16.000000, -32.000000, 0.000000)
      max r7.x, r7.x, l(16.000000)
      min r7.x, r7.y, r7.x
      add r7.y, r7.x, l(-16.000000)
      div_sat r7.y, r7.y, r7.z
      rsq r7.y, r7.y
      div r8.x, l(1.000000, 1.000000, 1.000000, 1.000000), r7.y
      max r7.x, r7.x, l(0.000000)
      mad r7.y, cb0[19].x, l(2.000000), r7.x
      mul r7.y, r7.y, r7.x
      sqrt r7.y, r7.y
      add r7.x, r7.x, cb0[19].x
      div r7.x, -r7.y, r7.x
      lt r7.y, r7.x, r4.y
      add r7.z, r4.y, -r7.x
      add r7.w, -r7.x, l(1.000000)
      div_sat r7.z, r7.z, r7.w
      log r7.z, r7.z
      mul r7.z, r7.z, l(0.200000)
      exp r7.z, r7.z
      div r7.w, l(0.500000), cb0[34].y
      add r8.z, r7.w, l(0.500000)
      mad r8.w, cb0[34].y, l(0.500000), l(-1.000000)
      mul r7.z, r7.z, r8.w
      div r7.z, r7.z, cb0[34].y
      add r7.z, r7.z, r8.z
      add r8.z, -r4.y, r7.x
      add r7.x, r7.x, l(1.000000)
      div_sat r7.x, r8.z, r7.x
      log r7.x, r7.x
      mul r7.x, r7.x, l(0.200000)
      exp r7.x, r7.x
      mul r7.x, r8.w, r7.x
      div r7.x, r7.x, cb0[34].y
      add r7.x, r7.x, r7.w
      movc r7.z, r7.y, r7.z, r7.x
      max r5.y, r5.y, l(-0.197500)
      mul r5.y, r5.y, l(5.34962368)
      min r8.z, |r5.y|, l(1.000000)
      max r8.w, |r5.y|, l(1.000000)
      div r8.w, l(1.000000, 1.000000, 1.000000, 1.000000), r8.w
      mul r8.z, r8.w, r8.z
      mul r8.w, r8.z, r8.z
      mad r9.w, r8.w, l(0.0208350997), l(-0.085133)
      mad r9.w, r8.w, r9.w, l(0.180141)
      mad r9.w, r8.w, r9.w, l(-0.330299497)
      mad r8.w, r8.w, r9.w, l(0.999866)
      mul r9.w, r8.w, r8.z
      lt r10.y, l(1.000000), |r5.y|
      mad r9.w, r9.w, l(-2.000000), l(1.57079637)
      and r9.w, r10.y, r9.w
      mad r8.z, r8.z, r8.w, r9.w
      min r5.y, r5.y, l(1.000000)
      lt r5.y, r5.y, -r5.y
      movc r5.y, r5.y, -r8.z, r8.z
      mad r5.y, r5.y, l(0.909090877), l(0.740000)
      mul r8.y, r5.y, l(0.500000)
      max r5.y, r5.w, l(-1.000000)
      min r5.y, r5.y, l(1.000000)
      add r5.w, -|r5.y|, l(1.000000)
      sqrt r5.w, r5.w
      mad r8.z, |r5.y|, l(-0.0187292993), l(0.074261)
      mad r8.z, r8.z, |r5.y|, l(-0.212114394)
      mad r8.z, r8.z, |r5.y|, l(1.57072878)
      mul r8.w, r5.w, r8.z
      mad r8.w, r8.w, l(-2.000000), l(3.14159274)
      lt r5.y, r5.y, -r5.y
      and r5.y, r5.y, r8.w
      mad r5.y, r8.z, r5.w, r5.y
      mad r5.y, r5.y, l(0.318309963), l(-0.500000)
      lt r5.w, l(0.000000), r5.y
      lt r8.z, r5.y, l(0.000000)
      iadd r5.w, -r5.w, r8.z
      itof r5.w, r5.w
      add r5.y, r5.y, r5.y
      log r5.y, |r5.y|
      mul r5.y, r5.y, l(1.500000)
      exp r5.y, r5.y
      mul r5.y, r5.y, r5.w
      mad r5.y, r5.y, l(0.500000), l(0.500000)
      add r11.xyz, cb0[34].xzwx, l(-1.000000, -1.000000, -1.000000, 0.000000)
      mul r5.w, r5.y, r11.z
      mad r8.xy, r8.xyxx, r11.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000)
      div r7.xy, r8.xyxx, cb0[34].xzxx
      round_ni r5.w, r5.w
      max r5.w, r5.w, l(0.000000)
      min r8.y, r11.z, r5.w
      mad r5.y, r5.y, r11.z, -r8.y
      max r5.y, r5.y, l(0.000000)
      add r5.w, r7.y, r8.y
      div r5.w, r5.w, cb0[34].w
      add r8.xz, r8.yyyy, l(1.000000, 0.000000, 1.000000, 0.000000)
      div r8.zw, r8.yyyz, cb0[34].wwww
      mul r7.y, cb0[34].w, cb0[34].z
      div r11.xy, l(0.500000, -0.500000, 0.000000, 0.000000), r7.yyyy
      add r8.zw, r8.zzzw, r11.xxxy
      max r5.w, r5.w, r8.z
      min r7.w, r8.w, r5.w
      min r5.w, r11.z, r8.x
      add r5.w, -r8.y, r5.w
      div r8.z, r5.w, cb0[34].w
      mov r8.xy, l(0,0,0,0)
      add r8.xyz, r7.xzwx, r8.xyzx
      sample_l_indexable(texture3d)(float,float,float,float) r7.xyz, r7.xzwx, t6.xyzw, s6, l(0.000000)
      sample_l_indexable(texture3d)(float,float,float,float) r8.xyz, r8.xyzx, t6.xyzw, s6, l(0.000000)
      add r8.xyz, -r7.xyzx, r8.xyzx
      mad r7.xyz, r5.yyyy, r8.xyzx, r7.xyzx
      max r7.xyz, r7.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
      mad r5.y, r3.y, cb0[29].y, l(0.200000)
      mul_sat r5.y, r5.y, l(5.000000)
      mad r5.w, r5.y, l(-2.000000), l(3.000000)
      mul r5.y, r5.y, r5.y
      mul r5.y, r5.y, r5.w
      mul r7.xyz, r5.yyyy, r7.xyzx
    else
      mov r7.xyz, l(0,0,0,0)
    endif
    if_nz r2.x
      mad r8.xyz, r5.xxxx, -r0.xyzx, r6.xyzx
      dp3 r5.y, r8.xyzx, r8.xyzx
      sqrt r5.y, r5.y
      div r8.xyz, r8.xyzx, r5.yyyy
      dp3 r5.y, r8.xyzx, cb0[29].xyzx
      add r5.w, cb0[20].w, l(-32.000000)
      min r5.w, r5.w, l(16.000000)
      div_sat r5.w, r5.w, cb0[20].w
      rsq r5.w, r5.w
      div r8.x, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w
      add r8.zw, r5.yyyy, l(0.000000, 0.000000, 0.002500, 0.200000)
      max r5.w, r8.z, l(-0.197500)
      mul r5.w, r5.w, l(5.34962368)
      min r7.w, |r5.w|, l(1.000000)
      max r8.z, |r5.w|, l(1.000000)
      div r8.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
      mul r7.w, r7.w, r8.z
      mul r8.z, r7.w, r7.w
      mad r9.w, r8.z, l(0.0208350997), l(-0.085133)
      mad r9.w, r8.z, r9.w, l(0.180141)
      mad r9.w, r8.z, r9.w, l(-0.330299497)
      mad r8.z, r8.z, r9.w, l(0.999866)
      mul r9.w, r7.w, r8.z
      lt r10.y, l(1.000000), |r5.w|
      mad r9.w, r9.w, l(-2.000000), l(1.57079637)
      and r9.w, r10.y, r9.w
      mad r7.w, r7.w, r8.z, r9.w
      min r5.w, r5.w, l(1.000000)
      lt r5.w, r5.w, -r5.w
      movc r5.w, r5.w, -r7.w, r7.w
      mad r5.w, r5.w, l(0.909090877), l(0.740000)
      mul r8.y, r5.w, l(0.500000)
      mov_sat r8.xy, r8.xyxx
      sample_l_indexable(texture2d)(float,float,float,float) r11.xyz, r8.xyxx, t4.xyzw, s4, l(0.000000)
      mul r11.xyz, r11.xyzx, l(0.000010, 0.000010, 0.000010, 0.000000)
      sample_l_indexable(texture2d)(float,float,float,float) r8.xyz, r8.xyxx, t5.xyzw, s5, l(0.000000)
      max r5.y, r5.y, l(0.000000)
      mad r8.xyz, r5.yyyy, r8.xyzx, r11.xyzx
      mul r8.xyz, r8.xyzx, l(0.000000, 0.00250979979, 0.00517647993, 0.000000)
      mul_sat r5.y, r8.w, l(5.000000)
      mad r5.w, r5.y, l(-2.000000), l(3.000000)
      mul r5.y, r5.y, r5.y
      mul r5.y, r5.y, r5.w
      mul r8.xyz, r5.yyyy, r8.xyzx
    else
      mov r8.xyz, l(0,0,0,0)
    endif
    add r7.xyz, r7.xyzx, r8.xyzx
    mul r7.xyz, r7.xyzx, cb0[28].xyzx
  else
    mov r7.xyz, l(0,0,0,0)
  endif
  if_nz r6.w
    mul r5.y, r3.y, cb0[31].y
    dp3 r5.w, -r0.xyzx, cb0[31].xyzx
    add r6.w, cb0[19].x, cb0[20].w
    ge r6.w, r6.w, r4.z
    if_nz r6.w
      add r1.x, r1.x, r4.z
      add r8.xy, cb0[20].wwww, l(-16.000000, -32.000000, 0.000000, 0.000000)
      max r1.x, r1.x, l(16.000000)
      min r1.x, r8.x, r1.x
      add r4.z, r1.x, l(-16.000000)
      div_sat r4.z, r4.z, r8.y
      rsq r4.z, r4.z
      div r8.x, l(1.000000, 1.000000, 1.000000, 1.000000), r4.z
      max r1.x, r1.x, l(0.000000)
      mad r4.z, cb0[19].x, l(2.000000), r1.x
      mul r4.z, r1.x, r4.z
      sqrt r4.z, r4.z
      add r1.x, r1.x, cb0[19].x
      div r1.x, -r4.z, r1.x
      lt r4.z, r1.x, r4.y
      add r6.w, -r1.x, r4.y
      add r7.w, -r1.x, l(1.000000)
      div_sat r6.w, r6.w, r7.w
      log r6.w, r6.w
      mul r6.w, r6.w, l(0.200000)
      exp r6.w, r6.w
      div r7.w, l(0.500000), cb0[34].y
      add r8.z, r7.w, l(0.500000)
      mad r8.w, cb0[34].y, l(0.500000), l(-1.000000)
      mul r6.w, r6.w, r8.w
      div r6.w, r6.w, cb0[34].y
      add r6.w, r6.w, r8.z
      add r4.y, -r4.y, r1.x
      add r1.x, r1.x, l(1.000000)
      div_sat r1.x, r4.y, r1.x
      log r1.x, r1.x
      mul r1.x, r1.x, l(0.200000)
      exp r1.x, r1.x
      mul r1.x, r8.w, r1.x
      div r1.x, r1.x, cb0[34].y
      add r1.x, r1.x, r7.w
      movc r11.z, r4.z, r6.w, r1.x
      max r1.x, r5.y, l(-0.197500)
      mul r1.x, r1.x, l(5.34962368)
      min r4.y, |r1.x|, l(1.000000)
      max r4.z, |r1.x|, l(1.000000)
      div r4.z, l(1.000000, 1.000000, 1.000000, 1.000000), r4.z
      mul r4.y, r4.z, r4.y
      mul r4.z, r4.y, r4.y
      mad r5.y, r4.z, l(0.0208350997), l(-0.085133)
      mad r5.y, r4.z, r5.y, l(0.180141)
      mad r5.y, r4.z, r5.y, l(-0.330299497)
      mad r4.z, r4.z, r5.y, l(0.999866)
      mul r5.y, r4.z, r4.y
      lt r6.w, l(1.000000), |r1.x|
      mad r5.y, r5.y, l(-2.000000), l(1.57079637)
      and r5.y, r6.w, r5.y
      mad r4.y, r4.y, r4.z, r5.y
      min r1.x, r1.x, l(1.000000)
      lt r1.x, r1.x, -r1.x
      movc r1.x, r1.x, -r4.y, r4.y
      mad r1.x, r1.x, l(0.909090877), l(0.740000)
      mul r8.y, r1.x, l(0.500000)
      max r1.x, r5.w, l(-1.000000)
      min r1.x, r1.x, l(1.000000)
      add r4.y, -|r1.x|, l(1.000000)
      sqrt r4.y, r4.y
      mad r4.z, |r1.x|, l(-0.0187292993), l(0.074261)
      mad r4.z, r4.z, |r1.x|, l(-0.212114394)
      mad r4.z, r4.z, |r1.x|, l(1.57072878)
      mul r5.y, r4.y, r4.z
      mad r5.y, r5.y, l(-2.000000), l(3.14159274)
      lt r1.x, r1.x, -r1.x
      and r1.x, r1.x, r5.y
      mad r1.x, r4.z, r4.y, r1.x
      mad r1.x, r1.x, l(0.318309963), l(-0.500000)
      lt r4.y, l(0.000000), r1.x
      lt r4.z, r1.x, l(0.000000)
      iadd r4.y, -r4.y, r4.z
      itof r4.y, r4.y
      add r1.x, r1.x, r1.x
      log r1.x, |r1.x|
      mul r1.x, r1.x, l(1.500000)
      exp r1.x, r1.x
      mul r1.x, r1.x, r4.y
      mad r1.x, r1.x, l(0.500000), l(0.500000)
      add r13.xyz, cb0[34].xzwx, l(-1.000000, -1.000000, -1.000000, 0.000000)
      mul r4.y, r1.x, r13.z
      mad r5.yw, r8.xxxy, r13.xxxy, l(0.000000, 0.500000, 0.000000, 0.500000)
      div r11.xy, r5.ywyy, cb0[34].xzxx
      round_ni r4.y, r4.y
      max r4.y, r4.y, l(0.000000)
      min r8.y, r13.z, r4.y
      mad r1.x, r1.x, r13.z, -r8.y
      max r1.x, r1.x, l(0.000000)
      add r4.y, r11.y, r8.y
      div r4.y, r4.y, cb0[34].w
      add r8.xz, r8.yyyy, l(1.000000, 0.000000, 1.000000, 0.000000)
      div r5.yw, r8.yyyz, cb0[34].wwww
      mul r4.z, cb0[34].w, cb0[34].z
      div r8.zw, l(0.000000, 0.000000, 0.500000, -0.500000), r4.zzzz
      add r5.yw, r5.yyyw, r8.zzzw
      max r4.y, r4.y, r5.y
      min r11.w, r5.w, r4.y
      min r4.y, r13.z, r8.x
      add r4.y, -r8.y, r4.y
      div r8.z, r4.y, cb0[34].w
      mov r8.xy, l(0,0,0,0)
      add r8.xyz, r8.xyzx, r11.xzwx
      sample_l_indexable(texture3d)(float,float,float,float) r11.xyz, r11.xzwx, t6.xyzw, s6, l(0.000000)
      sample_l_indexable(texture3d)(float,float,float,float) r8.xyz, r8.xyzx, t6.xyzw, s6, l(0.000000)
      add r8.xyz, -r11.xyzx, r8.xyzx
      mad r8.xyz, r1.xxxx, r8.xyzx, r11.xyzx
      max r8.xyz, r8.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
      mad r1.x, r3.y, cb0[31].y, l(0.200000)
      mul_sat r1.x, r1.x, l(5.000000)
      mad r4.y, r1.x, l(-2.000000), l(3.000000)
      mul r1.x, r1.x, r1.x
      mul r1.x, r1.x, r4.y
      mul r8.xyz, r1.xxxx, r8.xyzx
    else
      mov r8.xyz, l(0,0,0,0)
    endif
    if_nz r2.x
      mad r5.xyw, r5.xxxx, -r0.xyxz, r6.xyxz
      dp3 r1.x, r5.xywx, r5.xywx
      sqrt r1.x, r1.x
      div r5.xyw, r5.xyxw, r1.xxxx
      dp3 r1.x, r5.xywx, cb0[31].xyzx
      add r2.x, cb0[20].w, l(-32.000000)
      min r2.x, r2.x, l(16.000000)
      div_sat r2.x, r2.x, cb0[20].w
      rsq r2.x, r2.x
      div r5.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.x
      add r4.yz, r1.xxxx, l(0.000000, 0.002500, 0.200000, 0.000000)
      max r2.x, r4.y, l(-0.197500)
      mul r2.x, r2.x, l(5.34962368)
      min r4.y, |r2.x|, l(1.000000)
      max r5.w, |r2.x|, l(1.000000)
      div r5.w, l(1.000000, 1.000000, 1.000000, 1.000000), r5.w
      mul r4.y, r4.y, r5.w
      mul r5.w, r4.y, r4.y
      mad r6.x, r5.w, l(0.0208350997), l(-0.085133)
      mad r6.x, r5.w, r6.x, l(0.180141)
      mad r6.x, r5.w, r6.x, l(-0.330299497)
      mad r5.w, r5.w, r6.x, l(0.999866)
      mul r6.x, r4.y, r5.w
      lt r6.y, l(1.000000), |r2.x|
      mad r6.x, r6.x, l(-2.000000), l(1.57079637)
      and r6.x, r6.y, r6.x
      mad r4.y, r4.y, r5.w, r6.x
      min r2.x, r2.x, l(1.000000)
      lt r2.x, r2.x, -r2.x
      movc r2.x, r2.x, -r4.y, r4.y
      mad r2.x, r2.x, l(0.909090877), l(0.740000)
      mul r5.y, r2.x, l(0.500000)
      mov_sat r5.xy, r5.xyxx
      sample_l_indexable(texture2d)(float,float,float,float) r6.xyz, r5.xyxx, t4.xyzw, s4, l(0.000000)
      mul r6.xyz, r6.xyzx, l(0.000010, 0.000010, 0.000010, 0.000000)
      sample_l_indexable(texture2d)(float,float,float,float) r5.xyw, r5.xyxx, t5.xywz, s5, l(0.000000)
      max r1.x, r1.x, l(0.000000)
      mad r5.xyw, r1.xxxx, r5.xyxw, r6.xyxz
      mul r5.xyw, r5.xyxw, l(0.000000, 0.00250979979, 0.000000, 0.00517647993)
      mul_sat r1.x, r4.z, l(5.000000)
      mad r2.x, r1.x, l(-2.000000), l(3.000000)
      mul r1.x, r1.x, r1.x
      mul r1.x, r1.x, r2.x
      mul r5.xyw, r1.xxxx, r5.xyxw
    else
      mov r5.xyw, l(0,0,0,0)
    endif
    add r5.xyw, r8.xyxz, r5.xyxw
    mul r5.xyw, r5.xyxw, cb0[30].xyxz
  else
    mov r5.xyw, l(0,0,0,0)
  endif
  add r5.xyw, r5.xyxw, r7.xyxz
  mul r1.x, -r0.y, r5.z
  max r2.x, cb0[3].w, cb0[4].w
  add r4.y, |r2.y|, -cb0[2].w
  add r4.y, -r2.x, r4.y
  div r2.x, r4.y, r2.x
  ge r4.y, l(10.000000), r2.x
  if_nz r4.y
    lt r4.y, l(0.000000), r2.x
    if_nz r4.y
      mul r2.x, r2.x, l(-1.442695)
      exp r2.x, r2.x
    else
      mov r2.x, l(1.000000)
    endif
    mul r6.xyz, -r0.xyzx, r3.zxyz
    mad r0.xyz, -r0.zxyz, r3.xyzx, -r6.xyzx
    dp2 r4.y, r0.yzyy, r0.yzyy
    rsq r4.y, r4.y
    mul r0.xyz, r0.xyzx, r4.yyyy
    mul r6.xyz, r0.xyzx, r3.zxyz
    mad r0.xyz, r3.yzxy, r0.yzxy, -r6.xyzx
    add r2.w, -|r2.w|, l(1.000000)
    mul r2.w, r5.z, r2.w
    mul r2.w, r2.w, cb0[2].y
    max r2.w, r2.w, l(0.000000)
    log r2.w, r2.w
    mul r2.w, r2.w, cb0[2].z
    exp r2.w, r2.w
    mul r2.w, r2.w, cb0[2].x
    mul r1.x, r3.y, r1.x
    mul r0.xyz, r0.xyzx, r2.wwww
    mad r0.xyz, r3.xyzx, r1.xxxx, r0.xyzx
    dp3 r0.x, r0.xyzx, r0.xyzx
    sqrt r0.x, r0.x
    div r0.y, r0.y, r0.x
    mul r0.y, r0.y, r2.y
    div r6.xz, r0.yyyy, |r2.yyyy|
    mov r3.x, cb0[3].w
    mov r3.y, cb0[4].w
    div r7.xyzw, l(0.500000, 0.500000, 0.500000, 0.500000), r3.xxyy
    mul r7.xyzw, |r2.yyyy|, r7.xyzw
    sqrt r7.xyzw, r7.xyzw
    div r0.y, r0.x, |r2.y|
    add r6.yw, r0.yyyy, r6.zzzz
    mul r7.xyzw, r6.xyzw, r7.xyzw
    mul r8.xyzw, r7.xyzw, r7.xyzw
    ge r4.yz, r7.xxzx, l(0.000000, 0.000000, 0.000000, 0.000000)
    movc r11.xz, r4.yyzy, l(1.000000,0,1.000000,0), l(-1.000000,0,-1.000000,0)
    lt r4.yz, l(0.000000, 0.000000, 0.000000, 0.000000), r7.yywy
    lt r6.xy, r7.ywyy, l(0.000000, 0.000000, 0.000000, 0.000000)
    iadd r4.yz, -r4.yyzy, r6.xxyx
    itof r11.yw, r4.yyyz
    lt r4.yz, r11.xxzx, r11.yywy
    mul r6.xy, r8.xzxx, l(1.442695, 1.442695, 0.000000, 0.000000)
    exp r6.xy, r6.xyxx
    and r4.yz, r4.yyzy, r6.xxyx
    mad r8.xyzw, r8.xyzw, l(1.520000, 1.520000, 1.520000, 1.520000), l(4.000000, 4.000000, 4.000000, 4.000000)
    sqrt r8.xyzw, r8.xyzw
    mad r7.xyzw, |r7.xyzw|, l(2.319300, 2.319300, 2.319300, 2.319300), r8.xyzw
    mad r0.y, r0.y, l(0.500000), r6.z
    div r6.xyzw, r11.xyzw, r7.xyzw
    mul r0.x, r0.y, r0.x
    div r0.xy, -r0.xxxx, r3.xyxx
    mul r0.xy, r0.xyxx, l(1.442695, 1.442695, 0.000000, 0.000000)
    exp r0.xy, r0.xyxx
    mov r7.xy, l(1.000000,1.000000,0,0)
    mul r0.xy, r0.xyxx, r6.ywyy
    mul r0.z, |r2.y|, l(6.283185)
    mul r6.yw, r3.xxxy, r0.zzzz
    sqrt r6.yw, r6.yyyw
    add r0.z, -|r2.y|, cb0[2].w
    div r2.yw, r0.zzzz, r3.xxxy
    mul r2.yw, r2.yyyw, l(0.000000, 1.442695, 0.000000, 1.442695)
    exp r2.yw, r2.yyyw
    mul r2.yw, r2.yyyw, r6.yyyw
    mad r0.xy, r6.xzxx, r7.xyxx, -r0.xyxx
    add r0.xy, r0.xyxx, r4.yzyy
    mul r0.xy, r0.xyxx, r2.ywyy
    mul r3.xyz, r0.yyyy, cb0[33].xyzx
    mad r0.xyz, cb0[32].xyzx, r0.xxxx, r3.xyzx
    mul r0.xyz, r0.xyzx, l(-1.442695, -1.442695, -1.442695, 0.000000)
    exp r0.xyz, r0.xyzx
    min r0.xyz, r0.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
    add r0.xyz, -r0.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
    mul r3.xyz, r2.xxxx, r0.xyzx
    mad r0.x, r2.z, r2.z, l(1.000000)
    mad r0.y, r2.z, cb0[5].w, cb0[6].w
    max r0.y, r0.y, l(0.000100)
    log r0.y, r0.y
    mul r0.y, r0.y, l(-1.500000)
    exp r0.y, r0.y
    mul r2.yzw, r0.yyyy, cb0[6].xxyz
    mad r2.yzw, cb0[5].xxyz, r0.xxxx, r2.yyzw
    mad r2.yzw, r9.xxyz, r3.xxyz, r2.yyzw
    add r2.yzw, -r5.xxyw, r2.yyzw
    mad r5.xyw, r3.xyxz, r2.yzyw, r5.xyxw
    add r0.x, r3.y, r3.x
    mad r0.x, r0.z, r2.x, r0.x
    mad r0.x, -r0.x, l(0.333333343), l(1.000000)
    max r0.x, r0.x, l(0.000000)
  else
    mov r0.x, l(1.000000)
  endif
else
  mov r5.xyw, l(0,0,0,0)
  mov r0.x, l(0)
endif
add r2.xyz, -r1.yzwy, r5.xywx
mad r0.yzw, r0.wwww, r2.xxyz, r1.yyzw
add r0.yzw, -r10.xxzw, r0.yyzw
mad o0.xyz, r3.wwww, r0.yzwy, r10.xzwx
mad o0.w, -r4.w, r0.x, l(1.000000)

// g_mtPrevW2P
mul r0.xyz, r12.yyyy, cb0[8].xywx
mad r0.xyz, r12.xxxx, cb0[7].xywx, r0.xyzx
mad r0.xyz, r12.zzzz, cb0[9].xywx, r0.xyzx
mad r0.xyz, r4.xxxx, cb0[10].xywx, r0.xyzx

// Corrects the smearing on the clouds. o1 is a delta position buffer used to
// sample the clouds from the previous frame
add r28.w, r0.z, -r28.y
mad r0.x, r28.w, r28.x, r0.x

div r0.xy, r0.xyxx, r0.zzzz
mad r0.xy, r0.xyxx, l(0.500000, -0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 0.000000, 0.000000)
add o1.xy, -r0.xyxx, v4.xyxx
ret
// Approximately 1878 instruction slots used
