There are three interesting constants used in "split_mix32" function: 0x9e3779b9, 0x21f0aaad and 0x735a2d97. I wonder, how exactly they were created. For the first one, I have some clue:
0x9e3779b9 * 0x19e3779b9 = 0xfffffffee35e67b1
0x9e3779ba * 0x19e3779ba = 0x1000000011fcd5b24
But for the rest, I have no idea.