code: function(hi, lo) {
      var negate = false;
      if (arguments.length == 1) {
        if (typeof(hi) == 'number') {
          // Simplify bitfield retrieval by using abs() value.  We restore sign
          // later
          negate = hi < 0;
          hi = Math.abs(hi);
          lo = hi % VAL32;
          hi = hi / VAL32;
          if (hi > VAL32) throw new RangeError(hi  + ' is outside Int64 range');
          hi = hi | 0;
        } else if (typeof(hi) == 'string') {
          hi = (hi + '').replace(/^0x/, '');
          lo = hi.substr(-8);
          hi = hi.length > 8 ? hi.substr(0, hi.length - 8) : '';
          hi = parseInt(hi, 16);
          lo = parseInt(lo, 16);
        } else {
          throw new Error(hi + ' must be a Number or String');
        }
      }
  
      // Technically we should throw if hi or lo is outside int32 range here, but
      // it's not worth the effort. Anything past the 32'nd bit is ignored.
  
      // Copy bytes to buffer
      var b = this.buffer, o = this.offset;
      for (var i = 7; i >= 0; i--) {
        b[o+i] = lo & 0xff;
        lo = i == 4 ? hi : lo >>> 8;
      }
  
      // Restore sign of passed argument
      if (negate) this._2scomp();
    }
docs: Set the value. Takes any of the following arguments:
  
  setValue(string) - A hexidecimal string
  setValue(number) - Number (throws if n is outside int64 range)
  setValue(hi, lo) - Raw bits as two 32-bit values