//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.2.67 on Mon Jan 01 13:11:45 2018
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   struct
//   {
//       
//       float4 vPlane;                 // Offset:    0
//       float4 vSettings;              // Offset:   16
//
//   } g_ClipPlane;                     // Offset:    0 Size:    32 [unused]
//   
//   struct
//   {
//       
//       float4x4 mLightSpaceInverse;   // Offset:   32
//       float4x4 mLightSpace;          // Offset:   96
//       float4 vShadowBias;            // Offset:  160
//       float4 vBiasDir;               // Offset:  176
//       float4 vSmoothOffs;            // Offset:  192
//       float4 vShadowsDesc;           // Offset:  208
//       float4 avCPlane[8];            // Offset:  224
//       float4 avCascadeZ[2];          // Offset:  352
//       float4 avUVTransform[8];       // Offset:  384
//       float4 avZTransformZF[8];      // Offset:  512
//
//   } g_ShadSettings;                  // Offset:   32 Size:   608
//   float4x4 g_mCloudsShadowsSpace;    // Offset:  640 Size:    64 [unused]
//   float4 g_vCloudsShadowDesc;        // Offset:  704 Size:    16
//   float4 g_vKSettings;               // Offset:  720 Size:    16 [unused]
//   float4x4 g_mPrevObjViewProj;       // Offset:  736 Size:    64 [unused]
//   float4 g_vAmbientColor;            // Offset:  800 Size:    16
//   float4 specColor;                  // Offset:  816 Size:    16
//   float4 ControlData;                // Offset:  832 Size:    16 [unused]
//   float4 difColor;                   // Offset:  848 Size:    16
//   float4 ambient;                    // Offset:  864 Size:    16
//   float4 g_vDefLightDir;             // Offset:  880 Size:    16
//   float4 g_vDefLightColor;           // Offset:  896 Size:    16
//   float4 g_vDefSpecColor;            // Offset:  912 Size:    16
//   uint CS_FRONT;                     // Offset:  928 Size:     4
//      = 0x00000000 
//   uint CS_RIGHT;                     // Offset:  932 Size:     4
//      = 0x00000001 
//   uint CS_BACK;                      // Offset:  936 Size:     4
//      = 0x00000002 
//   uint CS_LEFT;                      // Offset:  940 Size:     4
//      = 0x00000003 
//   uint CS_TOP;                       // Offset:  944 Size:     4
//      = 0x00000004 
//   uint CS_BOTTOM;                    // Offset:  948 Size:     4
//      = 0x00000005 
//   float4 g_vAmbientSettings;         // Offset:  960 Size:    16 [unused]
//   float4 g_vScreenDepthRect;         // Offset:  976 Size:    16 [unused]
//   
//   struct
//   {
//       
//       float4 vDesc;                  // Offset:  992
//       float4 vFogLayerPlane;         // Offset: 1008
//       float4 vFogLayerColor;         // Offset: 1024
//       float4 vFogLayerSettings;      // Offset: 1040
//       float4 vFogColor;              // Offset: 1056
//       float4 vFogDistance;           // Offset: 1072
//
//   } g_FogDesc;                       // Offset:  992 Size:    96
//   float4 g_vVisibility;              // Offset: 1088 Size:    16 [unused]
//      = 0x44480000 0x42c80000 0x3f800000 0x00000000 
//   float4x4 g_mViewProj;              // Offset: 1104 Size:    64 [unused]
//   float4x4 g_mView;                  // Offset: 1168 Size:    64 [unused]
//   float4 g_vCamPos;                  // Offset: 1232 Size:    16 [unused]
//
// }
//
// cbuffer CBLightSettings
// {
//
//   struct
//   {
//       
//       float4 vLightsListSettings2;   // Offset:    0
//       float4 vShadowLODYPos;         // Offset:   16
//       float4 vShadowLODXSZ;          // Offset:   32
//       float4 vShadowLODYSZ;          // Offset:   48
//       float4 vShadowTexRes;          // Offset:   64
//
//   } g_LightListSettings;             // Offset:    0 Size:    80
//   float4 g_avLODMask[4];             // Offset:   80 Size:    64
//   float4 g_avRot[6];                 // Offset:  144 Size:    96
//   float4 g_avLightsInfo[2048];       // Offset:  240 Size: 32768
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// shadowSamplerF                  sampler_c      NA          NA    0        1
// CloudsShadowsSampler              sampler      NA          NA    1        1
// LightsShadowsSampler            sampler_c      NA          NA    2        1
// SSAOSampler                       sampler      NA          NA    3        1
// SkyTextureSampler                 sampler      NA          NA    4        1
// mySampler                         sampler      NA          NA    5        1
// SkyTextureSampler                 texture  float4          2d    0        1
// mySampler                         texture  float4          2d    1        1
// CloudsShadowsSampler              texture  float4          2d    2        1
// SSAOSampler                       texture  float4          2d    3        1
// g_tDepthTexture                   texture  float4     2darray    4        1
// g_tLightsShadows                  texture  float4          2d    5        1
// g_tLightsList                     texture   uint2          3d    6        1
// $Globals                          cbuffer      NA          NA    0        1
// CBLightSettings                   cbuffer      NA          NA    1        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Position              0   xyzw        0      POS   float       
// TEXCOORD                 0   xyz         1     NONE   float   xyz 
// TEXCOORD                 1   xyz         2     NONE   float   xyz 
// TEXCOORD                 2   xyz         3     NONE   float   xyz 
// TEXCOORD                 3   xyzw        4     NONE   float   xyzw
// TEXCOORD                 4   xyzw        5     NONE   float   xyzw
// TEXCOORD                 5   xy          6     NONE   float   xy  
// TEXCOORD                 6   xyzw        7     NONE   float   xy w
// COLOR                    0   xyzw        8     NONE   float   x  w
// TEXCOORD                 7   xyzw        9     NONE   float   xy w
// TEXCOORD                 8   xyz        10     NONE   float   xyz 
// SV_ClipDistance          0   x          11  CLIPDST   float       
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_1
dcl_globalFlags refactoringAllowed
dcl_constantbuffer cb0[66], dynamicIndexed
dcl_constantbuffer cb1[2063], dynamicIndexed
dcl_sampler s0, mode_comparison
dcl_sampler s1, mode_default
dcl_sampler s2, mode_comparison
dcl_sampler s3, mode_default
dcl_sampler s4, mode_default
dcl_sampler s5, mode_default
dcl_resource_texture2d (float,float,float,float) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texture2d (float,float,float,float) t2
dcl_resource_texture2d (float,float,float,float) t3
dcl_resource_texture2darray (float,float,float,float) t4
dcl_resource_texture2d (float,float,float,float) t5
dcl_resource_texture3d (uint,uint,uint,uint) t6
dcl_input_ps linear v1.xyz
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyzw
dcl_input_ps linear v5.xyzw
dcl_input_ps linear v6.xy
dcl_input_ps linear v7.xyw
dcl_input_ps linear v8.xw
dcl_input_ps linear v9.xyw
dcl_input_ps linear v10.xyz
dcl_output o0.xyzw
dcl_temps 14
lt r0.xyzw, cb0[22].xyzw, v4.wwww
and r0.xyzw, r0.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r0.x, l(1.000000, 1.000000, 1.000000, 1.000000), r0.xyzw
lt r1.xyzw, cb0[23].xyzw, v4.wwww
and r1.xyzw, r1.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r0.y, l(1.000000, 1.000000, 1.000000, 1.000000), r1.xyzw
add r0.z, r0.y, r0.x
ftou r0.w, r0.z
mad r1.xy, v4.xyxx, cb0[r0.w + 24].zwzz, cb0[r0.w + 24].xyxx
mad r1.z, v4.z, cb0[r0.w + 32].y, cb0[r0.w + 32].x
mul r1.w, v4.w, cb0[13].z
lt r2.xyzw, cb0[22].xyzw, r1.wwww
and r2.xyzw, r2.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r2.x, l(1.000000, 1.000000, 1.000000, 1.000000), r2.xyzw
lt r3.xyzw, cb0[23].xyzw, r1.wwww
and r3.xyzw, r3.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r1.w, l(1.000000, 1.000000, 1.000000, 1.000000), r3.xyzw
add r2.z, r1.w, r2.x
lt r1.w, r0.z, r2.z
if_nz r1.w
  ftou r1.w, r2.z
  mad r3.xy, v4.xyxx, cb0[r1.w + 24].zwzz, cb0[r1.w + 24].xyxx
  mad r1.w, v4.z, cb0[r1.w + 32].y, cb0[r1.w + 32].x
  mad r2.w, -cb0[r0.w + 32].w, cb0[13].w, v4.w
  mad r0.w, -cb0[r0.w + 32].w, cb0[13].w, cb0[r0.w + 32].w
  div r0.w, r2.w, r0.w
else 
  mov r3.xy, r1.xyxx
  mov r1.w, r1.z
  mov r2.z, r0.z
  mov r0.w, l(0)
endif 
lt r2.w, l(0.000000), r0.w
mov r3.zw, l(0,0,0,-1)
loop 
  ilt r4.x, l(1), r3.w
  breakc_nz r4.x
  itof r4.y, r3.w
  mov r4.z, r3.z
  mov r4.w, l(-1)
  loop 
    ilt r5.x, l(1), r4.w
    breakc_nz r5.x
    itof r4.x, r4.w
    mul r5.xy, r4.xyxx, cb0[12].xxxx
    mad r0.xy, r5.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), r1.xyxx
    sample_c_lz r0.x, r0.xyzx, t4.xxxx, s0, r1.z
    if_nz r2.w
      mad r2.xy, r5.xyxx, l(0.500000, 0.500000, 0.000000, 0.000000), r3.xyxx
      sample_c_lz r0.y, r2.xyzx, t4.xxxx, s0, r1.w
      add r0.y, -r0.x, r0.y
      mad r0.x, r0.w, r0.y, r0.x
    endif 
    add r4.z, r0.x, r4.z
    iadd r4.w, r4.w, l(1)
  endloop 
  mov r3.z, r4.z
  iadd r3.w, r3.w, l(1)
endloop 
sample r0.xyzw, v1.xyxx, t1.xyzw, s5
lt r1.x, r0.w, l(0.125000)
if_nz r1.x
  discard_nz l(-1)
endif 
mul r1.x, r3.z, l(0.111111112)
div r1.yz, v7.xxyx, v7.wwww
sample r2.xyzw, r1.yzyy, t0.xyzw, s4
dp3 r1.w, v3.xyzx, v3.xyzx
rsq r1.w, r1.w
mul r3.xyw, r1.wwww, v3.xyxz
add r1.w, r0.w, r0.w
mad r0.w, r0.w, l(2.000000), l(-1.000000)
max r0.w, r0.w, l(0.000000)
add r0.w, r0.w, l(-1.000000)
mad r0.w, cb0[53].w, r0.w, l(1.000000)
mul r4.xyz, r0.wwww, cb0[51].xyzx
lt r0.w, l(0.500000), v1.z
if_nz r0.w
  mul r5.xyz, r0.xyzx, cb0[53].xyzx
else 
  mul r5.xyz, r0.xyzx, cb0[50].xyzx
endif 
mul r0.xyz, r5.xyzx, l(1.700000, 1.700000, 1.700000, 0.000000)
mad r0.w, -r3.z, l(0.111111112), l(1.000000)
mad r0.w, v8.x, r0.w, r1.x
sample r1.x, v6.xyxx, t2.yxzw, s1
add r1.x, r1.x, l(-1.000000)
mad r1.x, cb0[44].z, r1.x, l(1.000000)
mul r0.w, r0.w, r1.x
mul r1.xy, r1.yzyy, cb1[0].xyxx
ftoi r5.yz, r1.xxyx
mov r5.w, l(0)
ld r1.xy, r5.yzww, t6.xyzw
umin r1.y, r1.y, l(17)
lt r1.z, l(0.500000), cb1[0].w
mov r6.xyz, l(0,0,0,0)
mov r7.xyz, l(0,0,0,0)
mov r3.z, l(1)
mov r5.x, l(0)
mov r4.w, r1.x
loop 
  ige r6.w, r3.z, r1.y
  breakc_nz r6.w
  if_nz r3.z
    iadd r5.x, r5.x, l(1)
    ld r4.w, r5.yzxw, t6.yzwx
  endif 
  ishl r6.w, r4.w, l(3)
  iadd r7.w, r6.w, l(1)
  ge r8.xy, cb1[r7.w + 15].xyxx, l(100.000000, 100.000000, 0.000000, 0.000000)
  if_nz r8.x
    add r9.x, l(-100.000000), cb1[r7.w + 15].x
  else 
    mov r9.x, cb1[r7.w + 15].x
  endif 
  if_nz r8.y
    add r9.y, l(-100.000000), cb1[r7.w + 15].y
  else 
    mov r9.y, cb1[r7.w + 15].y
  endif 
  lt r8.z, l(1.000000), cb1[r6.w + 15].w
  if_nz r8.z
    add r10.xyz, -v2.xyzx, cb1[r6.w + 15].xyzx
    dp3 r8.z, r10.xyzx, r10.xyzx
    sqrt r8.w, r8.z
    div r10.xyz, r10.xyzx, r8.wwww
    mad r8.z, r8.z, cb1[r7.w + 15].w, l(1.000000)
    div r8.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
    add r8.z, r8.z, l(-0.100000)
    mul_sat r8.z, r8.z, l(1.11111116)
    iadd r8.w, r7.w, l(1)
    lt r10.w, l(2.000000), cb1[r6.w + 15].w
    if_nz r10.w
      add r11.x, l(-3.000000), cb1[r6.w + 15].w
      dp3 r11.y, r10.xyzx, cb1[r8.w + 15].xyzx
      add r11.z, -|r11.y|, l(1.000000)
      sqrt r11.z, r11.z
      mad r11.w, |r11.y|, l(-0.0187292993), l(0.074261)
      mad r11.w, r11.w, |r11.y|, l(-0.212114394)
      mad r11.w, r11.w, |r11.y|, l(1.57072878)
      mul r12.x, r11.z, r11.w
      mad r12.x, r12.x, l(-2.000000), l(3.14159274)
      lt r11.y, r11.y, -r11.y
      and r11.y, r11.y, r12.x
      mad r11.y, r11.w, r11.z, r11.y
      lt r11.z, r11.y, r11.x
      if_nz r11.z
        frc r11.z, cb1[r8.w + 15].w
        div r11.x, r11.y, r11.x
        add r11.x, -r11.z, r11.x
        add r11.y, -r11.z, l(1.000000)
        div_sat r11.x, r11.x, r11.y
        add r11.x, -r11.x, l(1.000000)
      else 
        mov r11.x, l(0)
      endif 
      mul r8.z, r8.z, r11.x
      lt r11.x, l(0.000000), r8.z
      ge r11.y, cb1[r8.w + 15].w, l(1.000000)
      and r11.x, r11.y, r11.x
      if_nz r11.x
        ftoi r11.x, cb1[r8.w + 15].w
        iadd r11.x, r11.x, l(-1)
      else 
        mov r11.x, l(-1)
      endif 
      mov r11.yzw, v2.xxyz
    else 
      lt r12.x, l(0.000000), r8.z
      and r8.y, r8.y, r12.x
      if_nz r8.y
        ge r8.y, cb1[r8.w + 15].w, l(1.000000)
        if_nz r8.y
          ftoi r8.y, cb1[r8.w + 15].w
          iadd r8.y, r8.y, l(-1)
          add r12.xyz, v2.xyzx, -cb1[r6.w + 15].xyzx
          lt r13.xy, |r12.xzxx|, r12.yyyy
          and r8.w, r13.y, r13.x
          if_nz r8.w
            mov r8.w, cb0[59].x
          else 
            lt r13.xy, r12.yyyy, -|r12.xzxx|
            and r12.w, r13.y, r13.x
            if_nz r12.w
              mov r8.w, cb0[59].y
            else 
              lt r12.w, |r12.x|, r12.z
              if_nz r12.w
                mov r8.w, cb0[58].x
              else 
                lt r12.w, r12.z, -|r12.x|
                if_nz r12.w
                  mov r8.w, cb0[58].z
                else 
                  ge r12.w, r12.x, l(0.000000)
                  if_nz r12.w
                    mov r8.w, cb0[58].y
                  else 
                    mov r8.w, cb0[58].w
                  endif 
                endif 
              endif 
            endif 
          endif 
          ult r12.w, r8.w, cb0[59].x
          if_nz r12.w
            dp2 r13.x, r12.xzxx, cb1[r8.w + 9].xyxx
            dp2 r13.z, r12.xzxx, cb1[r8.w + 9].zwzz
            mov r13.y, r12.y
          else 
            dp2 r13.y, r12.yzyy, cb1[r8.w + 9].xyxx
            dp2 r13.z, r12.yzyy, cb1[r8.w + 9].zwzz
            mov r13.x, r12.x
          endif 
          add r11.yzw, r13.xxyz, cb1[r6.w + 15].xxyz
          iadd r11.x, r8.y, r8.w
        else 
          mov r11.x, l(-1)
          mov r11.yzw, v2.xxyz
        endif 
      else 
        mov r11.x, l(-1)
        mov r11.yzw, v2.xxyz
      endif 
    endif 
    ige r8.y, r11.x, l(0)
    if_nz r8.y
      iadd r8.y, r7.w, l(3)
      or r8.w, r8.y, l(5)
      iadd r12.x, r8.w, l(1)
      or r12.y, r12.x, l(7)
      mul r13.xyzw, r11.zzzz, cb1[r8.w + 15].xyzw
      mad r13.xyzw, r11.yyyy, cb1[r8.y + 15].xyzw, r13.xyzw
      mad r13.xyzw, r11.wwww, cb1[r12.x + 15].xyzw, r13.xyzw
      add r12.xyzw, r13.xyzw, cb1[r12.y + 15].xyzw
      div r11.yzw, r12.xxyz, r12.wwww
      lt r8.yw, l(0.000000, 1.000000, 0.000000, 1.000000), |r11.yyyz|
      or r8.y, r8.w, r8.y
      if_nz r8.y
        mov r8.w, l(0)
      endif 
      if_z r8.y
        mad r8.y, r11.y, l(0.500000), l(0.500000)
        mad r11.y, -r11.z, l(0.500000), l(0.500000)
        ushr r11.z, r11.x, l(5)
        and r11.x, r11.x, l(31)
        dp4 r12.x, cb1[2].xyzw, cb1[r11.z + 5].xyzw
        if_z r10.w
          mul r12.y, r12.x, cb1[4].x
          div r12.y, l(0.500000), r12.y
          add r12.z, -r12.y, l(1.000000)
          max r12.w, r8.y, r12.y
          min r8.y, r12.z, r12.w
          max r12.y, r11.y, r12.y
          min r11.y, r12.z, r12.y
        endif 
        utof r11.x, r11.x
        add r8.y, r8.y, r11.x
        mul r13.x, r12.x, r8.y
        dp4 r8.y, cb1[1].xyzw, cb1[r11.z + 5].xyzw
        dp2 r11.x, r11.yyyy, r12.xxxx
        add r13.y, r8.y, r11.x
        sample_c_lz r8.w, r13.xyxx, t5.xxxx, s2, r11.w
        and r8.y, r1.z, r10.w
        if_nz r8.y
          add r12.yz, r13.xxyx, -cb1[4].zzwz
          sample_c_lz r8.y, r12.yzyy, t5.xxxx, s2, r11.w
          add r8.y, r8.y, r8.w
          add r12.xw, r13.xxxy, cb1[4].zzzw
          sample_c_lz r10.w, r12.xzxx, t5.xxxx, s2, r11.w
          add r8.y, r8.y, r10.w
          sample_c_lz r10.w, r12.ywyy, t5.xxxx, s2, r11.w
          add r8.y, r8.y, r10.w
          sample_c_lz r10.w, r12.xwxx, t5.xxxx, s2, r11.w
          add r8.y, r8.y, r10.w
          mul r8.w, r8.y, l(0.200000)
        endif 
      endif 
      mul r8.z, r8.w, r8.z
    endif 
  else 
    mov r10.xyz, -cb1[r6.w + 15].xyzx
    mov r8.z, l(1.000000)
  endif 
  lt r6.w, l(0.000000), r8.z
  if_nz r6.w
    dp3 r6.w, r10.xyzx, r3.xywx
    lt r8.y, l(0.000000), r6.w
    if_nz r8.y
      mov r9.z, cb1[r7.w + 15].z
      mul r11.xyz, r6.wwww, r9.xyzx
      mul r11.xyz, r8.zzzz, r11.xyzx
    else 
      mov r11.xyz, l(0,0,0,0)
    endif 
    if_z r8.x
      add r8.xyw, r10.xyxz, v10.xyxz
      mul r8.xyw, r8.xyxw, l(0.500000, 0.500000, 0.000000, 0.500000)
      dp3 r6.w, r8.xywx, r8.xywx
      rsq r6.w, r6.w
      mul r8.xyw, r6.wwww, r8.xyxw
      dp3 r6.w, r8.xywx, r3.xywx
      lt r8.x, l(0.000000), r6.w
      if_nz r8.x
        log r6.w, r6.w
        mul r6.w, r6.w, cb0[51].w
        exp r6.w, r6.w
        sqrt r8.x, r8.z
        mul r6.w, r6.w, r8.x
        mov r9.w, cb1[r7.w + 15].z
        mul r8.xyz, r6.wwww, r9.xywx
        mul r8.xyz, r4.xyzx, r8.xyzx
      else 
        mov r8.xyz, l(0,0,0,0)
      endif 
    else 
      mov r8.xyz, l(0,0,0,0)
    endif 
    add r6.xyz, r6.xyzx, r11.xyzx
    add r7.xyz, r7.xyzx, r8.xyzx
  endif 
  iadd r3.z, r3.z, l(1)
endloop 
dp3 r1.x, cb0[55].xyzx, r3.xywx
max r1.x, -r1.x, l(0.000000)
mul r1.xyz, r1.xxxx, cb0[56].xyzx
add r5.xyz, v10.xyzx, -cb0[55].xyzx
mul r5.xyz, r5.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
dp3 r3.z, r5.xyzx, r5.xyzx
rsq r3.z, r3.z
mul r5.xyz, r3.zzzz, r5.xyzx
dp3 r3.x, r5.xyzx, r3.xywx
max r3.x, r3.x, l(0.000000)
lt r3.y, l(0.004000), r3.x
if_nz r3.y
  log r3.x, r3.x
  mul r3.x, r3.x, cb0[51].w
  exp r3.x, r3.x
  mul r3.xyz, r3.xxxx, cb0[57].xyzx
  mul r3.xyz, r4.xyzx, r3.xyzx
else 
  mov r3.xyz, l(0,0,0,0)
endif 
mad r1.xyz, r1.xyzx, r0.wwww, r6.xyzx
div r4.xy, v9.xyxx, v9.wwww
sample r3.w, r4.xyxx, t3.xzwy, s3
mad r1.xyz, r3.wwww, cb0[54].xyzx, r1.xyzx
mul r3.xyz, r0.wwww, r3.xyzx
mad r0.xyz, r1.xyzx, r0.xyzx, r3.xyzx
add r0.xyz, r7.xyzx, r0.xyzx
mov_sat r1.xyz, v5.xyzx
lt r0.w, cb0[65].w, l(0.500000)
if_nz r0.w
  add r3.xyz, -r0.xyzx, r2.xyzx
  mad o0.xyz, r1.xyzx, r3.xyzx, r0.xyzx
endif 
if_z r0.w
  mov_sat r0.w, v5.w
  mul r2.w, r2.w, r2.w
  mad r3.xyz, cb0[56].xyzx, r2.wwww, cb0[54].xyzx
  ge r2.w, cb0[62].z, l(0.000000)
  if_nz r2.w
    mad r4.xyz, cb0[64].xyzx, r3.xyzx, -r0.xyzx
    mad r4.xyz, r0.wwww, r4.xyzx, r0.xyzx
    add r5.xyz, r2.xyzx, -r4.xyzx
    mad o0.xyz, r1.xyzx, r5.xyzx, r4.xyzx
  else 
    mul r2.w, -cb0[63].w, cb0[65].z
    min r2.w, r2.w, l(1.000000)
    lt r3.w, r2.w, l(0.999900)
    if_nz r3.w
      mul r2.w, r2.w, r2.w
      mad r4.xyz, cb0[64].xyzx, r3.xyzx, -r0.xyzx
      mad r4.xyz, r0.wwww, r4.xyzx, r0.xyzx
      add r5.xyz, r2.xyzx, -r4.xyzx
      mad r4.xyz, r1.xyzx, r5.xyzx, r4.xyzx
      add r5.xyz, -r0.xyzx, r2.xyzx
      mad r5.xyz, r1.xyzx, r5.xyzx, r0.xyzx
      mad r6.xyz, cb0[64].xyzx, r3.xyzx, -r5.xyzx
      mad r5.xyz, r0.wwww, r6.xyzx, r5.xyzx
      add r5.xyz, -r4.xyzx, r5.xyzx
      mad o0.xyz, r2.wwww, r5.xyzx, r4.xyzx
    else 
      add r2.xyz, -r0.xyzx, r2.xyzx
      mad r0.xyz, r1.xyzx, r2.xyzx, r0.xyzx
      mad r1.xyz, cb0[64].xyzx, r3.xyzx, -r0.xyzx
      mad o0.xyz, r0.wwww, r1.xyzx, r0.xyzx
    endif 
  endif 
endif 
min r0.x, r1.w, l(1.000000)
mul o0.w, r0.x, v8.w
ret 
// Approximately 393 instruction slots used
