func: function transferFrom(address _from, address _to, uint256 _value) onlyWorking returns (bool success) {
          if (balanceOf(_from) < _value) throw;
          if (balanceOf(_to).add(_value) < balanceOf(_to)) throw;
          if (_value > allowance(_from, tx.origin)) throw;
          subtractBalance(_from, _value);
          if (offChainManager.isToOffChainAddress(_to)) {
              addBalance(offChainManager.getOffChainRootAddress(), _value);
              ToOffChainTransfer(tx.origin, _to, _to, _value);
          } else {
              addBalance(_to, _value);
          }
          subtractAllowed(_from, tx.origin, _value);
          return true;
      }