Gr4ph0s mentionned the files you have to look at, hash conversion in C should not afraid someone that knows C# as the syntax is nearly the same.
There are just some loops, functions calls and arrays. Hashing is not a simple conversion to make reverse engineering more difficult to do, as data related to data.00x are mostly encrypted.
I use LEGACY_SEED as before doing the name->hash conversion, i did the algorithm using the reverse version of the hash->name one. But it leads to severals possibility and the correct one is returned when using LEGACY_SEED
Note that for the posted version, arrays name are not good names HashToName should have decryptTable* arrays instead of encryptTable* and the code is not optimized
char type is used as the byte type in C#, that is a one byte variable
For function like strcpy, strlen, floor, tolower, ... use

or type them directly in google, you should get a link to that site explaining the behavior of these functions