//
// 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]
//   float4 specColor;                  // Offset:   32 Size:    16
//   float4 ControlData;                // Offset:   48 Size:    16 [unused]
//   float4 difColor;                   // Offset:   64 Size:    16
//   float4 ambient;                    // Offset:   80 Size:    16
//   float4 g_vDefLightDir;             // Offset:   96 Size:    16
//   float4 g_vDefLightColor;           // Offset:  112 Size:    16
//   float4 g_vDefSpecColor;            // Offset:  128 Size:    16
//   uint CS_FRONT;                     // Offset:  144 Size:     4
//      = 0x00000000 
//   uint CS_RIGHT;                     // Offset:  148 Size:     4
//      = 0x00000001 
//   uint CS_BACK;                      // Offset:  152 Size:     4
//      = 0x00000002 
//   uint CS_LEFT;                      // Offset:  156 Size:     4
//      = 0x00000003 
//   uint CS_TOP;                       // Offset:  160 Size:     4
//      = 0x00000004 
//   uint CS_BOTTOM;                    // Offset:  164 Size:     4
//      = 0x00000005 
//   float4 g_vAmbientSettings;         // Offset:  176 Size:    16 [unused]
//   
//   struct
//   {
//       
//       float4x4 mLightSpaceInverse;   // Offset:  192
//       float4x4 mLightSpace;          // Offset:  256
//       float4 vShadowBias;            // Offset:  320
//       float4 vBiasDir;               // Offset:  336
//       float4 vSmoothOffs;            // Offset:  352
//       float4 vShadowsDesc;           // Offset:  368
//       float4 avCPlane[8];            // Offset:  384
//       float4 avCascadeZ[2];          // Offset:  512
//       float4 avUVTransform[8];       // Offset:  544
//       float4 avZTransformZF[8];      // Offset:  672
//
//   } g_ShadSettings;                  // Offset:  192 Size:   608
//   
//   struct
//   {
//       
//       float4 vDesc;                  // Offset:  800
//       float4 vFogLayerPlane;         // Offset:  816
//       float4 vFogLayerColor;         // Offset:  832
//       float4 vFogLayerSettings;      // Offset:  848
//       float4 vFogColor;              // Offset:  864
//       float4 vFogDistance;           // Offset:  880
//
//   } g_FogDesc;                       // Offset:  800 Size:    96
//   float4x4 g_mCloudsShadowsSpace;    // Offset:  896 Size:    64 [unused]
//   float4 g_vCloudsShadowDesc;        // Offset:  960 Size:    16
//   float4 g_vScreenDepthRect;         // Offset:  976 Size:    16
//   float4 g_vKSettings;               // Offset:  992 Size:    16 [unused]
//   float4x4 g_mPrevObjViewProj;       // Offset: 1008 Size:    64 [unused]
//   float4x4 g_mViewProj;              // Offset: 1072 Size:    64 [unused]
//   float4x4 g_mView;                  // Offset: 1136 Size:    64 [unused]
//   float4 g_vCamPos;                  // Offset: 1200 Size:    16 [unused]
//   float4 g_vParams;                  // Offset: 1216 Size:    16 [unused]
//   float4x4 g_mWorld;                 // Offset: 1232 Size:    64 [unused]
//   float4 g_vAlphaMask;               // Offset: 1296 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
// ------------------------------ ---------- ------- ----------- ---- --------
// LightsShadowsSampler            sampler_c      NA          NA    0        1
// shadowSamplerF                  sampler_c      NA          NA    1        1
// CloudsShadowsSampler              sampler      NA          NA    2        1
// SSAOSampler                       sampler      NA          NA    3        1
// DiffuseSampler                    sampler      NA          NA    4        1
// SkyTextureSampler                 sampler      NA          NA    5        1
// DiffuseSampler                    texture  float4          2d    0        1
// SkyTextureSampler                 texture  float4          2d    1        1
// CloudsShadowsSampler              texture  float4          2d    2        1
// SSAOSampler                       texture  float4          2d    3        1
// g_tLightsShadows                  texture  float4          2d    4        1
// g_tLightsList                     texture   uint2          3d    5        1
// g_tDepthTexture                   texture  float4     2darray    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   xy          2     NONE   float   xy  
// TEXCOORD                 2   xyzw        3     NONE   float   xyzw
// TEXCOORD                 3   xyzw        4     NONE   float   xyzw
// TEXCOORD                 4   xyzw        5     NONE   float   xyzw
// TEXCOORD                 5   xyzw        6     NONE   float   xy w
// TEXCOORD                 6   xyz         7     NONE   float   xyz 
// TEXCOORD                 7   xyz         8     NONE   float   xyz 
// COLOR                    0   xyzw        9     NONE   float      w
// SV_ClipDistance          0   x          10  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[62], dynamicIndexed
dcl_constantbuffer cb1[2063], dynamicIndexed
dcl_sampler s0, mode_comparison
dcl_sampler s1, mode_comparison
dcl_sampler s2, mode_default
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_texture2d (float,float,float,float) t4
dcl_resource_texture3d (uint,uint,uint,uint) t5
dcl_resource_texture2darray (float,float,float,float) t6
dcl_input_ps linear v1.xyz
dcl_input_ps linear v2.xy
dcl_input_ps linear v3.xyzw
dcl_input_ps linear v4.xyzw
dcl_input_ps linear v5.xyzw
dcl_input_ps linear v6.xyw
dcl_input_ps linear v7.xyz
dcl_input_ps linear v8.xyz
dcl_input_ps linear v9.w
dcl_output o0.xyzw
dcl_temps 15
lt r0.xyzw, cb0[32].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[33].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 r0.xy, v4.xyxx, cb0[r0.w + 34].zwzz, cb0[r0.w + 34].xyxx
mad r1.x, v4.z, cb0[r0.w + 42].y, cb0[r0.w + 42].x
mul r1.y, v4.w, cb0[23].z
lt r2.xyzw, cb0[32].xyzw, r1.yyyy
and r2.xyzw, r2.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r1.z, l(1.000000, 1.000000, 1.000000, 1.000000), r2.xyzw
lt r2.xyzw, cb0[33].xyzw, r1.yyyy
and r2.xyzw, r2.xyzw, l(0x3f800000, 0x3f800000, 0x3f800000, 0x3f800000)
dp4 r1.y, l(1.000000, 1.000000, 1.000000, 1.000000), r2.xyzw
add r2.z, r1.y, r1.z
lt r1.y, r0.z, r2.z
if_nz r1.y
  ftou r1.y, r2.z
  mad r2.xy, v4.xyxx, cb0[r1.y + 34].zwzz, cb0[r1.y + 34].xyxx
  mad r1.y, v4.z, cb0[r1.y + 42].y, cb0[r1.y + 42].x
  mad r1.z, -cb0[r0.w + 42].w, cb0[23].w, v4.w
  mad r0.w, -cb0[r0.w + 42].w, cb0[23].w, cb0[r0.w + 42].w
  div r0.w, r1.z, r0.w
else 
  mov r2.xyz, r0.xyzx
  mov r1.y, r1.x
  mov r0.w, l(0)
endif 
sample_c_lz r0.x, r0.xyzx, t6.xxxx, s1, r1.x
lt r0.y, l(0.000000), r0.w
if_nz r0.y
  sample_c_lz r0.y, r2.xyzx, t6.xxxx, s1, r1.y
  add r0.y, -r0.x, r0.y
  mad r0.x, r0.w, r0.y, r0.x
endif 
sample r1.xyzw, v2.xyxx, t0.xyzw, s4
lt r0.y, r1.w, l(0.062500)
if_nz r0.y
  discard_nz l(-1)
endif 
div r0.yz, v6.xxyx, v6.wwww
dp3 r0.w, v1.xyzx, v1.xyzx
rsq r0.w, r0.w
mul r2.xyz, r0.wwww, v1.xyzx
sample r3.xyzw, r0.yzyy, t1.xyzw, s5
add r0.w, r1.w, r1.w
mad r1.w, r1.w, l(2.000000), l(-1.000000)
max r1.w, r1.w, l(0.000000)
add r1.w, r1.w, l(-1.000000)
mad r1.w, cb0[4].w, r1.w, l(1.000000)
sample r2.w, v5.xyxx, t2.xzwy, s2
mul r4.x, v5.z, cb0[60].z
add r2.w, r2.w, l(-1.000000)
mad r2.w, r4.x, r2.w, l(1.000000)
mul r4.xyz, r1.wwww, cb0[2].xyzx
add r1.w, -r0.x, l(1.000000)
mad r0.x, v5.w, r1.w, r0.x
mul r0.x, r2.w, r0.x
mul r5.xy, r0.yzyy, cb1[0].xyxx
ftoi r5.yz, r5.xxyx
mov r5.w, l(0)
ld r6.xy, r5.yzww, t5.xyzw
umin r1.w, r6.y, l(17)
lt r2.w, l(0.500000), cb1[0].w
mov r6.yzw, l(0,0,0,0)
mov r7.xyz, l(0,0,0,0)
mov r4.w, l(1)
mov r5.x, l(0)
mov r7.w, r6.x
loop 
  ige r8.x, r4.w, r1.w
  breakc_nz r8.x
  if_nz r4.w
    iadd r5.x, r5.x, l(1)
    ld r7.w, r5.yzxw, t5.yzwx
  endif 
  ishl r8.x, r7.w, l(3)
  iadd r8.y, r8.x, l(1)
  ge r8.zw, cb1[r8.y + 15].xxxy, l(0.000000, 0.000000, 100.000000, 100.000000)
  if_nz r8.z
    add r9.x, l(-100.000000), cb1[r8.y + 15].x
  else 
    mov r9.x, cb1[r8.y + 15].x
  endif 
  if_nz r8.w
    add r9.y, l(-100.000000), cb1[r8.y + 15].y
  else 
    mov r9.y, cb1[r8.y + 15].y
  endif 
  lt r10.x, l(1.000000), cb1[r8.x + 15].w
  if_nz r10.x
    add r10.xyz, -v7.xyzx, cb1[r8.x + 15].xyzx
    dp3 r10.w, r10.xyzx, r10.xyzx
    sqrt r11.x, r10.w
    div r10.xyz, r10.xyzx, r11.xxxx
    mad r10.w, r10.w, cb1[r8.y + 15].w, l(1.000000)
    div r10.w, l(1.000000, 1.000000, 1.000000, 1.000000), r10.w
    add r10.w, r10.w, l(-0.100000)
    mul_sat r10.w, r10.w, l(1.11111116)
    iadd r11.x, r8.y, l(1)
    lt r11.y, l(2.000000), cb1[r8.x + 15].w
    if_nz r11.y
      add r11.z, l(-3.000000), cb1[r8.x + 15].w
      dp3 r11.w, r10.xyzx, cb1[r11.x + 15].xyzx
      add r12.x, -|r11.w|, l(1.000000)
      sqrt r12.x, r12.x
      mad r12.y, |r11.w|, l(-0.0187292993), l(0.074261)
      mad r12.y, r12.y, |r11.w|, l(-0.212114394)
      mad r12.y, r12.y, |r11.w|, l(1.57072878)
      mul r12.z, r12.x, r12.y
      mad r12.z, r12.z, l(-2.000000), l(3.14159274)
      lt r11.w, r11.w, -r11.w
      and r11.w, r11.w, r12.z
      mad r11.w, r12.y, r12.x, r11.w
      lt r12.x, r11.w, r11.z
      if_nz r12.x
        frc r12.x, cb1[r11.x + 15].w
        div r11.z, r11.w, r11.z
        add r11.z, -r12.x, r11.z
        add r11.w, -r12.x, l(1.000000)
        div_sat r11.z, r11.z, r11.w
        add r11.z, -r11.z, l(1.000000)
      else 
        mov r11.z, l(0)
      endif 
      mul r10.w, r10.w, r11.z
      lt r11.z, l(0.000000), r10.w
      ge r11.w, cb1[r11.x + 15].w, l(1.000000)
      and r11.z, r11.w, r11.z
      if_nz r11.z
        ftoi r11.z, cb1[r11.x + 15].w
        iadd r11.z, r11.z, l(-1)
      else 
        mov r11.z, l(-1)
      endif 
      mov r12.xyz, v7.xyzx
    else 
      lt r11.w, l(0.000000), r10.w
      and r8.w, r8.w, r11.w
      if_nz r8.w
        ge r8.w, cb1[r11.x + 15].w, l(1.000000)
        if_nz r8.w
          ftoi r8.w, cb1[r11.x + 15].w
          iadd r8.w, r8.w, l(-1)
          add r13.xyz, v7.xyzx, -cb1[r8.x + 15].xyzx
          lt r11.xw, |r13.xxxz|, r13.yyyy
          and r11.x, r11.w, r11.x
          if_nz r11.x
            mov r11.x, cb0[10].x
          else 
            lt r14.xy, r13.yyyy, -|r13.xzxx|
            and r11.w, r14.y, r14.x
            if_nz r11.w
              mov r11.x, cb0[10].y
            else 
              lt r11.w, |r13.x|, r13.z
              if_nz r11.w
                mov r11.x, cb0[9].x
              else 
                lt r11.w, r13.z, -|r13.x|
                if_nz r11.w
                  mov r11.x, cb0[9].z
                else 
                  ge r11.w, r13.x, l(0.000000)
                  if_nz r11.w
                    mov r11.x, cb0[9].y
                  else 
                    mov r11.x, cb0[9].w
                  endif 
                endif 
              endif 
            endif 
          endif 
          ult r11.w, r11.x, cb0[10].x
          if_nz r11.w
            dp2 r14.x, r13.xzxx, cb1[r11.x + 9].xyxx
            dp2 r14.z, r13.xzxx, cb1[r11.x + 9].zwzz
            mov r14.y, r13.y
          else 
            dp2 r14.y, r13.yzyy, cb1[r11.x + 9].xyxx
            dp2 r14.z, r13.yzyy, cb1[r11.x + 9].zwzz
            mov r14.x, r13.x
          endif 
          add r12.xyz, r14.xyzx, cb1[r8.x + 15].xyzx
          iadd r11.z, r8.w, r11.x
        else 
          mov r11.z, l(-1)
          mov r12.xyz, v7.xyzx
        endif 
      else 
        mov r11.z, l(-1)
        mov r12.xyz, v7.xyzx
      endif 
    endif 
    ige r8.w, r11.z, l(0)
    if_nz r8.w
      iadd r8.w, r8.y, l(3)
      or r11.x, r8.w, l(5)
      iadd r11.w, r11.x, l(1)
      or r12.w, r11.w, l(7)
      mul r13.xyzw, r12.yyyy, cb1[r11.x + 15].xyzw
      mad r13.xyzw, r12.xxxx, cb1[r8.w + 15].xyzw, r13.xyzw
      mad r13.xyzw, r12.zzzz, cb1[r11.w + 15].xyzw, r13.xyzw
      add r12.xyzw, r13.xyzw, cb1[r12.w + 15].xyzw
      div r12.xyz, r12.xyzx, r12.wwww
      lt r11.xw, l(1.000000, 0.000000, 0.000000, 1.000000), |r12.xxxy|
      or r8.w, r11.w, r11.x
      if_nz r8.w
        mov r11.x, l(0)
      endif 
      if_z r8.w
        mad r8.w, r12.x, l(0.500000), l(0.500000)
        mad r11.w, -r12.y, l(0.500000), l(0.500000)
        ushr r12.x, r11.z, l(5)
        and r11.z, r11.z, l(31)
        dp4 r12.y, cb1[2].xyzw, cb1[r12.x + 5].xyzw
        if_z r11.y
          mul r12.w, r12.y, cb1[4].x
          div r12.w, l(0.500000), r12.w
          add r13.x, -r12.w, l(1.000000)
          max r13.y, r8.w, r12.w
          min r8.w, r13.x, r13.y
          max r12.w, r11.w, r12.w
          min r11.w, r13.x, r12.w
        endif 
        utof r11.z, r11.z
        add r8.w, r8.w, r11.z
        mul r13.x, r12.y, r8.w
        dp4 r8.w, cb1[1].xyzw, cb1[r12.x + 5].xyzw
        dp2 r11.z, r11.wwww, r12.yyyy
        add r13.y, r8.w, r11.z
        sample_c_lz r11.x, r13.xyxx, t4.xxxx, s0, r12.z
        and r8.w, r2.w, r11.y
        if_nz r8.w
          add r14.yz, r13.xxyx, -cb1[4].zzwz
          sample_c_lz r8.w, r14.yzyy, t4.xxxx, s0, r12.z
          add r8.w, r8.w, r11.x
          add r14.xw, r13.xxxy, cb1[4].zzzw
          sample_c_lz r11.y, r14.xzxx, t4.xxxx, s0, r12.z
          add r8.w, r8.w, r11.y
          sample_c_lz r11.y, r14.ywyy, t4.xxxx, s0, r12.z
          add r8.w, r8.w, r11.y
          sample_c_lz r11.y, r14.xwxx, t4.xxxx, s0, r12.z
          add r8.w, r8.w, r11.y
          mul r11.x, r8.w, l(0.200000)
        endif 
      endif 
      mul r10.w, r10.w, r11.x
    endif 
  else 
    mov r10.xyz, -cb1[r8.x + 15].xyzx
    mov r10.w, l(1.000000)
  endif 
  lt r8.x, l(0.000000), r10.w
  if_nz r8.x
    dp3 r8.x, r10.xyzx, r2.xyzx
    lt r8.w, l(0.000000), r8.x
    if_nz r8.w
      mov r9.z, cb1[r8.y + 15].z
      mul r11.xyz, r8.xxxx, r9.xyzx
      mul r11.xyz, r10.wwww, r11.xyzx
    else 
      mov r11.xyz, l(0,0,0,0)
    endif 
    if_z r8.z
      add r8.xzw, r10.xxyz, v8.xxyz
      mul r8.xzw, r8.xxzw, l(0.500000, 0.000000, 0.500000, 0.500000)
      dp3 r9.z, r8.xzwx, r8.xzwx
      rsq r9.z, r9.z
      mul r8.xzw, r8.xxzw, r9.zzzz
      dp3 r8.x, r8.xzwx, r2.xyzx
      lt r8.z, l(0.000000), r8.x
      if_nz r8.z
        log r8.x, r8.x
        mul r8.x, r8.x, cb0[2].w
        exp r8.x, r8.x
        sqrt r8.z, r10.w
        mul r8.x, r8.z, r8.x
        mov r9.w, cb1[r8.y + 15].z
        mul r8.xyz, r8.xxxx, 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.yzw, r6.yyzw, r11.xxyz
    add r7.xyz, r7.xyzx, r8.xyzx
  endif 
  iadd r4.w, r4.w, l(1)
endloop 
dp3 r1.w, cb0[6].xyzx, r2.xyzx
max r1.w, -r1.w, l(0.000000)
mul r5.xyz, r1.wwww, cb0[7].xyzx
add r8.xyz, v8.xyzx, -cb0[6].xyzx
mul r8.xyz, r8.xyzx, l(0.500000, 0.500000, 0.500000, 0.000000)
dp3 r1.w, r8.xyzx, r8.xyzx
rsq r1.w, r1.w
mul r8.xyz, r1.wwww, r8.xyzx
dp3 r1.w, r8.xyzx, r2.xyzx
max r1.w, r1.w, l(0.000000)
lt r2.x, l(0.004000), r1.w
if_nz r2.x
  log r1.w, r1.w
  mul r1.w, r1.w, cb0[2].w
  exp r1.w, r1.w
  mul r2.xyz, r1.wwww, cb0[8].xyzx
  mul r2.xyz, r4.xyzx, r2.xyzx
else 
  mov r2.xyz, l(0,0,0,0)
endif 
mad r4.xyz, r5.xyzx, r0.xxxx, r6.yzwy
mad r0.yz, r0.yyzy, cb0[61].zzwz, cb0[61].xxyx
sample r0.y, r0.yzyy, t3.xyzw, s3
mad r4.xyz, r0.yyyy, cb0[5].xyzx, r4.xyzx
mul r0.xyz, r0.xxxx, r2.xyzx
mad r0.xyz, r4.xyzx, r1.xyzx, r0.xyzx
add r0.xyz, r7.xyzx, r0.xyzx
mov_sat r1.xyz, v3.xyzx
lt r1.w, cb0[53].w, l(0.500000)
if_nz r1.w
  add r2.xyz, -r0.xyzx, r3.xyzx
  mad o0.xyz, r1.xyzx, r2.xyzx, r0.xyzx
endif 
if_z r1.w
  mov_sat r1.w, v3.w
  mul r2.x, r3.w, r3.w
  mad r2.xyz, cb0[7].xyzx, r2.xxxx, cb0[5].xyzx
  ge r2.w, cb0[50].z, l(0.000000)
  if_nz r2.w
    mad r4.xyz, cb0[52].xyzx, r2.xyzx, -r0.xyzx
    mad r4.xyz, r1.wwww, r4.xyzx, r0.xyzx
    add r5.xyz, r3.xyzx, -r4.xyzx
    mad o0.xyz, r1.xyzx, r5.xyzx, r4.xyzx
  else 
    mul r2.w, -cb0[51].w, cb0[53].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[52].xyzx, r2.xyzx, -r0.xyzx
      mad r4.xyz, r1.wwww, r4.xyzx, r0.xyzx
      add r5.xyz, r3.xyzx, -r4.xyzx
      mad r4.xyz, r1.xyzx, r5.xyzx, r4.xyzx
      add r5.xyz, -r0.xyzx, r3.xyzx
      mad r5.xyz, r1.xyzx, r5.xyzx, r0.xyzx
      mad r6.xyz, cb0[52].xyzx, r2.xyzx, -r5.xyzx
      mad r5.xyz, r1.wwww, r6.xyzx, r5.xyzx
      add r5.xyz, -r4.xyzx, r5.xyzx
      mad o0.xyz, r2.wwww, r5.xyzx, r4.xyzx
    else 
      add r3.xyz, -r0.xyzx, r3.xyzx
      mad r0.xyz, r1.xyzx, r3.xyzx, r0.xyzx
      mad r1.xyz, cb0[52].xyzx, r2.xyzx, -r0.xyzx
      mad o0.xyz, r1.wwww, r1.xyzx, r0.xyzx
    endif 
  endif 
endif 
min r0.x, r0.w, l(1.000000)
mul o0.w, r0.x, v9.w
ret 
// Approximately 365 instruction slots used
