This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Is there any way to see clearly how the 'stack spilling' works? Need a more reliable way to reduce it.

#version 310 es

#ifdef GL_EXT_texture_cube_map_array
#extension GL_EXT_texture_cube_map_array : enable

#endif

#ifdef GL_EXT_texture_buffer
#extension GL_EXT_texture_buffer : enable

#endif
// end extensions
precision mediump float;
precision highp int;

void compiler_internal_AdjustInputSemantic(inout vec4 TempVariable)
{
#if HLSLCC_DX11ClipSpace
	TempVariable.y = -TempVariable.y;
	TempVariable.z = ( TempVariable.z + TempVariable.w ) / 2.0;
#endif
}

void compiler_internal_AdjustOutputSemantic(inout vec4 Src)
{
#if HLSLCC_DX11ClipSpace
	Src.y = -Src.y;
	Src.z = ( 2.0 * Src.z ) - Src.w;
#endif
}

bool compiler_internal_AdjustIsFrontFacing(bool isFrontFacing)
{
#if HLSLCC_DX11ClipSpace
	return !isFrontFacing;
#else
	return isFrontFacing;
#endif
}
uniform vec4 pc0_m[18];
uniform ivec4 pc0_i[1];
uniform highp vec4 pc0_h[3];
uniform uvec4 pc3_u[1];
uniform highp vec4 pc3_h[34];
uniform uvec4 pc4_u[1];
uniform highp vec4 pc4_h[34];
uniform uvec4 pc5_u[1];
uniform highp vec4 pc5_h[34];
uniform uvec4 pc6_u[1];
uniform highp vec4 pc6_h[34];
uniform highp vec4 pc2_h[13];
uniform uvec4 pc1_u[1];
uniform ivec4 pc1_i[1];
uniform highp vec4 pc1_h[2];
uniform vec4 pc7_m[1];
uniform vec4 pc8_m[4];
uniform uvec4 pu_u[1];
uniform ivec4 pu_i[1];
uniform highp vec4 pu_h[2];
uniform mediump sampler2D ps4;
uniform mediump sampler2D ps1;
uniform mediump sampler2D ps3;
uniform mediump sampler2D ps2;
uniform highp sampler2DShadow ps5;
uniform highp usamplerBuffer ps0;
uniform highp sampler2D ps7;
uniform highp sampler2D ps6;
layout(location=0) in vec4 in_TEXCOORD10_centroid;
layout(location=1) in vec4 in_TEXCOORD11_centroid;
layout(location=2) in highp vec4 in_TEXCOORD0;
layout(location=4) in highp vec4 in_TEXCOORD8;
layout(location=0) out vec4 out_Target0;
void main()
{
	highp float f0;
	f0 = pu_h[1].x;
	bool b1;
	b1 = bool(pu_u[0].x);
	int i2;
	i2 = pu_i[0].x;
	highp float f3;
	f3 = pu_h[0].x;
	uint u4;
	u4 = pc6_u[0].x;
	uint u5;
	u5 = pc5_u[0].x;
	uint u6;
	u6 = pc4_u[0].x;
	uint u7;
	u7 = pc3_u[0].x;
	int i8;
	i8 = pc1_i[0].x;
	uint u9;
	u9 = pc1_u[0].x;
	int i10;
	i10 = pc0_i[0].x;
	float h11;
	h11 = pc0_m[1].x;
	highp vec4 v12;
	v12.xyzw = gl_FragCoord;
	v12.w = (1.0/(gl_FragCoord.w));
	vec4 v13;
	highp vec4 v14;
	float h15;
	highp vec3 v16;
	vec3 v17;
	vec3 v18;
	v18.xyz = (cross(in_TEXCOORD11_centroid.xyz,in_TEXCOORD10_centroid.xyz)*in_TEXCOORD11_centroid.www);
	highp vec4 v19;
	highp vec3 v20;
	highp vec2 v21;
	v21.xy = pc0_m[0].xy;
	v20.xy = ((((gl_FragCoord.xy+(-v21))*pc0_h[1].zw)+vec2(-5.000000e-01,-5.000000e-01))*vec2(2.000000e+00,-2.000000e+00));
	v20.z = gl_FragCoord.z;
	highp vec4 v22;
	v22.w = 1.000000e+00;
	v22.xyz = v20;
	v19.xyzw = (v22*v12.wwww);
	highp vec3 v23;
	v23.xyz = (in_TEXCOORD8.xyz+(-pc0_h[0].xyz));
	highp vec3 v24;
	v24.xyz = normalize((-in_TEXCOORD8.xyz));
	vec3 v25;
	v25.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
	vec4 v26;
	highp float f27;
	f27 = pc7_m[0].x;
	v26.xyzw = texture(ps2,in_TEXCOORD0.xy,f27);
	vec4 v28;
	highp float f29;
	f29 = pc7_m[0].x;
	v28.xyzw = texture(ps3,in_TEXCOORD0.xy,f29);
	vec4 v30;
	v30.xyzw = texture(ps1,in_TEXCOORD0.xy);
	vec4 v31;
	highp float f32;
	f32 = pc8_m[1].x;
	highp float f33;
	f33 = -1.000000e+00;
	v31.xyzw = texture(ps4,(in_TEXCOORD0.xy*vec2(f32)),f33);
	float h34;
	h34 = pc8_m[2].y;
	float h35;
	h35 = pc7_m[0].z;
	float h36;
	h36 = pc8_m[2].w;
	float h37;
	h37 = pc8_m[3].x;
	float h38;
	vec3 v39;
	vec3 v40;
	v40.xyz = (v26.xyz*pc8_m[0].xyz);
	float h41;
	h41 = mix(v26.w,1.000000e+00,pc8_m[2].y);
	v39.xyz = vec3(0.000000e+00,0.000000e+00,1.000000e+00);
	v39.xy = ((v28.wy*vec2(2.000000e+00,2.000000e+00))+vec2(-1.000000e+00,-1.000000e+00));
	float h42;
	h42 = sqrt(clamp((1.000000e+00+(-dot(v39.xy,v39.xy))),0.000000e+00,1.000000e+00));
	v39.z = h42;
	float h43;
	highp vec3 v44;
	v44.xyz = ((in_TEXCOORD11_centroid.xyz*vec3(h42))+((v18*v39.yyy)+(in_TEXCOORD10_centroid.xyz*v39.xxx)));
	float h45;
	h45 = dot(v44,v24);
	h43 = clamp((1.000000e+00+(-clamp(h45,0.000000e+00,1.000000e+00))),0.000000e+00,1.000000e+00);
	float h46;
	h46 = (mix(pc8_m[2].x,pc8_m[1].w,v28.x)+((h43*h43)*3.000000e-01));
	h38 = h46;
	float h47;
	highp float f48;
	f48 = v28.z;
	highp float f49;
	f49 = pc8_m[2].z;
	float h50;
	h50 = (f48*f49);
	h47 = h50;
	vec2 v51;
	highp float f52;
	f52 = pc8_m[1].z;
	v51.xy = ((texture(ps3,in_TEXCOORD0.xy,f52).wy*vec2(2.000000e+00,2.000000e+00))+vec2(-1.000000e+00,-1.000000e+00));
	vec3 v53;
	v53.xy = v51;
	v53.z = sqrt(clamp((1.000000e+00+(-dot(v51,v51))),0.000000e+00,1.000000e+00));
	vec3 v54;
	v54.xyz = mix(v39,v53,vec3(7.000000e-01,7.000000e-01,7.000000e-01));
	vec3 v55;
	v55.xyz = ((in_TEXCOORD11_centroid.xyz*v54.zzz)+((v18*v54.yyy)+(in_TEXCOORD10_centroid.xyz*v54.xxx)));
	if ((pc8_m[2].w>0.000000e+00))
	{
		vec3 v56;
		v56.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
		v56.xy = ((v31.xy*vec2(2.000000e+00,2.000000e+00))+vec2(-1.000000e+00,-1.000000e+00));
		v56.z = sqrt(clamp((1.000000e+00+(-dot(v56.xy,v56.xy))),0.000000e+00,1.000000e+00));
		vec3 v57;
		v57.xyz = (v39+vec3(0.000000e+00,0.000000e+00,1.000000e+00));
		vec3 v58;
		v58.xyz = (v56*vec3(-1.000000e+00,-1.000000e+00,1.000000e+00));
		vec3 v59;
		v59.xyz = (((v57*vec3(dot(v57,v58)))/v57.zzz)+(-v58));
		v56.xyz = v59;
		v39.xyz = normalize(mix(v39,v59,vec3((v30.w*h36))));
		float h60;
		h60 = (1.000000e+00+(-v31.z));
		float h61;
		float h62;
		h62 = ((((h46+-1.000000e+00)*(h60+-1.000000e+00))*-2.000000e+00)+1.000000e+00);
		float h63;
		h63 = ((h46*h60)*2.000000e+00);
		h61 = ((h46>=5.000000e-01))?(h62):(h63);
		h38 = mix(h46,h61,(v30.w*h37));
	}
	if (((pc7_m[0].z>1.000000e-02)&&(f3>1.000000e-02)))
	{
		float h64;
		highp float f65;
		f65 = v30.z;
		highp float f66;
		f66 = h35;
		highp float f67;
		f67 = h34;
		float h68;
		h68 = (((f65*f3)*f66)*f67);
		h64 = h68;
		h35 = h64;
		h38 = mix(h38,5.000000e-02,clamp(((3.000000e+00*(clamp(h64,2.000000e-01,1.000000e+00)+-2.000000e-01))/8.000000e-01),0.000000e+00,1.000000e+00));
	}
	vec3 v69;
	v69.xyz = v39;
	highp vec3 v70;
	v70.xyz = ((in_TEXCOORD11_centroid.xyz*v69.zzz)+((v18*v69.yyy)+(in_TEXCOORD10_centroid.xyz*v69.xxx)));
	vec3 v71;
	v71.xyz = normalize(v70);
	v25.xyz = v71;
	vec3 v72;
	v72.xyz = clamp(v40,vec3(0.000000e+00,0.000000e+00,0.000000e+00),vec3(1.000000e+00,1.000000e+00,1.000000e+00));
	float h73;
	h73 = clamp(h41,0.000000e+00,1.000000e+00);
	float h74;
	h74 = max(1.562500e-02,clamp(h38,0.000000e+00,1.000000e+00));
	float h75;
	h75 = clamp(h47,0.000000e+00,1.000000e+00);
	v17.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
	v16.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
	vec3 v76;
	vec2 v77;
	vec4 v78;
	v78.xyzw = ((vec4(h74)*vec4(-1.000000e+00,-2.750000e-02,-5.720000e-01,2.200000e-02))+vec4(1.000000e+00,4.250000e-02,1.040000e+00,-4.000000e-02));
	vec2 v79;
	vec3 v80;
	v80.xyz = v24;
	v79.xy = ((vec2(-1.040000e+00,1.040000e+00)*vec2(((min((v78.x*v78.x),exp2((-9.280000e+00*max(dot(v25,v80),0.000000e+00))))*v78.x)+v78.y)))+v78.zw);
	v77.xy = v79;
	v77.y = v79.y;
	v76.xyz = ((vec3(2.400000e-02,2.400000e-02,2.400000e-02)*v79.xxx)+v77.yyy);
	vec3 v81;
	vec3 v82;
	v82.xyz = pc0_m[17].xyz;
	vec3 v83;
	v83.xyz = pc0_m[16].xyz;
	v81.xyz = (b1)?(v82):(v83);
	vec3 v84;
	vec3 v85;
	vec3 v86;
	vec4 v87;
	v87.w = 1.000000e+00;
	v87.xyz = v25;
	if (b1)
	{
		v86.x = dot(pc0_m[9],v87);
		v86.y = dot(pc0_m[10],v87);
		v86.z = dot(pc0_m[11],v87);
		vec4 v88;
		v88.xyzw = (v87.xyzz*v87.yzzx);
		v85.x = dot(pc0_m[12],v88);
		v85.y = dot(pc0_m[13],v88);
		v85.z = dot(pc0_m[14],v88);
		v84.xyz = (pc0_m[15].xyz*vec3(((v87.x*v87.x)+(-(v87.y*v87.y)))));
	}
	else
	{
		v86.x = dot(pc0_m[2],v87);
		v86.y = dot(pc0_m[3],v87);
		v86.z = dot(pc0_m[4],v87);
		vec4 v89;
		v89.xyzw = (v87.xyzz*v87.yzzx);
		v85.x = dot(pc0_m[5],v89);
		v85.y = dot(pc0_m[6],v89);
		v85.z = dot(pc0_m[7],v89);
		v84.xyz = (pc0_m[8].xyz*vec3(((v87.x*v87.x)+(-(v87.y*v87.y)))));
	}
	vec3 v90;
	v90.xyz = (max(vec3(0.000000e+00,0.000000e+00,0.000000e+00),((v86+v85)+v84))*v81);
	uint u91;
	u91 = uint(((i10>>1)&15));
	if (bool(u91))
	{
		bool b92;
		b92 = false;
		bool b93;
		b93 = false;
		if((1u==u91)) { b92 = true; };
		if (b92)
		{
			b93 = true;
		}
		if((2u==u91)) { b92 = true; };
		if((6u==u91)) { b92 = true; };
		if((7u==u91)) { b92 = true; };
		if(b93) { b92 = false; };
		if (b92)
		{
			b93 = true;
		}
		if((3u==u91)) { b92 = true; };
		if(b93) { b92 = false; };
		if (b92)
		{
			b93 = true;
		}
		if((4u==u91)) { b92 = true; };
		if(b93) { b92 = false; };
		if (b92)
		{
			b93 = true;
		}
		if((5u==u91)) { b92 = true; };
		if(b93) { b92 = false; };
		if (b92)
		{
			b93 = true;
		}
		b92 = true;
		if(b93) { b92 = false; };
		if (b92)
		{
			b93 = true;
		}
	}
	vec3 v94;
	v94.xyz = ((v90*v72)*vec3(h73));
	v17.xyz = v94;
	h15 = 1.000000e+00;
	if ((bool(i8)||(pc2_h[3].z>0.000000e+00)))
	{
		highp vec2 v95;
		v95.xy = v19.xy;
		highp float f96;
		f96 = v19.w;
		int i97;
		highp float f98;
		highp vec4 v99;
		highp vec4 v100;
		highp float f101;
		highp float f102;
		float h103;
		h103 = 0.000000e+00;
		f102 = pc2_h[0].w;
		v100.xyzw = vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00);
		v99.xyzw = vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00);
		f98 = -1.000000e+00;
		i97 = 0;
		int i104;
		i104 = 0;
		for (;i104<2;)
		{
			if ((f96<pc2_h[3][i104]))
			{
				if ((i104==0))
				{
					highp vec4 v105;
					v105.w = 1.000000e+00;
					v105.x = v95.x;
					v105.y = v95.y;
					v105.z = f96;
					v100.xyzw = (pc2_h[8]+((pc2_h[7]*v105.zzzz)+((pc2_h[6]*v105.yyyy)+(pc2_h[5]*v95.xxxx))));
				}
				else
				{
					highp vec4 v106;
					v106.w = 1.000000e+00;
					v106.x = v95.x;
					v106.y = v95.y;
					v106.z = f96;
					v99.xyzw = (pc2_h[(8+(i104*4))]+((pc2_h[(7+(i104*4))]*v106.zzzz)+((pc2_h[(6+(i104*4))]*v106.yyyy)+(pc2_h[(5+(i104*4))]*v95.xxxx))));
				}
				if (((((((i104==0)&&(v100.x<(pc2_h[3].w+-1.000000e-03)))&&(v100.y<9.900000e-01))&&(v100.y>1.000000e-02))&&(v100.x>1.000000e-02))&&(v100.z<=9.999900e-01)))
				{
					i97 = (i97+(1<<i104));
					if ((f96>pc2_h[4].w))
					{
						f98 = clamp(((f96+(-pc2_h[4].w))/pc2_h[4].z),0.000000e+00,1.000000e+00);
					}
					else
					{
						break;
					}
				}
				if ((i104!=0))
				{
					i97 = (i97+(1<<i104));
				}
			}
			i104 = (i104+1);
		}
		int i107;
		i107 = (i97&1);
		int i108;
		i108 = (i97&2);
		if (((bool(i107)&&(v100.z>0.000000e+00))||(bool(i108)&&(v99.z>0.000000e+00))))
		{
			if ((i107>0))
			{
				f101 = (min(v100.z,9.999900e-01)+(-(f0*1.000000e-02)));
				highp vec2 v109;
				v109.xy = ((v100.xy*pc2_h[1].xy)+vec2(5.000000e-01,5.000000e-01));
				highp vec2 v110;
				v110.xy = (v109+(-floor(v109)));
				highp vec2 v111;
				v111.xy = (v100.xy+(-(v110*pc2_h[1].zw)));
				highp vec2 v112;
				v112.xy = (vec2(2.000000e+00,2.000000e+00)+(-v110));
				highp vec2 v113;
				v113.xy = ((1.0/(v112))*pc2_h[1].zw);
				highp vec2 v114;
				v114.xy = (vec2(1.000000e+00,1.000000e+00)+v110);
				highp vec2 v115;
				v115.xy = ((v110/v114)*pc2_h[1].zw);
				highp float f116;
				f116 = clamp((f101+(-(1.0/(f102)))),0.000000e+00,1.000000e+00);
				highp vec2 v117;
				v117.x = v115.x;
				v117.y = v113.y;
				highp vec2 v118;
				v118.x = v113.x;
				v118.y = v115.y;
				float h119;
				float h120;
				h120 = ((v112.x*v112.y)*float(textureLodOffset(ps5,vec3((v111+v113),f116),0.000000e+00,ivec2(-1,-1))));
				float h121;
				h121 = ((v114.x*v112.y)*float(textureLodOffset(ps5,vec3((v111+v117),f116),0.000000e+00,ivec2(1,-1))));
				float h122;
				h122 = ((v112.x*v114.y)*float(textureLodOffset(ps5,vec3((v111+v118),f116),0.000000e+00,ivec2(-1,1))));
				float h123;
				h123 = ((v114.x*v114.y)*float(textureLodOffset(ps5,vec3((v111+v115),f116),0.000000e+00,ivec2(1,1))));
				h119 = ((((h120+h121)+h122)+h123)/9.000000e+00);
				highp float f124;
				highp float f125;
				highp float f126;
				f126 = h119;
				f125 = ((1.000000e+00+(-f98))*f126);
				highp float f127;
				highp float f128;
				f128 = h119;
				f127 = f128;
				f124 = ((f98>=0.000000e+00))?(f125):(f127);
				float h129;
				h129 = f124;
				h103 = h129;
			}
			if ((i108>0))
			{
				f101 = (min(v99.z,9.999900e-01)+(-(f0*1.000000e-02)));
				highp vec2 v130;
				v130.xy = ((v99.xy*pc2_h[1].xy)+vec2(5.000000e-01,5.000000e-01));
				highp vec2 v131;
				v131.xy = (v130+(-floor(v130)));
				highp vec2 v132;
				v132.xy = (v99.xy+(-(v131*pc2_h[1].zw)));
				highp vec2 v133;
				v133.xy = (vec2(2.000000e+00,2.000000e+00)+(-v131));
				highp vec2 v134;
				v134.xy = ((1.0/(v133))*pc2_h[1].zw);
				highp vec2 v135;
				v135.xy = (vec2(1.000000e+00,1.000000e+00)+v131);
				highp vec2 v136;
				v136.xy = ((v131/v135)*pc2_h[1].zw);
				highp float f137;
				f137 = clamp((f101+(-(1.0/(f102)))),0.000000e+00,1.000000e+00);
				highp vec2 v138;
				v138.x = v136.x;
				v138.y = v134.y;
				highp vec2 v139;
				v139.x = v134.x;
				v139.y = v136.y;
				float h140;
				float h141;
				h141 = ((v133.x*v133.y)*float(textureLodOffset(ps5,vec3((v132+v134),f137),0.000000e+00,ivec2(-1,-1))));
				float h142;
				h142 = ((v135.x*v133.y)*float(textureLodOffset(ps5,vec3((v132+v138),f137),0.000000e+00,ivec2(1,-1))));
				float h143;
				h143 = ((v133.x*v135.y)*float(textureLodOffset(ps5,vec3((v132+v139),f137),0.000000e+00,ivec2(-1,1))));
				float h144;
				h144 = ((v135.x*v135.y)*float(textureLodOffset(ps5,vec3((v132+v136),f137),0.000000e+00,ivec2(1,1))));
				h140 = ((((h141+h142)+h143)+h144)/9.000000e+00);
				highp float f145;
				highp float f146;
				highp float f147;
				f147 = h140;
				f146 = (f98*f147);
				highp float f148;
				highp float f149;
				f149 = h140;
				f148 = f149;
				f145 = ((f98>=0.000000e+00))?(f146):(f148);
				float h150;
				h150 = f145;
				h103 = (h103+h150);
			}
			highp float f151;
			f151 = clamp(((f96*pc2_h[2].x)+pc2_h[2].y),0.000000e+00,1.000000e+00);
			highp float f152;
			f152 = h103;
			float h153;
			h153 = mix(f152,1.000000e+00,(f151*f151));
			h103 = h153;
		}
		else
		{
			h103 = 1.000000e+00;
		}
		h15 = h103;
	}
	uvec3 v154;
	highp vec2 v155;
	v155.xy = pc0_m[0].xy;
	v154.xy = (uvec2((gl_FragCoord.xy+(-v155)))>>uvec2(u9));
	float h156;
	h156 = v12.w;
	float h157;
	h157 = pc1_h[1].x;
	float h158;
	h158 = pc1_h[1].y;
	float h159;
	h159 = pc1_h[1].z;
	float h160;
	h160 = pc1_h[0].z;
	v154.z = uint(clamp((log2(((h156*h157)+h158))*h159),0.000000e+00,(h160+-1.000000e+00)));
	highp vec3 v161;
	v161.xyz = vec3(v154);
	uint u162;
	u162 = uint(texelFetch(ps0,int(uint(((((v161.z*pc1_h[0].y)+v161.y)*pc1_h[0].x)+v161.x)))).x);
	v14.xyzw = vec4(0.000000e+00,1.000000e+00,0.000000e+00,0.000000e+00);
	v14.x = pc2_h[4].x;
	v14.y = pc2_h[4].y;
	if (bool((u162&u4)))
	{
		highp float f163;
		highp float f164;
		f164 = h15;
		f163 = f164;
		highp float f165;
		f165 = v14.x;
		highp float f166;
		f166 = v14.y;
		vec3 v167;
		v167.xyz = v94;
		highp vec3 v168;
		v168.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
		uint u169;
		float h170;
		uint u171;
		u171 = uint(pc6_h[3].w);
		h170 = 1.000000e+00;
		u169 = 0u;
		if (((u171&4u)==4u))
		{
			uint u172;
			u169 = 1u;
			u172 = 0u;
			if (((u171&1u)==1u))
			{
				highp vec3 v173;
				v173.xyz = (v23+(-pc6_h[0].xyz));
				highp vec3 v174;
				v174.xyz = abs(v173);
				highp float f175;
				f175 = max(max(v174.x,v174.y),v174.z);
				bool b176;
				b176 = (f175==v174.x);
				bool b177;
				b177 = (!(b176)&&(f175==v174.y));
				bool b178;
				b178 = (!(b176)&&!(b177));
				u172 = ((uint(int((b176&&(f175==v173.x))))+uint(((2*int(b177))+int((b177&&(f175==v173.y))))))+uint(((4*int(b178))+int((b178&&(f175==v173.z))))));
			}
			highp vec4 v179;
			v179.xyzw = (pc6_h[int((13u+(u172*4u)))]+((pc6_h[int((12u+(u172*4u)))]*v23.zzzz)+((pc6_h[int((11u+(u172*4u)))]*v23.yyyy)+(pc6_h[int((10u+(u172*4u)))]*v23.xxxx))));
			highp vec2 v180;
			v180.xy = (v179.xy/v179.ww);
			highp vec4 v181;
			v181.xyzw = pc6_h[int((4u+u172))];
			highp vec4 v182;
			v182.xyzw = pc6_h[int((4u+u172))];
			if (all(bvec2(uvec2(greaterThanEqual(v180,v181.xy))*uvec2(lessThanEqual(v180,v182.zw)))))
			{
				highp float f183;
				f183 = min(v179.z,9.999900e-01);
				float h184;
				highp vec2 v185;
				v185.xy = (v180*pc0_h[2].xy);
				highp vec2 v186;
				v186.xy = fract(v185);
				highp vec2 v187;
				v187.xy = ((floor(v185)+vec2(5.000000e-01,5.000000e-01))*pc0_h[2].zw);
				vec4 v188;
				float h189;
				float h190;
				h190 = pc6_h[3].z;
				h189 = h190;
				highp float f191;
				f191 = h189;
				highp float f192;
				f192 = h189;
				vec4 v193;
				v193.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(-2,-2))*vec4(f191))+(-vec4(((f183*f192)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v188.xyzw = v193;
				vec4 v194;
				float h195;
				float h196;
				h196 = pc6_h[3].z;
				h195 = h196;
				highp float f197;
				f197 = h195;
				highp float f198;
				f198 = h195;
				vec4 v199;
				v199.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(0,-2))*vec4(f197))+(-vec4(((f183*f198)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v194.xyzw = v199;
				vec4 v200;
				float h201;
				float h202;
				h202 = pc6_h[3].z;
				h201 = h202;
				highp float f203;
				f203 = h201;
				highp float f204;
				f204 = h201;
				vec4 v205;
				v205.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(2,-2))*vec4(f203))+(-vec4(((f183*f204)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v200.xyzw = v205;
				vec2 v206;
				vec2 v207;
				v207.xy = v186;
				v206.xy = v207;
				float h208;
				h208 = ((((((v188.w*(1.000000e+00+(-v206.x)))+v188.z)+v194.w)+v194.z)+v200.w)+(v200.z*v206.x));
				vec2 v209;
				v209.x = h208;
				v209.y = ((((((v188.x*(1.000000e+00+(-v206.x)))+v188.y)+v194.x)+v194.y)+v200.x)+(v200.y*v206.x));
				highp float f210;
				f210 = h208;
				highp float f211;
				f211 = v209.y;
				float h212;
				h212 = ((f210*(1.000000e+00+(-v186.y)))+f211);
				h184 = h212;
				vec4 v213;
				float h214;
				float h215;
				h215 = pc6_h[3].z;
				h214 = h215;
				highp float f216;
				f216 = h214;
				highp float f217;
				f217 = h214;
				vec4 v218;
				v218.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(-2,0))*vec4(f216))+(-vec4(((f183*f217)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v213.xyzw = v218;
				vec4 v219;
				float h220;
				float h221;
				h221 = pc6_h[3].z;
				h220 = h221;
				highp float f222;
				f222 = h220;
				highp float f223;
				f223 = h220;
				vec4 v224;
				v224.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(0,0))*vec4(f222))+(-vec4(((f183*f223)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v219.xyzw = v224;
				vec4 v225;
				float h226;
				float h227;
				h227 = pc6_h[3].z;
				h226 = h227;
				highp float f228;
				f228 = h226;
				highp float f229;
				f229 = h226;
				vec4 v230;
				v230.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(2,0))*vec4(f228))+(-vec4(((f183*f229)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v225.xyzw = v230;
				vec2 v231;
				vec2 v232;
				v232.xy = v186;
				v231.xy = v232;
				float h233;
				h233 = ((((((v213.w*(1.000000e+00+(-v231.x)))+v213.z)+v219.w)+v219.z)+v225.w)+(v225.z*v231.x));
				vec2 v234;
				v234.x = h233;
				v234.y = ((((((v213.x*(1.000000e+00+(-v231.x)))+v213.y)+v219.x)+v219.y)+v225.x)+(v225.y*v231.x));
				h184 = (h184+(h233+v234.y));
				vec4 v235;
				float h236;
				float h237;
				h237 = pc6_h[3].z;
				h236 = h237;
				highp float f238;
				f238 = h236;
				highp float f239;
				f239 = h236;
				vec4 v240;
				v240.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(-2,2))*vec4(f238))+(-vec4(((f183*f239)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v235.xyzw = v240;
				vec4 v241;
				float h242;
				float h243;
				h243 = pc6_h[3].z;
				h242 = h243;
				highp float f244;
				f244 = h242;
				highp float f245;
				f245 = h242;
				vec4 v246;
				v246.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(0,2))*vec4(f244))+(-vec4(((f183*f245)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v241.xyzw = v246;
				vec4 v247;
				float h248;
				float h249;
				h249 = pc6_h[3].z;
				h248 = h249;
				highp float f250;
				f250 = h248;
				highp float f251;
				f251 = h248;
				vec4 v252;
				v252.xyzw = clamp(((textureGatherOffset(ps7,v187,ivec2(2,2))*vec4(f250))+(-vec4(((f183*f251)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v247.xyzw = v252;
				vec2 v253;
				vec2 v254;
				v254.xy = v186;
				v253.xy = v254;
				float h255;
				h255 = ((((((v235.w*(1.000000e+00+(-v253.x)))+v235.z)+v241.w)+v241.z)+v247.w)+(v247.z*v253.x));
				vec2 v256;
				v256.x = h255;
				v256.y = ((((((v235.x*(1.000000e+00+(-v253.x)))+v235.y)+v241.x)+v241.y)+v247.x)+(v247.y*v253.x));
				float h257;
				highp float f258;
				f258 = v256.y;
				highp float f259;
				f259 = h255;
				float h260;
				h260 = (f259+(f258*v186.y));
				h257 = (h184+h260);
				h184 = h257;
				highp float f261;
				highp float f262;
				f262 = clamp((4.000000e-02*h257),0.000000e+00,1.000000e+00);
				f261 = f262;
				highp float f263;
				f263 = 1.000000e+00;
				highp float f264;
				f264 = 1.000000e+00;
				float h265;
				h265 = mix(f263,(f261*f261),f264);
				h170 = h265;
			}
		}
		if (((u171&3u)!=0u))
		{
			highp float f266;
			highp vec3 v267;
			v267.xyz = (pc6_h[0].xyz+(-v23));
			highp vec3 v268;
			v268.xyz = normalize(v267);
			vec3 v269;
			vec3 v270;
			v270.xyz = normalize((v24+v268));
			v269.xyz = v270;
			float h271;
			highp vec3 v272;
			v272.xyz = v55;
			float h273;
			h273 = dot(v272,v268);
			h271 = h273;
			float h274;
			highp vec3 v275;
			v275.xyz = v25;
			float h276;
			h276 = dot(v275,v268);
			h274 = max(0.000000e+00,h276);
			float h277;
			h277 = max(0.000000e+00,dot(v25,v269));
			if ((pc6_h[1].w==0.000000e+00))
			{
				highp float f278;
				f278 = dot(v267,v267);
				highp float f279;
				f279 = (f278*(pc6_h[0].w*pc6_h[0].w));
				highp float f280;
				f280 = clamp((1.000000e+00+(-(f279*f279))),0.000000e+00,1.000000e+00);
				f266 = ((1.0/((f278+1.000000e+00)))*(f280*f280));
			}
			else
			{
				highp vec3 v281;
				v281.xyz = (v267*pc6_h[0].www);
				f266 = pow((1.000000e+00+(-clamp(dot(v281,v281),0.000000e+00,1.000000e+00))),pc6_h[1].w);
			}
			if (((u171&2u)==2u))
			{
				highp float f282;
				f282 = clamp(((dot(v268,(-(-pc6_h[2].xyz)))+(-pc6_h[3].x))*pc6_h[3].y),0.000000e+00,1.000000e+00);
				f266 = (f266*(f282*f282));
			}
			highp float f283;
			highp float f284;
			f284 = h170;
			f283 = (f266*f284);
			f266 = f283;
			highp float f285;
			f285 = mix((f163+f166),f163,f163);
			highp float f286;
			f286 = ((!(bool(u169))&&(f165>0.000000e+00)))?(f285):(1.000000e+00);
			highp float f287;
			f287 = (f283*min(1.000000e+00,f286));
			f266 = f287;
			highp float f288;
			f288 = h274;
			highp float f289;
			f289 = 3.183099e-01;
			v168.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),((vec3((f288*f287))*pc6_h[1].xyz)*vec3(f289)));
			vec2 v290;
			v290.x = clamp(((h271*5.000000e-01)+5.000000e-01),0.000000e+00,1.000000e+00);
			v290.y = h75;
			highp vec3 v291;
			highp vec3 v292;
			v292.xyz = cross(v25,v269);
			v291.xyz = v292;
			float h293;
			h293 = (h74*h74);
			float h294;
			h294 = (h277*h293);
			float h295;
			highp float f296;
			f296 = (h294*h294);
			highp float f297;
			f297 = h293;
			float h298;
			h298 = (f297/(dot(v291,v291)+f296));
			h295 = h298;
			highp float f299;
			f299 = 3.141593e+00;
			highp vec3 v300;
			v300.xyz = (v76*vec3((h274*(((h74*2.500000e-01)+2.500000e-01)*min((h295*h295),h11)))));
			highp vec2 v301;
			v301.xy = v290;
			highp float f302;
			f302 = 0.000000e+00;
			highp vec3 v303;
			v303.xyz = (textureLod(ps6,v301,f302).xyz*v72);
			vec3 v304;
			v304.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(((vec3(f287)*pc6_h[1].xyz)*vec3((1.0/(f299))))*((v300*pc6_h[2].www)+v303)));
			v167.xyz = (v94+v304);
		}
		v17.xyz = v167;
		v16.xyz = v168;
	}
	if ((bool((u162&u5))&&(i2>1)))
	{
		highp float f305;
		highp float f306;
		f306 = h15;
		f305 = f306;
		highp float f307;
		f307 = v14.x;
		highp float f308;
		f308 = v14.y;
		vec3 v309;
		v309.xyz = v17;
		highp vec3 v310;
		v310.xyz = v16;
		uint u311;
		float h312;
		uint u313;
		u313 = uint(pc5_h[3].w);
		h312 = 1.000000e+00;
		u311 = 0u;
		if (((u313&4u)==4u))
		{
			uint u314;
			u311 = 1u;
			u314 = 0u;
			if (((u313&1u)==1u))
			{
				highp vec3 v315;
				v315.xyz = (v23+(-pc5_h[0].xyz));
				highp vec3 v316;
				v316.xyz = abs(v315);
				highp float f317;
				f317 = max(max(v316.x,v316.y),v316.z);
				bool b318;
				b318 = (f317==v316.x);
				bool b319;
				b319 = (!(b318)&&(f317==v316.y));
				bool b320;
				b320 = (!(b318)&&!(b319));
				u314 = ((uint(int((b318&&(f317==v315.x))))+uint(((2*int(b319))+int((b319&&(f317==v315.y))))))+uint(((4*int(b320))+int((b320&&(f317==v315.z))))));
			}
			highp vec4 v321;
			v321.xyzw = (pc5_h[int((13u+(u314*4u)))]+((pc5_h[int((12u+(u314*4u)))]*v23.zzzz)+((pc5_h[int((11u+(u314*4u)))]*v23.yyyy)+(pc5_h[int((10u+(u314*4u)))]*v23.xxxx))));
			highp vec2 v322;
			v322.xy = (v321.xy/v321.ww);
			highp vec4 v323;
			v323.xyzw = pc5_h[int((4u+u314))];
			highp vec4 v324;
			v324.xyzw = pc5_h[int((4u+u314))];
			if (all(bvec2(uvec2(greaterThanEqual(v322,v323.xy))*uvec2(lessThanEqual(v322,v324.zw)))))
			{
				highp vec2 v325;
				v325.xy = (v322*pc0_h[2].xy);
				vec4 v326;
				float h327;
				float h328;
				h328 = pc5_h[3].z;
				h327 = h328;
				highp float f329;
				f329 = h327;
				highp float f330;
				f330 = h327;
				vec4 v331;
				v331.xyzw = clamp(((textureGatherOffset(ps7,((floor(v325)+vec2(5.000000e-01,5.000000e-01))*pc0_h[2].zw),ivec2(0,0))*vec4(f329))+(-vec4(((min(v321.z,9.999900e-01)*f330)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v326.xyzw = v331;
				vec2 v332;
				vec2 v333;
				v333.xy = fract(v325);
				v332.xy = v333;
				vec2 v334;
				v334.xy = mix(v326.wx,v326.zy,v332.xx);
				highp float f335;
				highp float f336;
				f336 = clamp(mix(v334.x,v334.y,v332.y),0.000000e+00,1.000000e+00);
				f335 = f336;
				highp float f337;
				f337 = 1.000000e+00;
				highp float f338;
				f338 = 1.000000e+00;
				float h339;
				h339 = mix(f337,(f335*f335),f338);
				h312 = h339;
			}
		}
		if (((u313&3u)!=0u))
		{
			highp float f340;
			highp vec3 v341;
			v341.xyz = (pc5_h[0].xyz+(-v23));
			highp vec3 v342;
			v342.xyz = normalize(v341);
			vec3 v343;
			vec3 v344;
			v344.xyz = normalize((v24+v342));
			v343.xyz = v344;
			float h345;
			highp vec3 v346;
			v346.xyz = v55;
			float h347;
			h347 = dot(v346,v342);
			h345 = h347;
			float h348;
			highp vec3 v349;
			v349.xyz = v25;
			float h350;
			h350 = dot(v349,v342);
			h348 = max(0.000000e+00,h350);
			float h351;
			h351 = max(0.000000e+00,dot(v25,v343));
			if ((pc5_h[1].w==0.000000e+00))
			{
				highp float f352;
				f352 = dot(v341,v341);
				highp float f353;
				f353 = (f352*(pc5_h[0].w*pc5_h[0].w));
				highp float f354;
				f354 = clamp((1.000000e+00+(-(f353*f353))),0.000000e+00,1.000000e+00);
				f340 = ((1.0/((f352+1.000000e+00)))*(f354*f354));
			}
			else
			{
				highp vec3 v355;
				v355.xyz = (v341*pc5_h[0].www);
				f340 = pow((1.000000e+00+(-clamp(dot(v355,v355),0.000000e+00,1.000000e+00))),pc5_h[1].w);
			}
			if (((u313&2u)==2u))
			{
				highp float f356;
				f356 = clamp(((dot(v342,(-(-pc5_h[2].xyz)))+(-pc5_h[3].x))*pc5_h[3].y),0.000000e+00,1.000000e+00);
				f340 = (f340*(f356*f356));
			}
			highp float f357;
			highp float f358;
			f358 = h312;
			f357 = (f340*f358);
			f340 = f357;
			highp float f359;
			f359 = mix((f305+f308),f305,f305);
			highp float f360;
			f360 = ((!(bool(u311))&&(f307>0.000000e+00)))?(f359):(1.000000e+00);
			highp float f361;
			f361 = (f357*min(1.000000e+00,f360));
			f340 = f361;
			highp float f362;
			f362 = h348;
			highp float f363;
			f363 = 3.183099e-01;
			v310.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(v16+((vec3((f362*f361))*pc5_h[1].xyz)*vec3(f363))));
			vec2 v364;
			v364.x = clamp(((h345*5.000000e-01)+5.000000e-01),0.000000e+00,1.000000e+00);
			v364.y = h75;
			highp vec3 v365;
			highp vec3 v366;
			v366.xyz = cross(v25,v343);
			v365.xyz = v366;
			float h367;
			h367 = (h74*h74);
			float h368;
			h368 = (h351*h367);
			float h369;
			highp float f370;
			f370 = (h368*h368);
			highp float f371;
			f371 = h367;
			float h372;
			h372 = (f371/(dot(v365,v365)+f370));
			h369 = h372;
			highp float f373;
			f373 = 3.141593e+00;
			highp vec3 v374;
			v374.xyz = (v76*vec3((h348*(((h74*2.500000e-01)+2.500000e-01)*min((h369*h369),h11)))));
			highp vec2 v375;
			v375.xy = v364;
			highp float f376;
			f376 = 0.000000e+00;
			highp vec3 v377;
			v377.xyz = (textureLod(ps6,v375,f376).xyz*v72);
			vec3 v378;
			v378.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(((vec3(f361)*pc5_h[1].xyz)*vec3((1.0/(f373))))*((v374*pc5_h[2].www)+v377)));
			v309.xyz = (v17+v378);
		}
		v17.xyz = v309;
		v16.xyz = v310;
	}
	if ((bool((u162&u6))&&(i2>2)))
	{
		highp float f379;
		highp float f380;
		f380 = h15;
		f379 = f380;
		highp float f381;
		f381 = v14.x;
		highp float f382;
		f382 = v14.y;
		vec3 v383;
		v383.xyz = v17;
		highp vec3 v384;
		v384.xyz = v16;
		uint u385;
		float h386;
		uint u387;
		u387 = uint(pc4_h[3].w);
		h386 = 1.000000e+00;
		u385 = 0u;
		if (((u387&4u)==4u))
		{
			uint u388;
			u385 = 1u;
			u388 = 0u;
			if (((u387&1u)==1u))
			{
				highp vec3 v389;
				v389.xyz = (v23+(-pc4_h[0].xyz));
				highp vec3 v390;
				v390.xyz = abs(v389);
				highp float f391;
				f391 = max(max(v390.x,v390.y),v390.z);
				bool b392;
				b392 = (f391==v390.x);
				bool b393;
				b393 = (!(b392)&&(f391==v390.y));
				bool b394;
				b394 = (!(b392)&&!(b393));
				u388 = ((uint(int((b392&&(f391==v389.x))))+uint(((2*int(b393))+int((b393&&(f391==v389.y))))))+uint(((4*int(b394))+int((b394&&(f391==v389.z))))));
			}
			highp vec4 v395;
			v395.xyzw = (pc4_h[int((13u+(u388*4u)))]+((pc4_h[int((12u+(u388*4u)))]*v23.zzzz)+((pc4_h[int((11u+(u388*4u)))]*v23.yyyy)+(pc4_h[int((10u+(u388*4u)))]*v23.xxxx))));
			highp vec2 v396;
			v396.xy = (v395.xy/v395.ww);
			highp vec4 v397;
			v397.xyzw = pc4_h[int((4u+u388))];
			highp vec4 v398;
			v398.xyzw = pc4_h[int((4u+u388))];
			if (all(bvec2(uvec2(greaterThanEqual(v396,v397.xy))*uvec2(lessThanEqual(v396,v398.zw)))))
			{
				highp float f399;
				highp float f400;
				f400 = 1.000000e+00;
				f399 = f400;
				highp float f401;
				f401 = 1.000000e+00;
				highp float f402;
				f402 = 1.000000e+00;
				float h403;
				h403 = mix(f401,(f399*f399),f402);
				h386 = h403;
			}
		}
		if (((u387&3u)!=0u))
		{
			highp float f404;
			highp vec3 v405;
			v405.xyz = (pc4_h[0].xyz+(-v23));
			highp vec3 v406;
			v406.xyz = normalize(v405);
			vec3 v407;
			vec3 v408;
			v408.xyz = normalize((v24+v406));
			v407.xyz = v408;
			float h409;
			highp vec3 v410;
			v410.xyz = v55;
			float h411;
			h411 = dot(v410,v406);
			h409 = h411;
			float h412;
			highp vec3 v413;
			v413.xyz = v25;
			float h414;
			h414 = dot(v413,v406);
			h412 = max(0.000000e+00,h414);
			float h415;
			h415 = max(0.000000e+00,dot(v25,v407));
			if ((pc4_h[1].w==0.000000e+00))
			{
				highp float f416;
				f416 = dot(v405,v405);
				highp float f417;
				f417 = (f416*(pc4_h[0].w*pc4_h[0].w));
				highp float f418;
				f418 = clamp((1.000000e+00+(-(f417*f417))),0.000000e+00,1.000000e+00);
				f404 = ((1.0/((f416+1.000000e+00)))*(f418*f418));
			}
			else
			{
				highp vec3 v419;
				v419.xyz = (v405*pc4_h[0].www);
				f404 = pow((1.000000e+00+(-clamp(dot(v419,v419),0.000000e+00,1.000000e+00))),pc4_h[1].w);
			}
			if (((u387&2u)==2u))
			{
				highp float f420;
				f420 = clamp(((dot(v406,(-(-pc4_h[2].xyz)))+(-pc4_h[3].x))*pc4_h[3].y),0.000000e+00,1.000000e+00);
				f404 = (f404*(f420*f420));
			}
			highp float f421;
			highp float f422;
			f422 = h386;
			f421 = (f404*f422);
			f404 = f421;
			highp float f423;
			f423 = mix((f379+f382),f379,f379);
			highp float f424;
			f424 = ((!(bool(u385))&&(f381>0.000000e+00)))?(f423):(1.000000e+00);
			highp float f425;
			f425 = (f421*min(1.000000e+00,f424));
			f404 = f425;
			highp float f426;
			f426 = h412;
			highp float f427;
			f427 = 3.183099e-01;
			v384.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(v16+((vec3((f426*f425))*pc4_h[1].xyz)*vec3(f427))));
			vec2 v428;
			v428.x = clamp(((h409*5.000000e-01)+5.000000e-01),0.000000e+00,1.000000e+00);
			v428.y = h75;
			highp vec3 v429;
			highp vec3 v430;
			v430.xyz = cross(v25,v407);
			v429.xyz = v430;
			float h431;
			h431 = (h74*h74);
			float h432;
			h432 = (h415*h431);
			float h433;
			highp float f434;
			f434 = (h432*h432);
			highp float f435;
			f435 = h431;
			float h436;
			h436 = (f435/(dot(v429,v429)+f434));
			h433 = h436;
			highp float f437;
			f437 = 3.141593e+00;
			highp vec3 v438;
			v438.xyz = (v76*vec3((h412*(((h74*2.500000e-01)+2.500000e-01)*min((h433*h433),h11)))));
			highp vec2 v439;
			v439.xy = v428;
			highp float f440;
			f440 = 0.000000e+00;
			highp vec3 v441;
			v441.xyz = (textureLod(ps6,v439,f440).xyz*v72);
			vec3 v442;
			v442.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(((vec3(f425)*pc4_h[1].xyz)*vec3((1.0/(f437))))*((v438*pc4_h[2].www)+v441)));
			v383.xyz = (v17+v442);
		}
		v17.xyz = v383;
		v16.xyz = v384;
	}
	if ((bool((u162&u7))&&(i2>3)))
	{
		highp float f443;
		highp float f444;
		f444 = h15;
		f443 = f444;
		highp float f445;
		f445 = v14.x;
		highp float f446;
		f446 = v14.y;
		vec3 v447;
		v447.xyz = v17;
		highp vec3 v448;
		v448.xyz = v16;
		uint u449;
		float h450;
		uint u451;
		u451 = uint(pc3_h[3].w);
		h450 = 1.000000e+00;
		u449 = 0u;
		if (((u451&4u)==4u))
		{
			uint u452;
			u449 = 1u;
			u452 = 0u;
			if (((u451&1u)==1u))
			{
				highp vec3 v453;
				v453.xyz = (v23+(-pc3_h[0].xyz));
				highp vec3 v454;
				v454.xyz = abs(v453);
				highp float f455;
				f455 = max(max(v454.x,v454.y),v454.z);
				bool b456;
				b456 = (f455==v454.x);
				bool b457;
				b457 = (!(b456)&&(f455==v454.y));
				bool b458;
				b458 = (!(b456)&&!(b457));
				u452 = ((uint(int((b456&&(f455==v453.x))))+uint(((2*int(b457))+int((b457&&(f455==v453.y))))))+uint(((4*int(b458))+int((b458&&(f455==v453.z))))));
			}
			highp vec4 v459;
			v459.xyzw = (pc3_h[int((13u+(u452*4u)))]+((pc3_h[int((12u+(u452*4u)))]*v23.zzzz)+((pc3_h[int((11u+(u452*4u)))]*v23.yyyy)+(pc3_h[int((10u+(u452*4u)))]*v23.xxxx))));
			highp vec2 v460;
			v460.xy = (v459.xy/v459.ww);
			highp vec4 v461;
			v461.xyzw = pc3_h[int((4u+u452))];
			highp vec4 v462;
			v462.xyzw = pc3_h[int((4u+u452))];
			if (all(bvec2(uvec2(greaterThanEqual(v460,v461.xy))*uvec2(lessThanEqual(v460,v462.zw)))))
			{
				highp float f463;
				highp float f464;
				f464 = 1.000000e+00;
				f463 = f464;
				highp float f465;
				f465 = 1.000000e+00;
				highp float f466;
				f466 = 1.000000e+00;
				float h467;
				h467 = mix(f465,(f463*f463),f466);
				h450 = h467;
			}
		}
		if (((u451&3u)!=0u))
		{
			highp float f468;
			highp vec3 v469;
			v469.xyz = (pc3_h[0].xyz+(-v23));
			highp vec3 v470;
			v470.xyz = normalize(v469);
			vec3 v471;
			vec3 v472;
			v472.xyz = normalize((v24+v470));
			v471.xyz = v472;
			float h473;
			highp vec3 v474;
			v474.xyz = v55;
			float h475;
			h475 = dot(v474,v470);
			h473 = h475;
			float h476;
			highp vec3 v477;
			v477.xyz = v25;
			float h478;
			h478 = dot(v477,v470);
			h476 = max(0.000000e+00,h478);
			float h479;
			h479 = max(0.000000e+00,dot(v25,v471));
			if ((pc3_h[1].w==0.000000e+00))
			{
				highp float f480;
				f480 = dot(v469,v469);
				highp float f481;
				f481 = (f480*(pc3_h[0].w*pc3_h[0].w));
				highp float f482;
				f482 = clamp((1.000000e+00+(-(f481*f481))),0.000000e+00,1.000000e+00);
				f468 = ((1.0/((f480+1.000000e+00)))*(f482*f482));
			}
			else
			{
				highp vec3 v483;
				v483.xyz = (v469*pc3_h[0].www);
				f468 = pow((1.000000e+00+(-clamp(dot(v483,v483),0.000000e+00,1.000000e+00))),pc3_h[1].w);
			}
			if (((u451&2u)==2u))
			{
				highp float f484;
				f484 = clamp(((dot(v470,(-(-pc3_h[2].xyz)))+(-pc3_h[3].x))*pc3_h[3].y),0.000000e+00,1.000000e+00);
				f468 = (f468*(f484*f484));
			}
			highp float f485;
			highp float f486;
			f486 = h450;
			f485 = (f468*f486);
			f468 = f485;
			highp float f487;
			f487 = mix((f443+f446),f443,f443);
			highp float f488;
			f488 = ((!(bool(u449))&&(f445>0.000000e+00)))?(f487):(1.000000e+00);
			highp float f489;
			f489 = (f485*min(1.000000e+00,f488));
			f468 = f489;
			highp float f490;
			f490 = h476;
			highp float f491;
			f491 = 3.183099e-01;
			v448.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(v16+((vec3((f490*f489))*pc3_h[1].xyz)*vec3(f491))));
			vec2 v492;
			v492.x = clamp(((h473*5.000000e-01)+5.000000e-01),0.000000e+00,1.000000e+00);
			v492.y = h75;
			highp vec3 v493;
			highp vec3 v494;
			v494.xyz = cross(v25,v471);
			v493.xyz = v494;
			float h495;
			h495 = (h74*h74);
			float h496;
			h496 = (h479*h495);
			float h497;
			highp float f498;
			f498 = (h496*h496);
			highp float f499;
			f499 = h495;
			float h500;
			h500 = (f499/(dot(v493,v493)+f498));
			h497 = h500;
			highp float f501;
			f501 = 3.141593e+00;
			highp vec3 v502;
			v502.xyz = (v76*vec3((h476*(((h74*2.500000e-01)+2.500000e-01)*min((h497*h497),h11)))));
			highp vec2 v503;
			v503.xy = v492;
			highp float f504;
			f504 = 0.000000e+00;
			highp vec3 v505;
			v505.xyz = (textureLod(ps6,v503,f504).xyz*v72);
			vec3 v506;
			v506.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(((vec3(f489)*pc3_h[1].xyz)*vec3((1.0/(f501))))*((v502*pc3_h[2].www)+v505)));
			v447.xyz = (v17+v506);
		}
		v17.xyz = v447;
		v16.xyz = v448;
	}
	v13.xyz = min(v13.xyz,vec3(6.500000e+04,6.500000e+04,6.500000e+04));
	v13.xyz = v17;
	v13.w = 1.000000e+00;
	out_Target0.xyzw = v13;
}

// Compiled by HLSLCC 0.73


#version 310 es

#ifdef GL_EXT_texture_cube_map_array
#extension GL_EXT_texture_cube_map_array : enable

#endif

#ifdef GL_EXT_texture_buffer
#extension GL_EXT_texture_buffer : enable

#endif
// end extensions
precision mediump float;
precision highp int;

void compiler_internal_AdjustInputSemantic(inout vec4 TempVariable)
{
#if HLSLCC_DX11ClipSpace
	TempVariable.y = -TempVariable.y;
	TempVariable.z = ( TempVariable.z + TempVariable.w ) / 2.0;
#endif
}

void compiler_internal_AdjustOutputSemantic(inout vec4 Src)
{
#if HLSLCC_DX11ClipSpace
	Src.y = -Src.y;
	Src.z = ( 2.0 * Src.z ) - Src.w;
#endif
}

bool compiler_internal_AdjustIsFrontFacing(bool isFrontFacing)
{
#if HLSLCC_DX11ClipSpace
	return !isFrontFacing;
#else
	return isFrontFacing;
#endif
}
uniform vec4 pc0_m[18];
uniform ivec4 pc0_i[1];
uniform highp vec4 pc0_h[3];
uniform uvec4 pc3_u[1];
uniform highp vec4 pc3_h[34];
uniform uvec4 pc4_u[1];
uniform highp vec4 pc4_h[34];
uniform uvec4 pc5_u[1];
uniform highp vec4 pc5_h[34];
uniform uvec4 pc6_u[1];
uniform highp vec4 pc6_h[34];
uniform highp vec4 pc2_h[13];
uniform uvec4 pc1_u[1];
uniform ivec4 pc1_i[1];
uniform highp vec4 pc1_h[2];
uniform vec4 pc7_m[1];
uniform vec4 pc8_m[4];
uniform uvec4 pu_u[1];
uniform ivec4 pu_i[1];
uniform highp vec4 pu_h[2];
uniform mediump sampler2D ps4;
uniform mediump sampler2D ps1;
uniform mediump sampler2D ps3;
uniform mediump sampler2D ps2;
uniform highp sampler2DShadow ps5;
uniform highp usamplerBuffer ps0;
uniform highp sampler2D ps7;
uniform highp sampler2D ps6;
layout(location=0) in vec4 in_TEXCOORD10_centroid;
layout(location=1) in vec4 in_TEXCOORD11_centroid;
layout(location=2) in highp vec4 in_TEXCOORD0;
layout(location=4) in highp vec4 in_TEXCOORD8;
layout(location=0) out vec4 out_Target0;
void main()
{
	highp float f0;
	f0 = pu_h[1].x;
	bool b1;
	b1 = bool(pu_u[0].x);
	int i2;
	i2 = pu_i[0].x;
	highp float f3;
	f3 = pu_h[0].x;
	uint u4;
	u4 = pc6_u[0].x;
	uint u5;
	u5 = pc5_u[0].x;
	uint u6;
	u6 = pc4_u[0].x;
	uint u7;
	u7 = pc3_u[0].x;
	int i8;
	i8 = pc1_i[0].x;
	uint u9;
	u9 = pc1_u[0].x;
	int i10;
	i10 = pc0_i[0].x;
	float h11;
	h11 = pc0_m[1].x;
	highp vec4 v12;
	v12.xyzw = gl_FragCoord;
	v12.w = (1.0/(gl_FragCoord.w));
	vec4 v13;
	highp vec4 v14;
	float h15;
	highp vec3 v16;
	vec3 v17;
	vec3 v18;
	highp vec4 v19;
	v19.xyzw = in_TEXCOORD10_centroid;
	vec3 v20;
	v20.xyz = v19.xyz;
	v18.xyz = v20;
	vec4 v21;
	v21.xyzw = in_TEXCOORD11_centroid;
	vec3 v22;
	v22.xyz = (cross(v21.xyz,v18)*v21.www);
	highp vec4 v23;
	highp vec3 v24;
	highp vec2 v25;
	v25.xy = pc0_m[0].xy;
	v24.xy = ((((gl_FragCoord.xy+(-v25))*pc0_h[1].zw)+vec2(-5.000000e-01,-5.000000e-01))*vec2(2.000000e+00,-2.000000e+00));
	v24.z = gl_FragCoord.z;
	highp vec4 v26;
	v26.w = 1.000000e+00;
	v26.xyz = v24;
	v23.xyzw = (v26*v12.wwww);
	highp vec3 v27;
	v27.xyz = (in_TEXCOORD8.xyz+(-pc0_h[0].xyz));
	highp vec3 v28;
	v28.xyz = normalize((-in_TEXCOORD8.xyz));
	vec3 v29;
	v29.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
	vec4 v30;
	highp float f31;
	f31 = pc7_m[0].x;
	v30.xyzw = texture(ps2,in_TEXCOORD0.xy,f31);
	vec4 v32;
	highp float f33;
	f33 = pc7_m[0].x;
	v32.xyzw = texture(ps3,in_TEXCOORD0.xy,f33);
	vec4 v34;
	v34.xyzw = texture(ps1,in_TEXCOORD0.xy);
	vec4 v35;
	highp float f36;
	f36 = pc8_m[1].x;
	highp float f37;
	f37 = -1.000000e+00;
	v35.xyzw = texture(ps4,(in_TEXCOORD0.xy*vec2(f36)),f37);
	float h38;
	h38 = pc8_m[2].y;
	float h39;
	h39 = pc7_m[0].z;
	float h40;
	h40 = pc8_m[2].w;
	float h41;
	h41 = pc8_m[3].x;
	float h42;
	vec3 v43;
	vec3 v44;
	v44.xyz = (v30.xyz*pc8_m[0].xyz);
	float h45;
	h45 = mix(v30.w,1.000000e+00,pc8_m[2].y);
	v43.xyz = vec3(0.000000e+00,0.000000e+00,1.000000e+00);
	v43.xy = ((v32.wy*vec2(2.000000e+00,2.000000e+00))+vec2(-1.000000e+00,-1.000000e+00));
	float h46;
	h46 = sqrt(clamp((1.000000e+00+(-dot(v43.xy,v43.xy))),0.000000e+00,1.000000e+00));
	v43.z = h46;
	float h47;
	highp vec3 v48;
	v48.xyz = ((v21.xyz*vec3(h46))+((v22*v43.yyy)+(v18*v43.xxx)));
	float h49;
	h49 = dot(v48,v28);
	h47 = clamp((1.000000e+00+(-clamp(h49,0.000000e+00,1.000000e+00))),0.000000e+00,1.000000e+00);
	float h50;
	h50 = (mix(pc8_m[2].x,pc8_m[1].w,v32.x)+((h47*h47)*3.000000e-01));
	h42 = h50;
	float h51;
	highp float f52;
	f52 = v32.z;
	highp float f53;
	f53 = pc8_m[2].z;
	float h54;
	h54 = (f52*f53);
	h51 = h54;
	vec2 v55;
	highp float f56;
	f56 = pc8_m[1].z;
	v55.xy = ((texture(ps3,in_TEXCOORD0.xy,f56).wy*vec2(2.000000e+00,2.000000e+00))+vec2(-1.000000e+00,-1.000000e+00));
	vec3 v57;
	v57.xy = v55;
	v57.z = sqrt(clamp((1.000000e+00+(-dot(v55,v55))),0.000000e+00,1.000000e+00));
	vec3 v58;
	v58.xyz = mix(v43,v57,vec3(7.000000e-01,7.000000e-01,7.000000e-01));
	vec3 v59;
	v59.xyz = ((v21.xyz*v58.zzz)+((v22*v58.yyy)+(v18*v58.xxx)));
	if ((pc8_m[2].w>0.000000e+00))
	{
		vec3 v60;
		v60.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
		v60.xy = ((v35.xy*vec2(2.000000e+00,2.000000e+00))+vec2(-1.000000e+00,-1.000000e+00));
		v60.z = sqrt(clamp((1.000000e+00+(-dot(v60.xy,v60.xy))),0.000000e+00,1.000000e+00));
		vec3 v61;
		v61.xyz = (v43+vec3(0.000000e+00,0.000000e+00,1.000000e+00));
		vec3 v62;
		v62.xyz = (v60*vec3(-1.000000e+00,-1.000000e+00,1.000000e+00));
		vec3 v63;
		v63.xyz = (((v61*vec3(dot(v61,v62)))/v61.zzz)+(-v62));
		v60.xyz = v63;
		v43.xyz = normalize(mix(v43,v63,vec3((v34.w*h40))));
		float h64;
		h64 = (1.000000e+00+(-v35.z));
		float h65;
		float h66;
		h66 = ((((h50+-1.000000e+00)*(h64+-1.000000e+00))*-2.000000e+00)+1.000000e+00);
		float h67;
		h67 = ((h50*h64)*2.000000e+00);
		h65 = ((h50>=5.000000e-01))?(h66):(h67);
		h42 = mix(h50,h65,(v34.w*h41));
	}
	if (((pc7_m[0].z>1.000000e-02)&&(f3>1.000000e-02)))
	{
		float h68;
		highp float f69;
		f69 = v34.z;
		highp float f70;
		f70 = h39;
		highp float f71;
		f71 = h38;
		float h72;
		h72 = (((f69*f3)*f70)*f71);
		h68 = h72;
		h39 = h68;
		h42 = mix(h42,5.000000e-02,clamp(((3.000000e+00*(clamp(h68,2.000000e-01,1.000000e+00)+-2.000000e-01))/8.000000e-01),0.000000e+00,1.000000e+00));
	}
	vec3 v73;
	v73.xyz = v43;
	highp vec3 v74;
	v74.xyz = ((v21.xyz*v73.zzz)+((v22*v73.yyy)+(v18*v73.xxx)));
	vec3 v75;
	v75.xyz = normalize(v74);
	v29.xyz = v75;
	vec3 v76;
	v76.xyz = clamp(v44,vec3(0.000000e+00,0.000000e+00,0.000000e+00),vec3(1.000000e+00,1.000000e+00,1.000000e+00));
	float h77;
	h77 = clamp(h45,0.000000e+00,1.000000e+00);
	float h78;
	h78 = max(1.562500e-02,clamp(h42,0.000000e+00,1.000000e+00));
	float h79;
	h79 = clamp(h51,0.000000e+00,1.000000e+00);
	v17.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
	v16.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
	vec3 v80;
	vec2 v81;
	vec4 v82;
	v82.xyzw = ((vec4(h78)*vec4(-1.000000e+00,-2.750000e-02,-5.720000e-01,2.200000e-02))+vec4(1.000000e+00,4.250000e-02,1.040000e+00,-4.000000e-02));
	vec2 v83;
	vec3 v84;
	v84.xyz = v28;
	v83.xy = ((vec2(-1.040000e+00,1.040000e+00)*vec2(((min((v82.x*v82.x),exp2((-9.280000e+00*max(dot(v29,v84),0.000000e+00))))*v82.x)+v82.y)))+v82.zw);
	v81.xy = v83;
	v81.y = v83.y;
	v80.xyz = ((vec3(2.400000e-02,2.400000e-02,2.400000e-02)*v83.xxx)+v81.yyy);
	vec3 v85;
	vec3 v86;
	v86.xyz = pc0_m[17].xyz;
	vec3 v87;
	v87.xyz = pc0_m[16].xyz;
	v85.xyz = (b1)?(v86):(v87);
	vec3 v88;
	vec3 v89;
	vec3 v90;
	vec4 v91;
	v91.w = 1.000000e+00;
	v91.xyz = v29;
	if (b1)
	{
		v90.x = dot(pc0_m[9],v91);
		v90.y = dot(pc0_m[10],v91);
		v90.z = dot(pc0_m[11],v91);
		vec4 v92;
		v92.xyzw = (v91.xyzz*v91.yzzx);
		v89.x = dot(pc0_m[12],v92);
		v89.y = dot(pc0_m[13],v92);
		v89.z = dot(pc0_m[14],v92);
		v88.xyz = (pc0_m[15].xyz*vec3(((v91.x*v91.x)+(-(v91.y*v91.y)))));
	}
	else
	{
		v90.x = dot(pc0_m[2],v91);
		v90.y = dot(pc0_m[3],v91);
		v90.z = dot(pc0_m[4],v91);
		vec4 v93;
		v93.xyzw = (v91.xyzz*v91.yzzx);
		v89.x = dot(pc0_m[5],v93);
		v89.y = dot(pc0_m[6],v93);
		v89.z = dot(pc0_m[7],v93);
		v88.xyz = (pc0_m[8].xyz*vec3(((v91.x*v91.x)+(-(v91.y*v91.y)))));
	}
	vec3 v94;
	v94.xyz = (max(vec3(0.000000e+00,0.000000e+00,0.000000e+00),((v90+v89)+v88))*v85);
	uint u95;
	u95 = uint(((i10>>1)&15));
	if (bool(u95))
	{
		bool b96;
		b96 = false;
		bool b97;
		b97 = false;
		if((1u==u95)) { b96 = true; };
		if (b96)
		{
			b97 = true;
		}
		if((2u==u95)) { b96 = true; };
		if((6u==u95)) { b96 = true; };
		if((7u==u95)) { b96 = true; };
		if(b97) { b96 = false; };
		if (b96)
		{
			b97 = true;
		}
		if((3u==u95)) { b96 = true; };
		if(b97) { b96 = false; };
		if (b96)
		{
			b97 = true;
		}
		if((4u==u95)) { b96 = true; };
		if(b97) { b96 = false; };
		if (b96)
		{
			b97 = true;
		}
		if((5u==u95)) { b96 = true; };
		if(b97) { b96 = false; };
		if (b96)
		{
			b97 = true;
		}
		b96 = true;
		if(b97) { b96 = false; };
		if (b96)
		{
			b97 = true;
		}
	}
	vec3 v98;
	v98.xyz = ((v94*v76)*vec3(h77));
	v17.xyz = v98;
	h15 = 1.000000e+00;
	if ((bool(i8)||(pc2_h[3].z>0.000000e+00)))
	{
		highp vec2 v99;
		v99.xy = v23.xy;
		highp float f100;
		f100 = v23.w;
		int i101;
		highp float f102;
		highp vec4 v103;
		highp vec4 v104;
		highp float f105;
		highp float f106;
		float h107;
		h107 = 0.000000e+00;
		f106 = pc2_h[0].w;
		v104.xyzw = vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00);
		v103.xyzw = vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00);
		f102 = -1.000000e+00;
		i101 = 0;
		int i108;
		i108 = 0;
		for (;i108<2;)
		{
			if ((f100<pc2_h[3][i108]))
			{
				if ((i108==0))
				{
					highp vec4 v109;
					v109.w = 1.000000e+00;
					v109.x = v99.x;
					v109.y = v99.y;
					v109.z = f100;
					v104.xyzw = (pc2_h[8]+((pc2_h[7]*v109.zzzz)+((pc2_h[6]*v109.yyyy)+(pc2_h[5]*v99.xxxx))));
				}
				else
				{
					highp vec4 v110;
					v110.w = 1.000000e+00;
					v110.x = v99.x;
					v110.y = v99.y;
					v110.z = f100;
					v103.xyzw = (pc2_h[(8+(i108*4))]+((pc2_h[(7+(i108*4))]*v110.zzzz)+((pc2_h[(6+(i108*4))]*v110.yyyy)+(pc2_h[(5+(i108*4))]*v99.xxxx))));
				}
				if (((((((i108==0)&&(v104.x<(pc2_h[3].w+-1.000000e-03)))&&(v104.y<9.900000e-01))&&(v104.y>1.000000e-02))&&(v104.x>1.000000e-02))&&(v104.z<=9.999900e-01)))
				{
					i101 = (i101+(1<<i108));
					if ((f100>pc2_h[4].w))
					{
						f102 = clamp(((f100+(-pc2_h[4].w))/pc2_h[4].z),0.000000e+00,1.000000e+00);
					}
					else
					{
						break;
					}
				}
				if ((i108!=0))
				{
					i101 = (i101+(1<<i108));
				}
			}
			i108 = (i108+1);
		}
		int i111;
		i111 = (i101&1);
		int i112;
		i112 = (i101&2);
		if (((bool(i111)&&(v104.z>0.000000e+00))||(bool(i112)&&(v103.z>0.000000e+00))))
		{
			if ((i111>0))
			{
				f105 = (min(v104.z,9.999900e-01)+(-(f0*1.000000e-02)));
				highp vec2 v113;
				v113.xy = ((v104.xy*pc2_h[1].xy)+vec2(5.000000e-01,5.000000e-01));
				highp vec2 v114;
				v114.xy = (v113+(-floor(v113)));
				highp vec2 v115;
				v115.xy = (v104.xy+(-(v114*pc2_h[1].zw)));
				highp vec2 v116;
				v116.xy = (vec2(2.000000e+00,2.000000e+00)+(-v114));
				highp vec2 v117;
				v117.xy = ((1.0/(v116))*pc2_h[1].zw);
				highp vec2 v118;
				v118.xy = (vec2(1.000000e+00,1.000000e+00)+v114);
				highp vec2 v119;
				v119.xy = ((v114/v118)*pc2_h[1].zw);
				highp float f120;
				f120 = clamp((f105+(-(1.0/(f106)))),0.000000e+00,1.000000e+00);
				highp vec2 v121;
				v121.x = v119.x;
				v121.y = v117.y;
				highp vec2 v122;
				v122.x = v117.x;
				v122.y = v119.y;
				float h123;
				float h124;
				h124 = ((v116.x*v116.y)*float(textureLodOffset(ps5,vec3((v115+v117),f120),0.000000e+00,ivec2(-1,-1))));
				float h125;
				h125 = ((v118.x*v116.y)*float(textureLodOffset(ps5,vec3((v115+v121),f120),0.000000e+00,ivec2(1,-1))));
				float h126;
				h126 = ((v116.x*v118.y)*float(textureLodOffset(ps5,vec3((v115+v122),f120),0.000000e+00,ivec2(-1,1))));
				float h127;
				h127 = ((v118.x*v118.y)*float(textureLodOffset(ps5,vec3((v115+v119),f120),0.000000e+00,ivec2(1,1))));
				h123 = ((((h124+h125)+h126)+h127)/9.000000e+00);
				highp float f128;
				highp float f129;
				highp float f130;
				f130 = h123;
				f129 = ((1.000000e+00+(-f102))*f130);
				highp float f131;
				highp float f132;
				f132 = h123;
				f131 = f132;
				f128 = ((f102>=0.000000e+00))?(f129):(f131);
				float h133;
				h133 = f128;
				h107 = h133;
			}
			if ((i112>0))
			{
				f105 = (min(v103.z,9.999900e-01)+(-(f0*1.000000e-02)));
				highp vec2 v134;
				v134.xy = ((v103.xy*pc2_h[1].xy)+vec2(5.000000e-01,5.000000e-01));
				highp vec2 v135;
				v135.xy = (v134+(-floor(v134)));
				highp vec2 v136;
				v136.xy = (v103.xy+(-(v135*pc2_h[1].zw)));
				highp vec2 v137;
				v137.xy = (vec2(2.000000e+00,2.000000e+00)+(-v135));
				highp vec2 v138;
				v138.xy = ((1.0/(v137))*pc2_h[1].zw);
				highp vec2 v139;
				v139.xy = (vec2(1.000000e+00,1.000000e+00)+v135);
				highp vec2 v140;
				v140.xy = ((v135/v139)*pc2_h[1].zw);
				highp float f141;
				f141 = clamp((f105+(-(1.0/(f106)))),0.000000e+00,1.000000e+00);
				highp vec2 v142;
				v142.x = v140.x;
				v142.y = v138.y;
				highp vec2 v143;
				v143.x = v138.x;
				v143.y = v140.y;
				float h144;
				float h145;
				h145 = ((v137.x*v137.y)*float(textureLodOffset(ps5,vec3((v136+v138),f141),0.000000e+00,ivec2(-1,-1))));
				float h146;
				h146 = ((v139.x*v137.y)*float(textureLodOffset(ps5,vec3((v136+v142),f141),0.000000e+00,ivec2(1,-1))));
				float h147;
				h147 = ((v137.x*v139.y)*float(textureLodOffset(ps5,vec3((v136+v143),f141),0.000000e+00,ivec2(-1,1))));
				float h148;
				h148 = ((v139.x*v139.y)*float(textureLodOffset(ps5,vec3((v136+v140),f141),0.000000e+00,ivec2(1,1))));
				h144 = ((((h145+h146)+h147)+h148)/9.000000e+00);
				highp float f149;
				highp float f150;
				highp float f151;
				f151 = h144;
				f150 = (f102*f151);
				highp float f152;
				highp float f153;
				f153 = h144;
				f152 = f153;
				f149 = ((f102>=0.000000e+00))?(f150):(f152);
				float h154;
				h154 = f149;
				h107 = (h107+h154);
			}
			highp float f155;
			f155 = clamp(((f100*pc2_h[2].x)+pc2_h[2].y),0.000000e+00,1.000000e+00);
			highp float f156;
			f156 = h107;
			float h157;
			h157 = mix(f156,1.000000e+00,(f155*f155));
			h107 = h157;
		}
		else
		{
			h107 = 1.000000e+00;
		}
		h15 = h107;
	}
	uvec3 v158;
	highp vec2 v159;
	v159.xy = pc0_m[0].xy;
	v158.xy = (uvec2((gl_FragCoord.xy+(-v159)))>>uvec2(u9));
	float h160;
	h160 = v12.w;
	float h161;
	h161 = pc1_h[1].x;
	float h162;
	h162 = pc1_h[1].y;
	float h163;
	h163 = pc1_h[1].z;
	float h164;
	h164 = pc1_h[0].z;
	v158.z = uint(clamp((log2(((h160*h161)+h162))*h163),0.000000e+00,(h164+-1.000000e+00)));
	highp vec3 v165;
	v165.xyz = vec3(v158);
	uint u166;
	u166 = uint(texelFetch(ps0,int(uint(((((v165.z*pc1_h[0].y)+v165.y)*pc1_h[0].x)+v165.x)))).x);
	v14.xyzw = vec4(0.000000e+00,1.000000e+00,0.000000e+00,0.000000e+00);
	v14.x = pc2_h[4].x;
	v14.y = pc2_h[4].y;
	if (bool((u166&u4)))
	{
		highp float f167;
		highp float f168;
		f168 = h15;
		f167 = f168;
		highp float f169;
		f169 = v14.x;
		highp float f170;
		f170 = v14.y;
		vec3 v171;
		v171.xyz = v98;
		highp vec3 v172;
		v172.xyz = vec3(0.000000e+00,0.000000e+00,0.000000e+00);
		uint u173;
		float h174;
		uint u175;
		u175 = uint(pc6_h[3].w);
		h174 = 1.000000e+00;
		u173 = 0u;
		if (((u175&4u)==4u))
		{
			uint u176;
			u173 = 1u;
			u176 = 0u;
			if (((u175&1u)==1u))
			{
				highp vec3 v177;
				v177.xyz = (v27+(-pc6_h[0].xyz));
				highp vec3 v178;
				v178.xyz = abs(v177);
				highp float f179;
				f179 = max(max(v178.x,v178.y),v178.z);
				bool b180;
				b180 = (f179==v178.x);
				bool b181;
				b181 = (!(b180)&&(f179==v178.y));
				bool b182;
				b182 = (!(b180)&&!(b181));
				u176 = ((uint(int((b180&&(f179==v177.x))))+uint(((2*int(b181))+int((b181&&(f179==v177.y))))))+uint(((4*int(b182))+int((b182&&(f179==v177.z))))));
			}
			highp vec4 v183;
			v183.xyzw = (pc6_h[int((13u+(u176*4u)))]+((pc6_h[int((12u+(u176*4u)))]*v27.zzzz)+((pc6_h[int((11u+(u176*4u)))]*v27.yyyy)+(pc6_h[int((10u+(u176*4u)))]*v27.xxxx))));
			highp vec2 v184;
			v184.xy = (v183.xy/v183.ww);
			highp vec4 v185;
			v185.xyzw = pc6_h[int((4u+u176))];
			highp vec4 v186;
			v186.xyzw = pc6_h[int((4u+u176))];
			if (all(bvec2(uvec2(greaterThanEqual(v184,v185.xy))*uvec2(lessThanEqual(v184,v186.zw)))))
			{
				highp float f187;
				f187 = min(v183.z,9.999900e-01);
				float h188;
				highp vec2 v189;
				v189.xy = (v184*pc0_h[2].xy);
				highp vec2 v190;
				v190.xy = fract(v189);
				highp vec2 v191;
				v191.xy = ((floor(v189)+vec2(5.000000e-01,5.000000e-01))*pc0_h[2].zw);
				vec4 v192;
				float h193;
				float h194;
				h194 = pc6_h[3].z;
				h193 = h194;
				highp float f195;
				f195 = h193;
				highp float f196;
				f196 = h193;
				vec4 v197;
				v197.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(-2,-2))*vec4(f195))+(-vec4(((f187*f196)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v192.xyzw = v197;
				vec4 v198;
				float h199;
				float h200;
				h200 = pc6_h[3].z;
				h199 = h200;
				highp float f201;
				f201 = h199;
				highp float f202;
				f202 = h199;
				vec4 v203;
				v203.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(0,-2))*vec4(f201))+(-vec4(((f187*f202)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v198.xyzw = v203;
				vec4 v204;
				float h205;
				float h206;
				h206 = pc6_h[3].z;
				h205 = h206;
				highp float f207;
				f207 = h205;
				highp float f208;
				f208 = h205;
				vec4 v209;
				v209.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(2,-2))*vec4(f207))+(-vec4(((f187*f208)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v204.xyzw = v209;
				vec2 v210;
				vec2 v211;
				v211.xy = v190;
				v210.xy = v211;
				float h212;
				h212 = ((((((v192.w*(1.000000e+00+(-v210.x)))+v192.z)+v198.w)+v198.z)+v204.w)+(v204.z*v210.x));
				vec2 v213;
				v213.x = h212;
				v213.y = ((((((v192.x*(1.000000e+00+(-v210.x)))+v192.y)+v198.x)+v198.y)+v204.x)+(v204.y*v210.x));
				highp float f214;
				f214 = h212;
				highp float f215;
				f215 = v213.y;
				float h216;
				h216 = ((f214*(1.000000e+00+(-v190.y)))+f215);
				h188 = h216;
				vec4 v217;
				float h218;
				float h219;
				h219 = pc6_h[3].z;
				h218 = h219;
				highp float f220;
				f220 = h218;
				highp float f221;
				f221 = h218;
				vec4 v222;
				v222.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(-2,0))*vec4(f220))+(-vec4(((f187*f221)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v217.xyzw = v222;
				vec4 v223;
				float h224;
				float h225;
				h225 = pc6_h[3].z;
				h224 = h225;
				highp float f226;
				f226 = h224;
				highp float f227;
				f227 = h224;
				vec4 v228;
				v228.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(0,0))*vec4(f226))+(-vec4(((f187*f227)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v223.xyzw = v228;
				vec4 v229;
				float h230;
				float h231;
				h231 = pc6_h[3].z;
				h230 = h231;
				highp float f232;
				f232 = h230;
				highp float f233;
				f233 = h230;
				vec4 v234;
				v234.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(2,0))*vec4(f232))+(-vec4(((f187*f233)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v229.xyzw = v234;
				vec2 v235;
				vec2 v236;
				v236.xy = v190;
				v235.xy = v236;
				float h237;
				h237 = ((((((v217.w*(1.000000e+00+(-v235.x)))+v217.z)+v223.w)+v223.z)+v229.w)+(v229.z*v235.x));
				vec2 v238;
				v238.x = h237;
				v238.y = ((((((v217.x*(1.000000e+00+(-v235.x)))+v217.y)+v223.x)+v223.y)+v229.x)+(v229.y*v235.x));
				h188 = (h188+(h237+v238.y));
				vec4 v239;
				float h240;
				float h241;
				h241 = pc6_h[3].z;
				h240 = h241;
				highp float f242;
				f242 = h240;
				highp float f243;
				f243 = h240;
				vec4 v244;
				v244.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(-2,2))*vec4(f242))+(-vec4(((f187*f243)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v239.xyzw = v244;
				vec4 v245;
				float h246;
				float h247;
				h247 = pc6_h[3].z;
				h246 = h247;
				highp float f248;
				f248 = h246;
				highp float f249;
				f249 = h246;
				vec4 v250;
				v250.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(0,2))*vec4(f248))+(-vec4(((f187*f249)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v245.xyzw = v250;
				vec4 v251;
				float h252;
				float h253;
				h253 = pc6_h[3].z;
				h252 = h253;
				highp float f254;
				f254 = h252;
				highp float f255;
				f255 = h252;
				vec4 v256;
				v256.xyzw = clamp(((textureGatherOffset(ps7,v191,ivec2(2,2))*vec4(f254))+(-vec4(((f187*f255)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v251.xyzw = v256;
				vec2 v257;
				vec2 v258;
				v258.xy = v190;
				v257.xy = v258;
				float h259;
				h259 = ((((((v239.w*(1.000000e+00+(-v257.x)))+v239.z)+v245.w)+v245.z)+v251.w)+(v251.z*v257.x));
				vec2 v260;
				v260.x = h259;
				v260.y = ((((((v239.x*(1.000000e+00+(-v257.x)))+v239.y)+v245.x)+v245.y)+v251.x)+(v251.y*v257.x));
				float h261;
				highp float f262;
				f262 = v260.y;
				highp float f263;
				f263 = h259;
				float h264;
				h264 = (f263+(f262*v190.y));
				h261 = (h188+h264);
				h188 = h261;
				highp float f265;
				highp float f266;
				f266 = clamp((4.000000e-02*h261),0.000000e+00,1.000000e+00);
				f265 = f266;
				highp float f267;
				f267 = 1.000000e+00;
				highp float f268;
				f268 = 1.000000e+00;
				float h269;
				h269 = mix(f267,(f265*f265),f268);
				h174 = h269;
			}
		}
		if (((u175&3u)!=0u))
		{
			highp float f270;
			highp vec3 v271;
			v271.xyz = (pc6_h[0].xyz+(-v27));
			highp vec3 v272;
			v272.xyz = normalize(v271);
			vec3 v273;
			vec3 v274;
			v274.xyz = normalize((v28+v272));
			v273.xyz = v274;
			float h275;
			highp vec3 v276;
			v276.xyz = v59;
			float h277;
			h277 = dot(v276,v272);
			h275 = h277;
			float h278;
			highp vec3 v279;
			v279.xyz = v29;
			float h280;
			h280 = dot(v279,v272);
			h278 = max(0.000000e+00,h280);
			float h281;
			h281 = max(0.000000e+00,dot(v29,v273));
			if ((pc6_h[1].w==0.000000e+00))
			{
				highp float f282;
				f282 = dot(v271,v271);
				highp float f283;
				f283 = (f282*(pc6_h[0].w*pc6_h[0].w));
				highp float f284;
				f284 = clamp((1.000000e+00+(-(f283*f283))),0.000000e+00,1.000000e+00);
				f270 = ((1.0/((f282+1.000000e+00)))*(f284*f284));
			}
			else
			{
				highp vec3 v285;
				v285.xyz = (v271*pc6_h[0].www);
				f270 = pow((1.000000e+00+(-clamp(dot(v285,v285),0.000000e+00,1.000000e+00))),pc6_h[1].w);
			}
			if (((u175&2u)==2u))
			{
				highp float f286;
				f286 = clamp(((dot(v272,(-(-pc6_h[2].xyz)))+(-pc6_h[3].x))*pc6_h[3].y),0.000000e+00,1.000000e+00);
				f270 = (f270*(f286*f286));
			}
			highp float f287;
			highp float f288;
			f288 = h174;
			f287 = (f270*f288);
			f270 = f287;
			highp float f289;
			f289 = mix((f167+f170),f167,f167);
			highp float f290;
			f290 = ((!(bool(u173))&&(f169>0.000000e+00)))?(f289):(1.000000e+00);
			highp float f291;
			f291 = (f287*min(1.000000e+00,f290));
			f270 = f291;
			highp float f292;
			f292 = h278;
			highp float f293;
			f293 = 3.183099e-01;
			v172.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),((vec3((f292*f291))*pc6_h[1].xyz)*vec3(f293)));
			vec2 v294;
			v294.x = clamp(((h275*5.000000e-01)+5.000000e-01),0.000000e+00,1.000000e+00);
			v294.y = h79;
			highp vec3 v295;
			highp vec3 v296;
			v296.xyz = cross(v29,v273);
			v295.xyz = v296;
			float h297;
			h297 = (h78*h78);
			float h298;
			h298 = (h281*h297);
			float h299;
			highp float f300;
			f300 = (h298*h298);
			highp float f301;
			f301 = h297;
			float h302;
			h302 = (f301/(dot(v295,v295)+f300));
			h299 = h302;
			highp float f303;
			f303 = 3.141593e+00;
			highp vec3 v304;
			v304.xyz = (v80*vec3((h278*(((h78*2.500000e-01)+2.500000e-01)*min((h299*h299),h11)))));
			highp vec2 v305;
			v305.xy = v294;
			highp float f306;
			f306 = 0.000000e+00;
			highp vec3 v307;
			v307.xyz = (textureLod(ps6,v305,f306).xyz*v76);
			vec3 v308;
			v308.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(((vec3(f291)*pc6_h[1].xyz)*vec3((1.0/(f303))))*((v304*pc6_h[2].www)+v307)));
			v171.xyz = (v98+v308);
		}
		v17.xyz = v171;
		v16.xyz = v172;
	}
	if ((bool((u166&u5))&&(i2>1)))
	{
		highp float f309;
		highp float f310;
		f310 = h15;
		f309 = f310;
		highp float f311;
		f311 = v14.x;
		highp float f312;
		f312 = v14.y;
		vec3 v313;
		v313.xyz = v17;
		highp vec3 v314;
		v314.xyz = v16;
		uint u315;
		float h316;
		uint u317;
		u317 = uint(pc5_h[3].w);
		h316 = 1.000000e+00;
		u315 = 0u;
		if (((u317&4u)==4u))
		{
			uint u318;
			u315 = 1u;
			u318 = 0u;
			if (((u317&1u)==1u))
			{
				highp vec3 v319;
				v319.xyz = (v27+(-pc5_h[0].xyz));
				highp vec3 v320;
				v320.xyz = abs(v319);
				highp float f321;
				f321 = max(max(v320.x,v320.y),v320.z);
				bool b322;
				b322 = (f321==v320.x);
				bool b323;
				b323 = (!(b322)&&(f321==v320.y));
				bool b324;
				b324 = (!(b322)&&!(b323));
				u318 = ((uint(int((b322&&(f321==v319.x))))+uint(((2*int(b323))+int((b323&&(f321==v319.y))))))+uint(((4*int(b324))+int((b324&&(f321==v319.z))))));
			}
			highp vec4 v325;
			v325.xyzw = (pc5_h[int((13u+(u318*4u)))]+((pc5_h[int((12u+(u318*4u)))]*v27.zzzz)+((pc5_h[int((11u+(u318*4u)))]*v27.yyyy)+(pc5_h[int((10u+(u318*4u)))]*v27.xxxx))));
			highp vec2 v326;
			v326.xy = (v325.xy/v325.ww);
			highp vec4 v327;
			v327.xyzw = pc5_h[int((4u+u318))];
			highp vec4 v328;
			v328.xyzw = pc5_h[int((4u+u318))];
			if (all(bvec2(uvec2(greaterThanEqual(v326,v327.xy))*uvec2(lessThanEqual(v326,v328.zw)))))
			{
				highp vec2 v329;
				v329.xy = (v326*pc0_h[2].xy);
				vec4 v330;
				float h331;
				float h332;
				h332 = pc5_h[3].z;
				h331 = h332;
				highp float f333;
				f333 = h331;
				highp float f334;
				f334 = h331;
				vec4 v335;
				v335.xyzw = clamp(((textureGatherOffset(ps7,((floor(v329)+vec2(5.000000e-01,5.000000e-01))*pc0_h[2].zw),ivec2(0,0))*vec4(f333))+(-vec4(((min(v325.z,9.999900e-01)*f334)+-1.000000e+00)))),vec4(0.000000e+00,0.000000e+00,0.000000e+00,0.000000e+00),vec4(1.000000e+00,1.000000e+00,1.000000e+00,1.000000e+00));
				v330.xyzw = v335;
				vec2 v336;
				vec2 v337;
				v337.xy = fract(v329);
				v336.xy = v337;
				vec2 v338;
				v338.xy = mix(v330.wx,v330.zy,v336.xx);
				highp float f339;
				highp float f340;
				f340 = clamp(mix(v338.x,v338.y,v336.y),0.000000e+00,1.000000e+00);
				f339 = f340;
				highp float f341;
				f341 = 1.000000e+00;
				highp float f342;
				f342 = 1.000000e+00;
				float h343;
				h343 = mix(f341,(f339*f339),f342);
				h316 = h343;
			}
		}
		if (((u317&3u)!=0u))
		{
			highp float f344;
			highp vec3 v345;
			v345.xyz = (pc5_h[0].xyz+(-v27));
			highp vec3 v346;
			v346.xyz = normalize(v345);
			vec3 v347;
			vec3 v348;
			v348.xyz = normalize((v28+v346));
			v347.xyz = v348;
			float h349;
			highp vec3 v350;
			v350.xyz = v59;
			float h351;
			h351 = dot(v350,v346);
			h349 = h351;
			float h352;
			highp vec3 v353;
			v353.xyz = v29;
			float h354;
			h354 = dot(v353,v346);
			h352 = max(0.000000e+00,h354);
			float h355;
			h355 = max(0.000000e+00,dot(v29,v347));
			if ((pc5_h[1].w==0.000000e+00))
			{
				highp float f356;
				f356 = dot(v345,v345);
				highp float f357;
				f357 = (f356*(pc5_h[0].w*pc5_h[0].w));
				highp float f358;
				f358 = clamp((1.000000e+00+(-(f357*f357))),0.000000e+00,1.000000e+00);
				f344 = ((1.0/((f356+1.000000e+00)))*(f358*f358));
			}
			else
			{
				highp vec3 v359;
				v359.xyz = (v345*pc5_h[0].www);
				f344 = pow((1.000000e+00+(-clamp(dot(v359,v359),0.000000e+00,1.000000e+00))),pc5_h[1].w);
			}
			if (((u317&2u)==2u))
			{
				highp float f360;
				f360 = clamp(((dot(v346,(-(-pc5_h[2].xyz)))+(-pc5_h[3].x))*pc5_h[3].y),0.000000e+00,1.000000e+00);
				f344 = (f344*(f360*f360));
			}
			highp float f361;
			highp float f362;
			f362 = h316;
			f361 = (f344*f362);
			f344 = f361;
			highp float f363;
			f363 = mix((f309+f312),f309,f309);
			highp float f364;
			f364 = ((!(bool(u315))&&(f311>0.000000e+00)))?(f363):(1.000000e+00);
			highp float f365;
			f365 = (f361*min(1.000000e+00,f364));
			f344 = f365;
			highp float f366;
			f366 = h352;
			highp float f367;
			f367 = 3.183099e-01;
			v314.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(v16+((vec3((f366*f365))*pc5_h[1].xyz)*vec3(f367))));
			vec2 v368;
			v368.x = clamp(((h349*5.000000e-01)+5.000000e-01),0.000000e+00,1.000000e+00);
			v368.y = h79;
			highp vec3 v369;
			highp vec3 v370;
			v370.xyz = cross(v29,v347);
			v369.xyz = v370;
			float h371;
			h371 = (h78*h78);
			float h372;
			h372 = (h355*h371);
			float h373;
			highp float f374;
			f374 = (h372*h372);
			highp float f375;
			f375 = h371;
			float h376;
			h376 = (f375/(dot(v369,v369)+f374));
			h373 = h376;
			highp float f377;
			f377 = 3.141593e+00;
			highp vec3 v378;
			v378.xyz = (v80*vec3((h352*(((h78*2.500000e-01)+2.500000e-01)*min((h373*h373),h11)))));
			highp vec2 v379;
			v379.xy = v368;
			highp float f380;
			f380 = 0.000000e+00;
			highp vec3 v381;
			v381.xyz = (textureLod(ps6,v379,f380).xyz*v76);
			vec3 v382;
			v382.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(((vec3(f365)*pc5_h[1].xyz)*vec3((1.0/(f377))))*((v378*pc5_h[2].www)+v381)));
			v313.xyz = (v17+v382);
		}
		v17.xyz = v313;
		v16.xyz = v314;
	}
	if ((bool((u166&u6))&&(i2>2)))
	{
		highp float f383;
		highp float f384;
		f384 = h15;
		f383 = f384;
		highp float f385;
		f385 = v14.x;
		highp float f386;
		f386 = v14.y;
		vec3 v387;
		v387.xyz = v17;
		highp vec3 v388;
		v388.xyz = v16;
		uint u389;
		float h390;
		uint u391;
		u391 = uint(pc4_h[3].w);
		h390 = 1.000000e+00;
		u389 = 0u;
		if (((u391&4u)==4u))
		{
			uint u392;
			u389 = 1u;
			u392 = 0u;
			if (((u391&1u)==1u))
			{
				highp vec3 v393;
				v393.xyz = (v27+(-pc4_h[0].xyz));
				highp vec3 v394;
				v394.xyz = abs(v393);
				highp float f395;
				f395 = max(max(v394.x,v394.y),v394.z);
				bool b396;
				b396 = (f395==v394.x);
				bool b397;
				b397 = (!(b396)&&(f395==v394.y));
				bool b398;
				b398 = (!(b396)&&!(b397));
				u392 = ((uint(int((b396&&(f395==v393.x))))+uint(((2*int(b397))+int((b397&&(f395==v393.y))))))+uint(((4*int(b398))+int((b398&&(f395==v393.z))))));
			}
			highp vec4 v399;
			v399.xyzw = (pc4_h[int((13u+(u392*4u)))]+((pc4_h[int((12u+(u392*4u)))]*v27.zzzz)+((pc4_h[int((11u+(u392*4u)))]*v27.yyyy)+(pc4_h[int((10u+(u392*4u)))]*v27.xxxx))));
			highp vec2 v400;
			v400.xy = (v399.xy/v399.ww);
			highp vec4 v401;
			v401.xyzw = pc4_h[int((4u+u392))];
			highp vec4 v402;
			v402.xyzw = pc4_h[int((4u+u392))];
			if (all(bvec2(uvec2(greaterThanEqual(v400,v401.xy))*uvec2(lessThanEqual(v400,v402.zw)))))
			{
				highp float f403;
				highp float f404;
				f404 = 1.000000e+00;
				f403 = f404;
				highp float f405;
				f405 = 1.000000e+00;
				highp float f406;
				f406 = 1.000000e+00;
				float h407;
				h407 = mix(f405,(f403*f403),f406);
				h390 = h407;
			}
		}
		if (((u391&3u)!=0u))
		{
			highp float f408;
			highp vec3 v409;
			v409.xyz = (pc4_h[0].xyz+(-v27));
			highp vec3 v410;
			v410.xyz = normalize(v409);
			vec3 v411;
			vec3 v412;
			v412.xyz = normalize((v28+v410));
			v411.xyz = v412;
			float h413;
			highp vec3 v414;
			v414.xyz = v59;
			float h415;
			h415 = dot(v414,v410);
			h413 = h415;
			float h416;
			highp vec3 v417;
			v417.xyz = v29;
			float h418;
			h418 = dot(v417,v410);
			h416 = max(0.000000e+00,h418);
			float h419;
			h419 = max(0.000000e+00,dot(v29,v411));
			if ((pc4_h[1].w==0.000000e+00))
			{
				highp float f420;
				f420 = dot(v409,v409);
				highp float f421;
				f421 = (f420*(pc4_h[0].w*pc4_h[0].w));
				highp float f422;
				f422 = clamp((1.000000e+00+(-(f421*f421))),0.000000e+00,1.000000e+00);
				f408 = ((1.0/((f420+1.000000e+00)))*(f422*f422));
			}
			else
			{
				highp vec3 v423;
				v423.xyz = (v409*pc4_h[0].www);
				f408 = pow((1.000000e+00+(-clamp(dot(v423,v423),0.000000e+00,1.000000e+00))),pc4_h[1].w);
			}
			if (((u391&2u)==2u))
			{
				highp float f424;
				f424 = clamp(((dot(v410,(-(-pc4_h[2].xyz)))+(-pc4_h[3].x))*pc4_h[3].y),0.000000e+00,1.000000e+00);
				f408 = (f408*(f424*f424));
			}
			highp float f425;
			highp float f426;
			f426 = h390;
			f425 = (f408*f426);
			f408 = f425;
			highp float f427;
			f427 = mix((f383+f386),f383,f383);
			highp float f428;
			f428 = ((!(bool(u389))&&(f385>0.000000e+00)))?(f427):(1.000000e+00);
			highp float f429;
			f429 = (f425*min(1.000000e+00,f428));
			f408 = f429;
			highp float f430;
			f430 = h416;
			highp float f431;
			f431 = 3.183099e-01;
			v388.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(v16+((vec3((f430*f429))*pc4_h[1].xyz)*vec3(f431))));
			vec2 v432;
			v432.x = clamp(((h413*5.000000e-01)+5.000000e-01),0.000000e+00,1.000000e+00);
			v432.y = h79;
			highp vec3 v433;
			highp vec3 v434;
			v434.xyz = cross(v29,v411);
			v433.xyz = v434;
			float h435;
			h435 = (h78*h78);
			float h436;
			h436 = (h419*h435);
			float h437;
			highp float f438;
			f438 = (h436*h436);
			highp float f439;
			f439 = h435;
			float h440;
			h440 = (f439/(dot(v433,v433)+f438));
			h437 = h440;
			highp float f441;
			f441 = 3.141593e+00;
			highp vec3 v442;
			v442.xyz = (v80*vec3((h416*(((h78*2.500000e-01)+2.500000e-01)*min((h437*h437),h11)))));
			highp vec2 v443;
			v443.xy = v432;
			highp float f444;
			f444 = 0.000000e+00;
			highp vec3 v445;
			v445.xyz = (textureLod(ps6,v443,f444).xyz*v76);
			vec3 v446;
			v446.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(((vec3(f429)*pc4_h[1].xyz)*vec3((1.0/(f441))))*((v442*pc4_h[2].www)+v445)));
			v387.xyz = (v17+v446);
		}
		v17.xyz = v387;
		v16.xyz = v388;
	}
	if ((bool((u166&u7))&&(i2>3)))
	{
		highp float f447;
		highp float f448;
		f448 = h15;
		f447 = f448;
		highp float f449;
		f449 = v14.x;
		highp float f450;
		f450 = v14.y;
		vec3 v451;
		v451.xyz = v17;
		highp vec3 v452;
		v452.xyz = v16;
		uint u453;
		float h454;
		uint u455;
		u455 = uint(pc3_h[3].w);
		h454 = 1.000000e+00;
		u453 = 0u;
		if (((u455&4u)==4u))
		{
			uint u456;
			u453 = 1u;
			u456 = 0u;
			if (((u455&1u)==1u))
			{
				highp vec3 v457;
				v457.xyz = (v27+(-pc3_h[0].xyz));
				highp vec3 v458;
				v458.xyz = abs(v457);
				highp float f459;
				f459 = max(max(v458.x,v458.y),v458.z);
				bool b460;
				b460 = (f459==v458.x);
				bool b461;
				b461 = (!(b460)&&(f459==v458.y));
				bool b462;
				b462 = (!(b460)&&!(b461));
				u456 = ((uint(int((b460&&(f459==v457.x))))+uint(((2*int(b461))+int((b461&&(f459==v457.y))))))+uint(((4*int(b462))+int((b462&&(f459==v457.z))))));
			}
			highp vec4 v463;
			v463.xyzw = (pc3_h[int((13u+(u456*4u)))]+((pc3_h[int((12u+(u456*4u)))]*v27.zzzz)+((pc3_h[int((11u+(u456*4u)))]*v27.yyyy)+(pc3_h[int((10u+(u456*4u)))]*v27.xxxx))));
			highp vec2 v464;
			v464.xy = (v463.xy/v463.ww);
			highp vec4 v465;
			v465.xyzw = pc3_h[int((4u+u456))];
			highp vec4 v466;
			v466.xyzw = pc3_h[int((4u+u456))];
			if (all(bvec2(uvec2(greaterThanEqual(v464,v465.xy))*uvec2(lessThanEqual(v464,v466.zw)))))
			{
				highp float f467;
				highp float f468;
				f468 = 1.000000e+00;
				f467 = f468;
				highp float f469;
				f469 = 1.000000e+00;
				highp float f470;
				f470 = 1.000000e+00;
				float h471;
				h471 = mix(f469,(f467*f467),f470);
				h454 = h471;
			}
		}
		if (((u455&3u)!=0u))
		{
			highp float f472;
			highp vec3 v473;
			v473.xyz = (pc3_h[0].xyz+(-v27));
			highp vec3 v474;
			v474.xyz = normalize(v473);
			vec3 v475;
			vec3 v476;
			v476.xyz = normalize((v28+v474));
			v475.xyz = v476;
			float h477;
			highp vec3 v478;
			v478.xyz = v59;
			float h479;
			h479 = dot(v478,v474);
			h477 = h479;
			float h480;
			highp vec3 v481;
			v481.xyz = v29;
			float h482;
			h482 = dot(v481,v474);
			h480 = max(0.000000e+00,h482);
			float h483;
			h483 = max(0.000000e+00,dot(v29,v475));
			if ((pc3_h[1].w==0.000000e+00))
			{
				highp float f484;
				f484 = dot(v473,v473);
				highp float f485;
				f485 = (f484*(pc3_h[0].w*pc3_h[0].w));
				highp float f486;
				f486 = clamp((1.000000e+00+(-(f485*f485))),0.000000e+00,1.000000e+00);
				f472 = ((1.0/((f484+1.000000e+00)))*(f486*f486));
			}
			else
			{
				highp vec3 v487;
				v487.xyz = (v473*pc3_h[0].www);
				f472 = pow((1.000000e+00+(-clamp(dot(v487,v487),0.000000e+00,1.000000e+00))),pc3_h[1].w);
			}
			if (((u455&2u)==2u))
			{
				highp float f488;
				f488 = clamp(((dot(v474,(-(-pc3_h[2].xyz)))+(-pc3_h[3].x))*pc3_h[3].y),0.000000e+00,1.000000e+00);
				f472 = (f472*(f488*f488));
			}
			highp float f489;
			highp float f490;
			f490 = h454;
			f489 = (f472*f490);
			f472 = f489;
			highp float f491;
			f491 = mix((f447+f450),f447,f447);
			highp float f492;
			f492 = ((!(bool(u453))&&(f449>0.000000e+00)))?(f491):(1.000000e+00);
			highp float f493;
			f493 = (f489*min(1.000000e+00,f492));
			f472 = f493;
			highp float f494;
			f494 = h480;
			highp float f495;
			f495 = 3.183099e-01;
			v452.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(v16+((vec3((f494*f493))*pc3_h[1].xyz)*vec3(f495))));
			vec2 v496;
			v496.x = clamp(((h477*5.000000e-01)+5.000000e-01),0.000000e+00,1.000000e+00);
			v496.y = h79;
			highp vec3 v497;
			highp vec3 v498;
			v498.xyz = cross(v29,v475);
			v497.xyz = v498;
			float h499;
			h499 = (h78*h78);
			float h500;
			h500 = (h483*h499);
			float h501;
			highp float f502;
			f502 = (h500*h500);
			highp float f503;
			f503 = h499;
			float h504;
			h504 = (f503/(dot(v497,v497)+f502));
			h501 = h504;
			highp float f505;
			f505 = 3.141593e+00;
			highp vec3 v506;
			v506.xyz = (v80*vec3((h480*(((h78*2.500000e-01)+2.500000e-01)*min((h501*h501),h11)))));
			highp vec2 v507;
			v507.xy = v496;
			highp float f508;
			f508 = 0.000000e+00;
			highp vec3 v509;
			v509.xyz = (textureLod(ps6,v507,f508).xyz*v76);
			vec3 v510;
			v510.xyz = min(vec3(6.500000e+04,6.500000e+04,6.500000e+04),(((vec3(f493)*pc3_h[1].xyz)*vec3((1.0/(f505))))*((v506*pc3_h[2].www)+v509)));
			v451.xyz = (v17+v510);
		}
		v17.xyz = v451;
		v16.xyz = v452;
	}
	v13.xyz = min(v13.xyz,vec3(6.500000e+04,6.500000e+04,6.500000e+04));
	out_Target0.xyzw = v13;
}

// Compiled by HLSLCC 0.73


Above two shaders have only a little difference at final four lines code around 'out_Target0', but first one has 36 byte stack spilling but the second one is false.
I can't figure out the how it works in stack spilling calculation, the only way to fix it is keeping try to modify my shader and test if again and again. Or delete a big chunk of core code in my shader which is unacceptable for sure.
Is there any way to know how to reduce the stack spilling accurately, perceptibly, not work with a black box?