I was waiting to release a tool because nate was working on an editor but oh well you beat me to it lol. You can simplify your source majorly though. Its literally just 4 little endian unsigned ints xored together. The shifting can be simplified into this.
Code:unsigned int A = (md5[15] << 24) | (md5[14] << 16) | (md5[13] << 8) | md5[12]; unsigned int B = (md5[11] << 24) | (md5[10] << 16) | (md5[9] << 8) | md5[8]; unsigned int C = (md5[7] << 24) | (md5[6] << 16) | (md5[5] << 8) | md5[4]; unsigned int D = (md5[3] << 24) | (md5[2] << 16) | (md5[1] << 8) | md5[0]; unsigned int hash = A ^ B ^ C ^ D;