//
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20546
//
//   using 3Dmigoto v1.2.47 on Tue Nov 29 22:46:55 2016
//
//
// Buffer Definitions: 
//
// cbuffer $Globals
// {
//
//   bool PhyreContextSwitches;         // Offset:    0 Size:     4 [unused]
//   float3 DeferredPos;                // Offset:    4 Size:    12 [unused]
//   float3 DeferredDir;                // Offset:   16 Size:    12 [unused]
//   float4 DeferredDiffuseColor;       // Offset:   32 Size:    16 [unused]
//   float4 DeferredSpecularColor;      // Offset:   48 Size:    16 [unused]
//   float4 DeferredSpotAngles;         // Offset:   64 Size:    16 [unused]
//   float4 DeferredAttenParams;        // Offset:   80 Size:    16 [unused]
//   float4 DeferredAreaParams;         // Offset:   96 Size:    16 [unused]
//   float4 DeferredShadowMask;         // Offset:  112 Size:    16 [unused]
//   float DeferredShadowAlpha;         // Offset:  128 Size:     4 [unused]
//   float4x4 DeferredWorldTransform;   // Offset:  144 Size:    64 [unused]
//   float4x4 DeferredInverseWorldTransform;// Offset:  208 Size:    64 [unused]
//   float4x4 DeferredShadowMatrix;     // Offset:  272 Size:    64 [unused]
//   float4x4 DeferredSplit0Transform;  // Offset:  336 Size:    64 [unused]
//   float4x4 DeferredSplit1Transform;  // Offset:  400 Size:    64 [unused]
//   float4x4 DeferredSplit2Transform;  // Offset:  464 Size:    64 [unused]
//   float4x4 DeferredSplit3Transform;  // Offset:  528 Size:    64 [unused]
//   float4 DeferredSplitDistances;     // Offset:  592 Size:    16 [unused]
//   float3 DeferredBoxSize;            // Offset:  608 Size:    12 [unused]
//   uint LightListSize;                // Offset:  620 Size:     4 [unused]
//   float2 Split0ShadowBufferInvSize;  // Offset:  624 Size:     8 [unused]
//   float2 Split1ShadowBufferInvSize;  // Offset:  632 Size:     8 [unused]
//   float2 Split2ShadowBufferInvSize;  // Offset:  640 Size:     8 [unused]
//   float2 Split3ShadowBufferInvSize;  // Offset:  648 Size:     8 [unused]
//   float3 IrradianceHalfCellSize;     // Offset:  656 Size:    12 [unused]
//   float IrradianceScale;             // Offset:  668 Size:     4 [unused]
//   float IrradianceBias;              // Offset:  672 Size:     4 [unused]
//   float2 DofFocusScale;              // Offset:  676 Size:     8 [unused]
//   float3 AOColor;                    // Offset:  688 Size:    12 [unused]
//      = 0x00000000 0x00000000 0x00000000 
//   float LightRange;                  // Offset:  700 Size:     4 [unused]
//      = 0x00000000 
//   float3 eyeDirectionWS;             // Offset:  704 Size:    12 [unused]
//   float3 AOSnowColor;                // Offset:  720 Size:    12
//      = 0x3dcccccd 0x3dcccccd 0x3e23d70a 
//
// }
//
// cbuffer SceneWideParameterConstantBuffer
// {
//
//   float4x4 ViewProjection;           // Offset:    0 Size:    64 [unused]
//   float4x4 View;                     // Offset:   64 Size:    64 [unused]
//   float4x4 Projection;               // Offset:  128 Size:    64 [unused]
//   float4x4 ViewInverse;              // Offset:  192 Size:    64
//   float3 EyePosition;                // Offset:  256 Size:    12
//   float cameraNearTimesFar;          // Offset:  268 Size:     4 [unused]
//   float3 GlobalAmbientColor;         // Offset:  272 Size:    12 [unused]
//   float cameraFarMinusNear;          // Offset:  284 Size:     4 [unused]
//   float2 cameraNearFar;              // Offset:  288 Size:     8
//   float2 ViewportWidthHeight;        // Offset:  296 Size:     8
//   float2 screenWidthHeightInv;       // Offset:  304 Size:     8 [unused]
//   float2 screenWidthHeight;          // Offset:  312 Size:     8 [unused]
//   float4x4 PrevViewProj;             // Offset:  320 Size:    64 [unused]
//   float4 Jitter;                     // Offset:  384 Size:    16 [unused]
//   float2 InvProjXY;                  // Offset:  400 Size:     8
//   uint PointLightCount;              // Offset:  408 Size:     4 [unused]
//   uint SpotLightCount;               // Offset:  412 Size:     4 [unused]
//   uint FoliageSpheresCount;          // Offset:  416 Size:     4 [unused]
//   float time;                        // Offset:  420 Size:     4 [unused]
//   float2 CubeFadeValues;             // Offset:  424 Size:     8
//   float4 FogParameters0;             // Offset:  432 Size:    16 [unused]
//   float4 FogParameters1;             // Offset:  448 Size:    16 [unused]
//   float4 FogParameters2;             // Offset:  464 Size:    16 [unused]
//   float4 FogParameters3;             // Offset:  480 Size:    16 [unused]
//   float3 CubeSunDir;                 // Offset:  496 Size:    12
//   float padding0;                    // Offset:  508 Size:     4 [unused]
//   float3 CubeSunColor;               // Offset:  512 Size:    12
//   float padding1;                    // Offset:  524 Size:     4 [unused]
//   float2 WindDirection;              // Offset:  528 Size:     8 [unused]
//
// }
//
// cbuffer LightListConstantBuffer
// {
//
//   struct
//   {
//       
//       float4 position;               // Offset:    0
//       float4 color;                  // Offset:   16
//       float4 direction;              // Offset:   32
//       float4 params;                 // Offset:   48
//
//   } LightList[32];                   // Offset:    0 Size:  2048
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// PointSampler                      sampler      NA          NA    0        1
// TrilinearSampler                  sampler      NA          NA    1        1
// LinearSampler                     sampler      NA          NA    2        1
// TrilinearWrapSampler              sampler      NA          NA    3        1
// PointWrapSampler                  sampler      NA          NA    4        1
// LightMaskTexture                  texture    uint          2d    0        1
// EnvLookupTexture                  texture  float4          2d    1        1
// IrradianceEnvSampler0             texture  float4        cube    2        1
// IrradianceEnvSampler1             texture  float4        cube    3        1
// SpecularEnvSampler0               texture  float4        cube    4        1
// SpecularEnvSampler1               texture  float4        cube    5        1
// LinearDepthBuffer                 texture   float          2d    6        1
// GbufferColorBuffer                texture  float4          2d    7        1
// GbufferNormalBuffer               texture  float4          2d    8        1
// GbufferExtraBuffer                texture  float4          2d    9        1
// AOBuffer                          texture  float4          2d   10        1
// DeferredNoiseBuffer               texture  float4          3d   11        1
// $Globals                          cbuffer      NA          NA    0        1
// SceneWideParameterConstantBuffer    cbuffer      NA          NA    1        1
// LightListConstantBuffer           cbuffer      NA          NA    2        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_POSITION              0   xyzw        0      POS   float       
// TEXCOORD                 0   xy          1     NONE   float   xy  
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_TARGET                0   xyz         0   TARGET   float   xyz 
//
ps_4_0
dcl_constantbuffer cb0[46], immediateIndexed
dcl_constantbuffer cb1[33], immediateIndexed
dcl_constantbuffer cb2[128], dynamicIndexed
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_resource_texture2d (uint,uint,uint,uint) t0
dcl_resource_texture2d (float,float,float,float) t1
dcl_resource_texturecube (float,float,float,float) t2
dcl_resource_texturecube (float,float,float,float) t3
dcl_resource_texturecube (float,float,float,float) t4
dcl_resource_texturecube (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t6
dcl_resource_texture2d (float,float,float,float) t7
dcl_resource_texture2d (float,float,float,float) t8
dcl_resource_texture2d (float,float,float,float) t9
dcl_resource_texture2d (float,float,float,float) t10
dcl_resource_texture3d (float,float,float,float) t11
dcl_input_ps linear v1.xy
dcl_output o0.xyz
//dcl_temps 13

dcl_temps 15

dcl_resource_texture2d (float,float,float,float) t125
ld_indexable(texture2d)(float,float,float,float) r15.xyzw, l(0, 0, 0, 0), t125.xyzw

mul r0.xy, v1.xyxx, cb1[18].zwzz
ftoi r0.xy, r0.xyxx
ushr r0.xy, r0.xyxx, l(4)
mov r0.zw, l(0,0,0,0)
ld r0.xyzw, r0.xyzw, t0.xyzw
mad r0.yz, v1.xxyx, l(0.000000, 1.000000, -1.000000, 0.000000), l(0.000000, 0.000000, 1.000000, 0.000000)
mad r0.yz, r0.yyzy, l(0.000000, 2.000000, 2.000000, 0.000000), l(0.000000, -1.000000, -1.000000, 0.000000)
sample_l r1.xyzw, v1.xyxx, t6.xyzw, s0, l(0.000000)
mul r0.w, r1.x, cb1[18].y
mul r0.yz, r0.yyzy, cb1[25].xxyx
mul r1.xy, r0.wwww, r0.yzyy
mov r1.z, -r0.w
mov r1.w, l(1.000000)

//Fix
add r15.y, -r1.z, -r15.y
mul r15.x, r15.x, r15.y
mul r15.x, r15.x, cb1[25].x
add r1.x, r1.x, -r15.x

dp4 r2.x, r1.xyzw, cb1[12].xyzw
dp4 r2.y, r1.xyzw, cb1[13].xyzw
dp4 r2.z, r1.xyzw, cb1[14].xyzw
add r0.yzw, -r2.xxyz, cb1[16].xxyz
dp3 r1.x, r0.yzwy, r0.yzwy
rsq r1.x, r1.x
mul r1.yzw, r0.yyzw, r1.xxxx
sample_l r3.xyzw, v1.xyxx, t8.xyzw, s0, l(0.000000)
sample_l r4.xyzw, v1.xyxx, t7.xyzw, s0, l(0.000000)
sample_l r5.xyzw, v1.xyxx, t9.xyzw, s0, l(0.000000)
sample_l r6.xyzw, v1.xyxx, t10.xyzw, s0, l(0.000000)
mad r3.xy, r3.xyxx, l(2.000000, 2.000000, 0.000000, 0.000000), l(-1.000000, -1.000000, 0.000000, 0.000000)
add r6.yzw, -|r3.xxyx|, l(0.000000, 1.000000, 1.000000, 1.000000)
add r7.z, -|r3.y|, r6.y
lt r2.w, r7.z, l(0.000000)
ge r3.zw, r3.xxxy, l(0.000000, 0.000000, 0.000000, 0.000000)
movc r3.zw, r3.zzzw, l(0,0,1.000000,1.000000), l(0,0,-1.000000,-1.000000)
mul r3.zw, r3.zzzw, r6.zzzw
movc r7.xy, r2.wwww, r3.zwzz, r3.xyxx
dp3 r2.w, r7.xyzx, r7.xyzx
rsq r2.w, r2.w
mul r3.xyz, r2.wwww, r7.xyzx
mul r6.yzw, r2.xxyz, l(0.000000, 3.000000, 3.000000, 3.000000)
sample_l r7.xyzw, r6.yzwy, t11.xyzw, s4, l(0.000000)
mul r6.yzw, r2.xxyz, l(0.000000, 96.000000, 96.000000, 96.000000)
frc r6.yzw, r6.yyzw
mad r6.yzw, r6.yyzw, l(0.000000, 2.000000, 2.000000, 2.000000), l(0.000000, -1.000000, -1.000000, -1.000000)
dp3 r2.w, r6.yzwy, r6.yzwy
sqrt r2.w, r2.w
add r2.w, -r2.w, l(1.000000)
mul r6.yzw, r2.xxyz, l(0.000000, 13.124300, 7.323210, 15.232300)
sample_l r8.xyzw, r6.yzwy, t11.xyzw, s3, l(0.000000)
mul r2.w, r2.w, r8.x
mad r3.w, -r7.x, r7.x, l(1.000000)
sqrt r3.w, r3.w
mul r4.w, r7.y, l(6.28318548)
sincos r8.x, r9.x, r4.w
mul r4.w, r3.w, r9.x
mul r3.w, r3.w, r8.x
lt r5.z, |r3.z|, l(0.999000)
movc r6.yzw, r5.zzzz, l(0,1.000000,0,0), l(0,0,1.000000,0)
mul r7.yzw, r3.yyzx, r6.yyzw
mad r6.yzw, r6.wwyz, r3.zzxy, -r7.yyzw
dp3 r5.z, r6.yzwy, r6.yzwy
rsq r5.z, r5.z
mul r6.yzw, r5.zzzz, r6.yyzw
mul r7.yzw, r3.zzxy, r6.zzwy
mad r7.yzw, r3.yyzx, r6.wwyz, -r7.yyzw
mul r7.yzw, r3.wwww, r7.yyzw
mad r6.yzw, r6.yyzw, r4.wwww, r7.yyzw
mad r6.yzw, r3.xxyz, r7.xxxx, r6.yyzw
deriv_rtx r7.xyz, r2.xyzx
deriv_rty r8.xyz, r2.xyzx
add r7.xyz, |r7.xyzx|, |r8.xyzx|
dp3 r3.w, r7.xyzx, r7.xyzx
sqrt r3.w, r3.w
mad r7.xy, r3.wwww, l(10.000000, 850.000000, 0.000000, 0.000000), l(1.000000, -1.000000, 0.000000, 0.000000)
div r3.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.x
mul r2.w, r2.w, r3.w
max r3.w, r5.y, l(0.080000)
mul r4.w, r3.w, r3.w
mul r5.z, r4.w, r4.w
mad r4.w, r4.w, r4.w, l(-1.000000)
mad r3.w, r3.w, l(0.500000), l(0.500000)
mul r3.w, r3.w, r3.w
mul r7.x, r3.w, r3.w
mad r3.w, -r3.w, r3.w, l(1.000000)
mul r7.z, r5.x, l(0.960000)
dp3 r7.w, r3.xyzx, r1.yzwy
mov_sat r8.x, r7.w
mul r8.z, r8.x, r8.x
mad r8.z, r3.w, r8.z, r7.x
sqrt r8.z, r8.z
add r8.z, r8.z, r8.x
max r8.z, r8.z, l(0.000001)
div r8.z, l(1.000000, 1.000000, 1.000000, 1.000000), r8.z
mul r5.z, r5.z, r8.z
mul r5.z, r5.z, l(0.318309873)
add r8.z, r6.x, r8.x
log r8.z, |r8.z|
mul r8.z, r5.y, r8.z
exp r8.z, r8.z
add r8.z, r6.x, r8.z
add_sat r8.z, r8.z, l(-1.000000)
add_sat r5.w, -r5.w, l(1.000000)
mul r5.w, r5.w, r8.z
mov r8.y, r5.y
sample_l r9.xyzw, r8.xyxx, t1.xyzw, s2, l(0.000000)
mul r5.x, r5.x, r9.y
mad r5.x, r9.x, l(0.040000), r5.x
lt r8.xz, l(0.000000, 0.000000, 0.000000, 0.000000), cb1[26].zzwz
if_nz r8.x
  add r5.y, r7.w, r7.w
  mad r9.xyz, r3.xzyx, -r5.yyyy, r1.ywzy
  div r5.y, l(2.000000), r8.y
  add r5.y, r5.y, l(-1.999990)
  log r5.y, r5.y
  mad r5.y, r5.y, l(-1.11571777), l(5.500000)
  max r5.y, r5.y, l(0.000000)
  max r8.x, |r9.z|, |r9.x|
  max r8.x, |r9.y|, r8.x
  exp r8.w, r5.y
  mad r8.w, -r8.w, l(0.00781250000), l(1.000000)
  ne r10.xyz, r8.xxxx, |r9.xyzx|
  mul r11.xyz, r8.wwww, r9.xyzx
  movc r9.xyz, r10.xyzx, r11.xyzx, r9.xyzx
  mov r9.xyz, -r9.xyzx
  sample_l r9.xyzw, r9.xyzx, t4.xyzw, s1, r5.y
  sample r10.xyzw, r3.xzyx, t2.xyzw, s2
  mul r10.xyz, r10.xyzx, cb1[26].zzzz
  mul r10.xyz, r10.xyzx, l(3.14159274, 3.14159274, 3.14159274, 0.000000)
  mul r9.xyz, r9.xyzx, cb1[26].zzzz
else 
  mov r10.xyz, l(0,0,0,0)
  mov r9.xyz, l(0,0,0,0)
endif 
if_nz r8.z
  add r5.y, r7.w, r7.w
  mad r8.xzw, r3.xxzy, -r5.yyyy, r1.yywz
  div r5.y, l(2.000000), r8.y
  add r5.y, r5.y, l(-1.999990)
  log r5.y, r5.y
  mad r5.y, r5.y, l(-1.11571777), l(5.500000)
  max r5.y, r5.y, l(0.000000)
  max r7.w, |r8.w|, |r8.x|
  max r7.w, |r8.z|, r7.w
  exp r8.y, r5.y
  mad r8.y, -r8.y, l(0.00781250000), l(1.000000)
  ne r11.xyz, r7.wwww, |r8.xzwx|
  mul r12.xyz, r8.yyyy, r8.xzwx
  movc r8.xyz, r11.xyzx, r12.xyzx, r8.xzwx
  mov r8.xyz, -r8.xyzx
  sample_l r8.xyzw, r8.xyzx, t5.xyzw, s1, r5.y
  sample r11.xyzw, r3.xzyx, t3.xyzw, s2
  mul r11.xyz, r11.xyzx, cb1[26].wwww
  mad r10.xyz, r11.xyzx, l(3.14159274, 3.14159274, 3.14159274, 0.000000), r10.xyzx
  mad r9.xyz, r8.xyzx, cb1[26].wwww, r9.xyzx
endif 
dp3 r5.y, r3.xyzx, cb1[31].xyzx
mov_sat r7.w, r5.y
mad r0.yzw, r0.yyzw, r1.xxxx, cb1[31].xxyz
dp3 r1.x, r0.yzwy, r0.yzwy
rsq r1.x, r1.x
mul r0.yzw, r0.yyzw, r1.xxxx
dp3_sat r1.x, r3.xyzx, r0.yzwy
dp3_sat r0.y, cb1[31].xyzx, r0.yzwy
mul r0.z, r7.w, r7.w
mul r0.w, r1.x, r1.x
mad r0.w, r0.w, r4.w, l(1.000000)
max r0.w, r0.w, l(0.000100)
mul r0.w, r0.w, r0.w
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w
mul r0.w, r0.w, r5.z
mad r0.z, r3.w, r0.z, r7.x
sqrt r0.z, r0.z
add r0.z, r0.z, r7.w
max r0.z, r0.z, l(0.000001)
div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
add r0.y, -r0.y, l(1.000000)
mul r1.x, r0.y, r0.y
mul r1.x, r1.x, r1.x
mul r0.y, r0.y, r1.x
mad r0.y, r7.z, r0.y, l(0.040000)
add r1.x, r5.y, l(0.500000)
mul_sat r1.x, r1.x, l(0.444444448)
mad r5.y, r1.x, l(-2.000000), l(3.000000)
mul r8.x, r1.x, r1.x
mul r5.y, r5.y, r8.x
mad r8.xyz, r5.yyyy, l(0.500000, 0.500000, 0.000000, 0.000000), l(0.500000, 0.500000, 1.000000, 0.000000)
mul r8.xyz, r8.xyzx, cb1[32].xyzx
mad r8.xyz, r8.xyzx, r1.xxxx, r10.xyzx
mul r0.z, r0.z, r0.w
mul r0.y, r0.y, r0.z
mul r0.y, r7.w, r0.y
mul r0.yzw, r0.yyyy, cb1[32].xxyz
mad r0.yzw, r9.xxyz, r5.xxxx, r0.yyzw
add r1.x, r7.w, r7.w
min r1.x, r1.x, l(1.000000)
mad r5.x, r1.x, l(-2.000000), l(3.000000)
mul r1.x, r1.x, r1.x
mul r1.x, r1.x, r5.x
dp3_sat r5.x, r6.yzwy, r1.yzwy
add r9.xyz, r1.yzwy, r1.yzwy
dp3 r5.y, r9.xyzx, r9.xyzx
rsq r5.y, r5.y
mul r9.xyz, r5.yyyy, r9.xyzx
dp3_sat r5.y, r6.yzwy, r9.xyzx
dp3_sat r6.y, r1.yzwy, r9.xyzx
max r6.z, r7.y, l(0.000000)
mad r6.z, r6.z, r6.z, l(1.000000)
mul r6.z, r6.z, l(0.010000)
mul r5.y, r5.y, r5.y
mul r6.w, r6.z, r6.z
mad r6.z, r6.z, r6.z, l(-1.000000)
mad r5.y, r5.y, r6.z, l(1.000000)
mul r6.z, r6.w, l(0.318309873)
mul r5.y, r5.y, r5.y
div r5.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y
mul r5.y, r5.y, r6.z
mul r2.w, r2.w, l(1.500000)
add r6.y, -r6.y, l(1.000000)
mul r6.z, r6.y, r6.y
mul r6.z, r6.z, r6.z
mul r6.y, r6.y, r6.z
mad r6.y, r6.y, l(0.960000), l(0.040000)
mul r5.y, r5.y, r6.y
mul r2.w, r2.w, r5.y
mul r2.w, r5.x, r2.w
mul r1.x, r1.x, r2.w
mad r0.yzw, cb1[32].xxyz, r1.xxxx, r0.yyzw
mov r6.yzw, r8.xxyz
mov r9.xyz, r0.yzwy
mov r1.x, r0.x
loop 
  breakc_z r1.x
  ishl r2.w, r1.x, l(16)
  movc r5.x, r2.w, r2.w, r1.x
  ishl r5.y, r5.x, l(8)
  movc r5.x, r5.y, r5.y, r5.x
  movc r7.yw, r2.wwww, l(0,15,0,7), l(0,31,0,23)
  movc r2.w, r5.y, r7.w, r7.y
  ishl r5.y, r5.x, l(4)
  movc r5.x, r5.y, r5.y, r5.x
  iadd r7.y, r2.w, l(-4)
  movc r2.w, r5.y, r7.y, r2.w
  ishl r5.y, r5.x, l(2)
  movc r5.x, r5.y, r5.y, r5.x
  iadd r7.y, r2.w, l(-2)
  movc r2.w, r5.y, r7.y, r2.w
  ishl r5.x, r5.x, l(1)
  iadd r5.y, r2.w, l(-1)
  movc r2.w, r5.x, r5.y, r2.w
  movc r2.w, r1.x, r2.w, l(-1)
  ishl r5.x, l(1), r2.w
  not r5.x, r5.x
  and r5.x, r1.x, r5.x
  ishl r2.w, r2.w, l(2)
  add r10.xyz, -r2.xyzx, cb2[r2.w + 0].xyzx
  dp3 r5.y, r10.xyzx, r10.xyzx
  sqrt r5.y, r5.y
  div r7.y, l(1.000000, 1.000000, 1.000000, 1.000000), r5.y
  mul r11.xyz, r7.yyyy, r10.xyzx
  dp3_sat r7.w, r3.xyzx, r11.xyzx
  dp3 r8.w, r11.xyzx, cb2[r2.w + 2].xyzx
  max r8.w, r8.w, l(0.000000)
  add r8.w, r8.w, -cb2[r2.w + 3].w
  mul_sat r8.w, r8.w, cb2[r2.w + 3].z
  mul r8.w, r8.w, r8.w
  add r9.w, -cb2[r2.w + 3].x, cb2[r2.w + 3].y
  add r5.y, r5.y, -cb2[r2.w + 3].x
  div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w
  mul_sat r5.y, r5.y, r9.w
  mad r9.w, r5.y, l(-2.000000), l(3.000000)
  mul r5.y, r5.y, r5.y
  mad r5.y, -r9.w, r5.y, l(1.000000)
  mul r5.y, r5.y, r8.w
  mul r5.y, r7.w, r5.y
  ge r8.w, l(0.000000), r5.y
  if_nz r8.w
    mov r1.x, r5.x
    continue 
  endif 
  mul r8.w, r5.y, l(0.960000)
  mad r10.xyz, r10.xyzx, r7.yyyy, r1.yzwy
  dp3 r7.y, r10.xyzx, r10.xyzx
  rsq r7.y, r7.y
  mul r10.xyz, r7.yyyy, r10.xyzx
  dp3_sat r7.y, r3.xyzx, r10.xyzx
  dp3_sat r9.w, r11.xyzx, r10.xyzx
  mul r10.x, r7.w, r7.w
  mul r7.y, r7.y, r7.y
  mad r7.y, r7.y, r4.w, l(1.000000)
  max r7.y, r7.y, l(0.000100)
  mul r7.y, r7.y, r7.y
  div r7.y, l(1.000000, 1.000000, 1.000000, 1.000000), r7.y
  mul r7.y, r5.z, r7.y
  add r9.w, -r9.w, l(1.000000)
  mul r10.y, r9.w, r9.w
  mul r10.y, r10.y, r10.y
  mul r9.w, r9.w, r10.y
  mad r9.w, r7.z, r9.w, l(0.040000)
  mad r10.x, r3.w, r10.x, r7.x
  sqrt r10.x, r10.x
  add r7.w, r7.w, r10.x
  max r7.w, r7.w, l(0.000001)
  div r7.w, l(1.000000, 1.000000, 1.000000, 1.000000), r7.w
  mul r7.y, r7.w, r7.y
  mul r7.y, r9.w, r7.y
  mul r5.y, r5.y, r7.y
  mad r6.yzw, cb2[r2.w + 1].xxyz, r8.wwww, r6.yyzw
  mad r9.xyz, cb2[r2.w + 1].xyzx, r5.yyyy, r9.xyzx
  mov r1.x, r5.x
endloop 
add r0.x, -r6.x, l(1.000000)
mul r0.xyz, r0.xxxx, cb0[45].xyzx
mad r0.xyz, r6.yzwy, r6.xxxx, r0.xyzx
mul r1.xyz, r5.wwww, r9.xyzx
max r0.xyz, r0.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
max r1.xyz, r1.xyzx, l(0.000000, 0.000000, 0.000000, 0.000000)
mul r0.xyz, r0.xyzx, r4.xyzx
mad o0.xyz, r0.xyzx, l(0.318309873, 0.318309873, 0.318309873, 0.000000), r1.xyzx
ret 
// Approximately 315 instruction slots used
