_normalizeHash(hash){
    // viaIR sometimes right-pads the hashes out to 32 bytes
    // but it doesn't preserve leading zeroes when it does this
    if (this.viaIR && hash.length >= 18) {
      hash = hash.slice(0,18);

      // Detect and recover from viaIR mangled hashes by left-padding single `0`
      if(!this.instrumentationData[hash]) {
        hash = hash.slice(2);
        hash = '0' + hash;
        hash = hash.slice(0,16);
        hash = '0x' + hash;
      }

    } else if (hash.length < 18 && hash.length > 11){
      hash = hash.slice(2);
      while(hash.length < 16) hash = '0' + hash;
      hash = '0x' + hash
    }
    return hash;
  }
Left-pads zero prefixed bytes8 hashes to length 18. The '11' in the
comparison below is arbitrary. It provides a margin for recurring zeros
but prevents left-padding shorter irrelevant hashes

@param  {String} hash  data hash from evm stack.
@return {String}       0x prefixed hash of length 18.