Assuming
genes.test.call(0x000063169218f348dc640d171b000208934b5a90189038cb3084624a50f7316c)
is JavaScript, your problem is probably that the parameter is getting interpreted as a JavaScript number, which does not have enough precision to handle numbers as grand as the one you are using. The solidity call therefore gets fed a less precise number, which it correctly casts to bytes32
and returns.
Try quoting the parameter, eg
genes.test.call("0x000063169218f348dc640d171b000208934b5a90189038cb3084624a50f7316c")
Alternatively you could pass a BN or BigNumber instance, eg
genes.test.call(new BigNumber("0x000063169218f348dc640d171b000208934b5a90189038cb3084624a50f7316c"))
The exact syntax you need varies a little bit depending on the web3.js versions and BigNumber / BN.js libraries you're using, but since native JavaScript numbers can't handle the full 256 bits you always need to handle them either as BigNumber/BN objects or as strings of hex beginning with "0x".