Why would this contract function run out of gas? Example of a transaction that failed from my application https://etherscan.io/tx/0x628c7c14d69e838a05ac7dbd8e5b4e6f968eae810c7940ca42ddeb4e02947428