//Lights
// Generated by Microsoft (R) HLSL Shader Compiler 9.30.9200.20546
//
//   using 3Dmigoto v1.2.29 on Mon Feb 15 14:43:57 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
//      = 0x00000000 0x00000000 0x00000000 
//   float LightRange;                  // Offset:  700 Size:     4
//      = 0x00000000 
//   float3 eyeDirectionWS;             // Offset:  704 Size:    12 [unused]
//   float3 AOSnowColor;                // Offset:  720 Size:    12 [unused]
//      = 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
// 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
// $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[44], 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_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_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
sample_l r1.xyzw, v1.xyxx, t6.xyzw, s0, l(0.000000)
mul r0.y, r1.x, cb1[18].y
lt r0.z, cb0[43].w, r0.y
movc r0.x, r0.z, l(0), r0.x
mad r0.zw, v1.xxxy, l(0.000000, 0.000000, 1.000000, -1.000000), l(0.000000, 0.000000, 0.000000, 1.000000)
mad r0.zw, r0.zzzw, l(0.000000, 0.000000, 2.000000, 2.000000), l(0.000000, 0.000000, -1.000000, -1.000000)
mul r0.zw, r0.zzzw, cb1[25].xxxy
mul r1.xy, r0.yyyy, r0.zwzz
mov r1.z, -r0.y
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
max r2.w, r5.y, l(0.080000)
mul r3.w, r2.w, r2.w
mul r4.w, r3.w, r3.w
mad r3.w, r3.w, r3.w, l(-1.000000)
mad r2.w, r2.w, l(0.500000), l(0.500000)
mul r2.w, r2.w, r2.w
mul r6.y, r2.w, r2.w
mad r2.w, -r2.w, r2.w, l(1.000000)
mul r6.zw, r5.xxxz, l(0.000000, 0.000000, 0.960000, 16.000000)
dp3 r5.z, r3.xyzx, r1.yzwy
mov_sat r7.x, r5.z
mul r7.z, r7.x, r7.x
mad r7.z, r2.w, r7.z, r6.y
sqrt r7.z, r7.z
add r7.z, r7.z, r7.x
div r7.z, l(1.000000, 1.000000, 1.000000, 1.000000), r7.z
mul r4.w, r4.w, r7.z
mul r4.w, r4.w, l(0.318309873)
add r7.z, r6.x, r7.x
mad r7.z, r7.z, r7.z, r6.x
add_sat r7.z, r7.z, l(-1.000000)
mov r7.y, r5.y
sample_l r8.xyzw, r7.xyxx, t1.xyzw, s2, l(0.000000)
mul r5.x, r5.x, r8.y
mad r5.x, r8.x, l(0.040000), r5.x
add r5.y, r5.z, r5.z
mad r8.xyz, r3.xzyx, -r5.yyyy, r1.ywzy
div r5.y, l(2.000000), r7.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 r5.z, |r8.z|, |r8.x|
max r5.z, |r8.y|, r5.z
exp r7.x, r5.y
mad r7.x, -r7.x, l(0.00781250000), l(1.000000)
ne r9.xyz, r5.zzzz, |r8.xyzx|
mul r7.xyw, r7.xxxx, r8.xyxz
movc r7.xyw, r9.xyxz, r7.xyxw, r8.xyxz
mov r7.xyw, -r7.xyxw
sample_l r8.xyzw, r7.xywx, t4.xyzw, s1, r5.y
sample_l r9.xyzw, r3.xyzx, t2.xyzw, s2, l(0.000000)
mul r9.xyz, r9.xyzx, cb1[26].zzzz
mul r9.xyz, r9.xyzx, l(3.14159274, 3.14159274, 3.14159274, 0.000000)
mul r8.xyz, r8.xyzx, cb1[26].zzzz
lt r5.z, l(0.000000), cb1[26].w
if_nz r5.z
  sample_l r10.xyzw, r7.xywx, t5.xyzw, s1, r5.y
  sample_l r11.xyzw, r3.xyzx, t3.xyzw, s2, l(0.000000)
  mul r7.xyw, r11.xyxz, cb1[26].wwww
  mad r9.xyz, r7.xywx, l(3.14159274, 3.14159274, 3.14159274, 0.000000), r9.xyzx
  mad r8.xyz, r10.xyzx, cb1[26].wwww, r8.xyzx
endif 
dp3_sat r5.y, r3.xyzx, cb1[31].xyzx
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, r1.x, r1.x
mad r0.z, r0.z, r3.w, l(1.000000)
mul r0.z, r0.z, r0.z
div r0.z, l(1.000000, 1.000000, 1.000000, 1.000000), r0.z
mul r0.z, r0.z, r4.w
mul r0.w, r5.y, r5.y
mad r0.w, r0.w, r2.w, r6.y
ishr r0.w, r0.w, l(1)
iadd r0.w, r0.w, l(0x1fbd1df5)
add r0.w, r0.w, r5.y
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w
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, r6.z, r0.y, l(0.040000)
mad r7.xyw, r3.xyxz, l(0.200000, 0.200000, 0.000000, 0.200000), cb1[31].xyxz
dp3_sat r1.x, -r7.xywx, r1.yzwy
dp3_sat r5.z, -cb1[31].xyzx, r3.xyzx
mul r1.x, r1.x, r1.x
mul r5.z, r5.w, r5.z
mad r1.x, r1.x, r5.w, r5.z
add r1.x, r1.x, r5.y
mad r7.xyw, cb1[32].xyxz, r1.xxxx, r9.xyxz
mul r0.z, r0.w, r0.z
mul r0.y, r0.y, r0.z
mul r0.y, r5.y, r0.y
mul r0.yzw, r0.yyyy, cb1[32].xxyz
mad r0.yzw, r8.xxyz, r5.xxxx, r0.yyzw
eq r1.x, r5.w, l(0.000000)
mov r5.xyz, r7.xywx
mov r8.xyzw, r0.yzwx
loop 
  breakc_z r8.w
  ishl r9.x, r8.w, l(16)
  movc r9.y, r9.x, r9.x, r8.w
  ishl r9.z, r9.y, l(8)
  movc r9.xw, r9.xxxx, l(15,0,0,7), l(31,0,0,23)
  movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx
  ishl r9.z, r9.y, l(4)
  iadd r9.w, r9.x, l(-4)
  movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx
  ishl r9.z, r9.y, l(2)
  iadd r9.w, r9.x, l(-2)
  movc r9.xy, r9.zzzz, r9.wzww, r9.xyxx
  ishl r9.y, r9.y, l(1)
  iadd r9.z, r9.x, l(-1)
  movc r9.x, r9.y, r9.z, r9.x
  movc r9.x, r8.w, r9.x, l(-1)
  ishl r9.y, l(1), r9.x
  not r9.y, r9.y
  and r9.y, r8.w, r9.y
  ishl r9.x, r9.x, l(2)
  add r10.xyz, -r2.xyzx, cb2[r9.x + 0].xyzx
  dp3 r9.z, r10.xyzx, r10.xyzx
  rsq r9.w, r9.z
  mul r11.xyz, r9.wwww, r10.xyzx
  dp3_sat r10.w, r3.xyzx, r11.xyzx
  dp3_sat r11.w, r11.xyzx, cb2[r9.x + 2].xyzx
  mul r12.x, cb2[r9.x + 3].z, -cb2[r9.x + 3].w
  mad_sat r11.w, r11.w, cb2[r9.x + 3].z, r12.x
  mul r11.w, r11.w, r11.w
  add r12.x, -cb2[r9.x + 3].x, cb2[r9.x + 3].y
  mad r9.z, r9.w, r9.z, -cb2[r9.x + 3].x
  div r12.x, l(1.000000, 1.000000, 1.000000, 1.000000), r12.x
  mul_sat r9.z, r9.z, r12.x
  mad r12.x, r9.z, l(-2.000000), l(3.000000)
  mul r9.z, r9.z, r9.z
  mad r9.z, -r12.x, r9.z, l(1.000000)
  mul r9.z, r9.z, r11.w
  mad r12.xyz, r3.xyzx, l(0.200000, 0.200000, 0.200000, 0.000000), r11.xyzx
  dp3_sat r11.w, -r12.xyzx, r1.yzwy
  dp3_sat r12.x, -r11.xyzx, r3.xyzx
  mad r11.w, r11.w, r11.w, r12.x
  mul r11.w, r5.w, r11.w
  mul r11.w, r9.z, r11.w
  mad r12.xyz, r11.wwww, cb2[r9.x + 1].xyzx, r5.xyzx
  mul r9.z, r10.w, r9.z
  ge r11.w, l(0.000000), r9.z
  and r11.w, r1.x, r11.w
  if_nz r11.w
    mov r5.xyz, r12.xyzx
    mov r8.w, r9.y
    continue 
  endif 
  mad r10.xyz, r10.xyzx, r9.wwww, r1.yzwy
  dp3 r9.w, r10.xyzx, r10.xyzx
  rsq r9.w, r9.w
  mul r10.xyz, r9.wwww, r10.xyzx
  dp3_sat r9.w, r3.xyzx, r10.xyzx
  dp3_sat r10.x, r11.xyzx, r10.xyzx
  mul r9.w, r9.w, r9.w
  mad r9.w, r9.w, r3.w, l(1.000000)
  mul r9.w, r9.w, r9.w
  div r9.w, l(1.000000, 1.000000, 1.000000, 1.000000), r9.w
  mul r9.w, r4.w, r9.w
  add r10.x, -r10.x, l(1.000000)
  mul r10.y, r10.x, r10.x
  mul r10.y, r10.y, r10.y
  mul r10.x, r10.x, r10.y
  mad r10.x, r6.z, r10.x, l(0.040000)
  mul r10.y, r10.w, r10.w
  mad r10.y, r10.y, r2.w, r6.y
  ishr r10.y, r10.y, l(1)
  iadd r10.y, r10.y, l(0x1fbd1df5)
  add r10.y, r10.y, r10.w
  div r10.y, l(1.000000, 1.000000, 1.000000, 1.000000), r10.y
  mul r9.w, r9.w, r10.y
  mul r9.w, r10.x, r9.w
  mul r9.w, r9.z, r9.w
  mad r5.xyz, cb2[r9.x + 1].xyzx, r9.zzzz, r12.xyzx
  mad r8.xyz, cb2[r9.x + 1].xyzx, r9.wwww, r8.xyzx
  mov r8.w, r9.y
endloop 
add r0.x, -r6.x, l(1.000000)
mul r0.xyz, r0.xxxx, cb0[43].xyzx
mad r0.xyz, r5.xyzx, r6.xxxx, r0.xyzx
mul r1.xyz, r7.zzzz, r8.xyzx
mul r0.xyz, r4.xyzx, r0.xyzx
mad r0.xyz, r0.xyzx, l(0.305577457, 0.305577457, 0.305577457, 0.000000), r1.xyzx
mad o0.xyz, r4.xyzx, r6.wwww, r0.xyzx
ret 
// Approximately 219 instruction slots used

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~*/
