Rating:

The binary was a very simple OpenGL application. It uses a vertex and a fragment shader and passes to the vertex shader a huge VertexArray of 4d points.
The shaders were in the SPIR-V format, so i dumped them to a binary file and the used spirv-cross to "decompile" them to glsl:
- Vertex shader:
```
#version 460

const float _17[5] = float[](0.09700000286102294921875, 0.865999996662139892578125, 0.99199998378753662109375, 0.522000014781951904296875, 0.3670000135898590087890625);

layout(location = 0) in vec4 position;
layout(location = 1) out float zuppa;

void main()
{
float k = 0.0;
int p = int(floor(position.w));
switch (p)
{
case 0:
{
k = _17[0];
break;
}
case 1:
{
k = _17[1];
break;
}
case 2:
{
k = _17[2];
break;
}
case 3:
{
k = _17[3];
break;
}
case 4:
{
k = _17[4];
break;
}
}
vec4 pos = vec4((position.x * position.z) * k, (position.y * position.z) * k, 0.0, 1.0);
zuppa = position.w - float(p);
float w = 1.0;
if (float(p) != position.w)
{
w = 10.0;
pos *= mat4(vec4(6.1232342629258392722318982137608e-17, 0.0, 1.0, 0.0), vec4(0.0, 1.0, 0.0, 0.0), vec4(-1.0, 0.0, 6.1232342629258392722318982137608e-17, 0.0), vec4(0.0, 0.0, 0.0, 1.0));
}
gl_Position = vec4(pos.x, pos.y, 0.0, w);
}
```
- Fragment shader:
```
#version 460

layout(location = 1) in float zuppa;
layout(location = 0) out vec4 outColor;

void main()
{
float r = 0.0;
if (zuppa != 0.0)
{
r = 1.0;
}
outColor = vec4(r, 1.0, r, 1.0);
}
```
I noticed that it was doing different stuff whether `position.w` was a round number or not, so I tried to do random stuff, plotting only the points with a non round `w`, and it worked:
```
from PIL import Image, ImageDraw
import numpy as np
# this contais the VertexArray dumped from the binary as an array of floats
from arr import arrayy

arrayy = np.array(arrayy, dtype=np.float32).reshape((len(arrayy)/4, 4))

im = Image.new('RGB', (600, 400), (255,)*3)
d = ImageDraw.Draw(im)

zz = [0.09700000286102294921875, 0.865999996662139892578125, 0.99199998378753662109375, 0.522000014781951904296875, 0.3670000135898590087890625]

aa = []
for x, y, z, w in arrayy:
if float(int(w)) != w:
k = zz[int(w)] * 600
x, y = (x * z) * k + 300, (y * z) * k + 300
x, y = x, 600-y
aa.append((x, y))

d.line(aa, fill=(0, 0, 0), width=2)
im.save("draw.png")
```
Running this script generated an image with the flag: `{FLG:ToRenderOrNotToRender?}`.