It seems like it creates an array of the bytes in the .dat file then does weird byte calculations to find the values such as verticies, triangles, etc. My question is why does it do these with seemingly random calculations and bit shifts? Like when they made the client back in the day how did they even determine these things to read a model file? Why not just use something simpler?