// npc, body
Texture2DArray<float4> t7 : register(t7);

Texture2D<float4> t6 : register(t6);

Texture2D<float4> t5 : register(t5);

Texture2D<float4> t4 : register(t4);

Texture2D<float4> t3 : register(t3);

Texture2D<float4> t2 : register(t2);

struct t1_t {
  float val[20];
};
StructuredBuffer<t1_t> t1 : register(t1);

Texture2DArray<float4> t0 : register(t0);

SamplerComparisonState s1_s : register(s1);

SamplerState s0_s : register(s0);

cbuffer cb4 : register(b4)
{
  float4 cb4[95];
}

cbuffer cb3 : register(b3)
{
  float4 cb3[39];
}

cbuffer cb2 : register(b2)
{
  float4 cb2[27];
}

cbuffer cb1 : register(b1)
{
  float4 cb1[29];
}

cbuffer cb0 : register(b0)
{
  float4 cb0[172];
}




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


void main(
  float4 v0 : TEXCOORD0,
  float4 v1 : TEXCOORD1,
  float4 v2 : TEXCOORD2,
  float4 v3 : TEXCOORD3,
  float4 v4 : TEXCOORD4,
  float4 v5 : TEXCOORD5,
  float4 v6 : TXCOORDD6,
  float4 v7 : TEXCOORD7,
  float4 v8 : TEXCOORD8,
  float3 v9 : TEXCOORD9,
  float4 v10 : SV_POSITION0,
  uint v11 : SV_IsFrontFace0,
  out float4 o0 : SV_Target0,
  out float4 o1 : SV_Target1,
  out float4 o2 : SV_Target2,
  out float4 o3 : SV_Target3)
{
  const float4 icb[] = { { 0.0588235296, 0, 0, 0},
                              { 0.529411793, 0, 0, 0},
                              { 0.176470593, 0, 0, 0},
                              { 0.647058845, 0, 0, 0},
                              { 0.764705896, 0, 0, 0},
                              { 0.294117659, 0, 0, 0},
                              { 0.882352948, 0, 0, 0},
                              { 0.411764711, 0, 0, 0},
                              { 0.235294119, 0, 0, 0},
                              { 0.705882370, 0, 0, 0},
                              { 0.117647059, 0, 0, 0},
                              { 0.588235319, 0, 0, 0},
                              { 0.941176474, 0, 0, 0},
                              { 0.470588237, 0, 0, 0},
                              { 0.823529422, 0, 0, 0},
                              { 0.352941185, 0, 0, 0} };
  float4 r0,r1,r2,r3,r4,r5,r6,r7,r8,r9,r10,r11,r12,r13,r14,r15,r16;
  uint4 bitmask, uiDest;
  float4 fDest;

  r0.x = v11.x ? 1 : -1;
  r0.y = cmp(0.5 < cb1[28].y);
  r0.zw = v5.xy / v5.ww;
  r1.xy = v6.xy / v6.ww;
  r1.xy = -r1.xy + r0.zw;
  r0.zw = float2(0.5,-0.5) * r1.xy;
  r0.zw = sqrt(abs(r0.zw));
  r1.z = -r1.y;
  r1.yw = cmp(float2(0,0) < r1.xz);
  r1.xz = cmp(r1.xz < float2(0,0));
  r1.xy = (int2)-r1.yw + (int2)r1.xz;
  r1.xy = (int2)r1.xy;
  r0.zw = r1.xy * r0.zw;
  r0.zw = r0.zw * float2(0.5,0.5) + float2(0.498039216,0.498039216);
  o2.xy = r0.yy ? r0.zw : float2(0.497999996,0.497999996);
  r0.y = cmp(0.5 < cb4[90].x);
  o2.z = r0.y ? 1.000000 : 0;
  r0.y = cb4[79].y * cb4[79].z;
  r0.y = cmp(r0.y < 0.941176474);
  if (r0.y != 0) {
    r0.yz = (uint2)v10.xy;
    bitmask.y = ((~(-1 << 2)) << 2) & 0xffffffff;  r0.y = (((uint)r0.y << 2) & bitmask.y) | ((uint)0 & ~bitmask.y);
    bitmask.y = ((~(-1 << 2)) << 0) & 0xffffffff;  r0.y = (((uint)r0.z << 0) & bitmask.y) | ((uint)r0.y & ~bitmask.y);
    r0.y = cb4[79].y * cb4[79].z + -icb[r0.y+0].x;
    r0.y = cmp(r0.y < 0);
    //if (r0.y != 0) discard;
  }
  r0.yz = cmp(float2(0.5,0.5) < cb4[89].zw);
  r0.w = cmp((int)v11.x == 0);
  r0.y = r0.w ? r0.y : 0;
  r0.w = cmp(1 < v0.z);
  r0.z = r0.w ? r0.z : 0;
  r0.z = (int)r0.z | (int)r0.y;
  r0.zw = r0.zz ? v0.zw : v0.xy;
  r1.xyz = t3.SampleBias(s0_s, r0.zw, cb0[163].y).xyz;
  r2.xyz = cb4[29].xyz * r1.xyz;
  r0.yz = r0.yy ? v0.zw : v0.xy;
  r3.xyz = t4.SampleBias(s0_s, r0.yz, cb0[163].y).xyz;
  r3.xyz = r3.xyz * float3(2,2,2) + float3(-1.00399995,-1.00399995,-1);
  r3.xy = cb4[80].zz * r3.xy;
  r0.w = dot(r3.xy, r3.xy);
  r0.w = min(1, r0.w);
  r0.w = 1 + -r0.w;
  r0.w = sqrt(r0.w);
  r0.x = r0.w * r0.x;
  r4.xyz = v4.xyz * r3.yyy;
  r3.xyw = r3.xxx * v3.xyz + r4.xyz;
  r3.xyw = r0.xxx * v2.xyz + r3.xyw;
  r0.x = dot(r3.xyw, r3.xyw);
  r0.x = rsqrt(r0.x);
  r3.xyw = r3.xyw * r0.xxx;
  r4.xyz = t5.SampleBias(s0_s, r0.yz, cb0[163].y).zxy;
  r0.x = cb4[80].w * r4.z;
  r0.yz = t6.SampleBias(s0_s, r0.yz, cb0[163].y).zy;
  r0.w = cmp(0.5 < cb4[78].z);
  if (r0.w != 0) {
    r5.xy = cmp(float2(0.5,0.5) < cb4[87].xy);
    r0.w = r5.y ? r5.x : 0;
    r1.w = -0.200000003 + r0.y;
    r1.w = saturate(1.25 * r1.w);
    r0.w = r0.w ? r1.w : r0.y;
    r0.y = r5.x ? r0.w : 0;
  }
  r0.w = cmp(0.5 < cb4[80].x);
  r5.xy = cb4[80].yy * v0.xy;
  r5.xyz = t2.SampleBias(s0_s, r5.xy, cb0[163].y).xyz;
  r1.xyz = r1.xyz * cb4[29].xyz + r5.xyz;
  r1.xyz = float3(-0.5,-0.5,-0.5) + r1.xyz;
  r1.xyz = max(float3(0,0,0), r1.xyz);
  r1.xyz = r0.www ? r1.xyz : r2.xyz;
  r2.x = v2.w;
  r2.y = v3.w;
  r2.z = v4.w;
  r5.xyz = cb0[40].yzw + -r2.xyz;
  r0.w = dot(r5.xyz, r5.xyz);
  r1.w = max(1.17549435e-38, r0.w);
  r1.w = rsqrt(r1.w);
  r6.xyz = r5.xyz * r1.www;
  r2.w = cmp(0 < asint(cb0[160].x));
  if (r2.w != 0) {
    r4.w = (int)cb3[2].z;
    r5.w = asint(cb0[160].x) + -1;
    r4.w = min((int)r5.w, (int)r4.w);
    r4.w = max(0, (int)r4.w);
    r7.x = t1[r4.w].val[0/4+3];
    r7.y = t1[r4.w].val[0/4];
    r7.z = t1[r4.w].val[0/4+1];
    r7.w = t1[r4.w].val[0/4+2];
    r8.x = t1[r4.w].val[16/4];
    r8.y = t1[r4.w].val[16/4+1];
    r8.z = t1[r4.w].val[16/4+2];
    r8.w = t1[r4.w].val[16/4+3];
    r4.w = t1[r4.w].val[32/4];
    r9.xyz = r7.yzw;
    r7.y = r8.w;
  } else {
    r9.xyz = float3(0,0,0);
    r7.xy = float2(0,0);
    r4.w = 0;
    r8.xyz = float3(0,0,0);
  }
  r8.xyz = r8.xyz + -r2.xyz;
  r5.w = dot(r8.xyz, r8.xyz);
  r5.w = max(1.17549435e-38, r5.w);
  r6.w = rsqrt(r5.w);
  r8.xyz = r8.xyz * r6.www;
  r6.w = r7.x * r7.x;
  r5.w = r5.w / r6.w;
  r5.w = 1 + -r5.w;
  r5.w = max(0, r5.w);
  r7.xzw = -cb0[161].xyz + r9.xyz;
  r7.xzw = r5.www * r7.xzw + cb0[161].xyz;
  r6.w = -1 + r5.w;
  r5.w = r5.w * r6.w + 1;
  r6.w = cmp(0.5 < cb0[13].x);
  if (r6.w != 0) {
    r9.xyzw = cmp(r4.yyyy < float4(0.200000003,0.400000006,0.600000024,0.800000012));
    r6.w = r9.w ? cb4[91].z : cb4[91].y;
    r6.w = r9.z ? cb4[91].w : r6.w;
    r6.w = r9.y ? cb4[92].x : r6.w;
    r6.w = r9.x ? cb4[92].y : r6.w;
    r9.xyz = r3.xyw * cb4[78].xxx + r2.xyz;
    r10.xyz = cb3[34].xyz * r9.yyy;
    r9.xyw = cb3[33].xyz * r9.xxx + r10.xyz;
    r9.xyz = cb3[35].xyz * r9.zzz + r9.xyw;
    r9.xyz = cb3[36].xyz + r9.xyz;
    r10.xy = r9.xy * cb3[38].xy + cb3[38].zw;
    r11.xy = -cb0[171].xy + r10.xy;
    r11.z = cb3[37].y;
    r8.w = t7.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r11.xyzw = cb0[171].xyxy * float4(1,-1,-1,1) + r10.xyxy;
    r12.xy = r11.zw;
    r12.z = cb3[37].y;
    r9.x = t7.SampleCmpLevelZero(s1_s, r12.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r11.z = cb3[37].y;
    r9.x = t7.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r11.xy = cb0[171].xy + r10.xy;
    r11.z = cb3[37].y;
    r9.x = t7.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r11.xyzw = cb0[171].xyxy * float4(1.41421294,0,-1.41421294,0) + r10.xyxy;
    r12.xy = r11.zw;
    r12.z = cb3[37].y;
    r9.x = t7.SampleCmpLevelZero(s1_s, r12.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r11.z = cb3[37].y;
    r9.x = t7.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r11.xyzw = cb0[171].xyxy * float4(0,1.41421294,0,-1.41421294) + r10.xyxy;
    r12.xy = r11.zw;
    r12.z = cb3[37].y;
    r9.x = t7.SampleCmpLevelZero(s1_s, r12.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r11.z = cb3[37].y;
    r9.x = t7.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r10.z = cb3[37].y;
    r9.x = t7.SampleCmpLevelZero(s1_s, r10.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r8.w = r8.w * 0.111100003 + -1;
    r6.w = r8.w * r6.w;
    r6.w = cb3[37].x * r6.w;
    r8.w = round(v7.w);
    r8.w = v7.w + -r8.w;
    r8.w = cmp(9.99999975e-05 < abs(r8.w));
    if (r8.w != 0) {
      r9.xyz = -cb2[20].xyz + r2.xyz;
      r10.xyz = -cb2[21].xyz + r2.xyz;
      r11.xyz = -cb2[22].xyz + r2.xyz;
      r12.xyz = -cb2[23].xyz + r2.xyz;
      r9.x = dot(r9.xyz, r9.xyz);
      r9.y = dot(r10.xyz, r10.xyz);
      r9.z = dot(r11.xyz, r11.xyz);
      r9.w = dot(r12.xyz, r12.xyz);
      r9.xyzw = cmp(r9.xyzw < cb2[24].xyzw);
      r10.xyzw = r9.xyzw ? float4(1,1,1,1) : 0;
      r9.xyz = r9.xyz ? float3(-1,-1,-1) : float3(-0,-0,-0);
      r9.xyz = r10.yzw + r9.xyz;
      r10.yzw = max(float3(0,0,0), r9.xyz);
      r8.w = dot(r10.xyzw, float4(4,3,2,1));
      r9.w = 4 + -r8.w;
      r8.w = (uint)r9.w;
      r8.w = (uint)r8.w << 2;
      r10.xyz = cb2[r8.w+1].xyz * v3.www;
      r10.xyz = cb2[r8.w+0].xyz * v2.www + r10.xyz;
      r10.xyz = cb2[r8.w+2].xyz * v4.www + r10.xyz;
      r9.xyz = cb2[r8.w+3].xyz + r10.xyz;
    } else {
      r9.xyzw = v7.xyzw;
    }
    r10.xy = float2(1024,1024) * r9.xy;
    r10.xy = frac(r10.xy);
    r8.w = dot(r10.xy, float2(12.9898005,78.2330017));
    r8.w = sin(r8.w);
    r8.w = 43758.5469 * r8.w;
    r8.w = frac(r8.w);
    sincos(r8.w, r10.x, r11.x);
    r12.xyzw = float4(1.29999995,1.29999995,1.29999995,1.29999995) * cb2[26].xxyy;
    r10.xz = r10.xx;
    r10.yw = r11.xx;
    r10.xyzw = r10.xyzw * r12.xyzw;
    r11.xyzw = float4(-0.172399998,-0.978299975,-0.978299975,0.172399998) * r10.xyzw;
    r11.xy = r11.xz + r11.yw;
    r11.xy = r11.xy + r9.xy;
    r11.z = r9.w;
    r8.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r12.xyzw = float4(0.87470001,0.484600008,0.484600008,-0.87470001) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r12.xyzw = float4(-0.968299985,-0.0373999998,-0.0373999998,0.968299985) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r12.xyzw = float4(0.278299987,0.41960001,0.41960001,-0.278299987) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r12.xyzw = float4(-0.150700003,0.839100003,0.839100003,-0.150700003) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r12.xyzw = float4(-0.641700029,0.479299992,0.479299992,-0.641700029) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r12.xyzw = float4(0.577899992,-0.816100001,-0.816100001,0.577899992) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r12.xyzw = float4(-0.540899992,-0.458799988,-0.458799988,0.540899992) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r12.xyzw = float4(0.704400003,-0.1919,-0.1919,0.704400003) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r12.xyzw = float4(0.105300002,-0.446399987,-0.446399987,0.105300002) * r10.xyzw;
    r12.xy = r12.xz + r12.yw;
    r11.xy = r12.xy + r9.xy;
    r9.w = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.w + r8.w;
    r10.xyzw = float4(-0.206599995,0.0661000013,0.0661000013,-0.206599995) * r10.xyzw;
    r10.xy = r10.xz + r10.yw;
    r11.xy = r10.xy + r9.xy;
    r9.x = t0.SampleCmpLevelZero(s1_s, r11.xyz, r9.z).x;
    r8.w = r9.x + r8.w;
    r8.w = cb2[25].x * r8.w;
    r9.x = 1 + -cb2[25].x;
    r8.w = r8.w * 0.0908999965 + r9.x;
    r9.x = cmp(0 >= r9.z);
    r9.y = cmp(r9.z >= 1);
    r9.x = (int)r9.y | (int)r9.x;
    r8.w = r9.x ? 1 : r8.w;
    r7.y = r8.w * r7.y;
    r4.w = saturate(r4.w * 2 + -1);
    r8.w = cb0[161].w * r4.w;
    r9.x = cmp(0.5 < cb3[37].x);
    r4.w = r4.w * r6.w + 1;
    r4.w = min(1, r4.w);
    r4.w = r9.x ? r4.w : 1;
    r6.w = r4.w * r7.y;
    r9.x = 1 + -cb4[77].z;
    r6.w = r6.w * cb4[77].z + r9.x;
    r9.x = cb4[77].z * r8.w;
    r8.w = -r8.w * cb4[77].z + 1;
    r7.y = r7.y * r9.x + r8.w;
    r4.w = r7.y * r4.w;
  } else {
    r6.w = 1;
    r4.w = 1;
  }
  r7.y = asint(cb4[76].w);
  r7.y = cmp(0.5 < r7.y);
  r8.w = cmp(v8.z < 0.5);
  r9.xyz = r8.www ? cb4[67].xyz : cb4[68].xyz;
  r8.xyz = r7.yyy ? r9.xyz : r8.xyz;
  r7.y = cmp(cb3[3].w != 0.000000);
  r2.x = dot(cb3[3].xyz, r2.xyz);
  r2.x = saturate(-cb3[3].w + r2.x);
  r9.xyz = cb0[8].xyz * r7.xzw;
  r10.xyz = cb0[8].xyz + r7.xzw;
  r10.xyz = -r7.xzw * cb0[8].xyz + r10.xyz;
  r9.xyz = cb0[8].www * r10.xyz + r9.xyz;
  r9.xyz = r9.xyz + -r7.xzw;
  r2.xyz = r2.xxx * r9.xyz + r7.xzw;
  r2.xyz = r7.yyy ? r2.xyz : r7.xzw;
  r7.x = max(9.99999975e-06, cb4[77].w);
  r7.y = rcp(r7.x);
  r7.z = dot(r3.xyw, r8.xyz);
  r7.w = 1 + r7.z;
  r8.w = 3 * r8.y;
  r8.w = min(1, r8.w);
  r8.w = -r8.w * 0.5 + r3.y;
  r8.w = saturate(1.5 + r8.w);
  r7.w = r7.w * r8.w + -1;
  r7.w = r7.w + -r7.z;
  r7.w = v8.y * r7.w + r7.z;
  r9.x = r3.z * 2 + r7.w;
  r9.yz = -r7.xx * float2(0.5,1.5) + r9.xx;
  r9.yzw = float3(1,0.333299994,-0.333299994) + r9.xyz;
  r3.z = -r7.x * 3 + 2;
  r3.z = 3 / r3.z;
  r10.xyw = r9.yzw * r3.zzz;
  r9.yzw = -r9.yzw * r3.zzz + float3(1,1,1);
  r11.xyz = float3(0.333299994,-0.333299994,-0.333299994) + r9.xxx;
  r7.xyw = r11.xyz * r7.yyy + float3(0.5,0.5,-0.5);
  r11.xyz = float3(1,1,1) + -r7.xyw;
  r12.xy = min(r11.yx, r10.yx);
  r10.xz = min(r9.zw, r7.xw);
  r12.z = r9.y;
  r12.w = r10.x;
  r9.yzw = saturate(r12.zyw);
  r12.y = saturate(min(r11.z, r7.y));
  r12.x = saturate(r12.x);
  r10.zw = saturate(r10.zw);
  r11.xyzw = r4.wwww * float4(-2,2,2,-2) + float4(1,0,-1,2);
  r11.y = saturate(min(r11.y, r11.w));
  r11.xz = saturate(r11.xz);
  if (r2.w != 0) {
    r3.z = (int)cb3[2].z;
    r7.x = asint(cb0[160].x) + -1;
    r3.z = min((int)r7.x, (int)r3.z);
    r3.z = max(0, (int)r3.z);
    r3.z = t1[r3.z].val[32/4];
  } else {
    r3.z = 0;
  }
  r7.xy = r11.xy * r3.zz;
  r7.w = 1 + -r9.y;
  r7.w = r7.w + -r9.z;
  r7.w = r7.w + -r9.w;
  r7.x = r7.x * r7.w + r9.w;
  r3.z = r11.y * r3.z + r11.z;
  r10.xy = r12.xy * r3.zz;
  r3.z = r10.z + r10.w;
  r3.z = r3.z * r7.y + r10.y;
  r7.y = r11.z * r10.z;
  r7.w = v8.x * r9.y;
  r8.w = -r9.y * v8.x + r9.y;
  r8.w = r9.z + r8.w;
  r12.xyzw = cmp(r4.yyyy < float4(0.200000003,0.400000006,0.600000024,0.800000012));
  r9.yzw = r12.www ? cb4[32].xyz : cb4[31].xyz;
  r9.yzw = r12.zzz ? cb4[33].xyz : r9.yzw*1.1;
  r9.yzw = r12.yyy ? cb4[34].xyz : r9.yzw;
  r9.yzw = r12.xxx ? cb4[35].xyz : r9.yzw;
  r11.xyw = r12.www ? cb4[37].xyz : cb4[36].xyz;
  r11.xyw = r12.zzz ? cb4[38].xyz : r11.xyw*1.35;
  r11.xyw = r12.yyy ? cb4[39].xyz : r11.xyw;
  r11.xyw = r12.xxx ? cb4[40].xyz : r11.xyw;
  r13.y = saturate(0.437249988 * v10.w);
  r13.x = -r13.y;
  r10.yz = float2(1,-1) + r13.xy;
  r10.yz = cb4[77].yy * r10.yz + float2(0,1);
  r9.yzw = float3(6.10351563e-05,6.10351563e-05,6.10351563e-05) + r9.yzw;
  r13.x = r9.y + r9.z;
  r13.x = r13.x + r9.w;
  r13.x = 0.333330005 * r13.x;
  r13.xyz = saturate(r9.yzw / r13.xxx);
  r9.yzw = r9.yzw * r10.zzz;
  r9.yzw = r13.xyz * r10.yyy + r9.yzw;
  r11.xyw = float3(6.10351563e-05,6.10351563e-05,6.10351563e-05) + r11.xyw;
  r13.x = r11.x + r11.y;
  r13.x = r13.x + r11.w;
  r13.x = 0.333330005 * r13.x;
  r13.xyz = saturate(r11.xyw / r13.xxx);
  r11.xyw = r11.xyw * r10.zzz;
  r11.xyw = r13.xyz * r10.yyy + r11.xyw;
  r13.xyz = cb0[2].xyz * r9.yzw;
  r9.yzw = cb0[3].xyz * r9.yzw;
  r14.xyz = cb0[4].xyz * r11.xyw;
  r11.xyw = cb0[7].xyz * r11.xyw;
  r15.xyz = float3(1.17549435e-38,1.17549435e-38,1.17549435e-38) + r2.xyz;
  r10.y = max(r15.x, r15.y);
  r10.y = max(r10.y, r15.z);
  r10.y = rcp(r10.y);
  if (r2.w != 0) {
    r10.z = (int)cb3[2].z;
    r13.w = asint(cb0[160].x) + -1;
    r10.z = min((int)r13.w, (int)r10.z);
    r10.z = max(0, (int)r10.z);
    r10.z = t1[r10.z].val[32/4];
  } else {
    r10.z = 0;
  }
  r13.w = 1 + -r5.w;
  r5.w = r10.z * r13.w + r5.w;
  r2.xyz = r5.www * r2.xyz;
  r5.w = min(1, r10.y);
  r15.xyz = r5.www * r2.xyz;
  r16.xyz = cb0[5].xyz * r7.yyy;
  r16.xyz = cb0[6].xyz * r3.zzz + r16.xyz;
  r10.yzw = r10.www * r11.zzz + r16.xyz;
  r14.xyz = r14.xyz * r8.www;
  r11.xyz = r11.xyw * r7.www + r14.xyz;
  r7.xyw = r9.yzw * r7.xxx + r11.xyz;
  r7.xyw = r13.xyz * r10.xxx + r7.xyw;
  r7.xyw = r7.xyw * r15.xyz;
  r2.xyz = r2.xyz * r10.yzw + r7.xyw;
  r3.z = cmp(0.5 < v8.z);
  r7.xyw = r3.zzz ? r3.xyw : v2.xyz;
  r5.w = dot(r1.xyz, float3(0.289999992,0.600000024,0.109999999));
  r5.w = r5.w * 0.287499994 + 1.4375;
  r7.x = dot(r8.xyz, r7.xyw);
  r7.y = r7.x + -r7.z;
  r7.y = saturate(-r7.y * 3 + 1);
  r7.w = r7.y + r7.y;
  r7.y = sqrt(r7.y);
  r7.y = r7.w * r7.y;
  r7.y = min(1, r7.y);
  r7.w = r7.z * 0.5 + 0.5;
  r8.w = saturate(r7.z);
  r7.y = r7.w * r7.y + -r8.w;
  r7.y = r7.y * 0.5 + r8.w;
  r7.x = saturate(r7.x);
  r8.w = max(r1.y, r1.z);
  r8.w = max(r8.w, r1.x);
  r9.y = cmp(1 < r8.w);
  r10.xyz = r1.xyz / r8.www;
  r9.yzw = r9.yyy ? r10.xyz : r1.xyz;
  r8.w = 1 + -r5.w;
  r5.w = r7.y * r8.w + r5.w;
  r9.yzw = log2(r9.yzw);
  r9.yzw = r9.yzw * r5.www;
  r9.yzw = exp2(r9.yzw);
  r10.xyz = r9.yzw + -r1.xyz;
  r1.xyz = r10.xyz * float3(0.5,0.5,0.5) + r1.xyz;
  r9.yzw = r9.yzw + -r1.xyz;
  r1.xyz = r7.xxx * r9.yzw + r1.xyz;
  r5.w = -r0.x * 0.959999979 + 0.959999979;
  r9.yzw = r5.www * r1.xyz;
  r10.xyz = float3(-0.0399999991,-0.0399999991,-0.0399999991) + r1.xyz;
  r10.xyz = r0.xxx * r10.xyz + float3(0.0399999991,0.0399999991,0.0399999991);
  r7.x = -r0.z * cb4[81].x + 1;
  r7.x = r7.x * r7.x;
  r7.y = r7.x * 4 + 2;
  r8.w = r7.x * r7.x;
  r10.w = r7.x * r7.x + -1;
  r11.xyz = cb0[1].xyz + r2.xyz;
  r11.xyz = v9.xyz + r11.xyz;
  r11.x = dot(r11.xyz, float3(0.212672904,0.715152204,0.0721750036));
  r11.y = cb0[12].y + -cb0[12].x;
  r11.z = 1 / r11.y;
  r11.w = -cb0[12].x * r11.z + 1;
  r11.z = r11.x * r11.z + r11.w;
  r11.z = rcp(r11.z);
  r11.y = -r11.y * r11.z + cb0[12].y;
  r11.z = cmp(r11.x < cb0[12].x);
  r11.y = r11.z ? r11.x : r11.y;
  r11.x = 9.99999975e-05 + r11.x;
  r11.x = r11.y / r11.x;
  r11.yzw = r11.xxx * r2.xyz;
  r13.x = r12.w ? cb4[84].z : cb4[84].y;
  r13.x = r12.z ? cb4[84].w : r13.x;
  r13.x = r12.y ? cb4[85].x : r13.x;
  r13.x = r12.x ? cb4[85].y : r13.x;
  r13.yzw = r12.www ? cb4[47].xyz : cb4[46].xyz;
  r13.yzw = r12.zzz ? cb4[48].xyz : r13.yzw;
  r13.yzw = r12.yyy ? cb4[49].xyz : r13.yzw;
  r13.yzw = r12.xxx ? cb4[50].xyz : r13.yzw;
  r14.x = cmp(0.5 < r13.x);
  if (r14.x != 0) {
    r9.x = saturate(r9.x * 1.5 + -0.5);
    r14.x = r12.w ? cb4[85].w : cb4[85].z;
    r14.x = r12.z ? cb4[86].x : r14.x;
    r14.x = r12.y ? cb4[86].y : r14.x;
    r14.x = r12.x ? cb4[86].z : r14.x;
    r14.yzw = r5.xyz * r1.www + r8.xyz;
    r15.x = dot(r14.yzw, r14.yzw);
    r15.x = rsqrt(r15.x);
    r14.yzw = r15.xxx * r14.yzw;
    r14.y = saturate(dot(r3.xyw, r14.yzw));
    r9.x = r9.x * r9.x;
    r9.x = -r9.x * r14.y + 1;
    r9.x = -r9.x + r4.x;
    r14.x = max(9.99999975e-06, r14.x);
    r4.x = saturate(r9.x / r14.x);
  }
  r4.x = cb4[86].w * r4.x;
  r13.yzw = r4.xxx * r13.yzw;
  r13.yzw = r13.yzw * r10.xyz;
  r4.x = cmp(r13.x < 0.5);
  r5.xyz = r5.xyz * r1.www + r8.xyz;
  r1.w = dot(r5.xyz, r5.xyz);
  r1.w = rsqrt(r1.w);
  r5.xyz = r5.xyz * r1.www;
  r1.w = r12.w ? cb4[83].y : cb4[83].x;
  r1.w = r12.z ? cb4[83].z : r1.w;
  r1.w = r12.y ? cb4[83].w : r1.w;
  r1.w = r12.x ? cb4[84].x : r1.w;
  r7.z = r1.w * r7.z;
  r7.z = saturate(r7.z * 0.75 + 0.25);
  r9.x = dot(r3.xyw, r5.xyz);
  r9.x = r9.x * r1.w;
  r9.x = saturate(r9.x * 0.75 + 0.25);
  r5.x = dot(r8.xyz, r5.xyz);
  r1.w = r5.x * r1.w;
  r1.w = saturate(r1.w * 0.75 + 0.25);
  r5.x = r9.x * r9.x;
  r5.x = r5.x * r10.w + 1.00001001;
  r1.w = r1.w * r1.w;
  r5.x = r5.x * r5.x;
  r1.w = max(0.100000001, r1.w);
  r5.x = r5.x * r1.w;
  r5.x = r5.x * r7.y;
  r5.x = r8.w / r5.x;
  r0.z = saturate(-r0.z * cb4[81].x + r5.x);
  r0.z = r0.z * r7.z;
  r5.x = max(9.99999975e-06, r7.x);
  r0.z = r0.z / r5.x;
  r5.x = r12.w ? cb4[82].x : cb4[81].w;
  r5.x = r12.z ? cb4[82].y : r5.x;
  r5.x = r12.y ? cb4[82].z : r5.x;
  r5.x = r12.x ? cb4[82].w : r5.x;
  r5.y = r12.w ? cb4[93].w : cb4[93].z;
  r5.y = r12.z ? cb4[94].x : r5.y;
  r5.y = r12.y ? cb4[94].y : r5.y;
  r5.y = r12.x ? cb4[94].z : r5.y;
  r5.x = r5.x * r5.y;
  r0.z = r5.x * r0.z;
  r0.z = saturate(10 * r0.z);
  r0.z = 100 * r0.z;
  r1.w = 0.166663334 / r1.w;
  r1.w = min(1, r1.w);
  r1.w = r1.w * r7.z;
  r1.w = 100 * r1.w;
  r0.z = r4.x ? r0.z : r1.w;
  r5.xyz = r0.zzz * r13.yzw;
  r7.xyz = r5.xyz * r11.yzw;
  r5.xyz = r5.xyz * r11.yzw + float3(-1,-1,-1);
  r5.xyz = max(float3(0,0,0), r5.xyz);
  r7.xyz = r9.yzw * r11.yzw + r7.xyz;
  r0.z = cmp(cb4[87].x >= 0.5);
  r13.xyz = r12.www ? cb4[52].xyz : cb4[51].xyz;
  r13.xyz = r12.zzz ? cb4[53].xyz : r13.xyz;
  r13.xyz = r12.yyy ? cb4[54].xyz : r13.xyz;
  r13.xyz = r12.xxx ? cb4[55].xyz : r13.xyz;
  r13.xyz = r13.xyz * r0.yyy;
  r13.xyz = r13.xyz * r1.xyz;
  r13.xyz = r0.zzz ? r13.xyz : 0;
  r0.y = r13.x + r13.y;
  r0.y = r0.y + r13.z;
  r14.xyz = v9.xyz * r11.xxx;
  r7.xyz = r14.xyz * r9.yzw + r7.xyz;
  r1.xyw = cb0[1].xyz * r1.xyz;
  r1.xyw = r1.xyw * r11.xxx + r7.xyz;
  r1.xyw = r1.xyw + r5.xyz;
  r0.z = cmp(0.5 >= cb0[160].y);
  if (r0.z != 0) {
    r0.z = 4.5 * r4.y;
    r0.z = floor(r0.z);
    r0.z = 4 + -r0.z;
    r0.z = (int)r0.z;
    r0.z = cmp((int)r0.z == asint(cb4[77].x));
    r4.x = dot(r6.xyz, r8.xyz);
    r4.x = -r4.x * 0.5 + 0.5;
    r4.y = r4.x * 0.800000012 + 0.200000003;
    r5.x = r3.y * 0.5 + 0.5;
    r5.y = r5.x * r5.x;
    r5.x = r0.z ? r5.x : r5.y;
    r5.x = -0.200000003 + r5.x;
    r5.x = saturate(1.25 * r5.x);
    r5.y = r5.x * -2 + 3;
    r5.x = r5.x * r5.x;
    r5.x = r5.y * r5.x;
    r5.y = r5.x * r5.x;
    r5.y = r5.y * r5.y;
    r5.y = r5.x * r5.y;
    r7.xyz = r0.zzz ? float3(1,0.300000012,-1) : float3(0.5,1,-0.5);
    r5.z = r7.y + r7.z;
    r5.y = r5.y * r5.z + r7.x;
    r5.x = r5.x * r5.y;
    r4.w = r7.w * r4.w;
    r4.w = r4.w * 1.39999998 + 0.100000001;
    if (r2.w != 0) {
      r2.w = (int)cb3[2].z;
      r5.y = asint(cb0[160].x) + -1;
      r2.w = min((int)r5.y, (int)r2.w);
      r2.w = max(0, (int)r2.w);
      r2.w = t1[r2.w].val[32/4];
    } else {
      r2.w = 0;
    }
    r2.w = r2.w * 0.399999976 + r6.w;
    r2.w = saturate(0.600000024 + r2.w);
    r4.y = r5.x * r4.y;
    r4.xy = r4.xy * r4.xw;
    r2.w = r4.y * r2.w;
    r4.y = cmp(0 != v8.z);
    r4.w = saturate(-r6.y);
    r4.z = r4.z * cb4[80].w + 2.5;
    r4.y = r4.y ? 4.5 : r4.z;
    r4.y = r4.w * r4.y + 0.5;
    r2.w = r4.y * r2.w;
    r0.w = sqrt(r0.w);
    r4.y = 0.0833333358 * r0.w;
    r4.y = min(1, r4.y);
    r4.yz = r4.yy * float2(-0.300000012,-0.300000012) + float2(0.5,0.600000024);
    r4.w = dot(r6.xyz, r3.xyw);
    r4.w = 1 + -r4.w;
    r4.yz = r4.ww + -r4.yz;
    r4.yz = saturate(float2(3.33333325,5.00000048) * r4.yz);
    r5.xy = r4.yz * float2(-2,-2) + float2(3,3);
    r4.yz = r4.yz * r4.yz;
    r4.yz = r5.xy * r4.yz;
    r0.z = r0.z ? r4.y : r4.z;
    r4.y = dot(cb0[161].xyz, float3(0.330000013,0.330000013,0.330000013));
    r5.xyz = cb0[161].xyz * cb0[161].xyz;
    r5.xyz = r5.xyz * r5.xyz;
    r5.xyz = r5.xyz * r5.xyz;
    r4.z = dot(r5.xyz, float3(0.699999988,0.699999988,0.699999988));
    r4.z = 6.10351563e-05 + r4.z;
    r4.z = rcp(r4.z);
    r4.y = r4.y * r4.z;
    r4.yzw = r4.yyy * r5.xyz + -r11.yzw;
    r4.yzw = r6.www * r4.yzw + r11.yzw;
    r4.x = log2(r4.x);
    r4.x = 20 * r4.x;
    r4.x = exp2(r4.x);
    r2.xyz = r2.xyz * r11.xxx + -r4.yzw;
    r2.xyz = r4.xxx * r2.xyz + r4.yzw;
    r4.x = r9.y + r9.z;
    r1.z = r1.z * r5.w + r4.x;
    r1.z = 0.330000013 * r1.z;
    r1.z = r1.z * r1.z;
    r1.z = r1.z * -0.199999988 + 1;
    r4.x = 48 * cb0[170].x;
    r1.z = 0.100000001 * r1.z;
    r4.yzw = log2(r9.yzw);
    r4.yzw = float3(0.200000003,0.200000003,0.200000003) * r4.yzw;
    r4.yzw = exp2(r4.yzw);
    r5.x = dot(r4.yzw, r4.yzw);
    r5.x = max(1.17549435e-38, r5.x);
    r5.x = rsqrt(r5.x);
    r4.yzw = r5.xxx * r4.yzw;
    r5.xyz = r4.yzw * r1.zzz;
    r4.yzw = -r1.zzz * r4.yzw + r10.xyz;
    r4.yzw = r0.xxx * r4.yzw + r5.xyz;
    r4.xyz = r4.xxx * r4.yzw;
    r0.x = r2.w * r0.z;
    r2.xyz = r0.xxx * r2.xyz;
    r2.xyz = r2.xyz * r4.xyz;
    r4.xyz = r12.www ? cb4[58].xyz : cb4[57].xyz;
    r4.xyz = r12.zzz ? cb4[59].xyz : r4.xyz;
    r4.xyz = r12.yyy ? cb4[60].xyz : r4.xyz;
    r4.xyz = r12.xxx ? cb4[61].xyz : r4.xyz;
    r2.xyz = r4.xyz * r2.xyz;
    r0.x = saturate(r0.w * 0.200000003 + -1);
    r0.x = r0.x * -0.699999988 + 1;
    r2.xyw = r2.xyz * r0.xxx;
    r0.z = r2.x + r2.y;
    r0.x = r2.z * r0.x + r0.z;
    r0.x = 0.330000013 * r0.x;
    r0.x = r0.x * r0.x;
    r0.x = r0.x * 0.5 + 1;
    r0.xzw = r2.xyw * r0.xxx;
    r1.z = r3.z ? 0.5 : 1;
    r0.xzw = r1.zzz * r0.xzw;
  } else {
    r0.xzw = float3(0,0,0);
  }
  r2.xyz = r14.xyz * float3(2,2,2) + float3(1,1,1);
  r0.xzw = r2.xyz * r0.xzw;
  o0.xyz = r1.xyw + r13.xyz;
  r0.xzw = max(float3(0,0,0), r0.xzw);
  r0.xzw = sqrt(r0.xzw);
  r0.xzw = float3(0.200000003,0.200000003,0.200000003) * r0.xzw;
  o1.xyz = min(float3(1,1,1), r0.xzw);
  o1.w = 0.333299994 * r0.y;
  o3.xyz = r3.xyw * float3(0.5,0.5,0.5) + float3(0.5,0.5,0.5);
  o0.w = 1;
  o2.w = 1;
  o3.w = 1;
  return;
}