// ---- Created with 3Dmigoto v1.3.11 on Thu Nov 29 17:52:51 2018

cbuffer _Globals : register(b4)
{
  float4 gShowAO : packoffset(c0);
  float4 pspec2_color : packoffset(c1) = {1,1,1,1};
  float4 pspec1_color : packoffset(c2) = {1,1,1,1};
  float pSpecularPower : packoffset(c3) = {40};
}

cbuffer g_globalbuffer : register(b0)
{

  struct
  {
    float3 cameraPos;
    float time;
    float4 depthBias;
    float4 rimColor;
    float4 ambientColor;
    float4 ambientColor2;
    float4 fogParams;
    float4 fogColor;
    row_major float4x4 invProj;
    float4 depthRange;
    float4 viewport;
    float4 spotOffsets[16];
  } g_global : packoffset(c0);

}

cbuffer g_instancebuffer : register(b1)
{

  struct
  {
    float4 objectColor;
    bool preMultiplyAlpha;
    float colorMapMult;
    float fadeAmount;
    float alphaRef;
    bool lightEnable0;
    bool lightEnable1;
    bool lightEnable2;
    float _pad1;
  } g_instance : packoffset(c0);

}

cbuffer g_sunbuffer : register(b3)
{

  struct
  {
    float3 dir;
    float halfShadowPixelSize;
    float3 color;
    float _pad2;
    float4 splitValues;
    row_major float4x4 lightViewProj[4];
    row_major float4x4 viewProj;
    float depthBias[4];
  } g_sun : packoffset(c0);

}

SamplerState pdiffuse1_sampler_s : register(s0);
SamplerState pdiffuse2_sampler_s : register(s1);
SamplerState pspec2_sampler_s : register(s2);
SamplerState pspec1_sampler_s : register(s3);
SamplerState pnorm1_sampler_s : register(s4);
SamplerState pnorm2_sampler_s : register(s5);
SamplerState gSunSampler_sampler_s : register(s8);
Texture2D<float4> pdiffuse1_texture : register(t0);
Texture2D<float4> pdiffuse2_texture : register(t1);
Texture2D<float4> pspec2_texture : register(t2);
Texture2D<float4> pspec1_texture : register(t3);
Texture2D<float4> pnorm1_texture : register(t4);
Texture2D<float4> pnorm2_texture : register(t5);
Texture2D<float4> gSunSampler_texture : register(t8);


// 3Dmigoto declarations
#define cmp -
Texture1D<float4> IniParams : register(t120);
Texture2D<float4> StereoParams : register(t125);


void main(
  float4 v0 : TEXCOORD0,
  float2 v1 : TEXCOORD1,
  float2 w1 : TEXCOORD2,
  float4 v2 : TEXCOORD3,
  float4 v3 : TEXCOORD4,
  float3 v4 : TEXCOORD5,
  float4 v5 : COLOR0,
  float4 v6 : SV_Position0,
  out float4 o0 : SV_Target0)
{
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.x = cmp(1 < g_instance.preMultiplyAlpha);
  if (r0.x != 0) discard;
  r0.xyzw = pnorm1_texture.Sample(pnorm1_sampler_s, v1.xy).xyzw;
  r0.xyw = r0.wxy * float3(2,2,2) + float3(-1,-1,-1);
  r0.xy = r0.xw * r0.yw;
  r0.y = r0.x * r0.x + -r0.y;
  r0.y = min(1, r0.y);
  r0.y = 1 + -r0.y;
  r0.z = sqrt(r0.y);
  r1.xyzw = pnorm2_texture.Sample(pnorm2_sampler_s, w1.xy).xyzw;
  r1.xyw = r1.wxy * float3(2,2,2) + float3(-1,-1,-1);
  r1.xy = r1.xw * r1.yw;
  r0.y = r1.x * r1.x + -r1.y;
  r0.y = min(1, r0.y);
  r0.y = 1 + -r0.y;
  r1.z = sqrt(r0.y);
  r0.xyz = -r1.xwz + r0.xwz;
  r0.xyz = v5.xyz * r0.xyz + r1.xwz;
  r1.xyz = v3.xyz * r0.yyy;
  r0.xyw = r0.xxx * v2.xyz + r1.xyz;
  r0.xyz = r0.zzz * v4.xyz + r0.xyw;
  r0.w = dot(r0.xyz, r0.xyz);
  r0.w = rsqrt(r0.w);
  r0.xyz = r0.xyz * r0.www;
  r1.xyzw = pdiffuse1_texture.Sample(pdiffuse1_sampler_s, v1.xy).xyzw;
  r2.xyzw = pdiffuse2_texture.Sample(pdiffuse2_sampler_s, w1.xy).xyzw;
  r3.xyz = g_global.cameraPos.xyz + -v0.xyz;
  r0.w = dot(r3.xyz, r3.xyz);
  r1.w = rsqrt(r0.w);
  r4.xyzw = pspec1_texture.Sample(pspec1_sampler_s, v1.xy).xyzw;
  r5.xyzw = pspec2_texture.Sample(pspec2_sampler_s, w1.xy).xyzw;
  r2.w = r0.z * 0.5 + 0.5;
  r2.w = r2.w * r2.w;
  r6.xyz = -g_global.ambientColor2.xyz + g_global.ambientColor.xyz;
  r6.xyz = r2.www * r6.xyz + g_global.ambientColor2.xyz;
  r7.xyz = r3.xyz * r1.www + float3(0,0,1);
  r3.w = dot(r7.xyz, r7.xyz);
  r3.w = rsqrt(r3.w);
  r7.xyz = r7.xyz * r3.www;
  r3.w = dot(r0.xyz, r7.xyz);
  r2.w = cmp(r2.w >= 0);
  r4.w = cmp(r3.w >= 0);
  r2.w = r2.w ? r4.w : 0;
  r3.w = log2(r3.w);
  r3.w = pSpecularPower * r3.w;
  r3.w = exp2(r3.w);
  r2.w = r2.w ? r3.w : 0;
  r3.w = g_sun.viewProj._m12 * v0.y;
  r3.w = v0.x * g_sun.viewProj._m02 + r3.w;
  r3.w = v0.z * g_sun.viewProj._m22 + r3.w;
  r3.w = g_sun.viewProj._m32 + r3.w;
  r7.xyz = cmp(r3.www >= g_sun.splitValues.xyz);
  r7.xyz = r7.xyz ? float3(1,1,1) : 0;
  r3.w = dot(r7.xyz, float3(1,1,1));
  r4.w = (int)r3.w;
  r3.w = cmp(r3.w >= 2);
  r7.xy = r3.ww ? float2(0,-1) : 0;
  r3.w = (int)r4.w + (int)r7.y;
  r5.w = (uint)r4.w << 2;
  r7.yzw = g_sun.lightViewProj[r5.w/4]._m10_m11_m12 * v0.yyy;
  r7.yzw = v0.xxx * g_sun.lightViewProj[r5.w/4]._m00_m01_m02 + r7.yzw;
  r7.yzw = v0.zzz * g_sun.lightViewProj[r5.w/4]._m20_m21_m22 + r7.yzw;
  r7.yzw = g_sun.lightViewProj[r5.w/4]._m30_m31_m32 + r7.yzw;
  r7.yzw = r7.yzw * float3(0.25,-0.25,1) + float3(0.25,0.25,0);
  r8.x = (int)r3.w;
  r8.y = (int)r7.x;
  r8.xy = cmp(float2(0,0) >= r8.xy);
  r8.xy = r8.xy ? float2(0,0) : float2(0.5,0.5);
  r7.xy = r8.xy + r7.yz;
  r3.w = -g_sun.depthBias[r4.w] + r7.w;
  r8.xy = -g_sun.halfShadowPixelSize;
  r7.zw = r8.xx + r7.xy;
  r9.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r7.zw).xyzw;
  r4.w = cmp(r3.w < r9.x);
  r4.w = r4.w ? 1.000000 : 0;
  r8.z = 0;
  r8.xyzw = r8.zyyz + r7.xyxy;
  r9.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r8.xy).xyzw;
  r5.w = cmp(r3.w < r9.x);
  r5.w = (uint)r5.w << 1;
  r5.w = (int)r5.w & 2;
  r5.w = (int)r5.w;
  r4.w = r5.w + r4.w;
  r9.xyzw = g_sun.halfShadowPixelSize * float4(1,-1,-1,1) + r7.xyxy;
  r10.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r9.xy).xyzw;
  r5.w = cmp(r3.w < r10.x);
  r5.w = r5.w ? 1.000000 : 0;
  r4.w = r5.w + r4.w;
  r8.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r8.zw).xyzw;
  r5.w = cmp(r3.w < r8.x);
  r5.w = (uint)r5.w << 1;
  r5.w = (int)r5.w & 2;
  r5.w = (int)r5.w;
  r4.w = r5.w + r4.w;
  r8.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r7.xy).xyzw;
  r5.w = cmp(r3.w < r8.x);
  r5.w = (uint)r5.w << 2;
  r5.w = (int)r5.w & 4;
  r5.w = (int)r5.w;
  r4.w = r5.w + r4.w;
  r8.y = g_sun.halfShadowPixelSize;
  r8.x = 0;
  r8.xyzw = r8.yxxy + r7.xyxy;
  r10.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r8.xy).xyzw;
  r5.w = cmp(r3.w < r10.x);
  r5.w = (uint)r5.w << 1;
  r5.w = (int)r5.w & 2;
  r5.w = (int)r5.w;
  r4.w = r5.w + r4.w;
  r9.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r9.zw).xyzw;
  r5.w = cmp(r3.w < r9.x);
  r5.w = r5.w ? 1.000000 : 0;
  r4.w = r5.w + r4.w;
  r8.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r8.zw).xyzw;
  r5.w = cmp(r3.w < r8.x);
  r5.w = (uint)r5.w << 1;
  r5.w = (int)r5.w & 2;
  r5.w = (int)r5.w;
  r4.w = r5.w + r4.w;
  r7.xy = g_sun.halfShadowPixelSize + r7.xy;
  r7.xyzw = gSunSampler_texture.Sample(gSunSampler_sampler_s, r7.xy).xyzw;
  r3.w = cmp(r3.w < r7.x);
  r3.w = r3.w ? 1.000000 : 0;
  r3.w = r4.w + r3.w;
  r3.w = 0.0625 * r3.w;
  r7.xyz = g_sun.color.xyz * r3.www;
  r3.xyz = r3.xyz * r1.www + g_sun.dir.xyz;
  r1.w = dot(r3.xyz, r3.xyz);
  r1.w = rsqrt(r1.w);
  r3.xyz = r3.xyz * r1.www;
  r1.w = dot(g_sun.dir.xyz, r0.xyz);
  r0.x = dot(r3.xyz, r0.xyz);
  r0.y = cmp(r1.w >= 0);
  r0.z = max(0, r1.w);
  r1.w = cmp(r0.x >= 0);
  r0.y = r0.y ? r1.w : 0;
  r0.x = log2(r0.x);
  r0.x = pSpecularPower * r0.x;
  r0.x = exp2(r0.x);
  r0.x = r0.y ? r0.x : 0;
  r3.xyz = r0.zzz * r7.xyz + r6.xyz;
  r0.xyz = r0.xxx * r7.xyz;
  r0.xyz = g_global.ambientColor.xyz * r2.www + r0.xyz;
  r1.xyz = -r2.xyz + r1.xyz;
  r1.xyz = v5.xyz * r1.xyz + r2.xyz;
  r2.xyz = pspec2_color.xyz * r5.xyz;
  r4.xyz = r4.xyz * pspec1_color.xyz + -r2.xyz;
  r2.xyz = v5.xyz * r4.xyz + r2.xyz;
  r0.xyz = r2.xyz * r0.xyz;
  r0.xyz = r3.xyz * r1.xyz + r0.xyz;
  r0.w = -g_global.fogParams.x + r0.w;
  r0.w = saturate(g_global.fogParams.z * r0.w);
  r0.w = g_global.fogParams.w * r0.w;
  r0.w = 1.44269502 * r0.w;
  r0.w = exp2(r0.w);
  r0.w = 1 / r0.w;
  r0.xyz = -g_global.fogColor.xyz + r0.xyz;
  r0.xyz = r0.www * r0.xyz + g_global.fogColor.xyz;
  r1.xyz = g_instance.preMultiplyAlpha * r0.xyz;
  o0.xyz = g_instance.preMultiplyAlpha ? r1.xyz : r0.xyz;
  o0.w = g_instance.preMultiplyAlpha;
  return;
}

/*~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
// Generated by Microsoft (R) HLSL Shader Compiler 9.29.952.3111
//
//   using 3Dmigoto v1.3.11 on Thu Nov 29 17:52:51 2018
//
//
// Buffer Definitions:
//
// cbuffer $Globals
// {
//
//   float4 gShowAO;                    // Offset:    0 Size:    16 [unused]
//   float4 pspec2_color;               // Offset:   16 Size:    16
//      = 0x3f800000 0x3f800000 0x3f800000 0x3f800000
//   float4 pspec1_color;               // Offset:   32 Size:    16
//      = 0x3f800000 0x3f800000 0x3f800000 0x3f800000
//   float pSpecularPower;              // Offset:   48 Size:     4
//      = 0x42200000
//
// }
//
// cbuffer g_globalbuffer
// {
//
//   struct
//   {
//
//       float3 cameraPos;              // Offset:    0
//       float time;                    // Offset:   12
//       float4 depthBias;              // Offset:   16
//       float4 rimColor;               // Offset:   32
//       float4 ambientColor;           // Offset:   48
//       float4 ambientColor2;          // Offset:   64
//       float4 fogParams;              // Offset:   80
//       float4 fogColor;               // Offset:   96
//       row_major float4x4 invProj;    // Offset:  112
//       float4 depthRange;             // Offset:  176
//       float4 viewport;               // Offset:  192
//       float4 spotOffsets[16];        // Offset:  208
//
//   } g_global;                        // Offset:    0 Size:   464
//
// }
//
// cbuffer g_instancebuffer
// {
//
//   struct
//   {
//
//       float4 objectColor;            // Offset:    0
//       bool preMultiplyAlpha;         // Offset:   16
//       float colorMapMult;            // Offset:   20
//       float fadeAmount;              // Offset:   24
//       float alphaRef;                // Offset:   28
//       bool lightEnable0;             // Offset:   32
//       bool lightEnable1;             // Offset:   36
//       bool lightEnable2;             // Offset:   40
//       float _pad1;                   // Offset:   44
//
//   } g_instance;                      // Offset:    0 Size:    48
//
// }
//
// cbuffer g_sunbuffer
// {
//
//   struct
//   {
//
//       float3 dir;                    // Offset:    0
//       float halfShadowPixelSize;     // Offset:   12
//       float3 color;                  // Offset:   16
//       float _pad2;                   // Offset:   28
//       float4 splitValues;            // Offset:   32
//       row_major float4x4 lightViewProj[4];// Offset:   48
//       row_major float4x4 viewProj;   // Offset:  304
//       float depthBias[4];            // Offset:  368
//
//   } g_sun;                           // Offset:    0 Size:   420
//
// }
//
//
// Resource Bindings:
//
// Name                                 Type  Format         Dim Slot Elements
// ------------------------------ ---------- ------- ----------- ---- --------
// pdiffuse1_sampler                 sampler      NA          NA    0        1
// pdiffuse2_sampler                 sampler      NA          NA    1        1
// pspec2_sampler                    sampler      NA          NA    2        1
// pspec1_sampler                    sampler      NA          NA    3        1
// pnorm1_sampler                    sampler      NA          NA    4        1
// pnorm2_sampler                    sampler      NA          NA    5        1
// gSunSampler_sampler               sampler      NA          NA    8        1
// pdiffuse1_texture                 texture  float4          2d    0        1
// pdiffuse2_texture                 texture  float4          2d    1        1
// pspec2_texture                    texture  float4          2d    2        1
// pspec1_texture                    texture  float4          2d    3        1
// pnorm1_texture                    texture  float4          2d    4        1
// pnorm2_texture                    texture  float4          2d    5        1
// gSunSampler_texture               texture  float4          2d    8        1
// g_globalbuffer                    cbuffer      NA          NA    0        1
// g_instancebuffer                  cbuffer      NA          NA    1        1
// g_sunbuffer                       cbuffer      NA          NA    3        1
// $Globals                          cbuffer      NA          NA    4        1
//
//
//
// Input signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// TEXCOORD                 0   xyz         0     NONE   float   xyz
// TEXCOORD                 1   xy          1     NONE   float   xy
// TEXCOORD                 2     zw        1     NONE   float     zw
// TEXCOORD                 3   xyz         2     NONE   float   xyz
// TEXCOORD                 4   xyz         3     NONE   float   xyz
// TEXCOORD                 5   xyz         4     NONE   float   xyz
// COLOR                    0   xyzw        5     NONE   float   xyz
// SV_Position              0   xyzw        6      POS   float
//
//
// Output signature:
//
// Name                 Index   Mask Register SysValue  Format   Used
// -------------------- ----- ------ -------- -------- ------- ------
// SV_Target                0   xyzw        0   TARGET   float   xyzw
//
ps_4_0
dcl_constantbuffer cb4[4], immediateIndexed
dcl_constantbuffer cb0[7], immediateIndexed
dcl_constantbuffer cb1[2], immediateIndexed
dcl_constantbuffer cb3[27], 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_sampler s5, mode_default
dcl_sampler s8, 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_texture2d (float,float,float,float) t5
dcl_resource_texture2d (float,float,float,float) t8
dcl_input_ps linear v0.xyz
dcl_input_ps linear v1.xy
dcl_input_ps linear v1.zw
dcl_input_ps linear v2.xyz
dcl_input_ps linear v3.xyz
dcl_input_ps linear v4.xyz
dcl_input_ps linear v5.xyz
dcl_output o0.xyzw
dcl_temps 11
lt r0.x, l(1.000000), cb1[1].w
discard_nz r0.x
sample r0.xyzw, v1.xyxx, t4.xyzw, s4
mad r0.xyw, r0.wxwy, l(2.000000, 2.000000, 0.000000, 2.000000), l(-1.000000, -1.000000, 0.000000, -1.000000)
mul r0.xy, r0.ywyy, r0.xwxx
mad r0.y, r0.x, r0.x, -r0.y
min r0.y, r0.y, l(1.000000)
add r0.y, -r0.y, l(1.000000)
sqrt r0.z, r0.y
sample r1.xyzw, v1.zwzz, t5.xyzw, s5
mad r1.xyw, r1.wxwy, l(2.000000, 2.000000, 0.000000, 2.000000), l(-1.000000, -1.000000, 0.000000, -1.000000)
mul r1.xy, r1.ywyy, r1.xwxx
mad r0.y, r1.x, r1.x, -r1.y
min r0.y, r0.y, l(1.000000)
add r0.y, -r0.y, l(1.000000)
sqrt r1.z, r0.y
add r0.xyz, r0.xwzx, -r1.xwzx
mad r0.xyz, v5.xyzx, r0.xyzx, r1.xwzx
mul r1.xyz, r0.yyyy, v3.xyzx
mad r0.xyw, r0.xxxx, v2.xyxz, r1.xyxz
mad r0.xyz, r0.zzzz, v4.xyzx, r0.xywx
dp3 r0.w, r0.xyzx, r0.xyzx
rsq r0.w, r0.w
mul r0.xyz, r0.wwww, r0.xyzx
sample r1.xyzw, v1.xyxx, t0.xyzw, s0
sample r2.xyzw, v1.zwzz, t1.xyzw, s1
add r3.xyz, -v0.xyzx, cb0[0].xyzx
dp3 r0.w, r3.xyzx, r3.xyzx
rsq r1.w, r0.w
sample r4.xyzw, v1.xyxx, t3.xyzw, s3
sample r5.xyzw, v1.zwzz, t2.xyzw, s2
mad r2.w, r0.z, l(0.500000), l(0.500000)
mul r2.w, r2.w, r2.w
add r6.xyz, cb0[3].xyzx, -cb0[4].xyzx
mad r6.xyz, r2.wwww, r6.xyzx, cb0[4].xyzx
mad r7.xyz, r3.xyzx, r1.wwww, l(0.000000, 0.000000, 1.000000, 0.000000)
dp3 r3.w, r7.xyzx, r7.xyzx
rsq r3.w, r3.w
mul r7.xyz, r3.wwww, r7.xyzx
dp3 r3.w, r0.xyzx, r7.xyzx
ge r2.w, r2.w, l(0.000000)
ge r4.w, r3.w, l(0.000000)
and r2.w, r2.w, r4.w
log r3.w, r3.w
mul r3.w, r3.w, cb4[3].x
exp r3.w, r3.w
and r2.w, r2.w, r3.w
mul r3.w, v0.y, cb3[20].z
mad r3.w, v0.x, cb3[19].z, r3.w
mad r3.w, v0.z, cb3[21].z, r3.w
add r3.w, r3.w, cb3[22].z
ge r7.xyz, r3.wwww, cb3[2].xyzx
and r7.xyz, r7.xyzx, l(0x3f800000, 0x3f800000, 0x3f800000, 0)
dp3 r3.w, r7.xyzx, l(1.000000, 1.000000, 1.000000, 0.000000)
ftoi r4.w, r3.w
ge r3.w, r3.w, l(2.000000)
and r7.xy, r3.wwww, l(1, -2, 0, 0)
iadd r3.w, r4.w, r7.y
ishl r5.w, r4.w, l(2)
mul r7.yzw, v0.yyyy, cb3[r5.w + 4].xxyz
mad r7.yzw, v0.xxxx, cb3[r5.w + 3].xxyz, r7.yyzw
mad r7.yzw, v0.zzzz, cb3[r5.w + 5].xxyz, r7.yyzw
add r7.yzw, r7.yyzw, cb3[r5.w + 6].xxyz
mad r7.yzw, r7.yyzw, l(0.000000, 0.250000, -0.250000, 1.000000), l(0.000000, 0.250000, 0.250000, 0.000000)
itof r8.x, r3.w
itof r8.y, r7.x
ge r8.xy, l(0.000000, 0.000000, 0.000000, 0.000000), r8.xyxx
movc r8.xy, r8.xyxx, l(0,0,0,0), l(0.500000,0.500000,0,0)
add r7.xy, r7.yzyy, r8.xyxx
add r3.w, r7.w, -cb3[r4.w + 23].x
mov r8.xy, -cb3[0].wwww
add r7.zw, r7.xxxy, r8.xxxx
sample r9.xyzw, r7.zwzz, t8.xyzw, s8
lt r4.w, r3.w, r9.x
and r4.w, r4.w, l(0x3f800000)
mov r8.z, l(0)
add r8.xyzw, r7.xyxy, r8.zyyz
sample r9.xyzw, r8.xyxx, t8.xyzw, s8
lt r5.w, r3.w, r9.x
ishl r5.w, r5.w, l(1)
and r5.w, r5.w, l(2)
itof r5.w, r5.w
add r4.w, r4.w, r5.w
mad r9.xyzw, cb3[0].wwww, l(1.000000, -1.000000, -1.000000, 1.000000), r7.xyxy
sample r10.xyzw, r9.xyxx, t8.xyzw, s8
lt r5.w, r3.w, r10.x
and r5.w, r5.w, l(0x3f800000)
add r4.w, r4.w, r5.w
sample r8.xyzw, r8.zwzz, t8.xyzw, s8
lt r5.w, r3.w, r8.x
ishl r5.w, r5.w, l(1)
and r5.w, r5.w, l(2)
itof r5.w, r5.w
add r4.w, r4.w, r5.w
sample r8.xyzw, r7.xyxx, t8.xyzw, s8
lt r5.w, r3.w, r8.x
ishl r5.w, r5.w, l(2)
and r5.w, r5.w, l(4)
itof r5.w, r5.w
add r4.w, r4.w, r5.w
mov r8.y, cb3[0].w
mov r8.x, l(0)
add r8.xyzw, r7.xyxy, r8.yxxy
sample r10.xyzw, r8.xyxx, t8.xyzw, s8
lt r5.w, r3.w, r10.x
ishl r5.w, r5.w, l(1)
and r5.w, r5.w, l(2)
itof r5.w, r5.w
add r4.w, r4.w, r5.w
sample r9.xyzw, r9.zwzz, t8.xyzw, s8
lt r5.w, r3.w, r9.x
and r5.w, r5.w, l(0x3f800000)
add r4.w, r4.w, r5.w
sample r8.xyzw, r8.zwzz, t8.xyzw, s8
lt r5.w, r3.w, r8.x
ishl r5.w, r5.w, l(1)
and r5.w, r5.w, l(2)
itof r5.w, r5.w
add r4.w, r4.w, r5.w
add r7.xy, r7.xyxx, cb3[0].wwww
sample r7.xyzw, r7.xyxx, t8.xyzw, s8
lt r3.w, r3.w, r7.x
and r3.w, r3.w, l(0x3f800000)
add r3.w, r3.w, r4.w
mul r3.w, r3.w, l(0.062500)
mul r7.xyz, r3.wwww, cb3[1].xyzx
mad r3.xyz, r3.xyzx, r1.wwww, cb3[0].xyzx
dp3 r1.w, r3.xyzx, r3.xyzx
rsq r1.w, r1.w
mul r3.xyz, r1.wwww, r3.xyzx
dp3 r1.w, cb3[0].xyzx, r0.xyzx
dp3 r0.x, r3.xyzx, r0.xyzx
ge r0.y, r1.w, l(0.000000)
max r0.z, r1.w, l(0.000000)
ge r1.w, r0.x, l(0.000000)
and r0.y, r0.y, r1.w
log r0.x, r0.x
mul r0.x, r0.x, cb4[3].x
exp r0.x, r0.x
and r0.x, r0.x, r0.y
mad r3.xyz, r0.zzzz, r7.xyzx, r6.xyzx
mul r0.xyz, r7.xyzx, r0.xxxx
mad r0.xyz, cb0[3].xyzx, r2.wwww, r0.xyzx
add r1.xyz, r1.xyzx, -r2.xyzx
mad r1.xyz, v5.xyzx, r1.xyzx, r2.xyzx
mul r2.xyz, r5.xyzx, cb4[1].xyzx
mad r4.xyz, r4.xyzx, cb4[2].xyzx, -r2.xyzx
mad r2.xyz, v5.xyzx, r4.xyzx, r2.xyzx
mul r0.xyz, r0.xyzx, r2.xyzx
mad r0.xyz, r3.xyzx, r1.xyzx, r0.xyzx
add r0.w, r0.w, -cb0[5].x
mul_sat r0.w, r0.w, cb0[5].z
mul r0.w, r0.w, cb0[5].w
mul r0.w, r0.w, l(1.442695)
exp r0.w, r0.w
div r0.w, l(1.000000, 1.000000, 1.000000, 1.000000), r0.w
add r0.xyz, r0.xyzx, -cb0[6].xyzx
mad r0.xyz, r0.wwww, r0.xyzx, cb0[6].xyzx
mul r1.xyz, r0.xyzx, cb1[1].zzzz
movc o0.xyz, cb1[1].xxxx, r1.xyzx, r0.xyzx
mov o0.w, cb1[1].z
ret
// Approximately 162 instruction slots used

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