uniform float2x2 testMatrix2x2;uniform float3x3 testMatrix3x3;uniform float4 testInputs;uniform half4 colorRed;uniform half4 colorGreen;uniform half unknownInput;bool a(){float2 e;float2 f;e=testInputs.xy;e=testInputs.xy;if(e!=testInputs.xy)return false;if(e!=testInputs.xy)return false;e=-testInputs.xy;e=-testInputs.xy;if(e!=-testInputs.xy)return false;f=0..xx;f=0..xx;return f==0..xx;}bool b(){float3 f;float3 g;f=testInputs.xyz;f=testInputs.xyz;if(f!=testInputs.xyz)return false;if(f!=testInputs.xyz)return false;f=-testInputs.xyz;f=-testInputs.xyz;if(f!=-testInputs.xyz)return false;g=0..xxx;g=0..xxx;return g==0..xxx;}bool c(){float4 g;float4 h;g=testInputs;g=testInputs;if(g!=testInputs)return false;if(g!=testInputs)return false;g=-testInputs;g=-testInputs;if(g!=-testInputs)return false;h=0..xxxx;h=0..xxxx;return h==0..xxxx;}bool d(){float2 h;float2 j=0..xx;j=0..xx;if(j!=0..xx)return false;h=1..xx*testMatrix2x2;if(h!=float2(3.,7.))return false;h=testMatrix2x2*1..xx;if(h!=float2(4.,6.))return false;h=-1..xx*testMatrix2x2;if(h!=float2(-3.,-7.))return false;h=testMatrix2x2*-1..xx;return h==float2(-4.,-6.);}bool e(){float3 j;float3 k=0..xxx;k=0..xxx;if(k!=0..xxx)return false;j=1..xxx*testMatrix3x3;if(j!=float3(6.,15.,24.))return false;j=testMatrix3x3*1..xxx;if(j!=float3(12.,15.,18.))return false;j=-1..xxx*testMatrix3x3;if(j!=float3(-6.,-15.,-24.))return false;j=testMatrix3x3*-1..xxx;return j==float3(-12.,-15.,-18.);}bool f(){float4x4 k=float4x4(testMatrix2x2[0],testMatrix2x2[1],testMatrix2x2[0],testMatrix2x2[1],testMatrix2x2[0],testMatrix2x2[1],testMatrix2x2[0],testMatrix2x2[1]);float4 l;float4 m=0..xxxx;m=0..xxxx;if(m!=0..xxxx)return false;l=1..xxxx*k;if(l!=10..xxxx)return false;l=k*1..xxxx;if(l!=float4(4.,8.,12.,16.))return false;l=-1..xxxx*k;if(l!=-10..xxxx)return false;l=k*-1..xxxx;return l==float4(-4.,-8.,-12.,-16.);}half4 main(float2 g){return((((a()&&b())&&c())&&d())&&e())&&f()?colorGreen:colorRed;}
