Geometry 0
Geometry 0
#define CITRA_GLES
#if defined(GL_ANDROID_extension_pack_es31a)
#extension GL_ANDROID_extension_pack_es31a : enable
#endif // defined(GL_ANDROID_extension_pack_es31a)
#if defined(GL_EXT_clip_cull_distance)
#extension GL_EXT_clip_cull_distance : enable
#endif // defined(GL_EXT_clip_cull_distance)
#define mul_s(x, y) (x * y)
#define fma_s(x, y, z) fma(x, y, z)
#define dot_s(x, y) dot(x, y)
#define dot_3(x, y) dot(x, y)
int vtx_idx = 0;
bool prim_emit = false;
bool winding = false;
void SetEmit(int i, bool p, bool w) {
vtx_idx = i;
prim_emit = p;
winding = w;
}
void Emit() {
gs_out_attr[vtx_idx] = vtx_regs;
if (prim_emit) {
if (winding) {
EmitPrim(1,0,2);
winding = false;
} else {
EmitPrim(0,1,2);
}
}
}
void main() {
ExecGS();
}
bvec2 bool_regs = bvec2(false);
ivec3 addr_regs = ivec3(0);
bool Gfn0();
bool Gfn6();
vec4 tmp_reg0;
vec4 tmp_reg1;
vec4 tmp_reg2;
vec4 tmp_reg3;
vec4 tmp_reg4;
vec4 tmp_reg5;
vec4 tmp_reg6;
vec4 tmp_reg7;
vec4 tmp_reg8;
vec4 tmp_reg9;
vec4 tmp_reg10;
vec4 tmp_reg11;
vec4 tmp_reg12;
vec4 tmp_reg13;
vec4 tmp_reg14;
vec4 tmp_reg15;
bool ExecGS() {tmp_reg0 = vec4(0, 0, 0, 1);
tmp_reg1 = vec4(0, 0, 0, 1);
tmp_reg2 = vec4(0, 0, 0, 1);
tmp_reg3 = vec4(0, 0, 0, 1);
tmp_reg4 = vec4(0, 0, 0, 1);
tmp_reg5 = vec4(0, 0, 0, 1);
tmp_reg6 = vec4(0, 0, 0, 1);
tmp_reg7 = vec4(0, 0, 0, 1);
tmp_reg8 = vec4(0, 0, 0, 1);
tmp_reg9 = vec4(0, 0, 0, 1);
tmp_reg10 = vec4(0, 0, 0, 1);
tmp_reg11 = vec4(0, 0, 0, 1);
tmp_reg12 = vec4(0, 0, 0, 1);
tmp_reg13 = vec4(0, 0, 0, 1);
tmp_reg14 = vec4(0, 0, 0, 1);
tmp_reg15 = vec4(0, 0, 0, 1);
Gfn0();
return true;
}
bool Gfn0() {
uint jmp_to = 88u;
while (true) {
switch (jmp_to) {
case 88u:
bool_regs = lessThan(gs_pica.f[82].zz, vs_out_reg3[0].ww);
if (bool_regs.x) {
jmp_to = 298u; break;
}
tmp_reg8.x = (vs_out_reg3[0].wwww).x;
tmp_reg9.x = (mul_s(gs_pica.f[80].zzzz, tmp_reg8.xxxx)).x;
tmp_reg9.x = (floor(tmp_reg9.xxxx)).x;
tmp_reg9.x = (mul_s(gs_pica.f[82].yyyy, tmp_reg9.xxxx)).x;
tmp_reg8.x = (tmp_reg8.xxxx + -tmp_reg9.xxxx).x;
tmp_reg9.y = (mul_s(gs_pica.f[81].yyyy, tmp_reg8.xxxx)).y;
tmp_reg9.y = (floor(tmp_reg9.yyyy)).y;
tmp_reg9.y = (mul_s(gs_pica.f[81].wwww, tmp_reg9.yyyy)).y;
tmp_reg8.x = (tmp_reg8.xxxx + -tmp_reg9.yyyy).x;
tmp_reg7.x = (tmp_reg8.xxxx).x;
tmp_reg7.y = (gs_pica.f[81].zzzz).y;
tmp_reg2.xy = (vs_out_reg2[0].xyyy).xy;
tmp_reg3.xy = (vs_out_reg2[0].zyyy).xy;
tmp_reg4.xy = (vs_out_reg2[0].xwww).xy;
tmp_reg5.xy = (vs_out_reg2[0].zwww).xy;
bool_regs = lessThan(gs_pica.f[81].xx, tmp_reg7.xy);
if (bool_regs.x) {
tmp_reg0.xy = (tmp_reg2.xyyy).xy;
tmp_reg2.xy = (tmp_reg3.xyyy).xy;
tmp_reg3.xy = (tmp_reg0.xyyy).xy;
tmp_reg0.xy = (tmp_reg4.xyyy).xy;
tmp_reg4.xy = (tmp_reg5.xyyy).xy;
tmp_reg5.xy = (tmp_reg0.xyyy).xy;
}
bool_regs = lessThan(gs_pica.f[81].xx, tmp_reg9.xy);
if (bool_regs.y) {
tmp_reg0.xy = (tmp_reg2.xyyy).xy;
tmp_reg2.xy = (tmp_reg4.xyyy).xy;
tmp_reg4.xy = (tmp_reg0.xyyy).xy;
tmp_reg0.xy = (tmp_reg3.xyyy).xy;
tmp_reg3.xy = (tmp_reg5.xyyy).xy;
tmp_reg5.xy = (tmp_reg0.xyyy).xy;
}
if (bool_regs.x) {
tmp_reg0.xy = (tmp_reg2.xyyy).xy;
tmp_reg2.xy = (tmp_reg4.xyyy).xy;
tmp_reg4.xy = (tmp_reg5.xyyy).xy;
tmp_reg5.xy = (tmp_reg3.xyyy).xy;
tmp_reg3.xy = (tmp_reg0.xyyy).xy;
}
tmp_reg7.xy = (tmp_reg2.xyyy).xy;
tmp_reg7.z = (tmp_reg3.xxxx).z;
tmp_reg7.w = (tmp_reg3.yyyy).w;
tmp_reg8.xy = (tmp_reg4.xyyy).xy;
tmp_reg8.z = (tmp_reg5.xxxx).z;
tmp_reg8.w = (tmp_reg5.yyyy).w;
tmp_reg6.xy = (tmp_reg15.zwww).xy;
bool_regs = lessThan(gs_pica.f[81].xx, tmp_reg6.xy);
if (bool_regs.y) {
jmp_to = 224u; break;
}
tmp_reg1.xy = (vs_out_reg3[0].xyyy).xy;
tmp_reg1.z = (mul_s(gs_pica.f[81].yyyy, vs_out_reg3[0].xxxx)).z;
tmp_reg1.w = (mul_s(gs_pica.f[81].yyyy, vs_out_reg3[0].yyyy)).w;
tmp_reg0.x = (vs_out_reg5[0].zzzz).x;
tmp_reg0.y = (vs_out_reg6[0].zzzz).y;
tmp_reg0.z = (vs_out_reg7[0].zzzz).z;
tmp_reg9.x = (mul_s(tmp_reg0.xxxx, vs_out_reg0[0].wwww)).x;
tmp_reg9.y = (mul_s(tmp_reg0.yyyy, vs_out_reg0[0].wwww)).y;
tmp_reg9.z = (mul_s(tmp_reg0.zzzz, vs_out_reg0[0].wwww)).z;
tmp_reg2.x = (vs_out_reg4[0].xxxx).x;
tmp_reg2.y = (vs_out_reg3[0].zzzz).y;
tmp_reg2.y = (tmp_reg2.yyyy + vs_out_reg4[0].zzzz).y;
tmp_reg3.x = rcp_s(gs_pica.f[80].x);
tmp_reg3.x = (mul_s(tmp_reg2.yyyy, tmp_reg3.xxxx)).x;
tmp_reg3.x = (floor(tmp_reg3.xxxx)).x;
tmp_reg3.x = (mul_s(gs_pica.f[80].xxxx, tmp_reg3.xxxx)).x;
tmp_reg2.y = (tmp_reg2.yyyy + -tmp_reg3.xxxx).y;
tmp_reg2.y = (-gs_pica.f[80].yyyy + tmp_reg2.yyyy).y;
tmp_reg3 = gs_pica.f[95];
tmp_reg4 = gs_pica.f[94];
tmp_reg0.z = (mul_s(tmp_reg2.yyyy, tmp_reg2.yyyy)).z;
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg3.xyyy, tmp_reg3.zwww)).xy;
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg0.xyyy, tmp_reg4.xyyy)).xy;
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg0.xyyy, tmp_reg4.zwww)).xy;
tmp_reg3 = gs_pica.f[93];
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg0.xyyy, tmp_reg3.xyyy)).xy;
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg0.xyyy, tmp_reg3.zwww)).xy;
tmp_reg0.y = (mul_s(tmp_reg0.yyyy, tmp_reg2.yyyy)).y;
tmp_reg0.xy = (mul_s(-gs_pica.f[81].zzzz, tmp_reg0.xyyy)).xy;
bool_regs = lessThan(gs_pica.f[81].xx, tmp_reg10.zz);
if (bool_regs.x) {
tmp_reg3.xy = (tmp_reg10.xyyy).xy;
tmp_reg3.z = (tmp_reg1.xxxx + -tmp_reg10.xxxx).z;
tmp_reg3.w = (tmp_reg1.yyyy + -tmp_reg10.yyyy).w;
tmp_reg3 = mul_s(tmp_reg3, tmp_reg2.xxxx);
tmp_reg3.x = (mul_s(tmp_reg3.xxxx, vs_out_reg4[0].yyyy)).x;
tmp_reg3.z = (mul_s(tmp_reg3.zzzz, vs_out_reg4[0].yyyy)).z;
} else {
tmp_reg3.x = (tmp_reg1.zzzz).x;
tmp_reg3.y = (tmp_reg1.wwww).y;
tmp_reg3.z = (tmp_reg1.zzzz).z;
tmp_reg3.w = (tmp_reg1.wwww).w;
tmp_reg3 = mul_s(tmp_reg3, tmp_reg2.xxxx);
tmp_reg3.xz = (mul_s(tmp_reg3.xzzz, vs_out_reg4[0].yyyy)).xz;
}
tmp_reg10 = tmp_reg0.xyxy;
tmp_reg2 = -tmp_reg3.xwxw;
tmp_reg4 = mul_s(tmp_reg2, tmp_reg10.xxyy);
tmp_reg2.x = (tmp_reg4.zzzz + -tmp_reg4.yyyy).x;
tmp_reg2.y = (tmp_reg4.xxxx + tmp_reg4.wwww).y;
tmp_reg2.zw = (gs_pica.f[81].xxxx).zw;
Gfn6();
vtx_regs[1] = vs_out_reg1[0];
vtx_regs[2].xy = (tmp_reg7.xyyy).xy;
SetEmit(0, false, false);
Emit();
tmp_reg2.xz = (tmp_reg3.zzzz).xz;
tmp_reg2.yw = (-tmp_reg3.wwww).yw;
tmp_reg4 = mul_s(tmp_reg2, tmp_reg10.xxyy);
tmp_reg2.x = (tmp_reg4.zzzz + -tmp_reg4.yyyy).x;
tmp_reg2.y = (tmp_reg4.xxxx + tmp_reg4.wwww).y;
tmp_reg2.zw = (gs_pica.f[81].xxxx).zw;
Gfn6();
vtx_regs[1] = vs_out_reg1[0];
vtx_regs[2].xy = (tmp_reg7.zwww).xy;
SetEmit(1, false, false);
Emit();
tmp_reg2.xz = (-tmp_reg3.xxxx).xz;
tmp_reg2.yw = (tmp_reg3.yyyy).yw;
tmp_reg4 = mul_s(tmp_reg2, tmp_reg10.xxyy);
tmp_reg2.x = (tmp_reg4.zzzz + -tmp_reg4.yyyy).x;
tmp_reg2.y = (tmp_reg4.xxxx + tmp_reg4.wwww).y;
tmp_reg2.zw = (gs_pica.f[81].xxxx).zw;
Gfn6();
vtx_regs[1] = vs_out_reg1[0];
vtx_regs[2].xy = (tmp_reg8.xyyy).xy;
SetEmit(2, true, false);
Emit();
tmp_reg2 = tmp_reg3.zyzy;
tmp_reg4 = mul_s(tmp_reg2, tmp_reg10.xxyy);
tmp_reg2.x = (tmp_reg4.zzzz + -tmp_reg4.yyyy).x;
tmp_reg2.y = (tmp_reg4.xxxx + tmp_reg4.wwww).y;
tmp_reg2.zw = (gs_pica.f[81].xxxx).zw;
Gfn6();
vtx_regs[1] = vs_out_reg1[0];
vtx_regs[2].xy = (tmp_reg8.zwww).xy;
SetEmit(0, true, true);
Emit();
return true;
case 224u:
tmp_reg1.xy = (-tmp_reg10.xyyy).xy;
tmp_reg1.z = (tmp_reg15.xxxx + -tmp_reg10.xxxx).z;
tmp_reg1.w = (tmp_reg15.yyyy + -tmp_reg10.yyyy).w;
tmp_reg9.x = (tmp_reg10.wwww).x;
tmp_reg2.y = (tmp_reg15.zzzz).y;
tmp_reg2.y = (tmp_reg2.yyyy + vs_out_reg4[0].zzzz).y;
tmp_reg3.x = rcp_s(gs_pica.f[80].x);
tmp_reg3.x = (mul_s(tmp_reg2.yyyy, tmp_reg3.xxxx)).x;
tmp_reg3.x = (floor(tmp_reg3.xxxx)).x;
tmp_reg3.x = (mul_s(gs_pica.f[80].xxxx, tmp_reg3.xxxx)).x;
tmp_reg2.y = (tmp_reg2.yyyy + -tmp_reg3.xxxx).y;
tmp_reg2.y = (-gs_pica.f[80].yyyy + tmp_reg2.yyyy).y;
tmp_reg3 = gs_pica.f[95];
tmp_reg4 = gs_pica.f[94];
tmp_reg0.z = (mul_s(tmp_reg2.yyyy, tmp_reg2.yyyy)).z;
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg3.xyyy, tmp_reg3.zwww)).xy;
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg0.xyyy, tmp_reg4.xyyy)).xy;
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg0.xyyy, tmp_reg4.zwww)).xy;
tmp_reg3 = gs_pica.f[93];
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg0.xyyy, tmp_reg3.xyyy)).xy;
tmp_reg0.xy = (fma_s(tmp_reg0.zzzz, tmp_reg0.xyyy, tmp_reg3.zwww)).xy;
tmp_reg0.y = (mul_s(tmp_reg0.yyyy, tmp_reg2.yyyy)).y;
tmp_reg0.xy = (mul_s(-gs_pica.f[81].zzzz, tmp_reg0.xyyy)).xy;
tmp_reg10 = tmp_reg0.xyxy;
tmp_reg0 = mul_s(tmp_reg1.xwxw, tmp_reg10.xxyy);
tmp_reg6.x = (tmp_reg0.zzzz + -tmp_reg0.yyyy).x;
tmp_reg6.y = (tmp_reg0.xxxx + tmp_reg0.wwww).y;
tmp_reg6 = mul_s(tmp_reg6, tmp_reg9.xxxx);
tmp_reg3.xyz = (vs_out_reg0[0].xyzz).xyz;
tmp_reg3.xy = (tmp_reg3.xyyy + tmp_reg6.xyyy).xy;
tmp_reg3.w = (gs_pica.f[81].zzzz).w;
Gfn6();
vtx_regs[1] = vs_out_reg1[0];
vtx_regs[2].xy = (tmp_reg7.xyyy).xy;
SetEmit(0, false, false);
Emit();
tmp_reg0 = mul_s(tmp_reg1.zwzw, tmp_reg10.xxyy);
tmp_reg6.x = (tmp_reg0.zzzz + -tmp_reg0.yyyy).x;
tmp_reg6.y = (tmp_reg0.xxxx + tmp_reg0.wwww).y;
tmp_reg6 = mul_s(tmp_reg6, tmp_reg9.xxxx);
tmp_reg3.xyz = (vs_out_reg0[0].xyzz).xyz;
tmp_reg3.xy = (tmp_reg3.xyyy + tmp_reg6.xyyy).xy;
tmp_reg3.w = (gs_pica.f[81].zzzz).w;
Gfn6();
vtx_regs[1] = vs_out_reg1[0];
vtx_regs[2].xy = (tmp_reg7.zwww).xy;
SetEmit(1, false, false);
Emit();
tmp_reg0 = mul_s(tmp_reg1.xyxy, tmp_reg10.xxyy);
tmp_reg6.x = (tmp_reg0.zzzz + -tmp_reg0.yyyy).x;
tmp_reg6.y = (tmp_reg0.xxxx + tmp_reg0.wwww).y;
tmp_reg6 = mul_s(tmp_reg6, tmp_reg9.xxxx);
tmp_reg3.xyz = (vs_out_reg0[0].xyzz).xyz;
tmp_reg3.xy = (tmp_reg3.xyyy + tmp_reg6.xyyy).xy;
tmp_reg3.w = (gs_pica.f[81].zzzz).w;
Gfn6();
vtx_regs[1] = vs_out_reg1[0];
vtx_regs[2].xy = (tmp_reg8.xyyy).xy;
SetEmit(2, true, false);
Emit();
tmp_reg0 = mul_s(tmp_reg1.zyzy, tmp_reg10.xxyy);
tmp_reg6.x = (tmp_reg0.zzzz + -tmp_reg0.yyyy).x;
tmp_reg6.y = (tmp_reg0.xxxx + tmp_reg0.wwww).y;
tmp_reg6 = mul_s(tmp_reg6, tmp_reg9.xxxx);
tmp_reg3.xyz = (vs_out_reg0[0].xyzz).xyz;
tmp_reg3.xy = (tmp_reg3.xyyy + tmp_reg6.xyyy).xy;
tmp_reg3.w = (gs_pica.f[81].zzzz).w;
Gfn6();
vtx_regs[1] = vs_out_reg1[0];
vtx_regs[2].xy = (tmp_reg8.zwww).xy;
SetEmit(0, true, true);
Emit();
return true;
case 298u:
tmp_reg10 = vs_out_reg0[0].xyzz;
tmp_reg11 = vs_out_reg4[0];
tmp_reg12 = vs_out_reg5[0];
tmp_reg13 = vs_out_reg6[0];
tmp_reg14 = vs_out_reg7[0];
tmp_reg0.xy = (vs_out_reg3[0].zzzz).xy;
bool_regs = lessThan(gs_pica.f[81].xx, tmp_reg0.xy);
if (bool_regs.x) {
tmp_reg10.w = (vs_out_reg0[0].wwww).w;
tmp_reg15.xy = (vs_out_reg3[0].xyyy).xy;
tmp_reg15.z = (vs_out_reg0[0].zzzz).z;
tmp_reg15.w = (gs_pica.f[81].zzzz).w;
} else {
tmp_reg15 = gs_pica.f[81].xxxx;
}
return true;
default: return false;
}
}
return false;
}
bool Gfn6() {
tmp_reg6.xy = (tmp_reg15.zwww).xy;
bool_regs = lessThan(gs_pica.f[81].xx, tmp_reg6.xy);
if (bool_regs.y) {
vtx_regs[0].x = dot_s(tmp_reg3, tmp_reg11);
vtx_regs[0].y = dot_s(tmp_reg3, tmp_reg12);
vtx_regs[0].z = dot_s(tmp_reg3, tmp_reg13);
vtx_regs[0].w = dot_s(tmp_reg3, tmp_reg14);
} else {
tmp_reg6.x = dot_s(tmp_reg2, vs_out_reg5[0]);
tmp_reg6.y = dot_s(tmp_reg2, vs_out_reg6[0]);
tmp_reg6.z = dot_s(tmp_reg2, vs_out_reg7[0]);
tmp_reg6.xyz = (tmp_reg6.xyzz + vs_out_reg0[0].xyzz).xyz;
tmp_reg6.w = (gs_pica.f[81].zzzz).w;
vtx_regs[0].x = dot_s(tmp_reg6, tmp_reg11);
vtx_regs[0].y = dot_s(tmp_reg6, tmp_reg12);
tmp_reg4.w = dot_s(tmp_reg6, tmp_reg14);
tmp_reg0.xyz = (tmp_reg9.xyzz + tmp_reg6.xyzz).xyz;
tmp_reg0.w = (gs_pica.f[81].zzzz).w;
tmp_reg6.w = dot_s(tmp_reg0, tmp_reg14);
tmp_reg6.z = dot_s(tmp_reg0, -tmp_reg13);
tmp_reg6.z = (mul_s(tmp_reg4.wwww, tmp_reg6.zzzz)).z;
tmp_reg2 = vec4(rcp_s(tmp_reg6.w));
vtx_regs[0].z = (mul_s(tmp_reg6.zzzz, tmp_reg2.zzzz)).z;
vtx_regs[0].w = (tmp_reg4.wwww).w;
}
return false;
}