_ZN5resip4AuthC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   27|  6.23k|{}
_ZN5resip4Auth5parseERNS_11ParseBufferE:
   61|  6.23k|{
   62|  6.23k|   const char* start;
   63|  6.23k|   start = pb.skipWhitespace();
   64|  6.23k|   static const std::bitset<256> schemeDelimiter(Data::toBitset("\r\n\t ="));
   65|  6.23k|   pb.skipToOneOf(schemeDelimiter);
   66|       |
   67|  6.23k|   if (!pb.eof() && *pb.position() == Symbols::EQUALS[0])
  ------------------
  |  Branch (67:8): [True: 5.34k, False: 896]
  |  Branch (67:8): [True: 4.51k, False: 1.72k]
  |  Branch (67:21): [True: 4.51k, False: 829]
  ------------------
   68|  4.51k|   {
   69|       |      // Authentication-Info only
   70|       |      // back up, and then parse
   71|  4.51k|      pb.reset(start);
   72|  4.51k|      parseAuthParameters(pb);
   73|  4.51k|   }
   74|  1.72k|   else
   75|  1.72k|   {
   76|       |      // everything else
   77|  1.72k|      pb.data(mScheme, start);
   78|       |
   79|  1.72k|      pb.skipWhitespace();
   80|  1.72k|      parseAuthParameters(pb);
   81|  1.72k|   }
   82|  6.23k|}
_ZN5resip4Auth19parseAuthParametersERNS_11ParseBufferE:
  117|  6.23k|{
  118|  44.7k|   while (!pb.eof())
  ------------------
  |  Branch (118:11): [True: 43.4k, False: 1.34k]
  ------------------
  119|  43.4k|   {
  120|  43.4k|      const char* keyStart = pb.position();
  121|  43.4k|      static std::bitset<256> paramBegin=Data::toBitset(" \t\r\n=");
  122|  43.4k|      static std::bitset<256> terminators=Data::toBitset(" \t\r\n,");
  123|  43.4k|      const char* keyEnd = pb.skipToOneOf(paramBegin);
  124|  43.4k|      if((int)(keyEnd-keyStart) != 0)
  ------------------
  |  Branch (124:10): [True: 43.0k, False: 409]
  ------------------
  125|  43.0k|      {
  126|  43.0k|         ParameterTypes::Type type = ParameterTypes::getType(keyStart, (unsigned int)(keyEnd - keyStart));
  127|  43.0k|         Parameter* p=createParam(type, pb, terminators, getPool());
  128|  43.0k|         if (!p)
  ------------------
  |  Branch (128:14): [True: 25.7k, False: 17.3k]
  ------------------
  129|  25.7k|         {
  130|  25.7k|            mUnknownParameters.push_back(new UnknownParameter(keyStart, 
  131|  25.7k|                                                              int((keyEnd - keyStart)), pb, 
  132|  25.7k|                                                              terminators));
  133|  25.7k|         }
  134|  17.3k|         else
  135|  17.3k|         {
  136|       |            // invoke the particular factory
  137|  17.3k|            mParameters.push_back(p);
  138|  17.3k|         }
  139|  43.0k|      }
  140|    409|      else
  141|    409|      {
  142|       |          // empty parameter name - skip and advance pb to next parameter
  143|    409|          pb.skipToOneOf(terminators);
  144|    409|      }
  145|       |
  146|  43.4k|      pb.skipWhitespace();
  147|  43.4k|      if (pb.eof() || *pb.position() != Symbols::COMMA[0])
  ------------------
  |  Branch (147:11): [True: 2.19k, False: 41.2k]
  |  Branch (147:11): [True: 4.89k, False: 38.5k]
  |  Branch (147:23): [True: 3.04k, False: 38.1k]
  ------------------
  148|  4.89k|      {
  149|  4.89k|         break;
  150|  4.89k|      }
  151|  38.5k|      pb.skipChar();
  152|  38.5k|      pb.skipWhitespace();
  153|  38.5k|   }
  154|  6.23k|}
_ZN5resip4Auth11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
  188|  43.0k|{
  189|  43.0k|   if(type==ParameterTypes::qop)
  ------------------
  |  Branch (189:7): [True: 196, False: 42.8k]
  ------------------
  190|    196|   {
  191|    196|      DataParameter* qop = 0;
  192|    196|      switch(mHeaderType)
  193|    196|      {
  194|      0|         case Headers::ProxyAuthenticate:
  ------------------
  |  Branch (194:10): [True: 0, False: 196]
  ------------------
  195|      0|         case Headers::WWWAuthenticate:
  ------------------
  |  Branch (195:10): [True: 0, False: 196]
  ------------------
  196|      0|            qop = new (pool) DataParameter(ParameterTypes::qopOptions,pb,terminators);
  197|      0|            qop->setQuoted(true);
  198|      0|            break;
  199|      0|         case Headers::ProxyAuthorization:
  ------------------
  |  Branch (199:10): [True: 0, False: 196]
  ------------------
  200|      0|         case Headers::Authorization:
  ------------------
  |  Branch (200:10): [True: 0, False: 196]
  ------------------
  201|      0|         case Headers::AuthenticationInfo:
  ------------------
  |  Branch (201:10): [True: 0, False: 196]
  ------------------
  202|    196|         default:
  ------------------
  |  Branch (202:10): [True: 196, False: 0]
  ------------------
  203|    196|            qop = new (pool) DataParameter(ParameterTypes::qop,pb,terminators);
  204|    196|            qop->setQuoted(false);
  205|    196|      }
  206|    195|      return qop;
  207|    196|   }
  208|       |
  209|  42.8k|   if(type > ParameterTypes::UNKNOWN && type < ParameterTypes::MAX_PARAMETER && ParameterFactories[type])
  ------------------
  |  Branch (209:7): [True: 17.4k, False: 25.3k]
  |  Branch (209:41): [True: 17.4k, False: 0]
  |  Branch (209:81): [True: 17.1k, False: 345]
  ------------------
  210|  17.1k|   {
  211|  17.1k|      return ParameterFactories[type](type, pb, terminators, pool);
  212|  17.1k|   }
  213|  25.7k|   return 0;
  214|  42.8k|}

_ZN5resip12CSeqCategoryC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   26|  6.23k|{}
_ZN5resip12CSeqCategory5parseERNS_11ParseBufferE:
  152|  6.23k|{
  153|  6.23k|   pb.skipWhitespace();
  154|  6.23k|   mSequence = pb.uInt32();
  155|       |
  156|  6.23k|   const char* anchorPtr = pb.skipWhitespace();
  157|  6.23k|   pb.skipNonWhitespace(); // .dcm. maybe pass an arg that says throw if you
  158|       |                           // don't move
  159|  6.23k|   mMethod = getMethodType(anchorPtr, int(pb.position() - anchorPtr));
  160|       |   // for backward compatibility, set the method name even if the method is known
  161|  6.23k|   pb.data(mUnknownMethodName, anchorPtr);
  162|  6.23k|}

_ZN5resip6CallIDC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   31|  6.23k|{}
_ZN5resip6CallID5parseERNS_11ParseBufferE:
   90|  6.23k|{
   91|  6.23k|   const char* start = pb.skipWhitespace();
   92|  6.23k|   static const std::bitset<256> wsOrSemi(Data::toBitset(ParseBuffer::Whitespace).set(Symbols::SEMI_COLON[0]));
   93|  6.23k|   pb.skipToOneOf(wsOrSemi);
   94|  6.23k|   pb.data(mValue, start);
   95|       |
   96|  6.23k|   parseParameters(pb);
   97|  6.23k|}
_ZN5resip6CallID11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
  111|  42.9k|{
  112|  42.9k|   if(type > ParameterTypes::UNKNOWN && type < ParameterTypes::MAX_PARAMETER && ParameterFactories[type])
  ------------------
  |  Branch (112:7): [True: 42.9k, False: 0]
  |  Branch (112:41): [True: 42.9k, False: 0]
  |  Branch (112:81): [True: 0, False: 42.9k]
  ------------------
  113|      0|   {
  114|      0|      return ParameterFactories[type](type, pb, terminators, pool);
  115|      0|   }
  116|  42.9k|   return 0;
  117|  42.9k|}

_ZN5resip8ContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   26|  68.6k|{
   27|  68.6k|   init();
   28|  68.6k|}
_ZN5resip8ContentsC2ERKNS_4MimeE:
   32|     22|{
   33|     22|   init();
   34|     22|}
_ZN5resip8ContentsD2Ev:
   59|  68.6k|{
   60|  68.6k|   freeMem();
   61|  68.6k|}
_ZNK5resip8Contents12errorContextEv:
   66|  68.6k|{
   67|  68.6k|   return errorContextData;
   68|  68.6k|}

_ZN5resip8Contents4initEv:
  302|  68.6k|      {
  303|  68.6k|         mBufferList.clear();
  304|  68.6k|         mDisposition = 0;
  305|  68.6k|         mTransferEncoding = 0;
  306|  68.6k|         mLanguages = 0;
  307|  68.6k|         mId = 0;
  308|  68.6k|         mDescription = 0;
  309|  68.6k|         mLength = 0;
  310|  68.6k|         mVersion = 1;
  311|  68.6k|         mMinorVersion = 0;
  312|  68.6k|      }
_ZN5resip8Contents7freeMemEv:
  323|  68.6k|      {
  324|  68.6k|         delete mDisposition;
  325|  68.6k|         delete mTransferEncoding;
  326|  68.6k|         delete mLanguages;
  327|  68.6k|         delete mId;
  328|  68.6k|         delete mDescription;
  329|  68.6k|         delete mLength;
  330|       |
  331|  68.6k|         for (std::vector<char*>::iterator i = mBufferList.begin();
  332|  68.6k|              i != mBufferList.end(); i++)
  ------------------
  |  Branch (332:15): [True: 0, False: 68.6k]
  ------------------
  333|      0|         {
  334|      0|            delete [] *i;
  335|      0|         }
  336|       |
  337|  68.6k|      }

_ZN5resip15ContentsFactoryINS_19DtmfPayloadContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_12CpimContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_18DialogInfoContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_19GenericPidfContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_22MessageWaitingContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_22MultipartMixedContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_13OctetContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_4PidfEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_13Pkcs7ContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_19Pkcs7SignedContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_13Pkcs8ContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_13PlainContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_4RlmiEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_11SdpContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_7SipFragEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_18TrickleIceContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_12X509ContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_28MultipartAlternativeContentsEEC2Ev:
   20|      2|      {}
_ZN5resip15ContentsFactoryINS_23MultipartSignedContentsEEC2Ev:
   20|      2|      {}

_ZN5resip19ContentsFactoryBaseC2ERKNS_4MimeE:
   13|     38|{
   14|       |   // .amr. Due to multiple static initializers, this can be called more than once for a mimetype
   15|       |   // so gracefully handle it
   16|     38|   if(ContentsFactoryBase::getFactoryMap().count(contentType) == 0)
  ------------------
  |  Branch (16:7): [True: 36, False: 2]
  ------------------
   17|     36|      ContentsFactoryBase::getFactoryMap()[contentType] = this;
   18|     38|}
_ZN5resip19ContentsFactoryBase13getFactoryMapEv:
   39|     74|{
   40|     74|   if (ContentsFactoryBase::FactoryMap == 0)
  ------------------
  |  Branch (40:8): [True: 2, False: 72]
  ------------------
   41|      2|   {
   42|      2|      ContentsFactoryBase::FactoryMap = new HashMap<Mime, ContentsFactoryBase*>();
  ------------------
  |  |   14|      2|#define HashMap std::unordered_map
  ------------------
   43|      2|   }
   44|     74|   return *ContentsFactoryBase::FactoryMap;
   45|     74|}

_ZN5resip12CpimContents4initEv:
   19|      4|{
   20|      4|   static ContentsFactory<CpimContents> factory;
   21|      4|   (void)factory;
   22|      4|   return true;
   23|      4|}
_ZN5resip12CpimContentsC2Ev:
   30|      2|{}
_ZN5resip12CpimContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   40|  6.23k|{
   41|  6.23k|}
_ZN5resip12CpimContentsD2Ev:
   56|  6.23k|{
   57|  6.23k|}
_ZN5resip12CpimContents13getStaticTypeEv:
   78|      4|{
   79|      4|   static Mime type("message","cpim");
   80|      4|   return type;
   81|      4|}
_ZN5resip12CpimContents5parseERNS_11ParseBufferE:
   93|  6.23k|{
   94|       |   //DebugLog(<< "CpimContents::parse: " << pb.position());
   95|       |
   96|  6.23k|   const char* anchor = pb.position();
   97|  6.23k|   pb.skipToEnd();
   98|  6.23k|   pb.data(mText, anchor);
   99|       |
  100|       |   //DebugLog("CpimContents::parsed <" << mText << ">" );
  101|  6.23k|}

_ZN5resip13DataParameterC2ENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEE:
   24|  19.3k|{
   25|  19.3k|   pb.skipWhitespace();
   26|  19.3k|   pb.skipChar(Symbols::EQUALS[0]);
   27|  19.3k|   pb.skipWhitespace();
   28|  19.3k|   if(terminators[(unsigned char)(*pb.position())]) // handle cases such as ;tag=
  ------------------
  |  Branch (28:7): [True: 13, False: 19.2k]
  ------------------
   29|     13|   {
   30|     13|      throw ParseException("Empty value in string-type parameter.",
   31|     13|                              "DataParameter",
   32|     13|                              __FILE__,__LINE__);
   33|     13|   }
   34|       |
   35|  19.2k|   if (*pb.position() == Symbols::DOUBLE_QUOTE[0])
  ------------------
  |  Branch (35:8): [True: 489, False: 18.8k]
  ------------------
   36|    489|   {
   37|    489|      setQuoted(true);
   38|    489|      pb.skipChar();
   39|    489|      const char* pos = pb.position();
   40|    489|      pb.skipToEndQuote();
   41|    489|      pb.data(mValue, pos);
   42|    489|      pb.skipChar();
   43|    489|   }
   44|  18.8k|   else
   45|  18.8k|   {
   46|  18.8k|      const char* pos = pb.position();
   47|  18.8k|      pb.skipToOneOf(terminators);
   48|  18.8k|      pb.data(mValue, pos);
   49|  18.8k|   }
   50|       |
   51|  19.2k|   if(!mQuoted && mValue.empty())
  ------------------
  |  Branch (51:7): [True: 18.7k, False: 538]
  |  Branch (51:19): [True: 0, False: 18.7k]
  ------------------
   52|      0|   {
   53|       |      // .bwc. We can't let this happen, because we throw if we try to encode
   54|       |      // when we have an empty value. If that behavior stops, this can be 
   55|       |      // removed.
   56|       |     /* throw ParseException("DataParameter c'tor parsed empty param!", 
   57|       |                           "DataParameter",
   58|       |                           __FILE__,
   59|       |                           __LINE__); */
   60|      0|   }
   61|  19.2k|}
_ZN5resip13DataParameterC2ENS_14ParameterTypes4TypeE:
   67|  16.1k|{
   68|  16.1k|}
_ZNK5resip13DataParameter5cloneEv:
   72|    420|{
   73|    420|   return new DataParameter(*this);
   74|    420|}

_ZN5resip13DataParameter9setQuotedEb:
   30|    684|      void setQuoted(bool b) { mQuoted = b; }; // this parameter will be enclosed in quotes e.g. "foo"
_ZN5resip13DataParameter6decodeENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
   36|  17.5k|      {
   37|  17.5k|         return new (pool) DataParameter(type, pb, terminators);
   38|  17.5k|      }
_ZN5resip13DataParameter5valueEv:
   43|  12.4k|      Type& value() {return mValue;}            // does not return a quoted string
_ZN5resip13DataParameterC2ERKS0_:
   49|  5.69k|      {
   50|  5.69k|      }

_ZN5resip12DateCategoryC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
  124|  6.23k|{}
_ZN5resip12DateCategory17DayOfWeekFromDataERKNS_4DataE:
  195|    675|{
  196|    675|   const char *str = dow.data();
  197|    675|   Data::size_type len = dow.size();
  198|       |
  199|    675|   const struct days* _day = DayOfWeekHash::in_word_set(str, len);
  200|    675|   if(_day != 0)
  ------------------
  |  Branch (200:7): [True: 1, False: 674]
  ------------------
  201|      1|   {
  202|      1|      return _day->type;
  203|      1|   }
  204|    674|   else
  205|    674|   {
  206|    674|      return Sun;
  207|    674|   }
  208|    675|}
_ZN5resip12DateCategory13MonthFromDataERKNS_4DataE:
  212|    320|{
  213|    320|   const char *str = mon.data();
  214|    320|   Data::size_type len = mon.size();
  215|       |
  216|    320|   const struct months* _month = MonthHash::in_word_set(str, len);
  217|    320|   if(_month != 0)
  ------------------
  |  Branch (217:7): [True: 1, False: 319]
  ------------------
  218|      1|   {
  219|      1|      return _month->type;
  220|      1|   }
  221|    319|   else
  222|    319|   {
  223|    319|      return Jan;
  224|    319|   }
  225|    320|}
_ZN5resip12DateCategory5parseERNS_11ParseBufferE:
  320|  6.23k|{
  321|       |   // Mon, 04 Nov 2002 17:34:15 GMT
  322|       |   // Note: Day of Week is optional, so this is also valid: 04 Nov 2002 17:34:15 GMT
  323|       |
  324|  6.23k|   const char* anchor = pb.skipWhitespace();
  325|       |
  326|       |   // If comma is present, then DayOfWeek is present
  327|  6.23k|   pb.skipToChar(Symbols::COMMA[0]);
  328|  6.23k|   if (!pb.eof())
  ------------------
  |  Branch (328:8): [True: 675, False: 5.56k]
  ------------------
  329|    675|   {
  330|    675|      Data dayOfWeek;
  331|    675|      pb.data(dayOfWeek, anchor);
  332|    675|      mDayOfWeek = DateCategory::DayOfWeekFromData(dayOfWeek);
  333|       |
  334|    675|      pb.skipChar(Symbols::COMMA[0]);
  335|    675|   }
  336|  5.56k|   else
  337|  5.56k|   {
  338|  5.56k|      pb.reset(pb.start());
  339|  5.56k|      mDayOfWeek = DayOfWeek::NA;
  340|  5.56k|   }
  341|       |
  342|  6.23k|   pb.skipWhitespace();
  343|       |
  344|  6.23k|   mDayOfMonth = pb.integer();
  345|       |
  346|  6.23k|   anchor = pb.skipWhitespace();
  347|  6.23k|   pb.skipNonWhitespace();
  348|       |
  349|  6.23k|   Data month;
  350|  6.23k|   pb.data(month, anchor);
  351|  6.23k|   mMonth = DateCategory::MonthFromData(month);
  352|       |
  353|  6.23k|   pb.skipWhitespace();
  354|  6.23k|   mYear = pb.integer();
  355|       |
  356|  6.23k|   pb.skipWhitespace();
  357|       |
  358|  6.23k|   mHour = pb.integer();
  359|  6.23k|   pb.skipChar(Symbols::COLON[0]);
  360|  6.23k|   mMin = pb.integer();
  361|  6.23k|   pb.skipChar(Symbols::COLON[0]);
  362|  6.23k|   mSec = pb.integer();
  363|       |
  364|  6.23k|   pb.skipWhitespace();
  365|  6.23k|   pb.skipChar('G');
  366|  6.23k|   pb.skipChar('M');
  367|  6.23k|   pb.skipChar('T');
  368|       |
  369|  6.23k|   pb.skipWhitespace();
  370|  6.23k|   pb.assertEof();
  371|  6.23k|}

_ZN5resip18DialogInfoContents4initEv:
   29|      4|{
   30|      4|   static ContentsFactory<DialogInfoContents> factory;
   31|      4|   (void)factory;
   32|      4|   return true;
   33|      4|}
_ZN5resip18DialogInfoContentsC2Ev:
  159|      2|{
  160|      2|}
_ZN5resip18DialogInfoContents13getStaticTypeEv:
  184|      4|{
  185|      4|   static Mime type("application","dialog-info+xml");
  186|      4|   return type;
  187|      4|}

_ZN5resip19DtmfPayloadContents4initEv:
   23|      4|{
   24|      4|   static ContentsFactory<DtmfPayloadContents> factory;
   25|      4|   (void)factory;
   26|      4|   return true;
   27|      4|}
_ZN5resip19DtmfPayloadContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   35|  6.23k|{
   36|  6.23k|}
_ZN5resip19DtmfPayloadContentsD2Ev:
   39|  6.23k|{
   40|  6.23k|}
_ZN5resip19DtmfPayloadContents5parseERNS_11ParseBufferE:
   61|  6.23k|{
   62|  6.23k|   mDtmfPayload.parse(pb);
   63|  6.23k|}
_ZN5resip19DtmfPayloadContents13getStaticTypeEv:
   74|      2|{
   75|      2|   static Mime type("application", "dtmf-relay");
   76|      2|   return type;
   77|      2|}
_ZN5resip19DtmfPayloadContents11DtmfPayload13isValidButtonEc:
  102|    204|{
  103|    204|   static const char* permittedChars = "ABCD*#";
  104|    204|   if(isdigit(c))
  ------------------
  |  Branch (104:7): [True: 15, False: 189]
  ------------------
  105|     15|   {
  106|     15|      return true;
  107|     15|   }
  108|    189|   if(strchr(permittedChars, c) != NULL)
  ------------------
  |  Branch (108:7): [True: 180, False: 9]
  ------------------
  109|    180|   {
  110|    180|      return true;
  111|    180|   }
  112|      9|   WarningLog(<<"Not a valid DTMF button: " << c);
  ------------------
  |  |  134|      9|#define WarningLog(args_) \
  |  |  ------------------
  |  |  |  |  151|      9|   do                                                                   \
  |  |  |  |  152|      9|   {                                                                    \
  |  |  |  |  153|      9|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 9]
  |  |  |  |  ------------------
  |  |  |  |  154|      9|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|      9|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  135|      9|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Warning, args_)
  ------------------
  113|      9|   return false;
  114|    189|}
_ZN5resip19DtmfPayloadContents11DtmfPayload5parseERNS_11ParseBufferE:
  118|  6.23k|{
  119|  6.23k|   const char* anchor = pb.skipWhitespace();
  120|  6.23k|   Data val;
  121|  6.23k|   pb.skipToChars(Symbols::EQUALS);
  122|  6.23k|   pb.data(val, anchor);
  123|  6.23k|   if(!isEqualNoCase(val, "Signal"))
  ------------------
  |  Branch (123:7): [True: 6.00k, False: 229]
  ------------------
  124|  6.00k|   {
  125|  6.00k|      ErrLog(<<"first key must be Signal, found: " << val);
  ------------------
  |  |  137|  6.00k|#define ErrLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  6.00k|   do                                                                   \
  |  |  |  |  152|  6.00k|   {                                                                    \
  |  |  |  |  153|  6.00k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 6.00k]
  |  |  |  |  ------------------
  |  |  |  |  154|  6.00k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  6.00k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|  6.00k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Err, args_)
  ------------------
  126|  6.00k|      throw ParseException("first key must be Signal", pb.getContext(), __FILE__, __LINE__);
  127|  6.00k|   }
  128|    229|   pb.skipChar();
  129|    229|   anchor = pb.skipWhitespace();
  130|    229|   pb.skipToOneOf(Symbols::CRLF);
  131|    229|   pb.data(val, anchor);
  132|    229|   if(val.size() != 1)
  ------------------
  |  Branch (132:7): [True: 24, False: 205]
  ------------------
  133|     24|   {
  134|     24|      ErrLog(<<"signal string [" << val << "], size = " << val.size());
  ------------------
  |  |  137|     24|#define ErrLog(args_) \
  |  |  ------------------
  |  |  |  |  151|     24|   do                                                                   \
  |  |  |  |  152|     24|   {                                                                    \
  |  |  |  |  153|     24|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 24]
  |  |  |  |  ------------------
  |  |  |  |  154|     24|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|     24|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|     24|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Err, args_)
  ------------------
  135|     24|      throw ParseException("Exactly one button character expected in SIP INFO", pb.getContext(), __FILE__, __LINE__);
  136|     24|   }
  137|    205|   const char& _button = val[0];
  138|    205|   if(!isValidButton(_button))
  ------------------
  |  Branch (138:7): [True: 9, False: 196]
  ------------------
  139|      9|   {
  140|      9|      throw ParseException("Invalid DTMF button character found", pb.getContext(), __FILE__, __LINE__);
  141|      9|   }
  142|    196|   StackLog(<< "Button=" << _button);
  ------------------
  |  |  125|    196|#define StackLog(args_)                                                         \
  |  |  ------------------
  |  |  |  |  151|    196|   do                                                                   \
  |  |  |  |  152|    196|   {                                                                    \
  |  |  |  |  153|    196|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 196]
  |  |  |  |  ------------------
  |  |  |  |  154|    196|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|    196|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  126|    196|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Stack, args_)
  ------------------
  143|       |
  144|    196|   skipEol(pb);
  145|    196|   anchor = pb.skipWhitespace();
  146|    196|   pb.skipToChars(Symbols::EQUALS);
  147|    196|   pb.data(val, anchor);
  148|    196|   if(!isEqualNoCase(val, "Duration"))
  ------------------
  |  Branch (148:7): [True: 103, False: 93]
  ------------------
  149|    103|   {
  150|    103|      ErrLog(<<"second key must be Duration, found: " << val);
  ------------------
  |  |  137|    103|#define ErrLog(args_) \
  |  |  ------------------
  |  |  |  |  151|    103|   do                                                                   \
  |  |  |  |  152|    103|   {                                                                    \
  |  |  |  |  153|    103|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 103]
  |  |  |  |  ------------------
  |  |  |  |  154|    103|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|    103|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|    103|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Err, args_)
  ------------------
  151|    103|      throw ParseException("second key must be Duration", pb.getContext(), __FILE__, __LINE__);
  152|    103|   }
  153|     93|   pb.skipChar();
  154|     93|   pb.skipWhitespace();
  155|     93|   int _duration = pb.integer();
  156|       |
  157|     93|   StackLog(<< "Duration = " << _duration);
  ------------------
  |  |  125|     93|#define StackLog(args_)                                                         \
  |  |  ------------------
  |  |  |  |  151|     93|   do                                                                   \
  |  |  |  |  152|     93|   {                                                                    \
  |  |  |  |  153|     93|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 93]
  |  |  |  |  ------------------
  |  |  |  |  154|     93|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|     93|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  126|     93|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Stack, args_)
  ------------------
  158|     93|   if(_duration < 20 || _duration > 5000)
  ------------------
  |  Branch (158:7): [True: 46, False: 47]
  |  Branch (158:25): [True: 24, False: 23]
  ------------------
  159|     60|   {
  160|     60|      ErrLog(<<"Invalid duration: " << _duration);
  ------------------
  |  |  137|     60|#define ErrLog(args_) \
  |  |  ------------------
  |  |  |  |  151|     60|   do                                                                   \
  |  |  |  |  152|     60|   {                                                                    \
  |  |  |  |  153|     60|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 60]
  |  |  |  |  ------------------
  |  |  |  |  154|     60|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|     60|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|     60|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Err, args_)
  ------------------
  161|     60|      throw ParseException("Invalid duration", pb.getContext(), __FILE__, __LINE__);
  162|     60|   }
  163|       |
  164|     33|   mButton = _button;
  165|     33|   mDuration = _duration;
  166|     33|}

_ZN5resip19DtmfPayloadContents11DtmfPayloadC2Ev:
   28|  6.23k|            DtmfPayload() : mButton(0), mDuration(0) {}

_Z7fromHexcc:
   16|  3.56k|{
   17|  3.56k|   h1 = toupper(h1);
   18|  3.56k|   h2 = toupper(h2);
   19|       |
   20|  3.56k|   int i1;
   21|  3.56k|   int i2;
   22|       |
   23|  3.56k|   if (isdigit(h1))
  ------------------
  |  Branch (23:8): [True: 299, False: 3.26k]
  ------------------
   24|    299|   {
   25|    299|      i1 = h1 - '0';
   26|    299|   }
   27|  3.26k|   else
   28|  3.26k|   {
   29|  3.26k|      i1 = h1 - 'A' + 10;
   30|  3.26k|   }
   31|       |
   32|  3.56k|   if (isdigit(h2))
  ------------------
  |  Branch (32:8): [True: 285, False: 3.28k]
  ------------------
   33|    285|   {
   34|    285|      i2 = h2 - '0';
   35|    285|   }
   36|  3.28k|   else
   37|  3.28k|   {
   38|  3.28k|      i2 = h2 - 'A' + 10;
   39|  3.28k|   }
   40|       |   
   41|  3.56k|   return i1*16+i2;
   42|  3.56k|}
_ZN5resip8Embedded6decodeERKNS_4DataERj:
   46|  2.50M|{
   47|  2.50M|   const char *get = in.data();
   48|  2.50M|   const char *end = get + in.size();
   49|  2.50M|   char *ret = new char[in.size()];
   50|  2.50M|   char *put = ret;
   51|       |
   52|  2.50M|   count = 0;
   53|  10.4M|   while (get < end)
  ------------------
  |  Branch (53:11): [True: 7.91M, False: 2.50M]
  ------------------
   54|  7.91M|   {
   55|  7.91M|      if (*get == Symbols::PERCENT[0] && get+2 < end)
  ------------------
  |  Branch (55:11): [True: 4.28k, False: 7.91M]
  |  Branch (55:42): [True: 3.56k, False: 719]
  ------------------
   56|  3.56k|      {
   57|  3.56k|         *put = fromHex(*(get+1), *(get+2));
   58|  3.56k|         get += 3;
   59|  3.56k|      }
   60|  7.91M|      else
   61|  7.91M|      {
   62|  7.91M|         *put = *get;
   63|  7.91M|         get++;
   64|  7.91M|      }
   65|  7.91M|      count++;
   66|  7.91M|      put++;
   67|  7.91M|   }
   68|       |
   69|  2.50M|   return ret;
   70|  2.50M|}

_ZN5resip21ExistsOrDataParameterC2ENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEE:
   28|    876|{
   29|    876|}
_ZN5resip21ExistsOrDataParameterC2ENS_14ParameterTypes4TypeE:
   33|  9.92k|{
   34|  9.92k|}
_ZN5resip21ExistsOrDataParameter6decodeENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
   41|  10.8k|{
   42|       |   //pb.skipWhitespace();  // whitespace may be a terminator - don't skip it
   43|  10.8k|   if (pb.eof() || terminators[*pb.position()])
  ------------------
  |  Branch (43:8): [True: 65, False: 10.7k]
  |  Branch (43:8): [True: 9.92k, False: 876]
  |  Branch (43:20): [True: 9.86k, False: 876]
  ------------------
   44|  9.92k|   {
   45|  9.92k|      return new (pool) ExistsOrDataParameter(type);
   46|  9.92k|   }
   47|    876|   else
   48|    876|   {
   49|    876|      return new (pool) ExistsOrDataParameter(type, pb, terminators);
   50|    876|   }
   51|  10.8k|}
_ZNK5resip21ExistsOrDataParameter5cloneEv:
   55|  5.07k|{
   56|  5.07k|   return new ExistsOrDataParameter(*this);
   57|  5.07k|}

_ZN5resip21ExistsOrDataParameterC2ERKS0_:
   36|  5.07k|      {}

_ZN5resip15ExistsParameterC2ENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEE:
   16|  2.05M|{
   17|       |   // Protect ourselves just in case an exists parameter has a RHS.
   18|  2.05M|   pb.skipWhitespace();
   19|  2.05M|   if (!pb.eof() && *pb.position() == Symbols::EQUALS[0])
  ------------------
  |  Branch (19:8): [True: 2.05M, False: 108]
  |  Branch (19:8): [True: 315, False: 2.05M]
  |  Branch (19:21): [True: 315, False: 2.05M]
  ------------------
   20|    315|   {
   21|    315|      pb.skipChar();
   22|    315|      if (!pb.eof() && *pb.position() == Symbols::DOUBLE_QUOTE[0])
  ------------------
  |  Branch (22:11): [True: 305, False: 10]
  |  Branch (22:11): [True: 10, False: 305]
  |  Branch (22:24): [True: 10, False: 295]
  ------------------
   23|     10|      {
   24|     10|         pb.skipChar();
   25|     10|         pb.skipToEndQuote();
   26|     10|      }
   27|    305|      else
   28|    305|      {
   29|    305|         pb.skipToOneOf(terminators); 
   30|    305|      }
   31|    315|   }
   32|  2.05M|}
_ZNK5resip15ExistsParameter5cloneEv:
   41|  58.8k|{
   42|  58.8k|   return new ExistsParameter(*this);
   43|  58.8k|}

_ZN5resip15ExistsParameter6decodeENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
   31|  2.05M|      {
   32|  2.05M|         return new (pool) ExistsParameter(type, pb, terminators);
   33|  2.05M|      }

_ZN5resip15ExpiresCategoryC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   27|  6.23k|{}
_ZN5resip15ExpiresCategory5parseERNS_11ParseBufferE:
   78|  6.23k|{
   79|  6.23k|   pb.skipWhitespace();
   80|  6.23k|   const char *p = pb.position();
   81|  6.23k|   if (!pb.eof() && isdigit(*p))
  ------------------
  |  Branch (81:8): [True: 6.20k, False: 29]
  |  Branch (81:21): [True: 454, False: 5.75k]
  ------------------
   82|    454|   {
   83|    454|     mValue = pb.uInt32();
   84|    454|   }
   85|  5.78k|   else
   86|  5.78k|   {
   87|  5.78k|      mValue = 3600;
   88|  5.78k|   }
   89|  6.23k|   pb.skipToChar(Symbols::SEMI_COLON[0]);
   90|  6.23k|   parseParameters(pb);
   91|  6.23k|}
_ZN5resip15ExpiresCategory11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
  105|   555k|{
  106|   555k|   if(type > ParameterTypes::UNKNOWN && type < ParameterTypes::MAX_PARAMETER && ParameterFactories[type])
  ------------------
  |  Branch (106:7): [True: 555k, False: 0]
  |  Branch (106:41): [True: 555k, False: 0]
  |  Branch (106:81): [True: 0, False: 555k]
  ------------------
  107|      0|   {
  108|      0|      return ParameterFactories[type](type, pb, terminators, pool);
  109|      0|   }
  110|   555k|   return 0;
  111|   555k|}

_ZN5resip19GenericPidfContents4initEv:
   25|      4|{
   26|      4|   static ContentsFactory<GenericPidfContents> factory;
   27|      4|   (void)factory;
   28|      4|   return true;
   29|      4|}
_ZN5resip19GenericPidfContentsC2Ev:
   35|      2|{
   36|      2|}
_ZN5resip19GenericPidfContents13getStaticTypeEv:
  122|      4|{
  123|      4|   static Mime type("application","pidf+xml");
  124|      4|   return type;
  125|      4|}

_ZN5resip10GenericUriC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   29|  6.23k|{}
_ZN5resip10GenericUri5parseERNS_11ParseBufferE:
   58|  6.23k|{
   59|  6.23k|   pb.skipWhitespace();
   60|  6.23k|   const char* anchor = pb.skipChar(Symbols::LA_QUOTE[0]);
   61|       |
   62|  6.23k|   pb.skipToChar(Symbols::RA_QUOTE[0]);
   63|  6.23k|   pb.data(mUri, anchor);
   64|  6.23k|   pb.skipChar(Symbols::RA_QUOTE[0]);
   65|       |
   66|  6.23k|   pb.skipWhitespace();
   67|       |
   68|  6.23k|   parseParameters(pb);
   69|  6.23k|}
_ZN5resip10GenericUri11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
  105|    210|{
  106|    210|   if(type > ParameterTypes::UNKNOWN && type < ParameterTypes::MAX_PARAMETER && ParameterFactories[type])
  ------------------
  |  Branch (106:7): [True: 210, False: 0]
  |  Branch (106:41): [True: 210, False: 0]
  |  Branch (106:81): [True: 0, False: 210]
  ------------------
  107|      0|   {
  108|      0|      return ParameterFactories[type](type, pb, terminators, pool);
  109|      0|   }
  110|    210|   return 0;
  111|    210|}

_ZN5resip16HeaderFieldValueC2EPKcj:
   29|  12.9k|{}
_ZN5resip16HeaderFieldValueC2ERKS0_:
   35|  2.07M|{
   36|  2.07M|   if(mFieldLength)
  ------------------
  |  Branch (36:7): [True: 1.30M, False: 777k]
  ------------------
   37|  1.30M|   {
   38|  1.30M|      char* newField = new char[mFieldLength];
   39|  1.30M|      memcpy(newField, hfv.mField, mFieldLength);
   40|  1.30M|      mField=newField;
   41|  1.30M|   }
   42|  2.07M|}
_ZN5resip16HeaderFieldValueC2ERKS0_NS0_15NoOwnershipEnumE:
  104|   149k|{
  105|       |   // ?bwc? assert(!hfv.mMine); ?
  106|   149k|}
_ZN5resip16HeaderFieldValue4swapERS0_:
  110|    209|{
  111|    209|   if (this != &orig)
  ------------------
  |  Branch (111:8): [True: 209, False: 0]
  ------------------
  112|    209|   {
  113|    209|      std::swap(mField, orig.mField);
  114|    209|      std::swap(mFieldLength, orig.mFieldLength);
  115|    209|      std::swap(mMine, orig.mMine);
  116|    209|   }
  117|    209|   return *this;
  118|    209|}
_ZN5resip16HeaderFieldValueD2Ev:
  121|  2.28M|{
  122|  2.28M|  if (mMine)
  ------------------
  |  Branch (122:7): [True: 1.30M, False: 981k]
  ------------------
  123|  1.30M|  {
  124|  1.30M|     delete[] mField;
  125|  1.30M|  }
  126|  2.28M|}

_ZN5resip16HeaderFieldValueC2Ev:
   39|  41.3k|      {}
_ZN5resip16HeaderFieldValue4initEPKcmb:
   53|   751k|      {
   54|   751k|         if(mMine)
  ------------------
  |  Branch (54:13): [True: 702k, False: 49.0k]
  ------------------
   55|   702k|         {
   56|   702k|            delete [] mField;
   57|   702k|         }
   58|       |         
   59|   751k|         mField=field;
   60|   751k|         mFieldLength=(unsigned int)length;
   61|   751k|         mMine=own;
   62|   751k|      }
_ZNK5resip16HeaderFieldValue9getBufferEv:
   64|   300k|      inline const char* getBuffer() const {return mField;}
_ZNK5resip16HeaderFieldValue9getLengthEv:
   65|   150k|      inline unsigned int getLength() const {return mFieldLength;}
_ZN5resip16HeaderFieldValue5clearEv:
   67|   460k|      {
   68|   460k|         if (mMine)
  ------------------
  |  Branch (68:14): [True: 74.8k, False: 385k]
  ------------------
   69|  74.8k|         {
   70|  74.8k|           delete[] mField;
   71|  74.8k|           mMine=false;
   72|  74.8k|         }
   73|   460k|        mField=0;
   74|   460k|        mFieldLength=0;
   75|   460k|      }

_ZN5resip20HeaderFieldValueListD2Ev:
   19|  21.6k|{
   20|  21.6k|   freeParserContainer();
   21|  21.6k|}
_ZN5resip20HeaderFieldValueList19freeParserContainerEv:
  197|  21.6k|{
  198|  21.6k|   if(mParserContainer)
  ------------------
  |  Branch (198:7): [True: 209, False: 21.4k]
  ------------------
  199|    209|   {
  200|    209|      mParserContainer->~ParserContainerBase();
  201|       |      // The allocator will check whether this belongs to it, and if not, fall 
  202|       |      // back to global operator delete.
  203|    209|      if(mPool)
  ------------------
  |  Branch (203:10): [True: 209, False: 0]
  ------------------
  204|    209|      {
  205|    209|         mPool->deallocate(mParserContainer);
  206|    209|      }
  207|      0|      else
  208|      0|      {
  209|      0|         ::operator delete(mParserContainer);
  210|      0|      }
  211|    209|      mParserContainer=0;
  212|    209|   }
  213|  21.6k|}

_ZN5resip20HeaderFieldValueListC2Ev:
   52|      2|      {}
_ZN5resip20HeaderFieldValueListC2ERNS_8PoolBaseE:
   58|  21.6k|      {}
_ZN5resip20HeaderFieldValueList18setParserContainerEPNS_19ParserContainerBaseE:
   65|    209|      inline void setParserContainer(ParserContainerBase* parser) {mParserContainer = parser;}
_ZNK5resip20HeaderFieldValueList18getParserContainerEv:
   66|   183k|      inline ParserContainerBase* getParserContainer() const {return mParserContainer;}
_ZNK5resip20HeaderFieldValueList4sizeEv:
   73|  3.12M|      size_t size() const {return mHeaders.size();}
_ZN5resip20HeaderFieldValueList9push_backEPKcmb:
   90|   702k|      {
   91|   702k|         mHeaders.push_back(HeaderFieldValue::Empty); 
   92|   702k|         mHeaders.back().init(buffer,length,own);
   93|   702k|      }
_ZN5resip20HeaderFieldValueList5beginEv:
  118|    209|      iterator begin() {return mHeaders.begin();}
_ZN5resip20HeaderFieldValueList3endEv:
  119|    418|      iterator end() {return mHeaders.end();}

_ZN5resip7Headers17isCommaTokenizingENS0_4TypeE:
   29|  2.51k|{
   30|  2.51k|   return CommaTokenizing[type+1];
   31|  2.51k|}
_ZN5resip7Headers13getHeaderNameEi:
   41|  3.20M|{
   42|  3.20M|   if(type < MAX_HEADERS)
  ------------------
  |  Branch (42:7): [True: 3.20M, False: 0]
  ------------------
   43|  3.20M|   {
   44|  3.20M|      return HeaderNames[type+1];
   45|  3.20M|   }
   46|      0|   else
   47|      0|   {
   48|      0|      return Data::Empty;
   49|      0|   }
   50|  3.20M|}
_ZN5resip7Headers7isMultiENS0_4TypeE:
   54|  3.67M|{
   55|  3.67M|   return Multi[type+1];
   56|  3.67M|}
_ZN5resip20H_ContentDispositionC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip17H_ContentEncodingC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip25H_ContentTransferEncodingC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip13H_MIMEVersionC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip10H_PriorityC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip7H_EventC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip19H_SubscriptionStateC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip9H_SIPETagC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip12H_SIPIfMatchC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip11H_ContentIdC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip10H_IdentityC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip14H_AllowEventssC2Ev:
  105|      4|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      4|{                                                                                                                                       \
  107|      4|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      4|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      4|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      4|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      4|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      4|}                                                                                                                                       \
_ZN5resip17H_AcceptEncodingsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip17H_AcceptLanguagesC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip8H_AllowsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip18H_ContentLanguagesC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip15H_ProxyRequiresC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip10H_RequiresC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip12H_SupportedsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip14H_UnsupportedsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip17H_SecurityClientsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip17H_SecurityServersC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip17H_SecurityVerifysC2Ev:
  105|      4|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      4|{                                                                                                                                       \
  107|      4|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      4|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      4|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      4|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      4|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      4|}                                                                                                                                       \
_ZN5resip21H_RequestDispositionsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip9H_ReasonsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip10H_PrivacysC2Ev:
  105|      4|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      4|{                                                                                                                                       \
  107|      4|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      4|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      4|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      4|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      4|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      4|}                                                                                                                                       \
_ZN5resip22H_PMediaAuthorizationsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip10H_ReferSubC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip12H_AnswerModeC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip16H_PrivAnswerModeC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip21H_PAccessNetworkInfosC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip17H_PChargingVectorC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip28H_PChargingFunctionAddressesC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip9H_AcceptsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip13H_ContentTypeC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip14H_IdentityInfoC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip11H_CallInfosC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip12H_AlertInfosC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip12H_ErrorInfosC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip14H_RecordRoutesC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip8H_RoutesC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip10H_ContactsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip6H_FromC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip4H_ToC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip9H_ReplyToC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip9H_ReferToC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip12H_ReferredByC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip7H_PathsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip16H_AcceptContactsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip16H_RejectContactsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip21H_PPreferredIdentitysC2Ev:
  105|      4|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      4|{                                                                                                                                       \
  107|      4|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      4|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      4|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      4|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      4|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      4|}                                                                                                                                       \
_ZN5resip20H_PAssertedIdentitysC2Ev:
  105|      4|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      4|{                                                                                                                                       \
  107|      4|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      4|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      4|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      4|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      4|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      4|}                                                                                                                                       \
_ZN5resip16H_PCalledPartyIdC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip17H_PAssociatedUrisC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip15H_ServiceRoutesC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip16H_RemotePartyIdsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip14H_HistoryInfosC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip14H_OrganizationC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip17H_SecWebSocketKeyC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip18H_SecWebSocketKey1C2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip18H_SecWebSocketKey2C2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip8H_OriginC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip6H_HostC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip20H_SecWebSocketAcceptC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip9H_CookiesC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip8H_ServerC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip9H_SubjectC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip11H_UserAgentC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip11H_TimestampC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZNK5resip15H_ContentLength10getTypeNumEv:
   60|   140k|H_##_enum::getTypeNum() const {return Headers::_enum;}                                                                  \
_ZN5resip15H_ContentLengthC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip13H_MaxForwardsC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip12H_MinExpiresC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip6H_RSeqC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip12H_RetryAfterC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip11H_FlowTimerC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip9H_ExpiresC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip16H_SessionExpiresC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip7H_MinSEC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip8H_CallIDC2Ev:
   70|      4|H_##_enum::H_##_enum()                                                                                                  \
   71|      4|{                                                                                                                       \
   72|      4|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      4|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      4|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      4|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      4|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      4|}                                                                                                                       \
_ZN5resip10H_ReplacesC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip11H_InReplyToC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip6H_JoinC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip14H_TargetDialogC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip20H_AuthenticationInfoC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip16H_AuthorizationsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip20H_ProxyAuthenticatesC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip21H_ProxyAuthorizationsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip18H_WWWAuthenticatesC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip6H_CSeqC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip6H_DateC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip10H_WarningsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip6H_RAckC2Ev:
   70|      2|H_##_enum::H_##_enum()                                                                                                  \
   71|      2|{                                                                                                                       \
   72|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::commaHandling & ParserCategory::CommasAllowedOutputMulti);   \
   73|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::commaHandling & 2);                                            \
   74|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                      \
   75|      2|   Headers::Multi[Headers::_enum+1] = false;                                                                             \
   76|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
   77|      2|}                                                                                                                       \
_ZN5resip6H_ViasC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip20H_PVisitedNetworkIDsC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip13H_UserToUsersC2Ev:
  105|      2|H_##_enum##s::H_##_enum##s()                                                                                                            \
  106|      2|{                                                                                                                                       \
  107|      2|   Headers::CommaTokenizing[Headers::_enum+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       \
  108|      2|   Headers::CommaEncoding[Headers::_enum+1] = bool(Type::value_type::commaHandling & 2);                                                \
  109|      2|   Headers::HeaderNames[Headers::_enum+1] = _name;                                                                                      \
  110|      2|   Headers::Multi[Headers::_enum+1] = true;                                                                             \
  111|      2|   HeaderBase::theHeaderInstances[Headers::_enum+1] = this;                                                                             \
  112|      2|}                                                                                                                                       \
_ZN5resip19H_RESIP_DO_NOT_USEsC2Ev:
  319|      2|{                                                                                                                                       
  320|      2|   Headers::CommaTokenizing[Headers::RESIP_DO_NOT_USE+1] = bool(Type::value_type::commaHandling & ParserCategory::CommasAllowedOutputMulti);       
  321|      2|   Headers::CommaEncoding[Headers::RESIP_DO_NOT_USE+1] = bool(Type::value_type::commaHandling & 2);                                                
  322|      2|   Headers::HeaderNames[Headers::RESIP_DO_NOT_USE+1] = "RESIP_DO_NOT_USE";                                                                                      
  323|      2|}                                                                                                                                       
_ZN5resip7Headers7getTypeEPKci:
  348|  2.46M|{
  349|  2.46M|   const struct headers* p;
  350|  2.46M|   p = HeaderHash::in_word_set(name, len);
  351|  2.46M|   return p ? Headers::Type(p->type) : Headers::UNKNOWN;
  ------------------
  |  Branch (351:11): [True: 2.14M, False: 317k]
  ------------------
  352|  2.46M|}

_ZN5resip6Helper11integer2hexEPcjb:
   52|  71.4k|{
   53|  71.4k|   int i;
   54|  71.4k|   unsigned char j;
   55|  71.4k|   int k = 0;
   56|  71.4k|   char* s;
   57|       |
   58|  71.4k|   _s = htonl(_s);
   59|  71.4k|   s = (char*)&_s;
   60|       |
   61|   357k|   for (i = 0; i < 4; i++) 
  ------------------
  |  Branch (61:16): [True: 285k, False: 71.4k]
  ------------------
   62|   285k|   {
   63|   285k|      j = (s[i] >> 4) & 0xf;
   64|   285k|      if (j <= 9) 
  ------------------
  |  Branch (64:11): [True: 253k, False: 31.6k]
  ------------------
   65|   253k|      {
   66|   253k|         if(_l || j != 0 || k != 0)
  ------------------
  |  Branch (66:13): [True: 0, False: 253k]
  |  Branch (66:19): [True: 59.6k, False: 194k]
  |  Branch (66:29): [True: 10.5k, False: 183k]
  ------------------
   67|  70.1k|         {
   68|  70.1k|            _d[k++] = (j + '0');
   69|  70.1k|         }
   70|   253k|      }
   71|  31.6k|      else 
   72|  31.6k|      {
   73|  31.6k|         _d[k++] = (j + 'a' - 10);
   74|  31.6k|      }
   75|       |
   76|   285k|      j = s[i] & 0xf;
   77|   285k|      if (j <= 9) 
  ------------------
  |  Branch (77:11): [True: 239k, False: 45.8k]
  ------------------
   78|   239k|      {
   79|   239k|         if(_l || j != 0 || k != 0)
  ------------------
  |  Branch (79:13): [True: 0, False: 239k]
  |  Branch (79:19): [True: 60.2k, False: 179k]
  |  Branch (79:29): [True: 15.1k, False: 164k]
  ------------------
   80|  75.4k|         {
   81|  75.4k|            _d[k++] = (j + '0');
   82|  75.4k|         }
   83|   239k|      }
   84|  45.8k|      else 
   85|  45.8k|      {
   86|  45.8k|         _d[k++] = (j + 'a' - 10);
   87|  45.8k|      }
   88|   285k|   }
   89|  71.4k|}
_ZN5resip6Helper11hex2integerEPKc:
   92|  8.39k|{
   93|  8.39k|   unsigned int i, res = 0;
   94|       |
   95|  39.8k|   for(i = 0; i < 8; i++) 
  ------------------
  |  Branch (95:15): [True: 39.0k, False: 810]
  ------------------
   96|  39.0k|   {
   97|  39.0k|      if ((_s[i] >= '0') && (_s[i] <= '9')) 
  ------------------
  |  Branch (97:11): [True: 35.3k, False: 3.68k]
  |  Branch (97:29): [True: 12.6k, False: 22.6k]
  ------------------
   98|  12.6k|      {
   99|  12.6k|         res *= 16;
  100|  12.6k|         res += _s[i] - '0';
  101|  12.6k|      }
  102|  26.3k|      else if ((_s[i] >= 'a') && (_s[i] <= 'f')) 
  ------------------
  |  Branch (102:16): [True: 11.5k, False: 14.8k]
  |  Branch (102:34): [True: 9.42k, False: 2.08k]
  ------------------
  103|  9.42k|      {
  104|  9.42k|         res *= 16;
  105|  9.42k|         res += _s[i] - 'a' + 10;
  106|  9.42k|      } 
  107|  16.9k|      else if ((_s[i] >= 'A') && (_s[i] <= 'F')) 
  ------------------
  |  Branch (107:16): [True: 12.5k, False: 4.35k]
  |  Branch (107:34): [True: 9.37k, False: 3.22k]
  ------------------
  108|  9.37k|      {
  109|  9.37k|         res *= 16;
  110|  9.37k|         res += _s[i] - 'A' + 10;
  111|  9.37k|      }
  112|  7.58k|      else 
  113|  7.58k|      {
  114|  7.58k|         return res;
  115|  7.58k|      }
  116|  39.0k|   }
  117|       |
  118|    810|   return res;
  119|  8.39k|}

_ZN5resip6Helper14NonceHelperPtrC2Ev:
  583|      2|            NonceHelperPtr() : mNonceHelper(0) {}

_ZN5resip15IntegerCategoryC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   30|  6.23k|{}
_ZN5resip15IntegerCategory5parseERNS_11ParseBufferE:
   96|  6.23k|{
   97|  6.23k|   const char* start = pb.skipWhitespace();
   98|  6.23k|   mValue = pb.integer();
   99|  6.23k|   pb.skipToChar('(');
  100|  6.23k|   if (!pb.eof())
  ------------------
  |  Branch (100:8): [True: 25, False: 6.21k]
  ------------------
  101|     25|   {
  102|     25|      start = pb.skipChar();
  103|     25|      pb.skipToEndQuote(')');
  104|     25|      pb.data(mComment, start);
  105|     25|      pb.skipChar();
  106|     25|   }
  107|  6.21k|   else
  108|  6.21k|   {
  109|  6.21k|      pb.reset(start);
  110|  6.21k|      start = pb.skipNonWhitespace();
  111|  6.21k|   }
  112|       |   
  113|  6.23k|   parseParameters(pb);
  114|  6.23k|}

_ZN5resip15InvalidContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeES6_:
   25|  6.23k|{
   26|  6.23k|}
_ZN5resip15InvalidContentsD2Ev:
   43|  6.23k|{
   44|  6.23k|}
_ZN5resip15InvalidContents5parseERNS_11ParseBufferE:
   80|  6.23k|{
   81|  6.23k|   const char* anchor = pb.position();
   82|  6.23k|   pb.skipToEnd();
   83|  6.23k|   pb.data(mText, anchor);
   84|  6.23k|}

_ZN5resip10LazyParserC2ERKNS_16HeaderFieldValueE:
   19|   149k|{
   20|   149k|}
_ZN5resip10LazyParserC2EPKci:
   31|    520|{}
_ZN5resip10LazyParserC2Ev:
   36|  31.7k|{
   37|  31.7k|}
_ZN5resip10LazyParserC2ERKS0_:
   42|  74.9k|{}
_ZN5resip10LazyParserD2Ev:
   51|   257k|{
   52|   257k|   clear();
   53|   257k|}
_ZN5resip10LazyParseraSERKS0_:
   57|  6.13k|{
   58|  6.13k|   resip_assert_not_null( &rhs );
  ------------------
  |  |  123|  6.13k|#define resip_assert_not_null(x)                    \
  |  |  124|  6.13k|{                                                   \
  |  |  125|  6.13k|   resip_assert(((void*)(x)) != 0);                 \
  |  |  ------------------
  |  |  |  |   96|  6.13k|#define resip_assert(x)                                                        \
  |  |  |  |   97|  6.13k|{                                                                              \
  |  |  |  |   98|  6.13k|   if ( !(x) )                                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:9): [True: 0, False: 6.13k]
  |  |  |  |  ------------------
  |  |  |  |   99|  6.13k|   {                                                                           \
  |  |  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  |  |  ------------------
  |  |  |  |  101|      0|   }                                                                           \
  |  |  |  |  102|  6.13k|   {                                                                           \
  |  |  |  |  103|  6.13k|      assert( (x) );                                                           \
  |  |  |  |  104|  6.13k|   }                                                                           \
  |  |  |  |  105|  6.13k|}
  |  |  ------------------
  |  |  126|  6.13k|}
  ------------------
   59|       |   
   60|  6.13k|   if (this != &rhs)
  ------------------
  |  Branch (60:8): [True: 6.13k, False: 0]
  ------------------
   61|  6.13k|   {
   62|  6.13k|      clear();
   63|  6.13k|      mState = rhs.mState;
   64|  6.13k|      if (rhs.mState!=DIRTY)
  ------------------
  |  Branch (64:11): [True: 0, False: 6.13k]
  ------------------
   65|      0|      {
   66|      0|         mHeaderField=rhs.mHeaderField;
   67|      0|      }
   68|  6.13k|   }
   69|  6.13k|   return *this;
   70|  6.13k|}
_ZNK5resip10LazyParser7doParseEv:
   74|   149k|{
   75|   149k|   LazyParser* ncThis = const_cast<LazyParser*>(this);
   76|       |   // .bwc. We assume the worst, and if the parse succeeds, we update.
   77|   149k|   ncThis->mState = MALFORMED;
   78|   149k|   ParseBuffer pb(mHeaderField.getBuffer(), mHeaderField.getLength(), errorContext());
   79|   149k|   ncThis->parse(pb);
   80|       |   // .bwc. If we get this far without throwing, the parse has succeeded.
   81|   149k|   ncThis->mState = WELL_FORMED;
   82|   149k|}
_ZN5resip10LazyParser5clearEv:
  100|   450k|{
  101|   450k|   mHeaderField.clear();
  102|   450k|}

_ZN5resip10LazyParser11checkParsedEv:
  110|   162k|      {
  111|   162k|         const LazyParser* constThis = const_cast<const LazyParser*>(this);
  112|   162k|         constThis->checkParsed();
  113|   162k|         mState=DIRTY;
  114|   162k|      }
_ZNK5resip10LazyParser11checkParsedEv:
  103|   260k|      {
  104|   260k|         if (mState==NOT_PARSED)
  ------------------
  |  Branch (104:14): [True: 149k, False: 110k]
  ------------------
  105|   149k|         {
  106|   149k|            doParse();
  107|   149k|         }
  108|   260k|      }
_ZNK5resip10LazyParser8isParsedEv:
   91|  81.0k|      bool isParsed() const {return (mState!=NOT_PARSED);}

_ZN5resip7MessageC2Ev:
   13|  9.60k|{}

_ZN5resip7MessageD2Ev:
   24|  9.60k|      virtual ~Message() {}

_ZN5resip22MessageWaitingContents4initEv:
   18|      4|{
   19|      4|   static ContentsFactory<MessageWaitingContents> factory;
   20|      4|   (void)factory;
   21|      4|   return true;
   22|      4|}
_ZN5resip22MessageWaitingContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   47|  6.23k|{
   48|  43.6k|   for(int i = 0; i < (int)MW_MAX; i++)
  ------------------
  |  Branch (48:19): [True: 37.4k, False: 6.23k]
  ------------------
   49|  37.4k|   {
   50|  37.4k|      mHeaders[i] = 0;
   51|  37.4k|   }
   52|  6.23k|}
_ZN5resip22MessageWaitingContentsD2Ev:
   86|  6.23k|{
   87|  6.23k|   clear();
   88|  6.23k|}
_ZN5resip22MessageWaitingContents5clearEv:
   92|  6.23k|{
   93|  6.23k|   mHasMessages = false;
   94|       |
   95|  6.23k|   delete mAccountUri;
   96|  6.23k|   mAccountUri = 0;
   97|       |   
   98|  43.6k|   for (int i = 0; i < (int)MW_MAX; i++)
  ------------------
  |  Branch (98:20): [True: 37.4k, False: 6.23k]
  ------------------
   99|  37.4k|   {
  100|  37.4k|      delete mHeaders[i];
  101|  37.4k|   }
  102|  6.23k|}
_ZN5resip22MessageWaitingContents13getStaticTypeEv:
  133|      2|{
  134|      2|   static Mime type("application", "simple-message-summary");
  135|       |   //static Mime type("text", "data");
  136|      2|   return type;
  137|      2|}
_ZN5resip22MessageWaitingContents5parseERNS_11ParseBufferE:
  289|  6.23k|{
  290|  6.23k|   pb.skipChars("Messages-Waiting");
  291|  6.23k|   pb.skipWhitespace();
  292|  6.23k|   pb.skipChar(Symbols::COLON[0]);
  293|  6.23k|   const char* anchor = pb.skipWhitespace();
  294|  6.23k|   pb.skipNonWhitespace();
  295|       |   
  296|  6.23k|   Data has;
  297|  6.23k|   pb.data(has, anchor);
  298|  6.23k|   if (isEqualNoCase(has, "yes"))
  ------------------
  |  Branch (298:8): [True: 0, False: 6.23k]
  ------------------
  299|      0|   {
  300|      0|      mHasMessages = true;
  301|      0|   }
  302|  6.23k|   else if (isEqualNoCase(has, "no"))
  ------------------
  |  Branch (302:13): [True: 0, False: 6.23k]
  ------------------
  303|      0|   {
  304|      0|      mHasMessages = false;
  305|      0|   }
  306|  6.23k|   else
  307|  6.23k|   {
  308|  6.23k|      pb.fail(__FILE__, __LINE__);
  309|  6.23k|   }
  310|       |
  311|  6.23k|   anchor = pb.skipWhitespace();
  312|  6.23k|   if (pb.eof())
  ------------------
  |  Branch (312:8): [True: 0, False: 6.23k]
  ------------------
  313|      0|   {
  314|      0|      return;
  315|      0|   }
  316|       |
  317|  6.23k|   Data accountHeader;
  318|  6.23k|   pb.skipToOneOf(ParseBuffer::Whitespace, Symbols::COLON);
  319|  6.23k|   pb.data(accountHeader, anchor);
  320|  6.23k|   static const Data AccountMessage("message-account");
  321|  6.23k|   if (isEqualNoCase(accountHeader, AccountMessage))
  ------------------
  |  Branch (321:8): [True: 0, False: 6.23k]
  ------------------
  322|      0|   {
  323|      0|      pb.skipWhitespace();
  324|      0|      pb.skipChar(Symbols::COLON[0]);
  325|      0|      pb.skipWhitespace();
  326|       |      
  327|      0|      mAccountUri = new Uri();
  328|      0|      mAccountUri->parse(pb);
  329|      0|      pb.skipChars(Symbols::CRLF);
  330|      0|   }
  331|  6.23k|   else
  332|  6.23k|   {
  333|  6.23k|      pb.reset(anchor);
  334|  6.23k|   }
  335|       |
  336|  6.23k|   while (!pb.eof() && *pb.position() != Symbols::CR[0])
  ------------------
  |  Branch (336:11): [True: 0, False: 6.23k]
  |  Branch (336:11): [True: 0, False: 6.23k]
  |  Branch (336:24): [True: 0, False: 0]
  ------------------
  337|      0|   {
  338|      0|      int ht = -1;
  339|      0|      switch (tolower(*pb.position()))
  340|      0|      {
  341|      0|         case 'v' :
  ------------------
  |  Branch (341:10): [True: 0, False: 0]
  ------------------
  342|      0|            ht = mw_voice;
  343|      0|            break;
  344|      0|         case 'f' :
  ------------------
  |  Branch (344:10): [True: 0, False: 0]
  ------------------
  345|      0|            ht = mw_fax;
  346|      0|            break;
  347|      0|         case 'p' :
  ------------------
  |  Branch (347:10): [True: 0, False: 0]
  ------------------
  348|      0|            ht = mw_pager;
  349|      0|            break;
  350|      0|         case 'm' :
  ------------------
  |  Branch (350:10): [True: 0, False: 0]
  ------------------
  351|      0|            ht = mw_multimedia;
  352|      0|            break;
  353|      0|         case 't' :
  ------------------
  |  Branch (353:10): [True: 0, False: 0]
  ------------------
  354|      0|            ht = mw_text;
  355|      0|            break;
  356|      0|         case 'n' :
  ------------------
  |  Branch (356:10): [True: 0, False: 0]
  ------------------
  357|      0|            ht = mw_none;
  358|      0|            break;
  359|      0|         default :
  ------------------
  |  Branch (359:10): [True: 0, False: 0]
  ------------------
  360|      0|            pb.fail(__FILE__, __LINE__);
  361|      0|      }
  362|      0|      resip_assert(ht != -1);
  ------------------
  |  |   96|      0|#define resip_assert(x)                                                        \
  |  |   97|      0|{                                                                              \
  |  |   98|      0|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   99|      0|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|      0|   {                                                                           \
  |  |  103|      0|      assert( (x) );                                                           \
  |  |  104|      0|   }                                                                           \
  |  |  105|      0|}
  ------------------
  363|       |
  364|      0|      pb.skipToOneOf(ParseBuffer::Whitespace, Symbols::COLON);
  365|      0|      pb.skipWhitespace();
  366|      0|      pb.skipChar(Symbols::COLON[0]);
  367|      0|      pb.skipWhitespace();
  368|       |
  369|      0|      unsigned int numNew = pb.integer();
  370|      0|      pb.skipWhitespace();
  371|      0|      pb.skipChar(Symbols::SLASH[0]);
  372|      0|      pb.skipWhitespace();
  373|       |
  374|      0|      unsigned int numOld = pb.integer();
  375|      0|      skipSipLWS(pb);
  376|       |
  377|      0|      if (!pb.eof() && *pb.position() != Symbols::LPAREN[0])
  ------------------
  |  Branch (377:11): [True: 0, False: 0]
  |  Branch (377:11): [True: 0, False: 0]
  |  Branch (377:24): [True: 0, False: 0]
  ------------------
  378|      0|      {
  379|      0|         if (mHeaders[ht] != 0)
  ------------------
  |  Branch (379:14): [True: 0, False: 0]
  ------------------
  380|      0|         {
  381|      0|            pb.fail(__FILE__, __LINE__);
  382|      0|         }
  383|      0|         mHeaders[ht] = new Header(numNew, numOld);
  384|      0|      }
  385|      0|      else
  386|      0|      {
  387|      0|         pb.skipChar();
  388|      0|         pb.skipWhitespace();
  389|       |
  390|      0|         unsigned int numUrgentNew = pb.integer();
  391|      0|         pb.skipWhitespace();
  392|      0|         pb.skipChar(Symbols::SLASH[0]);
  393|      0|         pb.skipWhitespace();
  394|       |
  395|      0|         unsigned int numUrgentOld = pb.integer();
  396|      0|         pb.skipWhitespace();
  397|      0|         pb.skipChar(Symbols::RPAREN[0]);
  398|       |         // skip LWS as specified in rfc3261
  399|      0|         skipSipLWS(pb);
  400|       |
  401|      0|         if (mHeaders[ht] != 0)
  ------------------
  |  Branch (401:14): [True: 0, False: 0]
  ------------------
  402|      0|         {
  403|      0|            pb.fail(__FILE__, __LINE__);
  404|      0|         }
  405|      0|         mHeaders[ht] = new Header(numNew, numOld, numUrgentNew, numUrgentOld);
  406|      0|      }
  407|       |      
  408|      0|      pb.skipChars(Symbols::CRLF);
  409|      0|   }
  410|       |
  411|  6.23k|   if (!pb.eof() && *pb.position() == Symbols::CR[0])
  ------------------
  |  Branch (411:8): [True: 0, False: 6.23k]
  |  Branch (411:8): [True: 0, False: 6.23k]
  |  Branch (411:21): [True: 0, False: 0]
  ------------------
  412|      0|   {
  413|      0|      pb.skipChars(Symbols::CRLF);
  414|       |      
  415|      0|      while (!pb.eof())
  ------------------
  |  Branch (415:14): [True: 0, False: 0]
  ------------------
  416|      0|      {
  417|      0|         anchor = pb.position();
  418|      0|         Data header;
  419|      0|         pb.skipToOneOf(ParseBuffer::Whitespace, Symbols::COLON);
  420|      0|         pb.data(header, anchor);
  421|       |
  422|      0|         pb.skipWhitespace();
  423|      0|         pb.skipChar(Symbols::COLON[0]);
  424|      0|         anchor = pb.skipWhitespace();
  425|       |
  426|      0|         while (true)
  ------------------
  |  Branch (426:17): [Folded - Ignored]
  ------------------
  427|      0|         {
  428|       |            // CodeWarrior isn't helpful enough to pick the "obvious" operator definition
  429|       |            // so we add volatile here so CW is completely unconfused what to do.
  430|      0|            const volatile char* pos = pb.skipToChar(Symbols::CR[0]);
  431|      0|            skipSipLWS(pb);
  432|      0|            if (pb.position() == pos)
  ------------------
  |  Branch (432:17): [True: 0, False: 0]
  ------------------
  433|      0|            {
  434|      0|               Data content;
  435|      0|               pb.data(content, anchor);
  436|      0|               mExtensions[header] = content;
  437|       |
  438|      0|               pb.skipChars(Symbols::CRLF);
  439|      0|               break;
  440|      0|            }
  441|      0|         }
  442|      0|      }
  443|      0|   }
  444|  6.23k|}

_ZN5resip13getMethodNameENS_11MethodTypesE:
   46|  6.75k|{
   47|  6.75k|    if (t < UNKNOWN ||  t >= MAX_METHODS) 
  ------------------
  |  Branch (47:9): [True: 0, False: 6.75k]
  |  Branch (47:25): [True: 0, False: 6.75k]
  ------------------
   48|      0|        t=UNKNOWN;
   49|  6.75k|    return MethodNames[t];
   50|  6.75k|}
_ZN5resip13getMethodTypeEPKci:
   61|  6.55k|{
   62|  6.55k|   const struct methods* m = MethodHash::in_word_set(name, len);
   63|  6.55k|   return m ? m->type : UNKNOWN;
  ------------------
  |  Branch (63:11): [True: 1, False: 6.54k]
  ------------------
   64|  6.55k|}

_ZN5resip4MimeC2ERKNS_4DataES3_:
   30|     49|{}
_ZN5resip4MimeC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   38|  6.23k|{}
_ZN5resip4MimeC2ERKS0_PNS_8PoolBaseE:
   45|  74.9k|{}
_ZNK5resip4MimeeqERKS0_:
   82|     38|{
   83|     38|   return (isEqualNoCase(type(), rhs.type()) &&
  ------------------
  |  Branch (83:12): [True: 12, False: 26]
  ------------------
   84|     38|           isEqualNoCase(subType(), rhs.subType()));
  ------------------
  |  Branch (84:12): [True: 2, False: 10]
  ------------------
   85|     38|}
_ZNK5resip4Mime4typeEv:
   95|    150|{
   96|    150|   checkParsed(); 
   97|    150|   return mType;
   98|    150|}
_ZNK5resip4Mime7subTypeEv:
  101|     98|{
  102|     98|   checkParsed(); 
  103|     98|   return mSubType;
  104|     98|}
_ZN5resip4Mime5parseERNS_11ParseBufferE:
  121|  6.23k|{
  122|  6.23k|   const char* anchor = pb.skipWhitespace();
  123|  6.23k|   static std::bitset<256> delimiter1=Data::toBitset("\r\n\t /");
  124|  6.23k|   pb.skipToOneOf(delimiter1);
  125|  6.23k|   pb.data(mType, anchor);
  126|       |
  127|  6.23k|   pb.skipWhitespace();
  128|  6.23k|   pb.skipChar(Symbols::SLASH[0]);
  129|       |
  130|  6.23k|   anchor = pb.skipWhitespace();
  131|  6.23k|   static std::bitset<256> delimiter2=Data::toBitset("\r\n\t ;");
  132|  6.23k|   pb.skipToOneOf(delimiter2);
  133|  6.23k|   pb.data(mSubType, anchor);
  134|       |
  135|  6.23k|   pb.skipWhitespace();
  136|  6.23k|   parseParameters(pb);
  137|  6.23k|}
_ZN5resip4Mime11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
  169|  17.1k|{
  170|  17.1k|   if(type > ParameterTypes::UNKNOWN && type < ParameterTypes::MAX_PARAMETER && ParameterFactories[type])
  ------------------
  |  Branch (170:7): [True: 17.1k, False: 0]
  |  Branch (170:41): [True: 17.1k, False: 0]
  |  Branch (170:81): [True: 2.87k, False: 14.3k]
  ------------------
  171|  2.87k|   {
  172|  2.87k|      return ParameterFactories[type](type, pb, terminators, pool);
  173|  2.87k|   }
  174|  14.3k|   return 0;
  175|  17.1k|}
_ZNK5resip4Mime6existsERKNS_5ParamIS0_EE:
  179|  6.23k|{
  180|  6.23k|    checkParsed();
  181|  6.23k|    bool ret = getParameterByEnum(paramType.getTypeNum()) != NULL;
  182|  6.23k|    return ret;
  183|  6.23k|}
_ZN5resip4Mime5paramERKNS_14boundary_ParamE:
  194|  12.4k|Mime::param(const _enum##_Param& paramType)                                                           \
  195|  12.4k|{                                                                                                               \
  196|  12.4k|   checkParsed();                                                                                               \
  197|  12.4k|   _enum##_Param::Type* p =                                                                                     \
  198|  12.4k|      static_cast<_enum##_Param::Type*>(getParameterByEnum(paramType.getTypeNum()));                            \
  199|  12.4k|   if (!p)                                                                                                      \
  ------------------
  |  Branch (199:8): [True: 6.23k, False: 6.23k]
  ------------------
  200|  12.4k|   {                                                                                                            \
  201|  6.23k|      p = new _enum##_Param::Type(paramType.getTypeNum());                                                      \
  202|  6.23k|      mParameters.push_back(p);                                                                                 \
  203|  6.23k|   }                                                                                                            \
  204|  12.4k|   return p->value();                                                                                           \
  205|  12.4k|}                                                                                                               \

_ZN5resip16MsgHeaderScannerC2Ev:
  879|  6.23k|{
  880|  6.23k|   if (!mInitialized)
  ------------------
  |  Branch (880:8): [True: 1, False: 6.23k]
  ------------------
  881|      1|   {
  882|      1|      mInitialized = true;
  883|      1|      initialize();
  884|      1|   }
  885|  6.23k|}
_ZN5resip16MsgHeaderScanner17prepareForMessageEPNS_10SipMessageE:
  889|  6.23k|{
  890|  6.23k|   mMsg = msg;
  891|  6.23k|   mState = sMsgStart;
  892|  6.23k|   mPrevScanChunkNumSavedTextChars = 0;
  893|  6.23k|   mNumHeaders=0;
  894|  6.23k|}
_ZN5resip16MsgHeaderScanner9scanChunkEPcjPS1_:
  916|  6.23k|{
  917|  6.23k|   MsgHeaderScanner::ScanChunkResult result;
  918|  6.23k|   CharInfo* localCharInfoArray = charInfoArray;
  919|  6.23k|   TransitionInfo (*localStateMachine)[numCharCategories] = stateMachine;
  920|  6.23k|   State localState = mState;
  921|  6.23k|   char *charPtr = chunk + mPrevScanChunkNumSavedTextChars;
  922|  6.23k|   char *termCharPtr = chunk + chunkLength;
  923|  6.23k|   char saveChunkTermChar = *termCharPtr;
  924|  6.23k|   *termCharPtr = chunkTermSentinelChar;
  925|  6.23k|   char *textStartCharPtr;
  926|  6.23k|   MsgHeaderScanner::TextPropBitMask localTextPropBitMask = mTextPropBitMask;
  927|  6.23k|   if (mPrevScanChunkNumSavedTextChars == 0)
  ------------------
  |  Branch (927:8): [True: 6.23k, False: 0]
  ------------------
  928|  6.23k|   {
  929|  6.23k|      textStartCharPtr = 0;
  930|  6.23k|   }
  931|      0|   else
  932|      0|   {
  933|      0|      textStartCharPtr = chunk;
  934|      0|   }
  935|  6.23k|   --charPtr;  // The loop starts by advancing "charPtr", so pre-adjust it.
  936|  6.23k|   for (;;)
  937|  62.8M|   {
  938|       |      // BEGIN message header character scan block BEGIN
  939|       |      // The code in this block is executed once per message header character.
  940|       |      // This entire file is designed specifically to minimize this block's size.
  941|  62.8M|      ++charPtr;
  942|  62.8M|      CharInfo *charInfo = &localCharInfoArray[((unsigned char) (*charPtr))];
  943|  62.8M|      CharCategory charCategory = charInfo->category;
  944|  62.8M|      localTextPropBitMask |= charInfo->textPropBitMask;
  945|  78.8M|     determineTransitionFromCharCategory:
  946|  78.8M|      TransitionInfo *transitionInfo =
  947|  78.8M|         &(localStateMachine[(unsigned)localState][(size_t)charCategory]);
  948|  78.8M|      TransitionAction transitionAction = transitionInfo->action;
  949|       |#if defined(RESIP_MSG_HEADER_SCANNER_DEBUG)  
  950|       |      printStateTransition(localState, *charPtr, transitionAction);
  951|       |#endif
  952|  78.8M|      localState = transitionInfo->nextState;
  953|  78.8M|      if (transitionAction == taNone) continue;
  ------------------
  |  Branch (953:11): [True: 59.7M, False: 19.0M]
  ------------------
  954|       |      // END message header character scan block END
  955|       |      // The loop remainder is executed about 4-5 times per message header line.
  956|  19.0M|      switch (transitionAction)
  957|  19.0M|      {
  958|    520|         case taTermStatusLine:
  ------------------
  |  Branch (958:10): [True: 520, False: 19.0M]
  ------------------
  959|    520|            if (!processMsgHeaderStatusLine(mMsg,
  ------------------
  |  Branch (959:17): [True: 0, False: 520]
  ------------------
  960|    520|                                            textStartCharPtr,
  961|    520|                                            (unsigned int)(charPtr - textStartCharPtr),
  962|    520|                                            localTextPropBitMask))
  963|      0|            {
  964|      0|               result = MsgHeaderScanner::scrError;
  965|      0|               *unprocessedCharPtr = charPtr;
  966|      0|               goto endOfFunction;
  967|      0|            }
  968|    520|            textStartCharPtr = 0;
  969|    520|            break;
  970|  2.51k|         case taTermFieldName:
  ------------------
  |  Branch (970:10): [True: 2.51k, False: 19.0M]
  ------------------
  971|  2.51k|         {
  972|  2.51k|            mFieldNameLength = (unsigned int)(charPtr - textStartCharPtr);
  973|  2.51k|            bool isMultiValueAllowed;
  974|  2.51k|            lookupMsgHeaderFieldInfo(textStartCharPtr,
  975|  2.51k|                                     &mFieldNameLength,
  976|  2.51k|                                     localTextPropBitMask,
  977|  2.51k|                                     &mFieldKind,
  978|  2.51k|                                     &isMultiValueAllowed);
  979|  2.51k|            mFieldName = textStartCharPtr;
  980|  2.51k|            textStartCharPtr = 0;
  981|  2.51k|            if (isMultiValueAllowed) 
  ------------------
  |  Branch (981:17): [True: 1.45k, False: 1.05k]
  ------------------
  982|  1.45k|            {
  983|  1.45k|               localState += deltaOfNStateFrom1State;
  984|  1.45k|            }
  985|  2.51k|         }
  986|  2.51k|         break;
  987|  1.02k|         case taBeyondEmptyValue:
  ------------------
  |  Branch (987:10): [True: 1.02k, False: 19.0M]
  ------------------
  988|  1.02k|            processMsgHeaderFieldNameAndValue(mMsg,
  989|  1.02k|                                              mFieldKind,
  990|  1.02k|                                              mFieldName,
  991|  1.02k|                                              mFieldNameLength,
  992|  1.02k|                                              0,
  993|  1.02k|                                              0,
  994|  1.02k|                                              0);
  995|  1.02k|            ++mNumHeaders;
  996|  1.02k|            goto performStartTextAction;
  997|  1.33k|         case taTermValueAfterLineBreak:
  ------------------
  |  Branch (997:10): [True: 1.33k, False: 19.0M]
  ------------------
  998|  1.33k|            processMsgHeaderFieldNameAndValue(mMsg,
  999|  1.33k|                                              mFieldKind,
 1000|  1.33k|                                              mFieldName,
 1001|  1.33k|                                              mFieldNameLength,
 1002|  1.33k|                                              textStartCharPtr,
 1003|  1.33k|                                              (unsigned int)((charPtr - textStartCharPtr) - 2),
 1004|  1.33k|                                              localTextPropBitMask);       //^:CRLF
 1005|  1.33k|            ++mNumHeaders;
 1006|  1.33k|            goto performStartTextAction;
 1007|  1.52M|         case taTermValue:
  ------------------
  |  Branch (1007:10): [True: 1.52M, False: 17.5M]
  ------------------
 1008|  1.52M|            processMsgHeaderFieldNameAndValue(mMsg,
 1009|  1.52M|                                              mFieldKind,
 1010|  1.52M|                                              mFieldName,
 1011|  1.52M|                                              mFieldNameLength,
 1012|  1.52M|                                              textStartCharPtr,
 1013|  1.52M|                                              (unsigned int)(charPtr - textStartCharPtr),
 1014|  1.52M|                                              localTextPropBitMask);
 1015|  1.52M|            textStartCharPtr = 0;
 1016|  1.52M|            ++mNumHeaders;
 1017|  1.52M|            break;
 1018|  1.53M|         case taStartText:
  ------------------
  |  Branch (1018:10): [True: 1.53M, False: 17.5M]
  ------------------
 1019|  1.53M|        performStartTextAction:
 1020|  1.53M|            textStartCharPtr = charPtr;
 1021|  1.53M|            localTextPropBitMask = 0;
 1022|  1.53M|            break;
 1023|     99|         case taEndHeader:
  ------------------
  |  Branch (1023:10): [True: 99, False: 19.0M]
  ------------------
 1024|       |            // textStartCharPtr is not 0.  Not currently relevant.
 1025|     99|            result = MsgHeaderScanner::scrEnd;
 1026|     99|            *unprocessedCharPtr = charPtr + 1;  // The current char is processed.
 1027|     99|            goto endOfFunction;
 1028|      0|            break;
 1029|  15.9M|         case taChunkTermSentinel:
  ------------------
  |  Branch (1029:10): [True: 15.9M, False: 3.06M]
  ------------------
 1030|  15.9M|            if (charPtr == termCharPtr)
  ------------------
  |  Branch (1030:17): [True: 3.04k, False: 15.9M]
  ------------------
 1031|  3.04k|            {
 1032|       |               // The chunk has been consumed.  Save some state and request another.
 1033|  3.04k|               mState = localState;
 1034|  3.04k|               if (textStartCharPtr == 0) 
  ------------------
  |  Branch (1034:20): [True: 163, False: 2.88k]
  ------------------
 1035|    163|               {
 1036|    163|                  mPrevScanChunkNumSavedTextChars = 0;
 1037|    163|               }
 1038|  2.88k|               else
 1039|  2.88k|               {
 1040|  2.88k|                  mPrevScanChunkNumSavedTextChars = (unsigned int)(termCharPtr - textStartCharPtr);
 1041|  2.88k|               }
 1042|  3.04k|               mTextPropBitMask = localTextPropBitMask;
 1043|  3.04k|               result = MsgHeaderScanner::scrNextChunk;
 1044|  3.04k|               *unprocessedCharPtr = termCharPtr - mPrevScanChunkNumSavedTextChars;
 1045|  3.04k|               goto endOfFunction;
 1046|  3.04k|            }
 1047|  15.9M|            else
 1048|  15.9M|            {
 1049|       |               // The character is not the sentinel.  Treat it like any other.
 1050|  15.9M|               charCategory = ccOther;
 1051|  15.9M|               goto determineTransitionFromCharCategory;
 1052|  15.9M|            }
 1053|      0|            break;
 1054|  3.09k|         default:
  ------------------
  |  Branch (1054:10): [True: 3.09k, False: 19.0M]
  ------------------
 1055|  3.09k|            result = MsgHeaderScanner::scrError;
 1056|  3.09k|            *unprocessedCharPtr = charPtr;
 1057|  3.09k|            goto endOfFunction;
 1058|  19.0M|      }//switch
 1059|  19.0M|   }//for
 1060|  6.23k|  endOfFunction:
 1061|  6.23k|   *termCharPtr = saveChunkTermChar;
 1062|  6.23k|   return result;
 1063|  6.23k|}
_ZN5resip16MsgHeaderScanner10initializeEv:
 1067|      1|{
 1068|      1|   initCharInfoArray();
 1069|      1|   initStateMachine();
 1070|      1|   return true;
 1071|      1|}
_ZN5resip26processMsgHeaderStatusLineEPNS_10SipMessageEPcjh:
  836|    520|{
  837|       |   //.jacob. Don't ignore valueTextPropBitMask, and don't always return true.
  838|    520|   msg->setStartLine(lineText, lineTextLength);
  839|    520|   return true;
  840|    520|}
_ZN5resip24lookupMsgHeaderFieldInfoEPcPjhPiPb:
  820|  2.51k|{
  821|       |   //.jacob. Don't ignore fieldNameTextPropBitMask.
  822|  2.51k|   *fieldKind = Headers::getType(fieldName, *fieldNameLength);
  823|  2.51k|   *isMultiValueAllowed =
  824|  2.51k|      Headers::isCommaTokenizing(static_cast<Headers::Type>(*fieldKind));
  825|  2.51k|}
_ZN5resip33processMsgHeaderFieldNameAndValueEPNS_10SipMessageEiPKcjPcjh:
  865|  1.52M|{
  866|       |   //.jacob. Don't ignore valueTextPropBitMask, particularly for '\r' & '\n'.
  867|  1.52M|   msg->addHeader(static_cast<Headers::Type>(fieldKind),
  868|  1.52M|                  fieldName,
  869|  1.52M|                  fieldNameLength,
  870|  1.52M|                  valueText,
  871|  1.52M|                  valueTextLength);
  872|  1.52M|}
MsgHeaderScanner.cxx:_ZN5resipL17initCharInfoArrayEv:
   62|      1|{
   63|    257|   for(unsigned int charIndex = 0; charIndex <= UCHAR_MAX; ++charIndex) 
  ------------------
  |  Branch (63:36): [True: 256, False: 1]
  ------------------
   64|    256|   {
   65|    256|      charInfoArray[charIndex].category = ccOther;
   66|    256|      charInfoArray[charIndex].textPropBitMask = 0;
   67|    256|   }
   68|       |
   69|      1|   for(const char *charPtr = "abcdefghijklmnopqrstuvwxyz"
   70|      1|          "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-.!%*_+`'~";
   71|     73|       *charPtr;
  ------------------
  |  Branch (71:8): [True: 72, False: 1]
  ------------------
   72|     72|       ++charPtr)
   73|     72|   {
   74|     72|      charInfoArray[c2i(*charPtr)].category = ccFieldName;
   75|     72|   }
   76|       |
   77|      1|   charInfoArray[c2i(' ')].category  = ccWhitespace;
   78|      1|   charInfoArray[c2i('\t')].category = ccWhitespace;
   79|      1|   charInfoArray[c2i(':')].category  = ccColon;
   80|      1|   charInfoArray[c2i('"')].category  = ccDoubleQuotationMark;
   81|      1|   charInfoArray[c2i('<')].category  = ccLeftAngleBracket;
   82|      1|   charInfoArray[c2i('>')].category  = ccRightAngleBracket;
   83|      1|   charInfoArray[c2i('\\')].category  = ccBackslash;
   84|      1|   charInfoArray[c2i(',')].category  = ccComma;
   85|      1|   charInfoArray[c2i('\r')].category = ccCarriageReturn;
   86|      1|   charInfoArray[c2i('\n')].category = ccLineFeed;
   87|       |   // Assert: "chunkTermSentinelChar"'s category is still the default "ccOther".
   88|      1|   charInfoArray[c2i(chunkTermSentinelChar)].category = ccChunkTermSentinel;
   89|       |   // Init text property bit masks.
   90|      1|   charInfoArray[c2i('\r')].textPropBitMask =
   91|      1|      MsgHeaderScanner::tpbmContainsLineBreak;
   92|      1|   charInfoArray[c2i('\n')].textPropBitMask =
   93|      1|      MsgHeaderScanner::tpbmContainsLineBreak;
   94|      1|   charInfoArray[c2i(' ')].textPropBitMask =
   95|      1|      MsgHeaderScanner::tpbmContainsWhitespace;
   96|      1|   charInfoArray[c2i('\t')].textPropBitMask =
   97|      1|      MsgHeaderScanner::tpbmContainsWhitespace;
   98|      1|   charInfoArray[c2i('\\')].textPropBitMask =
   99|      1|      MsgHeaderScanner::tpbmContainsBackslash;
  100|      1|   charInfoArray[c2i('%')].textPropBitMask =
  101|      1|      MsgHeaderScanner::tpbmContainsPercent;
  102|      1|   charInfoArray[c2i(';')].textPropBitMask =
  103|      1|      MsgHeaderScanner::tpbmContainsSemicolon;
  104|      1|   charInfoArray[c2i('(')].textPropBitMask =
  105|      1|      MsgHeaderScanner::tpbmContainsParen;
  106|      1|   charInfoArray[c2i(')')].textPropBitMask =
  107|      1|      MsgHeaderScanner::tpbmContainsParen;
  108|      1|}
MsgHeaderScanner.cxx:_ZN5resipL3c2iEh:
   57|  1.98k|{
   58|  1.98k|   return static_cast<int>(c); 
   59|  1.98k|}
MsgHeaderScanner.cxx:_ZN5resipL16initStateMachineEv:
  318|      1|{
  319|       |   // By convention, error transitions maintain the same state.
  320|      1|   specDefaultTransition(sMsgStart, taStartText, sScanStatusLine);
  321|      1|   specTransition(sMsgStart,
  322|      1|                  ccCarriageReturn,
  323|      1|                  taNone,
  324|      1|                  sHalfLineBreakAtMsgStart);
  325|      1|   specTransition(sMsgStart, ccLineFeed, taError, sMsgStart);
  326|      1|   specHalfLineBreakState(sHalfLineBreakAtMsgStart, sMsgStart);
  327|      1|   specDefaultTransition(sScanStatusLine, taNone, sScanStatusLine);
  328|      1|   specTransition(sScanStatusLine,
  329|      1|                  ccCarriageReturn,
  330|      1|                  taTermStatusLine,
  331|      1|                  sHalfLineBreakAfterStatusLine);
  332|      1|   specHalfLineBreakState(sHalfLineBreakAfterStatusLine,
  333|      1|                          sAfterLineBreakAfterStatusLine);
  334|      1|   specDefaultTransition(sAfterLineBreakAfterStatusLine,
  335|      1|                         taError,
  336|      1|                         sAfterLineBreakAfterStatusLine);
  337|      1|   specTransition(sAfterLineBreakAfterStatusLine,
  338|      1|                  ccFieldName,
  339|      1|                  taStartText,
  340|      1|                  sScanFieldName);
  341|      1|   specTransition(sAfterLineBreakAfterStatusLine,
  342|      1|                  ccWhitespace,
  343|      1|                  taError,
  344|      1|                  sAfterLineBreakAfterStatusLine);
  345|      1|   specTransition(sAfterLineBreakAfterStatusLine,
  346|      1|                  ccCarriageReturn,
  347|      1|                  taNone,
  348|      1|                  sHalfLineBreakAfterLineBreak);
  349|      1|   specDefaultTransition(sScanFieldName, taError, sScanFieldName);
  350|      1|   specTransition(sScanFieldName, ccFieldName, taNone, sScanFieldName);
  351|      1|   specTransition(sScanFieldName,
  352|      1|                  ccWhitespace,
  353|      1|                  taTermFieldName,
  354|      1|                  sScanWhitespaceAfter1FieldName);
  355|      1|   specTransition(sScanFieldName,
  356|      1|                  ccColon,
  357|      1|                  taTermFieldName,
  358|      1|                  sScanWhitespaceOr1Value);
  359|      1|   specXValueStates(0);
  360|      1|   specXValueStates(deltaOfNStateFrom1State);
  361|      1|   specDefaultTransition(sScanNValueInQuotes, taNone, sScanNValueInQuotes);
  362|      1|   specTransition(sScanNValueInQuotes,
  363|      1|                  ccDoubleQuotationMark,
  364|      1|                  taNone,
  365|      1|                  sScanNValue);
  366|      1|   specTransition(sScanNValueInQuotes,
  367|      1|                  ccBackslash,
  368|      1|                  taNone,
  369|      1|                  sAfterEscCharInQuotesInNValue);
  370|      1|   specTransition(sScanNValueInQuotes,
  371|      1|                  ccCarriageReturn,
  372|      1|                  taNone,
  373|      1|                  sHalfLineBreakInQuotesInNValue);
  374|      1|   specDefaultTransition(sAfterEscCharInQuotesInNValue,
  375|      1|                         taNone,
  376|      1|                         sScanNValueInQuotes);
  377|      1|   specHalfLineBreakState(sHalfLineBreakInQuotesInNValue,
  378|      1|                          sAfterLineBreakInQuotesInNValue);
  379|      1|   specDefaultTransition(sAfterLineBreakInQuotesInNValue,
  380|      1|                         taError,
  381|      1|                         sAfterLineBreakInQuotesInNValue);
  382|      1|   specTransition(sAfterLineBreakInQuotesInNValue,
  383|      1|                  ccWhitespace,
  384|      1|                  taNone,
  385|      1|                  sScanNValueInQuotes);
  386|      1|   specDefaultTransition(sScanNValueInAngles, taNone, sScanNValueInAngles);
  387|      1|   specTransition(sScanNValueInAngles,
  388|      1|                  ccRightAngleBracket,
  389|      1|                  taNone,
  390|      1|                  sScanNValue);
  391|      1|   specTransition(sScanNValueInAngles,
  392|      1|                  ccCarriageReturn,
  393|      1|                  taNone,
  394|      1|                  sHalfLineBreakInAnglesInNValue);
  395|      1|   specHalfLineBreakState(sHalfLineBreakInAnglesInNValue,
  396|      1|                          sAfterLineBreakInAnglesInNValue);
  397|      1|   specDefaultTransition(sAfterLineBreakInAnglesInNValue,
  398|      1|                         taError,
  399|      1|                         sAfterLineBreakInAnglesInNValue);
  400|      1|   specTransition(sAfterLineBreakInAnglesInNValue,
  401|      1|                  ccWhitespace,
  402|      1|                  taNone,
  403|      1|                  sScanNValueInAngles);
  404|      1|   specHalfLineBreakState(sHalfLineBreakAfterLineBreak, sMsgStart);
  405|       |
  406|       |   // Most half-line-break states do nothing when they read a line feed,
  407|       |   // but sHalfLineBreakAfterLineBreak must end the message header scanning.
  408|       |
  409|      1|   specTransition(sHalfLineBreakAfterLineBreak,
  410|      1|                  ccLineFeed,
  411|      1|                  taEndHeader,
  412|      1|                  sMsgStart); // Arbitrary but possibly handy.
  413|      1|}
MsgHeaderScanner.cxx:_ZN5resipL21specDefaultTransitionEccc:
  196|     28|{
  197|     28|   for (int charCategory = 0;
  198|    364|        charCategory < numCharCategories;
  ------------------
  |  Branch (198:9): [True: 336, False: 28]
  ------------------
  199|    336|        ++charCategory) 
  200|    336|   {
  201|    336|      specTransition(state, charCategory, action, nextState);
  202|    336|   }
  203|     28|   specTransition(state, ccCarriageReturn, taError, state);
  204|     28|   specTransition(state, ccLineFeed, taError, state);
  205|     28|   specTransition(state, ccChunkTermSentinel, taChunkTermSentinel, state);
  206|     28|}
_ZN5resip14specTransitionEcccc:
  188|    474|{
  189|    474|   stateMachine[c2i(state)][c2i(charCategory)].action = action;
  190|    474|   stateMachine[c2i(state)][c2i(charCategory)].nextState = nextState;
  191|    474|}
MsgHeaderScanner.cxx:_ZN5resipL22specHalfLineBreakStateEcc:
  210|      9|{
  211|      9|   specDefaultTransition(halfLineBreakState, taError, halfLineBreakState);
  212|      9|   specTransition(halfLineBreakState, ccLineFeed, taNone, afterLineBreakState);
  213|      9|}
MsgHeaderScanner.cxx:_ZN5resipL16specXValueStatesEi:
  221|      2|{
  222|      2|   specDefaultTransition(sScanWhitespaceAfter1FieldName + stateDelta,
  223|      2|                         taError,
  224|      2|                         sScanWhitespaceAfter1FieldName + stateDelta);
  225|      2|   specTransition(sScanWhitespaceAfter1FieldName + stateDelta,
  226|      2|                  ccWhitespace,
  227|      2|                  taNone,
  228|      2|                  sScanWhitespaceAfter1FieldName + stateDelta);
  229|      2|   specTransition(sScanWhitespaceAfter1FieldName + stateDelta,
  230|      2|                  ccColon,
  231|      2|                  taNone,
  232|      2|                  sScanWhitespaceOr1Value + stateDelta);
  233|      2|   specDefaultTransition(sScanWhitespaceOr1Value + stateDelta,
  234|      2|                         taStartText,
  235|      2|                         sScan1Value + stateDelta);
  236|      2|   specTransition(sScanWhitespaceOr1Value + stateDelta,
  237|      2|                  ccWhitespace,
  238|      2|                  taNone,
  239|      2|                  sScanWhitespaceOr1Value + stateDelta);
  240|      2|   if (stateDelta == deltaOfNStateFrom1State)
  ------------------
  |  Branch (240:8): [True: 1, False: 1]
  ------------------
  241|      1|   {
  242|      1|      specTransition(sScanWhitespaceOr1Value + stateDelta,
  243|      1|                     ccComma,
  244|      1|                     taError,
  245|      1|                     sScanWhitespaceOr1Value + stateDelta);
  246|      1|      specTransition(sScanWhitespaceOr1Value + stateDelta,
  247|      1|                     ccLeftAngleBracket,
  248|      1|                     taStartText,
  249|      1|                     sScanNValueInAngles);
  250|      1|      specTransition(sScanWhitespaceOr1Value + stateDelta,
  251|      1|                     ccDoubleQuotationMark,
  252|      1|                     taStartText,
  253|      1|                     sScanNValueInQuotes);
  254|      1|   }
  255|      2|   specTransition(sScanWhitespaceOr1Value + stateDelta,
  256|      2|                  ccCarriageReturn,
  257|      2|                  taNone,
  258|      2|                  sHalfLineBreakInWhitespaceBefore1Value + stateDelta);
  259|      2|   specHalfLineBreakState(sHalfLineBreakInWhitespaceBefore1Value + stateDelta,
  260|      2|                          sAfterLineBreakInWhitespaceBefore1Value + stateDelta);
  261|      2|   specDefaultTransition(sAfterLineBreakInWhitespaceBefore1Value + stateDelta,
  262|      2|                         taError,
  263|      2|                         sAfterLineBreakInWhitespaceBefore1Value + stateDelta);
  264|      2|   specTransition(sAfterLineBreakInWhitespaceBefore1Value + stateDelta,
  265|      2|                  ccFieldName,
  266|      2|                  taBeyondEmptyValue,
  267|      2|                  sScanFieldName);
  268|      2|   specTransition(sAfterLineBreakInWhitespaceBefore1Value + stateDelta,
  269|      2|                  ccWhitespace,
  270|      2|                  taNone,
  271|      2|                  sScanWhitespaceOr1Value + stateDelta);
  272|      2|   specTransition(sAfterLineBreakInWhitespaceBefore1Value + stateDelta,
  273|      2|                  ccCarriageReturn,
  274|      2|                  taBeyondEmptyValue,
  275|      2|                  sHalfLineBreakAfterLineBreak);
  276|      2|   specDefaultTransition(sScan1Value + stateDelta,
  277|      2|                         taNone,
  278|      2|                         sScan1Value + stateDelta);
  279|      2|   if (stateDelta == deltaOfNStateFrom1State)
  ------------------
  |  Branch (279:8): [True: 1, False: 1]
  ------------------
  280|      1|   {
  281|      1|      specTransition(sScan1Value + stateDelta,
  282|      1|                     ccComma,
  283|      1|                     taTermValue,
  284|      1|                     sScanWhitespaceOr1Value + stateDelta);
  285|      1|      specTransition(sScan1Value + stateDelta,
  286|      1|                     ccLeftAngleBracket,
  287|      1|                     taNone,
  288|      1|                     sScanNValueInAngles);
  289|      1|      specTransition(sScan1Value + stateDelta,
  290|      1|                     ccDoubleQuotationMark,
  291|      1|                     taNone,
  292|      1|                     sScanNValueInQuotes);
  293|      1|   }
  294|      2|   specTransition(sScan1Value + stateDelta,
  295|      2|                  ccCarriageReturn,
  296|      2|                  taNone,
  297|      2|                  sHalfLineBreakIn1Value + stateDelta);
  298|      2|   specHalfLineBreakState(sHalfLineBreakIn1Value + stateDelta,
  299|      2|                          sAfterLineBreakIn1Value + stateDelta);
  300|      2|   specDefaultTransition(sAfterLineBreakIn1Value + stateDelta,
  301|      2|                         taError,
  302|      2|                         sAfterLineBreakIn1Value + stateDelta);
  303|      2|   specTransition(sAfterLineBreakIn1Value + stateDelta,
  304|      2|                  ccFieldName,
  305|      2|                  taTermValueAfterLineBreak,
  306|      2|                  sScanFieldName);
  307|      2|   specTransition(sAfterLineBreakIn1Value + stateDelta,
  308|      2|                  ccWhitespace,
  309|      2|                  taNone,
  310|      2|                  sScan1Value + stateDelta);
  311|      2|   specTransition(sAfterLineBreakIn1Value + stateDelta,
  312|      2|                  ccCarriageReturn,
  313|      2|                  taTermValueAfterLineBreak,
  314|      2|                  sHalfLineBreakAfterLineBreak);
  315|      2|}

_ZN5resip28MultipartAlternativeContents4initEv:
   15|      4|{
   16|      4|   static ContentsFactory<MultipartAlternativeContents> factory;
   17|      4|   (void)factory;
   18|      4|   return true;
   19|      4|}
_ZN5resip28MultipartAlternativeContents13getStaticTypeEv:
   48|      2|{
   49|      2|   static Mime type("multipart", "alternative");
   50|      2|   return type;
   51|      2|}

_ZN5resip22MultipartMixedContents4initEv:
   20|     10|{
   21|     10|   static ContentsFactory<MultipartMixedContents> factory;
   22|     10|   (void)factory;
   23|     10|   return true;
   24|     10|}
_ZN5resip22MultipartMixedContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   46|  6.23k|{
   47|  6.23k|   if (!mType.exists(p_boundary))
  ------------------
  |  Branch (47:8): [True: 6.23k, False: 0]
  ------------------
   48|  6.23k|   {
   49|  6.23k|      setBoundary();
   50|  6.23k|   }
   51|  6.23k|}
_ZN5resip22MultipartMixedContents11setBoundaryEv:
   72|  6.23k|{
   73|  6.23k|   Data boundaryToken = Random::getRandomHex(8);
   74|  6.23k|   mType.param(p_boundary) = boundaryToken;
   75|  6.23k|}
_ZN5resip22MultipartMixedContents5clearEv:
   85|  6.23k|{
   86|  6.23k|   for (vector<Contents*>::iterator i = mContents.begin(); 
   87|  6.23k|        i != mContents.end(); ++i)
  ------------------
  |  Branch (87:9): [True: 0, False: 6.23k]
  ------------------
   88|      0|   {
   89|      0|      delete *i;
   90|      0|   }
   91|  6.23k|}
_ZN5resip22MultipartMixedContentsD2Ev:
   94|  6.23k|{
   95|  6.23k|   clear();
   96|  6.23k|}
_ZN5resip22MultipartMixedContents13getStaticTypeEv:
  123|      2|{
  124|      2|   static Mime type("multipart","mixed");
  125|      2|   return type;
  126|      2|}
_ZN5resip22MultipartMixedContents5parseERNS_11ParseBufferE:
  166|  6.23k|{
  167|  6.23k|   const Data& boundaryToken = mType.param(p_boundary);
  168|       |   
  169|  6.23k|   Data boundary(boundaryToken.size() + 4, Data::Preallocate);
  170|  6.23k|   boundary += Symbols::CRLF;
  171|  6.23k|   boundary += Symbols::DASHDASH;
  172|  6.23k|   boundary += boundaryToken;
  173|       |
  174|  6.23k|   Data boundaryNoCRLF(boundaryToken.size() + 2, Data::Preallocate);
  175|  6.23k|   boundaryNoCRLF += Symbols::DASHDASH;
  176|  6.23k|   boundaryNoCRLF += boundaryToken;
  177|       |
  178|  6.23k|   pb.skipToChars(boundaryNoCRLF);
  179|  6.23k|   pb.skipN((int)boundaryNoCRLF.size());
  180|  6.23k|   pb.assertNotEof();
  181|       |
  182|  6.23k|   do
  183|  6.23k|   {
  184|       |      // skip over boundary
  185|       | 
  186|  6.23k|      if( pb.eof() || *pb.position() != Symbols::CR[0] )
  ------------------
  |  Branch (186:11): [True: 6.23k, False: 0]
  |  Branch (186:11): [True: 0, False: 6.23k]
  |  Branch (186:23): [True: 0, False: 0]
  ------------------
  187|      0|      {
  188|      0|         throw Exception("Invalid line ending, missing CR",__FILE__,__LINE__);
  189|      0|      }
  190|  6.23k|      pb.skipChar();
  191|  6.23k|      if( pb.eof() || *pb.position() != Symbols::LF[0] )
  ------------------
  |  Branch (191:11): [True: 6.23k, False: 0]
  |  Branch (191:11): [True: 0, False: 6.23k]
  |  Branch (191:23): [True: 0, False: 0]
  ------------------
  192|      0|      {
  193|      0|         throw Exception("Invalid line ending, missing LF",__FILE__,__LINE__);
  194|      0|      }
  195|  6.23k|      pb.skipChar();
  196|       |      
  197|  6.23k|      pb.assertNotEof();
  198|       |
  199|  6.23k|      const char* headerStart = pb.position();
  200|       |
  201|       |      // pull out contents type only
  202|  6.23k|      pb.skipToChars("Content-Type");
  203|  6.23k|      if (pb.eof())
  ------------------
  |  Branch (203:11): [True: 0, False: 6.23k]
  ------------------
  204|      0|      {
  205|      0|         pb.reset(headerStart);
  206|      0|         pb.skipToChars("CONTENT-TYPE");
  207|      0|      }
  208|  6.23k|      pb.assertNotEof();
  209|       |
  210|  6.23k|      pb.skipToChar(Symbols::COLON[0]);
  211|  6.23k|      pb.skipChar();
  212|  6.23k|      pb.assertNotEof();
  213|       |      
  214|  6.23k|      pb.skipWhitespace();
  215|  6.23k|      const char* typeStart = pb.position();
  216|  6.23k|      pb.assertNotEof();
  217|       |      
  218|       |      // determine contents-type header buffer
  219|  6.23k|      pb.skipToTermCRLF();
  220|  6.23k|      pb.assertNotEof();
  221|       |
  222|  6.23k|      ParseBuffer subPb(typeStart, pb.position() - typeStart);
  223|  6.23k|      Mime contentType;
  224|  6.23k|      contentType.parse(subPb);
  225|       |      
  226|  6.23k|      pb.assertNotEof();
  227|       |
  228|       |      // determine body start
  229|  6.23k|      pb.reset(typeStart);
  230|  6.23k|      const char* bodyStart = pb.skipToChars(Symbols::CRLFCRLF);
  231|  6.23k|      pb.assertNotEof();
  232|  6.23k|      bodyStart += 4;
  233|       |
  234|       |      // determine contents body buffer
  235|  6.23k|      pb.skipToChars(boundary);
  236|  6.23k|      pb.assertNotEof();
  237|  6.23k|      Data tmp;
  238|  6.23k|      pb.data(tmp, bodyStart);
  239|       |      // create contents against body
  240|  6.23k|      mContents.push_back(createContents(contentType, tmp));
  241|       |      // pre-parse headers
  242|  6.23k|      ParseBuffer headersPb(headerStart, bodyStart-4-headerStart);
  243|  6.23k|      mContents.back()->preParseHeaders(headersPb);
  244|       |
  245|  6.23k|      pb.skipN((int)boundary.size());
  246|       |
  247|  6.23k|      const char* loc = pb.position();
  248|  6.23k|      pb.skipChar();
  249|  6.23k|      pb.skipChar();
  250|  6.23k|      Data next;
  251|  6.23k|      pb.data(next, loc);
  252|       |
  253|  6.23k|      if ( next == Symbols::DASHDASH )
  ------------------
  |  Branch (253:12): [True: 0, False: 6.23k]
  ------------------
  254|      0|      {
  255|      0|         break;
  256|      0|      }
  257|  6.23k|      pb.reset( loc );
  258|  6.23k|   }
  259|  6.23k|   while ( !pb.eof() );
  ------------------
  |  Branch (259:12): [True: 0, False: 6.23k]
  ------------------
  260|       |
  261|  6.23k|}

_ZN5resip23MultipartSignedContents4initEv:
   19|      4|{
   20|      4|   static ContentsFactory<MultipartSignedContents> factory;
   21|      4|   (void)factory;
   22|      4|   return true;
   23|      4|}
_ZN5resip23MultipartSignedContents13getStaticTypeEv:
   66|      2|{
   67|      2|   static Mime type("multipart","signed");
   68|      2|   return type;
   69|      2|}

_ZN5resip8NameAddrC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   37|  6.23k|{}
_ZN5resip8NameAddrC2ERKNS_4DataEb:
   54|  6.23k|{
   55|  6.23k|   HeaderFieldValue hfv(unparsed.data(), unparsed.size());
   56|       |   // must copy because parse creates overlays
   57|  6.23k|   NameAddr tmp(hfv, Headers::UNKNOWN);
   58|  6.23k|   tmp.checkParsed();
   59|  6.23k|   *this = tmp;
   60|  6.23k|   if(preCacheAor)
  ------------------
  |  Branch (60:7): [True: 0, False: 6.23k]
  ------------------
   61|      0|   {
   62|      0|      mUri.getAor();
   63|      0|   }
   64|  6.23k|}
_ZN5resip8NameAddrD2Ev:
   75|  9.30k|{
   76|  9.30k|   if(mUnknownUriParametersBuffer) 
  ------------------
  |  Branch (76:7): [True: 700, False: 8.60k]
  ------------------
   77|    700|   {          
   78|    700|      delete mUnknownUriParametersBuffer;
   79|    700|   }
   80|  9.30k|}
_ZN5resip8NameAddraSERKS0_:
   84|  3.06k|{
   85|  3.06k|   if (this != &rhs)
  ------------------
  |  Branch (85:8): [True: 3.06k, False: 0]
  ------------------
   86|  3.06k|   {
   87|  3.06k|      resip_assert_not_null( &rhs );
  ------------------
  |  |  123|  3.06k|#define resip_assert_not_null(x)                    \
  |  |  124|  3.06k|{                                                   \
  |  |  125|  3.06k|   resip_assert(((void*)(x)) != 0);                 \
  |  |  ------------------
  |  |  |  |   96|  3.06k|#define resip_assert(x)                                                        \
  |  |  |  |   97|  3.06k|{                                                                              \
  |  |  |  |   98|  3.06k|   if ( !(x) )                                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (98:9): [True: 0, False: 3.06k]
  |  |  |  |  ------------------
  |  |  |  |   99|  3.06k|   {                                                                           \
  |  |  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  |  |  ------------------
  |  |  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  |  |  ------------------
  |  |  |  |  101|      0|   }                                                                           \
  |  |  |  |  102|  3.06k|   {                                                                           \
  |  |  |  |  103|  3.06k|      assert( (x) );                                                           \
  |  |  |  |  104|  3.06k|   }                                                                           \
  |  |  |  |  105|  3.06k|}
  |  |  ------------------
  |  |  126|  3.06k|}
  ------------------
   88|       |      
   89|  3.06k|      ParserCategory::operator=(rhs);
   90|  3.06k|      mAllContacts = rhs.mAllContacts;
   91|  3.06k|      mDisplayName = rhs.mDisplayName;
   92|  3.06k|      mUri = rhs.mUri;
   93|  3.06k|   }
   94|  3.06k|   return *this;
   95|  3.06k|}
_ZN5resip8NameAddr5parseERNS_11ParseBufferE:
  172|  6.23k|{
  173|  6.23k|   const char* start;
  174|  6.23k|   start = pb.skipWhitespace();
  175|  6.23k|   pb.assertNotEof();
  176|  6.23k|   bool laQuote = false;
  177|  6.23k|   bool starContact = false;
  178|       |   
  179|  6.23k|   if (*pb.position() == Symbols::STAR[0])
  ------------------
  |  Branch (179:8): [True: 190, False: 6.04k]
  ------------------
  180|    190|   {
  181|    190|      pb.skipChar(Symbols::STAR[0]);
  182|    190|      pb.skipWhitespace();
  183|    190|      if (pb.eof() || *pb.position() == Symbols::SEMI_COLON[0])
  ------------------
  |  Branch (183:11): [True: 3, False: 187]
  |  Branch (183:11): [True: 171, False: 19]
  |  Branch (183:23): [True: 168, False: 19]
  ------------------
  184|    171|      {
  185|    171|         starContact = true;
  186|    171|      }
  187|    190|   }
  188|       |
  189|  6.23k|   if (starContact)
  ------------------
  |  Branch (189:8): [True: 171, False: 6.06k]
  ------------------
  190|    171|   {
  191|    171|      mAllContacts = true;
  192|       |      // now fall through to parse header parameters
  193|    171|   }
  194|  6.06k|   else
  195|  6.06k|   {
  196|  6.06k|      pb.reset(start);
  197|  6.06k|      if (*pb.position() == Symbols::DOUBLE_QUOTE[0])
  ------------------
  |  Branch (197:11): [True: 36, False: 6.03k]
  ------------------
  198|     36|      {
  199|     36|         start = pb.skipChar(Symbols::DOUBLE_QUOTE[0]);
  200|     36|         pb.skipToEndQuote();
  201|     36|         pb.data(mDisplayName, start);
  202|     36|         pb.skipChar(Symbols::DOUBLE_QUOTE[0]);
  203|     36|         laQuote = true;
  204|     36|         pb.skipToChar(Symbols::LA_QUOTE[0]);
  205|     36|         if (pb.eof())
  ------------------
  |  Branch (205:14): [True: 5, False: 31]
  ------------------
  206|      5|         {
  207|      5|            throw ParseException("Expected '<'", 
  208|      5|                                 "NameAddr", 
  209|      5|                                 __FILE__, 
  210|      5|                                 __LINE__);
  211|      5|         }
  212|     31|         else
  213|     31|         {
  214|     31|            pb.skipChar(Symbols::LA_QUOTE[0]);
  215|     31|         }
  216|     36|      }
  217|  6.03k|      else if (*pb.position() == Symbols::LA_QUOTE[0])
  ------------------
  |  Branch (217:16): [True: 38, False: 5.99k]
  ------------------
  218|     38|      {
  219|     38|         pb.skipChar(Symbols::LA_QUOTE[0]);
  220|     38|         laQuote = true;
  221|     38|      }
  222|  5.99k|      else
  223|  5.99k|      {
  224|  5.99k|         start = pb.position();
  225|  5.99k|         pb.skipToChar(Symbols::LA_QUOTE[0]);
  226|  5.99k|         if (pb.eof())
  ------------------
  |  Branch (226:14): [True: 5.66k, False: 332]
  ------------------
  227|  5.66k|         {
  228|  5.66k|            pb.reset(start);
  229|  5.66k|         }
  230|    332|         else
  231|    332|         {
  232|    332|            laQuote = true;
  233|    332|            pb.skipBackWhitespace();
  234|    332|            pb.data(mDisplayName, start);
  235|    332|            pb.skipToChar(Symbols::LA_QUOTE[0]);
  236|    332|            pb.skipChar(Symbols::LA_QUOTE[0]);
  237|    332|         }
  238|  5.99k|      }
  239|  6.06k|      pb.skipWhitespace();
  240|  6.06k|      mUri.parse(pb);
  241|  6.06k|      if (laQuote)
  ------------------
  |  Branch (241:11): [True: 111, False: 5.95k]
  ------------------
  242|    111|      {
  243|    111|         pb.skipChar(Symbols::RA_QUOTE[0]);
  244|    111|         pb.skipWhitespace();
  245|       |         // now fall through to parse header parameters
  246|    111|      }
  247|  5.95k|      else
  248|  5.95k|      {
  249|  5.95k|         if(mUri.mUnknownParameters.size() > 0)
  ------------------
  |  Branch (249:13): [True: 700, False: 5.25k]
  ------------------
  250|    700|         {
  251|    700|            resip_assert(!mUnknownUriParametersBuffer);
  ------------------
  |  |   96|    700|#define resip_assert(x)                                                        \
  |  |   97|    700|{                                                                              \
  |  |   98|    700|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 700]
  |  |  ------------------
  |  |   99|    700|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|    700|   {                                                                           \
  |  |  103|    700|      assert( (x) );                                                           \
  |  |  104|    700|   }                                                                           \
  |  |  105|    700|}
  ------------------
  252|    700|            mUnknownUriParametersBuffer = new Data;
  253|    700|            {  // Scope stream
  254|    700|               oDataStream str(*mUnknownUriParametersBuffer);
  255|       |               // deal with Uri/NameAddr parameter ambiguity
  256|       |               // heuristically assign Uri parameters to the Uri
  257|    700|               for (ParameterList::iterator it = mUri.mUnknownParameters.begin(); 
  258|   744k|                  it != mUri.mUnknownParameters.end(); ++it)
  ------------------
  |  Branch (258:19): [True: 743k, False: 700]
  ------------------
  259|   743k|               {
  260|       |                  // We're just going to assume all unknown (to Uri) params really
  261|       |                  // belong on the header. This is not necessarily the case.
  262|   743k|                  str << ";";
  263|   743k|                  (*it)->encode(str);
  264|   743k|               }
  265|    700|            }
  266|    700|            mUri.clearUnknownParameters();
  267|    700|            ParseBuffer pb2(*mUnknownUriParametersBuffer);
  268|    700|            parseParameters(pb2);
  269|    700|         }
  270|  5.95k|      }
  271|  6.06k|   }
  272|  6.23k|   parseParameters(pb);
  273|  6.23k|}
_ZN5resip8NameAddr11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
  429|  21.3k|{
  430|  21.3k|   if(type > ParameterTypes::UNKNOWN && type < ParameterTypes::MAX_PARAMETER && ParameterFactories[type])
  ------------------
  |  Branch (430:7): [True: 21.3k, False: 0]
  |  Branch (430:41): [True: 21.3k, False: 0]
  |  Branch (430:81): [True: 9.79k, False: 11.5k]
  ------------------
  431|  9.79k|   {
  432|  9.79k|      return ParameterFactories[type](type, pb, terminators, pool);
  433|  9.79k|   }
  434|  11.5k|   return 0;
  435|  21.3k|}

_ZN5resip13OctetContents4initEv:
   21|      8|{
   22|      8|   static ContentsFactory<OctetContents> factory;
   23|      8|   (void)factory;
   24|      8|   return true;
   25|      8|}
_ZN5resip13OctetContentsC2Ev:
   30|      2|{}
_ZN5resip13OctetContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   40|  6.23k|{
   41|  6.23k|}
_ZN5resip13OctetContentsD2Ev:
   56|  6.23k|{
   57|  6.23k|}
_ZN5resip13OctetContents13getStaticTypeEv:
   78|      4|{
   79|      4|   static Mime type("application","octet-stream");
   80|      4|   return type;
   81|      4|}
_ZN5resip13OctetContents5parseERNS_11ParseBufferE:
   93|  6.23k|{
   94|       |   //DebugLog(<< "OctetContents::parse: " << pb.position());
   95|       |
   96|  6.23k|   const char* anchor = pb.position();
   97|  6.23k|   pb.skipToEnd();
   98|  6.23k|   pb.data(mOctets, anchor);
   99|       |
  100|       |   //DebugLog("OctetContents::parsed <" << mOctets << ">" );
  101|  6.23k|}

_ZN5resip9ParameterC2ENS_14ParameterTypes4TypeE:
   12|  13.7M|{}
_ZNK5resip9Parameter7getTypeEv:
   17|  6.23k|{
   18|  6.23k|   return mType;
   19|  6.23k|}

_ZN5resip9ParameterD2Ev:
   16|  16.1M|      virtual ~Parameter() {}
_ZN5resip9ParameterC2ERKS0_:
   30|  2.39M|      Parameter(const Parameter& other) : mType(other.mType) {};

_ZN5resip10data_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13control_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14mobility_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip17description_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12events_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14priority_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13methods_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13schemes_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip17application_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11video_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14language_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10type_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13isFocus_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11actor_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10text_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip11cause_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip16extensions_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14Instance_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11regid_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip8ob_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13pubGruu_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14tempGruu_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip8gr_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip16accessType_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15algorithm_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZNK5resip14boundary_Param10getTypeNumEv:
   12|  24.9k|_enum##_Param::getTypeNum() const {return ParameterTypes::_enum;}               \
_ZN5resip14boundary_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12branch_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13charset_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12cnonce_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10comp_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip10dAlg_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10dQop_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10dVer_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15directory_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12domain_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14duration_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip16expiration_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13expires_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip14filename_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13fromTag_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip14handling_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip8id_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip8lr_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11maddr_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip12method_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12micalg_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10mode_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10name_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip8nc_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11nonce_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12opaque_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip16permission_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14protocol_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13purpose_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip7q_ParamC1Ev:
   35|      2|_enum##_Param::_enum##_Param()                                                  \
   36|      2|{                                                                               \
   37|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   38|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   39|      2|   _headertype3::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   40|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   41|      2|}                                                                               \
_ZN5resip11realm_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12reason_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14received_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13require_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14response_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip16retryAfter_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15rinstance_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11rport_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12server_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10site_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10size_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15smimeType_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11stale_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip9tag_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11toTag_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip15transport_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip9ttl_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip9uri_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip10user_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15extension_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip14username_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15earlyOnly_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15refresher_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip17profileType_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip12vendor_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11model_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13version_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip17effectiveBy_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14document_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11appId_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip17networkUser_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip9url_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15sigcompId_ParamC1Ev:
   23|      2|_enum##_Param::_enum##_Param()                                                  \
   24|      2|{                                                                               \
   25|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   26|      2|   _headertype2::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   27|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   28|      2|}                                                                               \
_ZN5resip9qop_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip11index_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip8rc_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip8mp_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip8np_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip21utranCellId3gpp_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13cgi3gpp_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip9ccf_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip9ecf_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15icidValue_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip21icidGeneratedAt_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13origIoi_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13termIoi_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13content_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14encoding_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip16qopOptions_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip18addTransport_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip13wsSrcIp_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip15wsSrcPort_ParamC1Ev:
   13|      2|_enum##_Param::_enum##_Param()                                                  \
   14|      2|{                                                                               \
   15|      2|   _headertype::ParameterFactories[ParameterTypes::_enum] = Type::decode;    \
   16|      2|   ParameterTypes::ParameterNames[ParameterTypes::_enum] = _name;               \
   17|      2|}                                                                               \
_ZN5resip14ParameterTypes7getTypeEPKcj:
  174|  13.7M|{
  175|  13.7M|   const struct params* p;
  176|  13.7M|   p = ParameterHash::in_word_set(pname, len);
  177|  13.7M|   return p ? p->type : ParameterTypes::UNKNOWN;
  ------------------
  |  Branch (177:11): [True: 2.74M, False: 11.0M]
  ------------------
  178|       |   
  179|  13.7M|}

_ZN5resip14ParserCategoryC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   38|  75.0k|{
   39|  75.0k|}
_ZN5resip14ParserCategoryC2EPNS_8PoolBaseE:
   58|  31.7k|{
   59|  31.7k|}
_ZN5resip14ParserCategoryC2ERKS0_PNS_8PoolBaseE:
   68|  74.9k|{
   69|  74.9k|   if (isParsed())
  ------------------
  |  Branch (69:8): [True: 74.9k, False: 0]
  ------------------
   70|  74.9k|   {
   71|  74.9k|      copyParametersFrom(rhs);
   72|  74.9k|   }
   73|  74.9k|}
_ZN5resip14ParserCategoryaSERKS0_:
   77|  6.13k|{
   78|  6.13k|   if (this != &rhs)
  ------------------
  |  Branch (78:8): [True: 6.13k, False: 0]
  ------------------
   79|  6.13k|   {
   80|  6.13k|      clear();
   81|  6.13k|      mHeaderType = rhs.mHeaderType;
   82|  6.13k|      LazyParser::operator=(rhs);
   83|  6.13k|      if (rhs.isParsed())
  ------------------
  |  Branch (83:11): [True: 6.13k, False: 0]
  ------------------
   84|  6.13k|      {
   85|  6.13k|         copyParametersFrom(rhs);
   86|  6.13k|      }
   87|  6.13k|   }
   88|  6.13k|   return *this;
   89|  6.13k|}
_ZN5resip14ParserCategory5clearEv:
   93|   187k|{
   94|       |   //DebugLog(<<"ParserCategory::clear");
   95|   187k|   LazyParser::clear();
   96|       |
   97|  2.36M|   while(!mParameters.empty())
  ------------------
  |  Branch (97:10): [True: 2.17M, False: 187k]
  ------------------
   98|  2.17M|   {
   99|  2.17M|      freeParameter(mParameters.back());
  100|  2.17M|      mParameters.pop_back();
  101|  2.17M|   }
  102|       |
  103|  13.4M|   while(!mUnknownParameters.empty())
  ------------------
  |  Branch (103:10): [True: 13.2M, False: 187k]
  ------------------
  104|  13.2M|   {
  105|  13.2M|      freeParameter(mUnknownParameters.back());
  106|  13.2M|      mUnknownParameters.pop_back();
  107|  13.2M|   }
  108|   187k|}
_ZN5resip14ParserCategory18copyParametersFromERKS0_:
  112|  81.0k|{
  113|  81.0k|   mParameters.reserve(other.mParameters.size());
  114|  81.0k|   mUnknownParameters.reserve(other.mUnknownParameters.size());
  115|       |   
  116|  81.0k|   for (ParameterList::const_iterator it = other.mParameters.begin();
  117|   150k|        it != other.mParameters.end(); it++)
  ------------------
  |  Branch (117:9): [True: 69.6k, False: 81.0k]
  ------------------
  118|  69.6k|   {
  119|  69.6k|      mParameters.push_back((*it)->clone());
  120|  69.6k|   }
  121|  81.0k|   for (ParameterList::const_iterator it = other.mUnknownParameters.begin();
  122|  2.40M|        it != other.mUnknownParameters.end(); it++)
  ------------------
  |  Branch (122:9): [True: 2.32M, False: 81.0k]
  ------------------
  123|  2.32M|   {
  124|  2.32M|      mUnknownParameters.push_back((*it)->clone());
  125|  2.32M|   }
  126|  81.0k|}
_ZN5resip14ParserCategoryD2Ev:
  129|   181k|{
  130|   181k|   clear();
  131|   181k|}
_ZN5resip14ParserCategory22clearUnknownParametersEv:
  202|    700|{
  203|    700|   for (ParameterList::iterator it = mUnknownParameters.begin();
  204|   744k|        it != mUnknownParameters.end(); it++)
  ------------------
  |  Branch (204:9): [True: 743k, False: 700]
  ------------------
  205|   743k|   {
  206|   743k|      freeParameter(*it);
  207|   743k|   }   
  208|    700|   mUnknownParameters.clear();
  209|    700|}
_ZN5resip14ParserCategory15parseParametersERNS_11ParseBufferE:
  213|  25.4k|{
  214|  13.7M|   while (!pb.eof() )
  ------------------
  |  Branch (214:11): [True: 13.7M, False: 15.8k]
  ------------------
  215|  13.7M|   {
  216|  13.7M|      const char* start = pb.position();
  217|  13.7M|      pb.skipWhitespace();
  218|       |
  219|  13.7M|      if (  (!pb.eof() && *pb.position() == Symbols::SEMI_COLON[0]) )
  ------------------
  |  Branch (219:13): [True: 13.7M, False: 9.59k]
  |  Branch (219:14): [True: 13.7M, False: 324]
  |  Branch (219:27): [True: 13.7M, False: 9.26k]
  ------------------
  220|  13.7M|      {
  221|       |         // extract the key
  222|  13.7M|         pb.skipChar();
  223|  13.7M|         const char* keyStart = pb.skipWhitespace();
  224|  13.7M|         static std::bitset<256> terminators1=Data::toBitset(" \t\r\n;=?>"); //!dlb! @ here?
  225|  13.7M|         const char* keyEnd = pb.skipToOneOf(terminators1);  
  226|       |
  227|  13.7M|         if((int)(keyEnd-keyStart) != 0)
  ------------------
  |  Branch (227:13): [True: 13.7M, False: 13.7k]
  ------------------
  228|  13.7M|         {
  229|  13.7M|            ParameterTypes::Type type = ParameterTypes::getType(keyStart, (unsigned int)(keyEnd - keyStart));
  230|  13.7M|            static std::bitset<256> terminators2 = Data::toBitset(" \t\r\n;?>");
  231|  13.7M|            Parameter* p;
  232|  13.7M|            if (type == ParameterTypes::UNKNOWN || 
  ------------------
  |  Branch (232:17): [True: 10.9M, False: 2.73M]
  ------------------
  233|  13.7M|               !(p=createParam(type, pb, terminators2,getPool())))
  ------------------
  |  Branch (233:16): [True: 650k, False: 2.08M]
  ------------------
  234|  11.6M|            {
  235|  11.6M|               mUnknownParameters.push_back(new (getPool()) UnknownParameter(keyStart, 
  236|  11.6M|                                                                 int((keyEnd - keyStart)), pb, terminators2));
  237|  11.6M|            }
  238|  2.08M|            else
  239|  2.08M|            {
  240|       |               // invoke the particular factory
  241|  2.08M|               mParameters.push_back(p);
  242|  2.08M|            }
  243|  13.7M|         }
  244|  13.7M|      }
  245|  9.59k|      else
  246|  9.59k|      {
  247|  9.59k|         pb.reset(start);
  248|  9.59k|         return;
  249|  9.59k|      }
  250|  13.7M|   }
  251|  25.4k|}      
_ZN5resip14ParserCategory11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
  255|  7.82k|{
  256|  7.82k|   return 0;
  257|  7.82k|}
_ZNK5resip14ParserCategory18getParameterByEnumENS_14ParameterTypes4TypeE:
  336|  18.7k|{
  337|  18.7k|   for (ParameterList::const_iterator it = mParameters.begin();
  338|  18.7k|        it != mParameters.end(); it++)
  ------------------
  |  Branch (338:9): [True: 6.23k, False: 12.4k]
  ------------------
  339|  6.23k|   {
  340|  6.23k|      if ((*it)->getType() == type)
  ------------------
  |  Branch (340:11): [True: 6.23k, False: 0]
  ------------------
  341|  6.23k|      {
  342|  6.23k|         return *it;
  343|  6.23k|      }
  344|  6.23k|   }
  345|  12.4k|   return 0;
  346|  18.7k|}
_ZNK5resip14ParserCategory12errorContextEv:
  455|  75.0k|{
  456|  75.0k|   return Headers::getHeaderName(mHeaderType);
  457|  75.0k|}

_ZN5resip14ParserCategory7getPoolEv:
  272|  14.4M|      {
  273|  14.4M|         return mPool;
  274|  14.4M|      }
_ZN5resip14ParserCategory13freeParameterEPNS_9ParameterE:
  277|  16.1M|      {
  278|  16.1M|         if(p)
  ------------------
  |  Branch (278:13): [True: 16.1M, False: 0]
  ------------------
  279|  16.1M|         {
  280|  16.1M|            p->~Parameter();
  281|  16.1M|            if(mPool)
  ------------------
  |  Branch (281:16): [True: 154k, False: 15.9M]
  ------------------
  282|   154k|            {
  283|   154k|               mPool->deallocate(p);
  284|   154k|               return;
  285|   154k|            }
  286|  15.9M|            ::operator delete(p);
  287|  15.9M|         }
  288|  16.1M|      }

_ZN5resip15ParserContainerINS_14UInt32CategoryEE5frontEv:
  105|  91.5k|      {
  106|  91.5k|         return ensureInitialized(mParsers.front(),this);
  107|  91.5k|      }
_ZN5resip15ParserContainerINS_14UInt32CategoryEE17ensureInitializedERNS_19ParserContainerBase9HeaderKitEPS2_:
  320|  91.5k|      {
  321|  91.5k|         if(!kit.pc)
  ------------------
  |  Branch (321:13): [True: 209, False: 91.3k]
  ------------------
  322|    209|         {
  323|    209|            if(ref)
  ------------------
  |  Branch (323:16): [True: 209, False: 0]
  ------------------
  324|    209|            {
  325|    209|               PoolBase* pool(ref->mPool);
  326|    209|               kit.pc=new (pool) T(kit.hfv, ref->mType, pool);
  327|    209|            }
  328|      0|            else
  329|      0|            {
  330|      0|               kit.pc=new T(kit.hfv, Headers::NONE);
  331|      0|            }
  332|    209|         }
  333|  91.5k|         return *static_cast<T*>(kit.pc);
  334|  91.5k|      }
_ZN5resip15ParserContainerINS_14UInt32CategoryEEC2EPNS_20HeaderFieldValueListENS_7Headers4TypeERNS_8PoolBaseE:
   67|    209|      {
   68|    209|         mParsers.reserve(hfvs->size());
   69|    209|         for (HeaderFieldValueList::iterator i = hfvs->begin();
   70|    418|              i != hfvs->end(); i++)
  ------------------
  |  Branch (70:15): [True: 209, False: 209]
  ------------------
   71|    209|         {
   72|       |            // create, store without copying -- 
   73|       |            // keeps the HeaderFieldValue from reallocating its buffer
   74|    209|            mParsers.push_back(HeaderKit::Empty);
   75|    209|            mParsers.back().hfv.init(i->getBuffer(),i->getLength(),false);
   76|    209|         }
   77|    209|      }

_ZN5resip19ParserContainerBaseC2ENS_7Headers4TypeERNS_8PoolBaseE:
   29|    209|{}
_ZN5resip19ParserContainerBaseD2Ev:
   41|    209|{
   42|    209|   freeParsers();
   43|    209|}
_ZN5resip19ParserContainerBase11freeParsersEv:
  175|    209|{
  176|    418|   for(Parsers::iterator p=mParsers.begin(); p!=mParsers.end(); ++p)
  ------------------
  |  Branch (176:46): [True: 209, False: 209]
  ------------------
  177|    209|   {
  178|    209|      freeParser(*p);
  179|    209|   }
  180|    209|}

_ZN5resip19ParserContainerBase9HeaderKitC2Ev:
  138|      2|            HeaderKit(): pc(0){}
_ZN5resip19ParserContainerBase9HeaderKitC2ERKS1_:
  144|    209|            {
  145|    209|               HeaderKit& nc_orig = const_cast<HeaderKit&>(orig);
  146|    209|               std::swap(nc_orig.pc, pc);
  147|    209|               hfv.swap(nc_orig.hfv);
  148|    209|            }
_ZN5resip19ParserContainerBase9HeaderKitD2Ev:
  163|    209|            {}
_ZN5resip19ParserContainerBase10freeParserERNS0_9HeaderKitE:
  200|    209|      {
  201|    209|         if(kit.pc)
  ------------------
  |  Branch (201:13): [True: 209, False: 0]
  ------------------
  202|    209|         {
  203|    209|            kit.pc->~ParserCategory();
  204|    209|            if(mPool)
  ------------------
  |  Branch (204:16): [True: 209, False: 0]
  ------------------
  205|    209|            {
  206|    209|               mPool->deallocate(kit.pc);
  207|    209|            }
  208|      0|            else
  209|      0|            {
  210|      0|               ::operator delete(kit.pc);
  211|      0|            }
  212|    209|            kit.pc=0;
  213|    209|         }
  214|    209|      }

_ZN5resip4Pidf4initEv:
   20|      4|{
   21|      4|   static ContentsFactory<Pidf> factory;
   22|      4|   (void)factory;
   23|      4|   return true;
   24|      4|}
_ZN5resip4PidfC2Ev:
   31|      2|{
   32|      2|}
_ZN5resip4Pidf13getStaticTypeEv:
  132|      4|{
  133|      4|   static Mime type("application","pidf+xml");
  134|      4|   return type;
  135|      4|}

_ZN5resip13Pkcs7Contents4initEv:
   21|      6|{
   22|      6|   static ContentsFactory<Pkcs7Contents> factory;
   23|      6|   (void)factory;
   24|      6|   return true;
   25|      6|}
_ZN5resip19Pkcs7SignedContents4initEv:
   29|      6|{
   30|      6|   static ContentsFactory<Pkcs7SignedContents> factory;
   31|      6|   (void)factory;
   32|      6|   return true;
   33|      6|}
_ZN5resip13Pkcs7ContentsC2Ev:
   38|      4|{
   39|      4|}
_ZN5resip19Pkcs7SignedContentsC2Ev:
   42|      2|{
   43|      2|}
_ZN5resip13Pkcs7ContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   65|  6.23k|{
   66|  6.23k|}
_ZN5resip13Pkcs7ContentsD2Ev:
   85|  6.23k|{
   86|  6.23k|}
_ZN5resip13Pkcs7Contents13getStaticTypeEv:
  117|      6|{
  118|      6|   static Mime type("application","pkcs7-mime");
  119|      6|   return type;
  120|      6|}
_ZN5resip19Pkcs7SignedContents13getStaticTypeEv:
  124|      2|{
  125|      2|   static Mime type("application","pkcs7-signature");
  126|      2|   return type;
  127|      2|}
_ZN5resip13Pkcs7Contents5parseERNS_11ParseBufferE:
  141|  6.23k|{
  142|  6.23k|   const char* anchor = pb.position();
  143|  6.23k|   pb.skipToEnd();
  144|  6.23k|   pb.data(mText, anchor);
  145|       |
  146|  6.23k|   if ( mTransferEncoding )
  ------------------
  |  Branch (146:9): [True: 0, False: 6.23k]
  ------------------
  147|      0|   {
  148|      0|      InfoLog( << "Transfer Encoding is " << mTransferEncoding->value() );
  ------------------
  |  |  131|      0|#define InfoLog(args_) \
  |  |  ------------------
  |  |  |  |  151|      0|   do                                                                   \
  |  |  |  |  152|      0|   {                                                                    \
  |  |  |  |  153|      0|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|      0|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|      0|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Info, args_)
  ------------------
  149|      0|      if ( mTransferEncoding->value() == Data("base64") )
  ------------------
  |  Branch (149:12): [True: 0, False: 0]
  ------------------
  150|      0|      {
  151|      0|         Data bin = mText.base64decode();
  152|      0|         mText = bin;
  153|      0|         InfoLog( << "Base64 decoded to " << mText.escaped() );
  ------------------
  |  |  131|      0|#define InfoLog(args_) \
  |  |  ------------------
  |  |  |  |  151|      0|   do                                                                   \
  |  |  |  |  152|      0|   {                                                                    \
  |  |  |  |  153|      0|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|      0|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|      0|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Info, args_)
  ------------------
  154|      0|      }
  155|      0|   }
  156|       |   
  157|  6.23k|   DebugLog(<< "Pkcs7Contents::parsed <" << mText.escaped() << ">" );
  ------------------
  |  |  128|  6.23k|#define DebugLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  6.23k|   do                                                                   \
  |  |  |  |  152|  6.23k|   {                                                                    \
  |  |  |  |  153|  6.23k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 6.23k]
  |  |  |  |  ------------------
  |  |  |  |  154|  6.23k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  6.23k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  6.23k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Debug, args_)
  ------------------
  158|  6.23k|}

_ZN5resip13Pkcs8Contents4initEv:
   22|      2|{
   23|      2|   static ContentsFactory<Pkcs8Contents> factory;
   24|      2|   (void)factory;
   25|      2|   return true;
   26|      2|}
_ZN5resip13Pkcs8ContentsC2Ev:
   31|      2|{
   32|      2|}
_ZN5resip13Pkcs8ContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   49|  6.23k|{
   50|  6.23k|}
_ZN5resip13Pkcs8ContentsD2Ev:
   59|  6.23k|{
   60|  6.23k|}
_ZN5resip13Pkcs8Contents13getStaticTypeEv:
   81|      4|{
   82|      4|   static Mime type("application", "pkcs8");
   83|      4|   return type;
   84|      4|}
_ZN5resip13Pkcs8Contents5parseERNS_11ParseBufferE:
   97|  6.23k|{
   98|  6.23k|   const char* anchor = pb.position();
   99|  6.23k|   pb.skipToEnd();
  100|  6.23k|   pb.data(mText, anchor);
  101|  6.23k|}

_ZN5resip13PlainContents4initEv:
   22|      6|{
   23|      6|   static ContentsFactory<PlainContents> factory;
   24|      6|   (void)factory;
   25|      6|   return true;
   26|      6|}
_ZN5resip13PlainContentsC2Ev:
   32|      2|{}
_ZN5resip13PlainContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   42|  6.23k|{
   43|  6.23k|}
_ZN5resip13PlainContentsD2Ev:
   58|  6.23k|{
   59|  6.23k|}
_ZN5resip13PlainContents13getStaticTypeEv:
   80|      4|{
   81|      4|   static Mime type("text","plain");
   82|      4|   return type;
   83|      4|}
_ZN5resip13PlainContents5parseERNS_11ParseBufferE:
   95|  6.23k|{
   96|       |   //DebugLog(<< "PlainContents::parse: " << pb.position());
   97|       |
   98|  6.23k|   const char* anchor = pb.position();
   99|  6.23k|   pb.skipToEnd();
  100|  6.23k|   pb.data(mText, anchor);
  101|       |
  102|       |   //DebugLog("PlainContents::parsed <" << mText << ">" );
  103|  6.23k|}

_ZN5resip15PrivacyCategoryC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   28|  6.23k|{}
_ZN5resip15PrivacyCategory5parseERNS_11ParseBufferE:
   63|  6.23k|{
   64|  1.76M|   while(!pb.eof())
  ------------------
  |  Branch (64:10): [True: 1.76M, False: 5.96k]
  ------------------
   65|  1.76M|   {
   66|  1.76M|      pb.skipWhitespace();
   67|  1.76M|      if(!pb.eof())
  ------------------
  |  Branch (67:10): [True: 1.76M, False: 31]
  ------------------
   68|  1.76M|      {
   69|  1.76M|         const char* start=pb.position();
   70|  1.76M|         pb.skipToOneOf(";",ParseBuffer::Whitespace);
   71|  1.76M|         if(pb.position()==start)
  ------------------
  |  Branch (71:13): [True: 277, False: 1.75M]
  ------------------
   72|    277|         {
   73|    277|            throw ParseException("Empty privacy token!",
   74|    277|                                 "PrivacyCategory::parse()",
   75|    277|                                 __FILE__, __LINE__);
   76|    277|         }
   77|  1.75M|         mValue.push_back(pb.data(start));
   78|  1.75M|         pb.skipWhitespace();
   79|  1.75M|      }
   80|  1.75M|      if(!pb.eof())
  ------------------
  |  Branch (80:10): [True: 1.75M, False: 2.51k]
  ------------------
   81|  1.75M|      {
   82|  1.75M|         pb.skipChar(';');
   83|  1.75M|      }
   84|  1.75M|   }
   85|  6.23k|}

_ZN5resip6QValueC2Ei:
   19|  5.10k|      explicit QValue(int val) : mValue(val) { }
_ZN5resip6QValue8setValueEi:
   73|  4.77k|      void setValue(int val) { mValue = (val<0) || (val>1000) ? 1000 : val; }
  ------------------
  |  Branch (73:41): [True: 0, False: 4.77k]
  |  Branch (73:52): [True: 288, False: 4.48k]
  ------------------

_ZN5resip15QValueParameterC2ENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEE:
   22|  5.10k|{
   23|  5.10k|   pb.skipWhitespace();
   24|  5.10k|   if (!pb.eof() && *pb.position() != '=')
  ------------------
  |  Branch (24:8): [True: 5.07k, False: 26]
  |  Branch (24:8): [True: 62, False: 5.04k]
  |  Branch (24:21): [True: 62, False: 5.01k]
  ------------------
   25|     62|   {
   26|     62|      throw ParseException("parameter constructor expected '='",
   27|     62|                           "QValueParameter", __FILE__, __LINE__);
   28|     62|   }
   29|  5.04k|   pb.skipChar();
   30|  5.04k|   pb.skipWhitespace();
   31|       |   
   32|       |   // .dlb. not zero terminated; no error detection
   33|  5.04k|   mValue.setValue(pb.qVal());
   34|  5.04k|}
_ZNK5resip15QValueParameter5cloneEv:
   43|  2.23k|{
   44|  2.23k|   return new QValueParameter(*this);
   45|  2.23k|}

_ZN5resip15QValueParameter6decodeENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
   95|  5.10k|      {
   96|  5.10k|         return new (pool) QValueParameter(type, pb, terminators);
   97|  5.10k|      }

_ZN5resip19QuotedDataParameterC2ENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEE:
   22|    655|{
   23|    655|   if (!mQuoted)
  ------------------
  |  Branch (23:8): [True: 362, False: 293]
  ------------------
   24|    362|   {
   25|    362|      DebugLog (<< "Fixing unquoted parameter to be quoted: " << mValue);
  ------------------
  |  |  128|    362|#define DebugLog(args_) \
  |  |  ------------------
  |  |  |  |  151|    362|   do                                                                   \
  |  |  |  |  152|    362|   {                                                                    \
  |  |  |  |  153|    362|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 362]
  |  |  |  |  ------------------
  |  |  |  |  154|    362|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|    362|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|    362|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Debug, args_)
  ------------------
   26|    362|      mQuoted = true; // may want to fail in this case if we are being strict
   27|       |      //pb.fail(__FILE__, __LINE__);
   28|    362|   }
   29|    655|}
_ZNK5resip19QuotedDataParameter5cloneEv:
   39|    194|{
   40|    194|   return new QuotedDataParameter(*this);
   41|    194|}

_ZN5resip19QuotedDataParameter6decodeENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
   31|    655|      {
   32|    655|         return new (pool) QuotedDataParameter(type, pb, terminators);
   33|    655|      }
_ZN5resip19QuotedDataParameterC2ERKS0_:
   40|    194|      {}

_ZN5resip12RAckCategoryC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   28|  6.23k|{}
_ZN5resip12RAckCategory5parseERNS_11ParseBufferE:
  145|  6.23k|{
  146|  6.23k|   const char* anchorPtr;
  147|  6.23k|   pb.skipWhitespace();
  148|  6.23k|   mRSequence = pb.uInt32();
  149|       |
  150|  6.23k|   pb.skipWhitespace();
  151|  6.23k|   mCSequence = pb.uInt32();
  152|       |
  153|  6.23k|   anchorPtr = pb.skipWhitespace();
  154|  6.23k|   pb.skipNonWhitespace();
  155|       |
  156|  6.23k|   mMethod = getMethodType(anchorPtr, int(pb.position() - anchorPtr));
  157|       |   // for backward compatibility, set the method name even if the method is known
  158|  6.23k|   pb.data(mUnknownMethodName, anchorPtr);
  159|  6.23k|}

_ZN5resip11RequestLineC2ERKNS_16HeaderFieldValueE:
   40|  6.23k|{}
_ZN5resip11RequestLineC2EPKci:
   47|    513|{}
_ZN5resip11RequestLineD2Ev:
   72|  6.75k|{}
_ZN5resip11RequestLine5parseERNS_11ParseBufferE:
  144|  6.23k|{
  145|  6.23k|   const char* start;
  146|  6.23k|   start = pb.skipWhitespace();
  147|  6.23k|   pb.skipNonWhitespace();
  148|  6.23k|   mMethod = getMethodType(start, int(pb.position() - start));
  149|       |   // for backward compatibility, set the method name even if the method is known
  150|  6.23k|   pb.data(mUnknownMethodName, start);
  151|  6.23k|   pb.skipWhitespace();
  152|  6.23k|   mUri.parse(pb);
  153|  6.23k|   start = pb.skipWhitespace();
  154|  6.23k|   pb.skipNonWhitespace();
  155|  6.23k|   pb.data(mSipVersion, start);
  156|  6.23k|}
_ZNK5resip11RequestLine12errorContextEv:
  169|  6.23k|{
  170|  6.23k|   static const Data reqLine("Request Line");
  171|  6.23k|   return reqLine;
  172|  6.23k|}

_ZN5resip4Rlmi4initEv:
   19|      4|{
   20|      4|   static ContentsFactory<Rlmi> factory;
   21|      4|   (void)factory;
   22|      4|   return true;
   23|      4|}
_ZN5resip4RlmiC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
   31|  6.23k|{
   32|  6.23k|}
_ZN5resip4RlmiD2Ev:
   41|  6.23k|{
   42|  6.23k|}
_ZN5resip4Rlmi13getStaticTypeEv:
   62|      2|{
   63|      2|   static Mime type("application","rlmi+xml");
   64|      2|   return type;
   65|      2|}
_ZN5resip4Rlmi5parseERNS_11ParseBufferE:
   78|  6.23k|{
   79|  6.23k|   const char* anchor = pb.position();
   80|  6.23k|   pb.skipToEnd();
   81|  6.23k|   pb.data(mText, anchor);
   82|  6.23k|}

_ZN5resip11SdpContents4initEv:
   37|     14|{
   38|     14|   static ContentsFactory<SdpContents> factory;
   39|     14|   (void)factory;
   40|     14|   return true;
   41|     14|}
_ZN5resip7skipEolERNS_11ParseBufferE:
   53|   148k|{
   54|   149k|   while(!pb.eof() && (*pb.position() == Symbols::SPACE[0] ||
  ------------------
  |  Branch (54:10): [True: 148k, False: 1.00k]
  |  Branch (54:10): [True: 478, False: 148k]
  |  Branch (54:24): [True: 268, False: 148k]
  ------------------
   55|   148k|                       *pb.position() == Symbols::TAB[0]))
  ------------------
  |  Branch (55:24): [True: 210, False: 147k]
  ------------------
   56|    478|   {
   57|    478|      pb.skipChar();
   58|    478|   }
   59|       |   
   60|   148k|   if (*pb.position() == Symbols::LF[0])
  ------------------
  |  Branch (60:8): [True: 145k, False: 3.50k]
  ------------------
   61|   145k|   {
   62|   145k|      pb.skipChar();
   63|   145k|   }
   64|  3.50k|   else
   65|  3.50k|   {
   66|       |      // allow extra 0x0d bytes.
   67|  6.81k|      while(*pb.position() == Symbols::CR[0])
  ------------------
  |  Branch (67:13): [True: 3.31k, False: 3.50k]
  ------------------
   68|  3.31k|      {
   69|  3.31k|         pb.skipChar();
   70|  3.31k|      } 
   71|  3.50k|      pb.skipChar(Symbols::LF[0]);
   72|  3.50k|   }
   73|       |   
   74|   148k|}
_ZN5resip15AttributeHelperC2ERKS0_:
   79|  13.1k|{
   80|  13.1k|}
_ZN5resip15AttributeHelperC2Ev:
   83|  19.4k|{
   84|  19.4k|}
_ZN5resip15AttributeHelper5parseERNS_11ParseBufferE:
  132|  13.9k|{
  133|   117k|   while (!pb.eof() && *pb.position() == 'a')
  ------------------
  |  Branch (133:11): [True: 116k, False: 637]
  |  Branch (133:11): [True: 103k, False: 13.9k]
  |  Branch (133:24): [True: 103k, False: 13.3k]
  ------------------
  134|   103k|   {
  135|   103k|      Data key;
  136|   103k|      Data value;
  137|       |
  138|   103k|      pb.skipChar('a');
  139|   103k|      const char* anchor = pb.skipChar(Symbols::EQUALS[0]);
  140|   103k|      pb.skipToOneOf(Symbols::COLON, Symbols::CRLF);
  141|   103k|      pb.data(key, anchor);
  142|   103k|      if (!pb.eof() && *pb.position() == Symbols::COLON[0])
  ------------------
  |  Branch (142:11): [True: 103k, False: 470]
  |  Branch (142:11): [True: 1.11k, False: 102k]
  |  Branch (142:24): [True: 1.11k, False: 102k]
  ------------------
  143|  1.11k|      {
  144|  1.11k|         anchor = pb.skipChar(Symbols::COLON[0]);
  145|  1.11k|         pb.skipToOneOf(Symbols::CRLF);
  146|  1.11k|         pb.data(value, anchor);
  147|  1.11k|      }
  148|       |
  149|   103k|      if(!pb.eof()) skipEol(pb);
  ------------------
  |  Branch (149:10): [True: 103k, False: 499]
  ------------------
  150|       |
  151|   103k|      mAttributeList.push_back(std::make_pair(key, value));
  152|   103k|      mAttributes[key].push_back(value);
  153|   103k|   }
  154|  13.9k|}
_ZN5resip11SdpContentsC2Ev:
  179|      2|{
  180|      2|}
_ZN5resip11SdpContentsC2ERKNS_16HeaderFieldValueERKNS_4MimeE:
  184|  6.23k|{
  185|  6.23k|}
_ZN5resip11SdpContentsD2Ev:
  194|  6.23k|{
  195|  6.23k|}
_ZN5resip11SdpContents5parseERNS_11ParseBufferE:
  217|  6.23k|{
  218|  6.23k|   mSession.parse(pb);
  219|  6.23k|}
_ZN5resip11SdpContents13getStaticTypeEv:
  230|      4|{
  231|      4|   static Mime type("application", "sdp");
  232|      4|   return type;
  233|      4|}
_ZN5resip11SdpContents7Session6OriginC2Ev:
  243|  6.24k|{}
_ZN5resip11SdpContents7Session6Origin5parseERNS_11ParseBufferE:
  303|  2.44k|{
  304|  2.44k|   pb.skipChar('o');
  305|  2.44k|   const char* anchor = pb.skipChar(Symbols::EQUALS[0]);
  306|       |
  307|  2.44k|   pb.skipToChar(Symbols::SPACE[0]);
  308|  2.44k|   pb.data(mUser, anchor);
  309|       |
  310|  2.44k|   anchor = pb.skipChar(Symbols::SPACE[0]);
  311|  2.44k|   try
  312|  2.44k|   {
  313|  2.44k|      mSessionId = pb.uInt64();
  314|  2.44k|   }
  315|  2.44k|   catch(ParseException& e)
  316|  2.44k|   {
  317|  2.35k|       WarningLog(<< "Exception parsing origin sessionid: " << e);
  ------------------
  |  |  134|  2.35k|#define WarningLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  2.35k|   do                                                                   \
  |  |  |  |  152|  2.35k|   {                                                                    \
  |  |  |  |  153|  2.35k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 2.35k]
  |  |  |  |  ------------------
  |  |  |  |  154|  2.35k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  2.35k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  135|  2.35k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Warning, args_)
  ------------------
  318|  2.35k|   }
  319|  2.44k|   pb.skipToChar(Symbols::SPACE[0]);
  320|       |
  321|  2.43k|   anchor = pb.skipChar(Symbols::SPACE[0]);
  322|  2.43k|   try
  323|  2.43k|   {
  324|  2.43k|      mVersion = pb.uInt64();
  325|  2.43k|   }
  326|  2.43k|   catch(ParseException& e)
  327|  2.43k|   {
  328|  2.31k|       WarningLog(<< "Exception parsing origin version: " << e);
  ------------------
  |  |  134|  2.31k|#define WarningLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  2.31k|   do                                                                   \
  |  |  |  |  152|  2.31k|   {                                                                    \
  |  |  |  |  153|  2.31k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 2.31k]
  |  |  |  |  ------------------
  |  |  |  |  154|  2.31k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  2.31k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  135|  2.31k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Warning, args_)
  ------------------
  329|  2.31k|   }
  330|  2.43k|   pb.skipToChar(Symbols::SPACE[0]);
  331|       |
  332|  2.34k|   pb.skipChar(Symbols::SPACE[0]);
  333|  2.34k|   pb.skipChar('I');
  334|  2.34k|   pb.skipChar('N');
  335|       |
  336|  2.34k|   anchor = pb.skipChar(Symbols::SPACE[0]);
  337|  2.34k|   pb.skipToChar(Symbols::SPACE[0]);
  338|  2.34k|   Data addrType;
  339|  2.34k|   pb.data(addrType, anchor);
  340|  2.34k|   if (addrType == NetworkType[IP4])
  ------------------
  |  Branch (340:8): [True: 5, False: 2.34k]
  ------------------
  341|      5|   {
  342|      5|      mAddrType = IP4;
  343|      5|   }
  344|  2.34k|   else if (addrType == NetworkType[IP6])
  ------------------
  |  Branch (344:13): [True: 1, False: 2.34k]
  ------------------
  345|      1|   {
  346|      1|      mAddrType = IP6;
  347|      1|   }
  348|  2.34k|   else
  349|  2.34k|   {
  350|  2.34k|      mAddrType = static_cast<AddrType>(0);
  351|  2.34k|   }
  352|       |
  353|  2.34k|   anchor = pb.skipChar(Symbols::SPACE[0]);
  354|  2.34k|   pb.skipToOneOf(Symbols::CRLF);
  355|  2.34k|   pb.data(mAddress, anchor);
  356|       |
  357|  2.34k|   skipEol(pb);
  358|  2.34k|}
_ZN5resip11SdpContents7Session5EmailC2ERKS2_:
  369|  1.59k|{}
_Z9parseEorPRN5resip11ParseBufferERNS_4DataES3_:
  398|  3.28k|{
  399|       |   // =mjh@isi.edu (Mark Handley)
  400|       |   // =mjh@isi.edu
  401|       |   // =Mark Handley <mjh@isi.edu>
  402|       |   // =<mjh@isi.edu>
  403|       |
  404|  3.28k|   const char* anchor = pb.skipChar(Symbols::EQUALS[0]);
  405|       |
  406|  3.28k|   pb.skipToOneOf("<(\n\r");  // find a left angle bracket "<", a left paren "(", or a CR 
  407|  3.28k|   switch (*pb.position())
  408|  3.28k|   {
  409|  2.23k|      case '\n':					// Symbols::CR[0]
  ------------------
  |  Branch (409:7): [True: 2.23k, False: 1.05k]
  ------------------
  410|  2.85k|      case '\r':					// Symbols::LF[0]
  ------------------
  |  Branch (410:7): [True: 623, False: 2.66k]
  ------------------
  411|       |         // mjh@isi.edu
  412|       |         //            ^
  413|  2.85k|         pb.data(eOrp, anchor);
  414|  2.85k|         break;
  415|       |
  416|    194|      case '<':					// Symbols::LA_QUOTE[0]
  ------------------
  |  Branch (416:7): [True: 194, False: 3.08k]
  ------------------
  417|       |         // Mark Handley <mjh@isi.edu>
  418|       |         //              ^
  419|       |         // <mjh@isi.edu>
  420|       |         // ^
  421|       |        
  422|    194|         pb.data(freeText, anchor);
  423|    194|         anchor = pb.skipChar();
  424|    194|         pb.skipToEndQuote(Symbols::RA_QUOTE[0]);
  425|    194|         pb.data(eOrp, anchor);
  426|    194|         pb.skipChar(Symbols::RA_QUOTE[0]);
  427|    194|         break;
  428|       |        
  429|    194|      case '(':					// Symbols::LPAREN[0]
  ------------------
  |  Branch (429:7): [True: 194, False: 3.08k]
  ------------------
  430|       |         // mjh@isi.edu (Mark Handley)
  431|       |         //             ^
  432|       |        
  433|    194|         pb.data(eOrp, anchor);
  434|    194|         anchor = pb.skipChar();
  435|    194|         pb.skipToEndQuote(Symbols::RPAREN[0]);
  436|    194|         pb.data(freeText, anchor);
  437|    194|         pb.skipChar(Symbols::RPAREN[0]);
  438|    194|         break;
  439|      0|      default:
  ------------------
  |  Branch (439:7): [True: 0, False: 3.28k]
  ------------------
  440|      0|         resip_assert(0);
  ------------------
  |  |   96|      0|#define resip_assert(x)                                                        \
  |  |   97|      0|{                                                                              \
  |  |   98|      0|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [Folded - Ignored]
  |  |  ------------------
  |  |   99|      0|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|      0|   {                                                                           \
  |  |  103|      0|      assert( (x) );                                                           \
  |  |  104|      0|   }                                                                           \
  |  |  105|      0|}
  ------------------
  441|  3.28k|   }
  442|  3.28k|}
_ZN5resip11SdpContents7Session5Email5parseERNS_11ParseBufferE:
  446|  1.59k|{
  447|  1.59k|   pb.skipChar('e');
  448|  1.59k|   parseEorP(pb, mAddress, mFreeText);
  449|  1.59k|   skipEol(pb);
  450|  1.59k|}
_ZN5resip11SdpContents7Session5PhoneC2ERKS2_:
  461|  1.69k|{}
_ZN5resip11SdpContents7Session5Phone5parseERNS_11ParseBufferE:
  490|  1.69k|{
  491|  1.69k|   pb.skipChar('p');
  492|  1.69k|   parseEorP(pb, mNumber, mFreeText);
  493|  1.69k|   skipEol(pb);
  494|  1.69k|}
_ZN5resip11SdpContents7Session10ConnectionC2Ev:
  508|  21.7k|{}
_ZN5resip11SdpContents7Session10ConnectionC2ERKS2_:
  514|  94.4k|{
  515|  94.4k|}
_ZN5resip11SdpContents7Session10Connection5parseERNS_11ParseBufferE:
  552|  15.5k|{
  553|  15.5k|   pb.skipChar('c');
  554|  15.5k|   pb.skipChar(Symbols::EQUALS[0]);
  555|  15.5k|   pb.skipChar('I');
  556|  15.5k|   pb.skipChar('N');
  557|       |
  558|  15.5k|   const char* anchor = pb.skipChar(Symbols::SPACE[0]);
  559|  15.5k|   pb.skipToChar(Symbols::SPACE[0]);
  560|  15.5k|   Data addrType;
  561|  15.5k|   pb.data(addrType, anchor);
  562|  15.5k|   if (addrType == NetworkType[IP4])
  ------------------
  |  Branch (562:8): [True: 562, False: 15.0k]
  ------------------
  563|    562|   {
  564|    562|      mAddrType = IP4;
  565|    562|   }
  566|  15.0k|   else if (addrType == NetworkType[IP6])
  ------------------
  |  Branch (566:13): [True: 195, False: 14.8k]
  ------------------
  567|    195|   {
  568|    195|      mAddrType = IP6;
  569|    195|   }
  570|  14.8k|   else
  571|  14.8k|   {
  572|  14.8k|      mAddrType = static_cast<AddrType>(0);
  573|  14.8k|   }
  574|       |
  575|  15.5k|   anchor = pb.skipChar();
  576|  15.5k|   pb.skipToOneOf(Symbols::SLASH, Symbols::CRLF);
  577|  15.5k|   pb.data(mAddress, anchor);
  578|       |
  579|  15.5k|   mTTL = 0;
  580|  15.5k|   if (mAddrType == IP4 && !pb.eof() && *pb.position() == Symbols::SLASH[0])
  ------------------
  |  Branch (580:8): [True: 561, False: 15.0k]
  |  Branch (580:8): [True: 253, False: 15.3k]
  |  Branch (580:28): [True: 560, False: 1]
  |  Branch (580:41): [True: 253, False: 307]
  ------------------
  581|    253|   {
  582|    253|      pb.skipChar();
  583|    253|      mTTL = pb.integer();
  584|    253|   }
  585|       |
  586|       |   // multicast dealt with above this parser
  587|  15.5k|   if (!pb.eof() && *pb.position() != Symbols::SLASH[0])
  ------------------
  |  Branch (587:8): [True: 15.4k, False: 98]
  |  Branch (587:8): [True: 4.23k, False: 11.3k]
  |  Branch (587:21): [True: 4.23k, False: 11.2k]
  ------------------
  588|  4.23k|   {
  589|  4.23k|      skipEol(pb);
  590|  4.23k|   }
  591|  15.5k|}
_ZN5resip11SdpContents7Session9BandwidthC2ERKS2_:
  602|  1.88k|{}
_ZN5resip11SdpContents7Session9Bandwidth5parseERNS_11ParseBufferE:
  627|  1.88k|{
  628|  1.88k|   pb.skipChar('b');
  629|  1.88k|   const char* anchor = pb.skipChar(Symbols::EQUALS[0]);
  630|       |
  631|  1.88k|   pb.skipToOneOf(Symbols::COLON, Symbols::CRLF);
  632|  1.88k|   if (*pb.position() == Symbols::COLON[0])
  ------------------
  |  Branch (632:8): [True: 1.84k, False: 42]
  ------------------
  633|  1.84k|   {
  634|  1.84k|      pb.data(mModifier, anchor);
  635|       |
  636|  1.84k|      anchor = pb.skipChar(Symbols::COLON[0]);
  637|  1.84k|      mKbPerSecond = pb.integer();
  638|       |
  639|  1.84k|      skipEol(pb);
  640|  1.84k|   }
  641|     42|   else
  642|     42|   {
  643|     42|      pb.fail(__FILE__, __LINE__);
  644|     42|   }
  645|  1.88k|}
_ZN5resip11SdpContents7Session4TimeC2ERKS2_:
  656|  1.38k|{}
_ZN5resip11SdpContents7Session4Time5parseERNS_11ParseBufferE:
  687|  1.38k|{
  688|  1.38k|   pb.skipChar('t');
  689|  1.38k|   pb.skipChar(Symbols::EQUALS[0]);
  690|       |
  691|  1.38k|   mStart = pb.uInt32();
  692|  1.38k|   pb.skipChar(Symbols::SPACE[0]);
  693|  1.38k|   mStop = pb.uInt32();
  694|       |
  695|  1.38k|   skipEol(pb);
  696|       |
  697|  2.61k|   while (!pb.eof() && *pb.position() == 'r')
  ------------------
  |  Branch (697:11): [True: 2.51k, False: 91]
  |  Branch (697:11): [True: 1.22k, False: 1.38k]
  |  Branch (697:24): [True: 1.22k, False: 1.29k]
  ------------------
  698|  1.22k|   {
  699|  1.22k|      addRepeat(Repeat());
  700|  1.22k|      mRepeats.back().parse(pb);
  701|  1.22k|   }
  702|  1.38k|}
_ZN5resip11SdpContents7Session4Time9addRepeatERKNS2_6RepeatE:
  706|  1.22k|{
  707|  1.22k|   mRepeats.push_back(repeat);
  708|  1.22k|}
_Z14parseTypedTimeRN5resip11ParseBufferE:
  736|  67.0k|{
  737|  67.0k|   int v = pb.integer();
  738|  67.0k|   if (!pb.eof())
  ------------------
  |  Branch (738:8): [True: 66.9k, False: 50]
  ------------------
  739|  66.9k|   {
  740|  66.9k|      switch (*pb.position())
  ------------------
  |  Branch (740:15): [True: 66.0k, False: 885]
  ------------------
  741|  66.9k|      {
  742|    258|    case 's' :
  ------------------
  |  Branch (742:5): [True: 258, False: 66.6k]
  ------------------
  743|    258|       pb.skipChar();
  744|    258|       break;
  745|    212|    case 'm' :
  ------------------
  |  Branch (745:5): [True: 212, False: 66.7k]
  ------------------
  746|    212|       v *= 60;
  747|    212|       pb.skipChar();
  748|    212|       break;
  749|    210|    case 'h' :
  ------------------
  |  Branch (749:5): [True: 210, False: 66.7k]
  ------------------
  750|    210|       v *= 3600;
  751|    210|       pb.skipChar();
  752|    210|       break;
  753|    205|    case 'd' :
  ------------------
  |  Branch (753:5): [True: 205, False: 66.7k]
  ------------------
  754|    205|       v *= 3600*24;
  755|    205|       pb.skipChar();
  756|  66.9k|      }
  757|  66.9k|   }
  758|  67.0k|   return v;
  759|  67.0k|}
_ZN5resip11SdpContents7Session4Time6Repeat5parseERNS_11ParseBufferE:
  763|  1.22k|{
  764|  1.22k|   pb.skipChar('r');
  765|  1.22k|   pb.skipChar(Symbols::EQUALS[0]);
  766|       |
  767|  1.22k|   mInterval = parseTypedTime(pb);
  768|  1.22k|   pb.skipChar(Symbols::SPACE[0]);
  769|       |
  770|  1.22k|   mDuration = parseTypedTime(pb);
  771|       |
  772|  39.0k|   while (!pb.eof() && *pb.position() != Symbols::CR[0])
  ------------------
  |  Branch (772:11): [True: 38.9k, False: 67]
  |  Branch (772:11): [True: 37.8k, False: 1.22k]
  |  Branch (772:24): [True: 37.8k, False: 1.15k]
  ------------------
  773|  37.8k|   {
  774|  37.8k|      pb.skipChar(Symbols::SPACE[0]);
  775|       |
  776|  37.8k|      mOffsets.push_back(parseTypedTime(pb));
  777|  37.8k|   }
  778|       |
  779|  1.22k|   skipEol(pb);
  780|  1.22k|}
_ZN5resip11SdpContents7Session9Timezones10AdjustmentC2Emi:
  786|  26.8k|{}
_ZN5resip11SdpContents7Session9Timezones10AdjustmentC2ERKS3_:
  791|  26.7k|{}
_ZN5resip11SdpContents7Session9TimezonesC2Ev:
  806|  6.24k|{}
_ZN5resip11SdpContents7Session9Timezones5parseERNS_11ParseBufferE:
  848|     80|{
  849|     80|   pb.skipChar('z');
  850|     80|   pb.skipChar(Symbols::EQUALS[0]);
  851|       |
  852|  26.8k|   while (!pb.eof() && *pb.position() != Symbols::CR[0])
  ------------------
  |  Branch (852:11): [True: 26.8k, False: 79]
  |  Branch (852:11): [True: 26.8k, False: 80]
  |  Branch (852:24): [True: 26.8k, False: 1]
  ------------------
  853|  26.8k|   {
  854|  26.8k|      Adjustment adj(0, 0);
  855|  26.8k|      adj.time = pb.integer();
  856|  26.8k|      pb.skipChar(Symbols::SPACE[0]);
  857|  26.8k|      adj.offset = parseTypedTime(pb);
  858|  26.8k|      addAdjustment(adj);
  859|       |
  860|  26.8k|      if (!pb.eof() && *pb.position() == Symbols::SPACE[0])
  ------------------
  |  Branch (860:11): [True: 26.7k, False: 71]
  |  Branch (860:11): [True: 25.8k, False: 942]
  |  Branch (860:24): [True: 25.8k, False: 871]
  ------------------
  861|  25.8k|      {
  862|  25.8k|         pb.skipChar();
  863|  25.8k|      }
  864|  26.8k|   }
  865|       |
  866|     80|   skipEol(pb);
  867|     80|}
_ZN5resip11SdpContents7Session9Timezones13addAdjustmentERKNS2_10AdjustmentE:
  871|  26.7k|{
  872|  26.7k|   mAdjustments.push_back(adjust);
  873|  26.7k|}
_ZN5resip11SdpContents7Session10EncryptionC2Ev:
  878|  19.4k|{}
_ZN5resip11SdpContents7Session10EncryptionC2ERKS2_:
  889|  13.1k|{}
_ZN5resip11SdpContents7Session10Encryption5parseERNS_11ParseBufferE:
  920|  2.10k|{
  921|  2.10k|   pb.skipChar('k');
  922|  2.10k|   const char* anchor = pb.skipChar(Symbols::EQUALS[0]);
  923|       |
  924|  2.10k|   pb.skipToChar(Symbols::COLON[0]);
  925|  2.10k|   if (!pb.eof())
  ------------------
  |  Branch (925:8): [True: 1.14k, False: 959]
  ------------------
  926|  1.14k|   {
  927|  1.14k|      Data p;
  928|  1.14k|      pb.data(p, anchor);
  929|  1.14k|      if (p == KeyTypes[Clear])
  ------------------
  |  Branch (929:11): [True: 247, False: 894]
  ------------------
  930|    247|      {
  931|    247|         mMethod = Clear;
  932|    247|      }
  933|    894|      else if (p == KeyTypes[Base64])
  ------------------
  |  Branch (933:16): [True: 194, False: 700]
  ------------------
  934|    194|      {
  935|    194|         mMethod = Base64;
  936|    194|      }
  937|    700|      else if (p == KeyTypes[UriKey])
  ------------------
  |  Branch (937:16): [True: 356, False: 344]
  ------------------
  938|    356|      {
  939|    356|         mMethod = UriKey;
  940|    356|      }
  941|       |
  942|  1.14k|      anchor = pb.skipChar(Symbols::COLON[0]);
  943|  1.14k|      pb.skipToOneOf(Symbols::CRLF);
  944|  1.14k|      pb.data(mKey, anchor);
  945|  1.14k|   }
  946|    959|   else
  947|    959|   {
  948|    959|      pb.reset(anchor);
  949|    959|      pb.skipToOneOf(Symbols::CRLF);
  950|       |
  951|    959|      Data p;
  952|    959|      pb.data(p, anchor);
  953|    959|      if (p == KeyTypes[Prompt])
  ------------------
  |  Branch (953:11): [True: 280, False: 679]
  ------------------
  954|    280|      {
  955|    280|         mMethod = Prompt;
  956|    280|      }
  957|    959|   }
  958|       |
  959|  2.10k|   skipEol(pb);
  960|  2.10k|}
_ZN5resip11SdpContents7Session5parseERNS_11ParseBufferE:
 1005|  6.23k|{
 1006|  6.23k|   pb.skipChar('v');
 1007|  6.23k|   pb.skipChar(Symbols::EQUALS[0]);
 1008|  6.23k|   mVersion = pb.integer();
 1009|  6.23k|   skipEol(pb);
 1010|       |
 1011|  6.23k|   mOrigin.parse(pb);
 1012|       |
 1013|  6.23k|   pb.skipChar('s');
 1014|  6.23k|   const char* anchor = pb.skipChar(Symbols::EQUALS[0]);
 1015|  6.23k|   pb.skipToOneOf(Symbols::CRLF);
 1016|  6.23k|   pb.data(mName, anchor);
 1017|  6.23k|   skipEol(pb);
 1018|       |
 1019|  6.23k|   if (!pb.eof() && *pb.position() == 'i')
  ------------------
  |  Branch (1019:8): [True: 2.28k, False: 3.94k]
  |  Branch (1019:8): [True: 7, False: 6.23k]
  |  Branch (1019:21): [True: 7, False: 2.28k]
  ------------------
 1020|      7|   {
 1021|      7|      pb.skipChar('i');
 1022|      7|      const char* anchor = pb.skipChar(Symbols::EQUALS[0]);
 1023|      7|      pb.skipToOneOf(Symbols::CRLF);
 1024|      7|      pb.data(mInformation, anchor);
 1025|      7|      skipEol(pb);
 1026|      7|   }
 1027|       |
 1028|  6.23k|   if (!pb.eof() && *pb.position() == 'u')
  ------------------
  |  Branch (1028:8): [True: 2.28k, False: 3.95k]
  |  Branch (1028:8): [True: 72, False: 6.16k]
  |  Branch (1028:21): [True: 72, False: 2.21k]
  ------------------
 1029|     72|   {
 1030|     72|      pb.skipChar('u');
 1031|     72|      pb.skipChar(Symbols::EQUALS[0]);
 1032|     72|      mUri.parse(pb);
 1033|     72|      skipEol(pb);
 1034|     72|   }
 1035|       |
 1036|  7.82k|   while (!pb.eof() && *pb.position() == 'e')
  ------------------
  |  Branch (1036:11): [True: 3.76k, False: 4.06k]
  |  Branch (1036:11): [True: 1.59k, False: 6.23k]
  |  Branch (1036:24): [True: 1.59k, False: 2.17k]
  ------------------
 1037|  1.59k|   {
 1038|  1.59k|      addEmail(Email());
 1039|  1.59k|      mEmails.back().parse(pb);
 1040|  1.59k|   }
 1041|       |
 1042|  7.93k|   while (!pb.eof() && *pb.position() == 'p')
  ------------------
  |  Branch (1042:11): [True: 3.82k, False: 4.10k]
  |  Branch (1042:11): [True: 1.69k, False: 6.23k]
  |  Branch (1042:24): [True: 1.69k, False: 2.13k]
  ------------------
 1043|  1.69k|   {
 1044|  1.69k|      addPhone(Phone());
 1045|  1.69k|      mPhones.back().parse(pb);
 1046|  1.69k|   }
 1047|       |
 1048|  6.23k|   if (!pb.eof() && *pb.position() == 'c')
  ------------------
  |  Branch (1048:8): [True: 2.13k, False: 4.10k]
  |  Branch (1048:8): [True: 39, False: 6.19k]
  |  Branch (1048:21): [True: 39, False: 2.09k]
  ------------------
 1049|     39|   {
 1050|     39|      mConnection.parse(pb);
 1051|     39|   }
 1052|       |
 1053|  7.06k|   while (!pb.eof() && *pb.position() == 'b')
  ------------------
  |  Branch (1053:11): [True: 2.91k, False: 4.15k]
  |  Branch (1053:11): [True: 829, False: 6.23k]
  |  Branch (1053:24): [True: 829, False: 2.08k]
  ------------------
 1054|    829|   {
 1055|    829|      addBandwidth(Bandwidth());
 1056|    829|      mBandwidths.back().parse(pb);
 1057|    829|   }
 1058|       |
 1059|  7.62k|   while (!pb.eof() && *pb.position() == 't')
  ------------------
  |  Branch (1059:11): [True: 3.38k, False: 4.24k]
  |  Branch (1059:11): [True: 1.38k, False: 6.23k]
  |  Branch (1059:24): [True: 1.38k, False: 1.99k]
  ------------------
 1060|  1.38k|   {
 1061|  1.38k|      addTime(Time());
 1062|  1.38k|      mTimes.back().parse(pb);
 1063|  1.38k|   }
 1064|       |
 1065|  6.23k|   if (!pb.eof() && *pb.position() == 'z')
  ------------------
  |  Branch (1065:8): [True: 1.99k, False: 4.24k]
  |  Branch (1065:8): [True: 80, False: 6.15k]
  |  Branch (1065:21): [True: 80, False: 1.91k]
  ------------------
 1066|     80|   {
 1067|     80|      mTimezones.parse(pb);
 1068|     80|   }
 1069|       |
 1070|  6.23k|   if (!pb.eof() && *pb.position() == 'k')
  ------------------
  |  Branch (1070:8): [True: 1.91k, False: 4.32k]
  |  Branch (1070:8): [True: 88, False: 6.15k]
  |  Branch (1070:21): [True: 88, False: 1.82k]
  ------------------
 1071|     88|   {
 1072|     88|      mEncryption.parse(pb);
 1073|     88|   }
 1074|       |
 1075|  6.23k|   mAttributeHelper.parse(pb);
 1076|       |
 1077|  19.4k|   while (!pb.eof() && *pb.position() == 'm')
  ------------------
  |  Branch (1077:11): [True: 13.3k, False: 6.10k]
  |  Branch (1077:11): [True: 13.1k, False: 6.23k]
  |  Branch (1077:24): [True: 13.1k, False: 133]
  ------------------
 1078|  13.1k|   {
 1079|  13.1k|      addMedium(Medium());
 1080|  13.1k|      mMedia.back().parse(pb);
 1081|  13.1k|   }
 1082|  6.23k|}
_ZN5resip11SdpContents7Session8addEmailERKNS1_5EmailE:
 1172|  1.59k|{
 1173|  1.59k|   mEmails.push_back(email);
 1174|  1.59k|}
_ZN5resip11SdpContents7Session7addTimeERKNS1_4TimeE:
 1178|  1.38k|{
 1179|  1.38k|   mTimes.push_back(t);
 1180|  1.38k|}
_ZN5resip11SdpContents7Session8addPhoneERKNS1_5PhoneE:
 1184|  1.69k|{
 1185|  1.69k|   mPhones.push_back(phone);
 1186|  1.69k|}
_ZN5resip11SdpContents7Session12addBandwidthERKNS1_9BandwidthE:
 1190|    829|{
 1191|    829|   mBandwidths.push_back(bandwidth);
 1192|    829|}
_ZN5resip11SdpContents7Session9addMediumERKNS1_6MediumE:
 1196|  13.1k|{
 1197|  13.1k|   mMedia.push_back(medium);
 1198|  13.1k|   mMedia.back().setSession(this);
 1199|  13.1k|}
_ZN5resip11SdpContents7Session6MediumC2Ev:
 1530|  13.1k|{}
_ZN5resip11SdpContents7Session6MediumC2ERKS2_:
 1548|  13.1k|{
 1549|  13.1k|}
_ZN5resip11SdpContents7Session6Medium10setSessionEPS1_:
 1584|  13.1k|{
 1585|  13.1k|   mSession = session;
 1586|  13.1k|}
_ZN5resip11SdpContents7Session6Medium5parseERNS_11ParseBufferE:
 1590|  13.1k|{
 1591|  13.1k|   pb.skipChar('m');
 1592|  13.1k|   const char* anchor = pb.skipChar(Symbols::EQUALS[0]);
 1593|       |
 1594|  13.1k|   pb.skipToChar(Symbols::SPACE[0]);
 1595|  13.1k|   pb.data(mName, anchor);
 1596|  13.1k|   pb.skipChar(Symbols::SPACE[0]);
 1597|       |
 1598|  13.1k|   mPort = pb.integer();
 1599|       |
 1600|  13.1k|   if (*pb.position() == Symbols::SLASH[0])
  ------------------
  |  Branch (1600:8): [True: 194, False: 12.9k]
  ------------------
 1601|    194|   {
 1602|    194|      pb.skipChar();
 1603|    194|      mMulticast = pb.integer();
 1604|    194|   }
 1605|       |
 1606|  13.1k|   anchor = pb.skipChar(Symbols::SPACE[0]);
 1607|  13.1k|   pb.skipToOneOf(Symbols::SPACE, Symbols::CRLF);
 1608|  13.1k|   pb.data(mProtocol, anchor);
 1609|       |
 1610|   202k|   while (*pb.position() != Symbols::CR[0] &&
  ------------------
  |  Branch (1610:11): [True: 202k, False: 508]
  |  Branch (1610:11): [True: 189k, False: 13.1k]
  ------------------
 1611|   202k|          *pb.position() != Symbols::LF[0])
  ------------------
  |  Branch (1611:11): [True: 189k, False: 12.6k]
  ------------------
 1612|   189k|   {
 1613|   189k|      anchor = pb.skipChar(Symbols::SPACE[0]);
 1614|   189k|      pb.skipToOneOf(Symbols::SPACE, Symbols::CRLF);
 1615|   189k|     if(pb.position() != anchor)
  ------------------
  |  Branch (1615:9): [True: 188k, False: 1.36k]
  ------------------
 1616|   188k|     {
 1617|   188k|      Data format;
 1618|   188k|      pb.data(format, anchor);
 1619|   188k|      addFormat(format);
 1620|   188k|     }
 1621|   189k|   }
 1622|       |
 1623|  13.1k|   skipEol(pb);
 1624|       |
 1625|  13.1k|   if (!pb.eof() && *pb.position() == 'i')
  ------------------
  |  Branch (1625:8): [True: 13.0k, False: 129]
  |  Branch (1625:8): [True: 194, False: 12.9k]
  |  Branch (1625:21): [True: 194, False: 12.8k]
  ------------------
 1626|    194|   {
 1627|    194|      pb.skipChar('i');
 1628|    194|      anchor = pb.skipChar(Symbols::EQUALS[0]);
 1629|    194|      pb.skipToOneOf(Symbols::CRLF);
 1630|    194|      pb.data(mInformation, anchor);
 1631|       |
 1632|    194|      skipEol(pb);
 1633|    194|   }
 1634|       |
 1635|  28.7k|   while (!pb.eof() && *pb.position() == 'c')
  ------------------
  |  Branch (1635:11): [True: 27.5k, False: 1.13k]
  |  Branch (1635:11): [True: 15.5k, False: 13.1k]
  |  Branch (1635:24): [True: 15.5k, False: 12.0k]
  ------------------
 1636|  15.5k|   {
 1637|  15.5k|      addConnection(Connection());
 1638|  15.5k|      mConnections.back().parse(pb);
 1639|  15.5k|      if (!pb.eof() && *pb.position() == Symbols::SLASH[0])
  ------------------
  |  Branch (1639:11): [True: 15.4k, False: 98]
  |  Branch (1639:11): [True: 11.2k, False: 4.29k]
  |  Branch (1639:24): [True: 11.2k, False: 4.19k]
  ------------------
 1640|  11.2k|      {
 1641|       |         // Note:  we only get here if there was a /<number of addresses> 
 1642|       |         //        parameter following the connection address. 
 1643|  11.2k|         pb.skipChar();
 1644|  11.2k|         int num = pb.integer();
 1645|       |
 1646|  11.2k|         if (num > 255)
  ------------------
  |  Branch (1646:14): [True: 6, False: 11.2k]
  ------------------
 1647|      6|         {
 1648|      6|            pb.fail(__FILE__, __LINE__, "Too many connection addresses");
 1649|      6|         }
 1650|       |
 1651|  11.2k|         Connection& con = mConnections.back();
 1652|  11.2k|         const Data& addr = con.getAddress();
 1653|  11.2k|         if (addr.empty())
  ------------------
  |  Branch (1653:14): [True: 14, False: 11.2k]
  ------------------
 1654|     14|         {
 1655|     14|            pb.fail(__FILE__, __LINE__, "IP address expected");
 1656|     14|         }
 1657|  11.2k|         size_t i = addr.size() - 1;
 1658|  1.68M|         for (; i; i--)
  ------------------
  |  Branch (1658:17): [True: 1.67M, False: 8.88k]
  ------------------
 1659|  1.67M|         {
 1660|  1.67M|            if (addr[i] == '.' || addr[i] == ':') // ipv4 or ipv6
  ------------------
  |  Branch (1660:17): [True: 469, False: 1.67M]
  |  Branch (1660:35): [True: 1.88k, False: 1.67M]
  ------------------
 1661|  2.35k|            {
 1662|  2.35k|               break;
 1663|  2.35k|            }
 1664|  1.67M|         }
 1665|       |
 1666|  11.2k|         if (addr[i] == '.')  // add a number of ipv4 connections
  ------------------
  |  Branch (1666:14): [True: 2.66k, False: 8.57k]
  ------------------
 1667|  2.66k|         {
 1668|  2.66k|            Data before(addr.data(), i+1);
 1669|  2.66k|            ParseBuffer subpb(addr.data()+i+1, addr.size()-i-1);
 1670|  2.66k|            int after = subpb.integer();
 1671|       |
 1672|  10.1k|            for (int i = 1; i < num; i++)
  ------------------
  |  Branch (1672:29): [True: 7.50k, False: 2.66k]
  ------------------
 1673|  7.50k|            {
 1674|  7.50k|               addConnection(con);
 1675|  7.50k|               mConnections.back().mAddress = before + Data(after+i);
 1676|  7.50k|            }
 1677|  2.66k|         }
 1678|  11.2k|         if (addr[i] == ':') // add a number of ipv6 connections
  ------------------
  |  Branch (1678:14): [True: 8.39k, False: 2.84k]
  ------------------
 1679|  8.39k|         {
 1680|  8.39k|            Data before(addr.data(), i+1);
 1681|  8.39k|            int after = Helper::hex2integer(addr.data()+i+1);
 1682|  8.39k|            char hexstring[9];
 1683|       |
 1684|  79.8k|            for (int i = 1; i < num; i++)
  ------------------
  |  Branch (1684:29): [True: 71.4k, False: 8.39k]
  ------------------
 1685|  71.4k|            {
 1686|  71.4k|               addConnection(con);
 1687|  71.4k|               memset(hexstring, 0, sizeof(hexstring));
 1688|  71.4k|               Helper::integer2hex(hexstring, after+i, false /* supress leading zeros */);
 1689|  71.4k|               mConnections.back().mAddress = before + Data(hexstring);
 1690|  71.4k|            }
 1691|  8.39k|         }
 1692|       |
 1693|  11.2k|         skipEol(pb);
 1694|  11.2k|      }
 1695|  15.5k|   }
 1696|       |
 1697|  14.2k|   while (!pb.eof() && *pb.position() == 'b')
  ------------------
  |  Branch (1697:11): [True: 13.0k, False: 1.16k]
  |  Branch (1697:11): [True: 1.05k, False: 13.1k]
  |  Branch (1697:24): [True: 1.05k, False: 12.0k]
  ------------------
 1698|  1.05k|   {
 1699|  1.05k|      addBandwidth(Bandwidth());
 1700|  1.05k|      mBandwidths.back().parse(pb);
 1701|  1.05k|   }
 1702|       |
 1703|  13.1k|   if (!pb.eof() && *pb.position() == 'k')
  ------------------
  |  Branch (1703:8): [True: 12.0k, False: 1.16k]
  |  Branch (1703:8): [True: 2.01k, False: 11.1k]
  |  Branch (1703:21): [True: 2.01k, False: 10.0k]
  ------------------
 1704|  2.01k|   {
 1705|  2.01k|      mEncryption.parse(pb);
 1706|  2.01k|   }
 1707|       |
 1708|  13.1k|   mAttributeHelper.parse(pb);
 1709|  13.1k|}
_ZN5resip11SdpContents7Session6Medium9addFormatERKNS_4DataE:
 1796|   188k|{
 1797|   188k|   mFormats.push_back(format);
 1798|   188k|}
_ZN5resip11SdpContents7Session6Medium13addConnectionERKNS1_10ConnectionE:
 1809|  94.4k|{
 1810|  94.4k|   mConnections.push_back(connection);
 1811|  94.4k|}
_ZN5resip11SdpContents7Session6Medium12addBandwidthERKNS1_9BandwidthE:
 1822|  1.05k|{
 1823|  1.05k|   mBandwidths.push_back(bandwidth);
 1824|  1.05k|}
_ZN5resip11SdpContents7Session5CodecC2ERKNS_4DataEii:
 2069|     20|{
 2070|     20|}

_ZN5resip11SdpContents7Session5CodecC2Ev:
   76|      2|                  Codec() : mName(), mRate(0), mPayloadType(-1) {}
_ZN5resip11SdpContents7Session5EmailC2Ev:
  289|  1.59k|                  Email() {}
_ZN5resip11SdpContents7Session5PhoneC2Ev:
  330|  1.69k|                  Phone() {}
_ZNK5resip11SdpContents7Session10Connection10getAddressEv:
  372|  11.2k|                  const Data& getAddress() const {return mAddress;}
_ZN5resip11SdpContents7Session9BandwidthC2Ev:
  436|  1.88k|                  Bandwidth() {}
_ZN5resip11SdpContents7Session4Time6RepeatC2Ev:
  484|  1.22k|                        Repeat() {}
_ZN5resip11SdpContents7Session4TimeC2Ev:
  507|  1.38k|                  Time() {}
_ZNK5resip11SdpContents7Session9Direction4nameEv:
  593|      8|                  const Data& name() const { return mName; }
_ZNK5resip11SdpContents7Session9Direction5tupleEv:
  596|      8|                  {
  597|      8|                     return Tuple(name(), cref);
  598|      8|                  }
_ZN5resip11SdpContents7Session9DirectionC2ERKNS_4DataEbb:
  615|      8|                    : cref(std::ref(*this)), mName(name), mSend(send), mRecv(recv) {};
_ZN5resip11SdpContents7SessionC2Ev:
  883|  6.24k|            Session() : mVersion(0) {}

_ZN5resip7SipFrag4initEv:
   19|      4|{
   20|      4|   static ContentsFactory<SipFrag> factory;
   21|      4|   (void)factory;
   22|      4|   return true;
   23|      4|}
_ZN5resip7SipFrag13getStaticTypeEv:
   75|      2|{
   76|      2|   static Mime type("message", "sipfrag");
   77|       |   //static Mime type("application", "sipfrag");
   78|      2|   return type;
   79|      2|}

_ZN5resip10SipMessageC2EPKNS_5TupleE:
   46|  9.60k|{
   47|  9.60k|   if(receivedTransportTuple)
  ------------------
  |  Branch (47:7): [True: 0, False: 9.60k]
  ------------------
   48|      0|   {
   49|      0|       mReceivedTransportTuple = *receivedTransportTuple;
   50|      0|   }
   51|       |   // !bwc! TODO make this tunable
   52|  9.60k|   mHeaders.reserve(16);
   53|  9.60k|   clear();
   54|  9.60k|}
_ZN5resip10SipMessageD2Ev:
   86|  9.60k|{
   87|       |//#define DINKYPOOL_PROFILING
   88|       |#ifdef DINKYPOOL_PROFILING
   89|       |   if (mPool.getHeapBytes() > 0)
   90|       |   {
   91|       |       InfoLog(<< "SipMessage mPool filled up and used " << mPool.getHeapBytes() << " bytes on the heap, consider increasing the mPool size (sizeof SipMessage is " << sizeof(SipMessage) << " bytes): msg="
   92|       |           << std::endl << *this);
   93|       |   }
   94|       |   else
   95|       |   {
   96|       |       InfoLog(<< "SipMessage mPool used " << mPool.getPoolBytes() << " bytes of a total " << mPool.getPoolSizeBytes() << " bytes (sizeof SipMessage is " << sizeof(SipMessage) << " bytes): msg="
   97|       |           << std::endl << *this);
   98|       |   }
   99|       |#endif
  100|  9.60k|   freeMem();
  101|  9.60k|}
_ZN5resip10SipMessage5clearEb:
  105|  9.60k|{
  106|  9.60k|   if(!leaveResponseStuff)
  ------------------
  |  Branch (106:7): [True: 9.60k, False: 0]
  ------------------
  107|  9.60k|   {
  108|  9.60k|      memset(mHeaderIndices,0,sizeof(mHeaderIndices));
  109|  9.60k|      clearHeaders();
  110|       |      
  111|       |      // !bwc! The "invalid" 0 index.
  112|  9.60k|      mHeaders.push_back(getEmptyHfvl());
  113|  9.60k|      mBufferList.clear();
  114|  9.60k|   }
  115|       |
  116|  9.60k|   mUnknownHeaders.clear();
  117|       |
  118|  9.60k|   mStartLine = 0;
  119|  9.60k|   mContents = 0;
  120|  9.60k|   mContentsHfv.clear();
  121|  9.60k|   mForceTarget = 0;
  122|  9.60k|   mReason=0;
  123|  9.60k|   mOutboundDecorators.clear();
  124|  9.60k|}
_ZN5resip10SipMessage7freeMemEb:
  225|  9.60k|{
  226|  9.60k|   for (UnknownHeaders::iterator i = mUnknownHeaders.begin();
  227|  20.3k|        i != mUnknownHeaders.end(); i++)
  ------------------
  |  Branch (227:9): [True: 10.7k, False: 9.60k]
  ------------------
  228|  10.7k|   {
  229|  10.7k|      freeHfvl(i->second);
  230|  10.7k|   }
  231|       |
  232|  9.60k|   if(!leaveResponseStuff)
  ------------------
  |  Branch (232:7): [True: 9.60k, False: 0]
  ------------------
  233|  9.60k|   {
  234|  9.60k|      clearHeaders();
  235|       |
  236|  9.60k|      for (vector<char*>::iterator i = mBufferList.begin();
  237|  2.52M|           i != mBufferList.end(); i++)
  ------------------
  |  Branch (237:12): [True: 2.51M, False: 9.60k]
  ------------------
  238|  2.51M|      {
  239|  2.51M|         delete [] *i;
  240|  2.51M|      }
  241|  9.60k|   }
  242|       |
  243|  9.60k|   if(mStartLine)
  ------------------
  |  Branch (243:7): [True: 520, False: 9.08k]
  ------------------
  244|    520|   {
  245|    520|      mStartLine->~StartLine();
  246|    520|      mStartLine=0;
  247|    520|   }
  248|       |
  249|  9.60k|   delete mContents;
  250|  9.60k|   delete mForceTarget;
  251|  9.60k|   delete mReason;
  252|       |
  253|  9.60k|   for(std::vector<MessageDecorator*>::iterator i=mOutboundDecorators.begin();
  254|  9.60k|         i!=mOutboundDecorators.end();++i)
  ------------------
  |  Branch (254:10): [True: 0, False: 9.60k]
  ------------------
  255|      0|   {
  256|      0|      delete *i;
  257|      0|   }
  258|  9.60k|}
_ZN5resip10SipMessage12clearHeadersEv:
  262|  19.2k|{
  263|  30.1k|    for (TypedHeaders::iterator i = mHeaders.begin(); i != mHeaders.end(); i++)
  ------------------
  |  Branch (263:55): [True: 10.9k, False: 19.2k]
  ------------------
  264|  10.9k|    {
  265|  10.9k|        freeHfvl(*i);
  266|  10.9k|    }
  267|  19.2k|    mHeaders.clear();
  268|  19.2k|}
_ZN5resip10SipMessage4makeERKNS_4DataEb:
  272|  6.23k|{
  273|  6.23k|   Tuple fakeWireTuple;
  274|  6.23k|   fakeWireTuple.setType(UDP);
  275|  6.23k|   SipMessage* msg = new SipMessage(isExternal ? &fakeWireTuple : 0);
  ------------------
  |  Branch (275:37): [True: 0, False: 6.23k]
  ------------------
  276|       |
  277|  6.23k|   size_t len = data.size();
  278|  6.23k|   char *buffer = new char[len + 5];
  279|       |
  280|  6.23k|   msg->addBuffer(buffer);
  281|  6.23k|   memcpy(buffer,data.data(), len);
  282|  6.23k|   MsgHeaderScanner msgHeaderScanner;
  283|  6.23k|   msgHeaderScanner.prepareForMessage(msg);
  284|       |   
  285|  6.23k|   char *unprocessedCharPtr;
  286|  6.23k|   if (msgHeaderScanner.scanChunk(buffer, (unsigned int)len, &unprocessedCharPtr) != MsgHeaderScanner::scrEnd)
  ------------------
  |  Branch (286:8): [True: 6.13k, False: 99]
  ------------------
  287|  6.13k|   {
  288|  6.13k|      DebugLog(<<"Scanner rejecting buffer as unparsable / fragmented.");
  ------------------
  |  |  128|  6.13k|#define DebugLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  6.13k|   do                                                                   \
  |  |  |  |  152|  6.13k|   {                                                                    \
  |  |  |  |  153|  6.13k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 6.13k]
  |  |  |  |  ------------------
  |  |  |  |  154|  6.13k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  6.13k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  6.13k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Debug, args_)
  ------------------
  289|  6.13k|      DebugLog(<< data);
  ------------------
  |  |  128|  6.13k|#define DebugLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  6.13k|   do                                                                   \
  |  |  |  |  152|  6.13k|   {                                                                    \
  |  |  |  |  153|  6.13k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 6.13k]
  |  |  |  |  ------------------
  |  |  |  |  154|  6.13k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  6.13k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  6.13k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Debug, args_)
  ------------------
  290|  6.13k|      delete msg; 
  291|  6.13k|      msg = 0; 
  292|  6.13k|      return 0;
  293|  6.13k|   }
  294|       |
  295|       |   // no pp error
  296|     99|   unsigned int used = (unsigned int)(unprocessedCharPtr - buffer);
  297|       |
  298|     99|   if (used < len)
  ------------------
  |  Branch (298:8): [True: 97, False: 2]
  ------------------
  299|     97|   {
  300|       |      // body is present .. add it up.
  301|       |      // NB. The Sip Message uses an overlay (again)
  302|       |      // for the body. It ALSO expects that the body
  303|       |      // will be contiguous (of course).
  304|       |      // it doesn't need a new buffer in UDP b/c there
  305|       |      // will only be one datagram per buffer. (1:1 strict)
  306|       |
  307|     97|      msg->setBody(buffer+used,uint32_t(len-used));
  308|       |      //DebugLog(<<"added " << len-used << " byte body");
  309|     97|   }
  310|       |
  311|     99|   return msg;
  312|  6.23k|}
_ZN5resip10SipMessage9addBufferEPc:
  865|  2.51M|{
  866|  2.51M|   mBufferList.push_back(buf);
  867|  2.51M|}
_ZN5resip10SipMessage12setStartLineEPKci:
  871|    520|{
  872|    520|   if(len >= 4 && !strncasecmp(st,"SIP/",4))
  ------------------
  |  Branch (872:7): [True: 206, False: 314]
  |  Branch (872:19): [True: 7, False: 199]
  ------------------
  873|      7|   {
  874|       |      // Response
  875|      7|      mStartLine = new (mStartLineMem) StatusLine(st, len);
  876|       |      //!dcm! should invoke the statusline parser here once it does limited validation
  877|      7|      mResponse = true;
  878|      7|   }
  879|    513|   else
  880|    513|   {
  881|       |      // Request
  882|    513|      mStartLine = new (mStartLineMem) RequestLine(st, len);
  883|       |      //!dcm! should invoke the responseline parser here once it does limited validation
  884|    513|      mRequest = true;
  885|    513|   }
  886|       |
  887|       |
  888|       |// .bwc. This stuff is so needlessly complicated. Much, much simpler, faster,
  889|       |// and more robust code above.
  890|       |//   ParseBuffer pb(st, len);
  891|       |//   const char* start;
  892|       |//   start = pb.skipWhitespace();
  893|       |//   pb.skipNonWhitespace();
  894|       |//   MethodTypes method = getMethodType(start, pb.position() - start);
  895|       |//   if (method == UNKNOWN) //probably a status line
  896|       |//   {
  897|       |//      start = pb.skipChar(Symbols::SPACE[0]);
  898|       |//      pb.skipNonWhitespace();
  899|       |//      if ((pb.position() - start) == 3)
  900|       |//      {
  901|       |//         mStartLine = new (mStartLineMem) StatusLine(st, len ,Headers::NONE);
  902|       |//         //!dcm! should invoke the statusline parser here once it does limited validation
  903|       |//         mResponse = true;
  904|       |//      }
  905|       |//   }
  906|       |//   if (!mResponse)
  907|       |//   {
  908|       |//      mStartLine = new (mStartLineMem) RequestLine(st, len, Headers::NONE);
  909|       |//      //!dcm! should invoke the responseline parser here once it does limited validation
  910|       |//      mRequest = true;
  911|       |//   }
  912|    520|}
_ZN5resip10SipMessage7setBodyEPKcj:
  916|  49.0k|{
  917|  49.0k|   if(checkContentLength)
  ------------------
  |  Branch (917:7): [True: 49.0k, False: 0]
  ------------------
  918|  49.0k|   {
  919|  49.0k|      if(exists(h_ContentLength))
  ------------------
  |  Branch (919:10): [True: 45.6k, False: 3.32k]
  ------------------
  920|  45.6k|      {
  921|  45.6k|         try
  922|  45.6k|         {
  923|  45.6k|            const_header(h_ContentLength).checkParsed();
  924|  45.6k|         }
  925|  45.6k|         catch(resip::ParseException& e)
  926|  45.6k|         {
  927|     95|            if(!mReason)
  ------------------
  |  Branch (927:16): [True: 81, False: 14]
  ------------------
  928|     81|            {
  929|     81|               mReason=new Data;
  930|     81|            }
  931|       |            
  932|     95|            if(mInvalid)
  ------------------
  |  Branch (932:16): [True: 14, False: 81]
  ------------------
  933|     14|            {
  934|     14|               mReason->append(",",1);
  935|     14|            }
  936|       |
  937|     95|            mInvalid=true; 
  938|     95|            mReason->append("Malformed Content-Length",24);
  939|     95|            InfoLog(<< "Malformed Content-Length. Ignoring. " << e);
  ------------------
  |  |  131|     95|#define InfoLog(args_) \
  |  |  ------------------
  |  |  |  |  151|     95|   do                                                                   \
  |  |  |  |  152|     95|   {                                                                    \
  |  |  |  |  153|     95|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 95]
  |  |  |  |  ------------------
  |  |  |  |  154|     95|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|     95|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|     95|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Info, args_)
  ------------------
  940|     95|            header(h_ContentLength).value()=len;
  941|     95|         }
  942|       |         
  943|  45.6k|         uint32_t contentLength=const_header(h_ContentLength).value();
  944|       |         
  945|  45.6k|         if(len > contentLength)
  ------------------
  |  Branch (945:13): [True: 6.20k, False: 39.4k]
  ------------------
  946|  6.20k|         {
  947|  6.20k|            InfoLog(<< (len-contentLength) << " extra bytes after body. Ignoring these bytes.");
  ------------------
  |  |  131|  6.20k|#define InfoLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  6.20k|   do                                                                   \
  |  |  |  |  152|  6.20k|   {                                                                    \
  |  |  |  |  153|  6.20k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 6.20k]
  |  |  |  |  ------------------
  |  |  |  |  154|  6.20k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  6.20k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|  6.20k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Info, args_)
  ------------------
  948|  6.20k|         }
  949|  39.4k|         else if(len < contentLength)
  ------------------
  |  Branch (949:18): [True: 104, False: 39.3k]
  ------------------
  950|    104|         {
  951|    104|            InfoLog(<< "Content Length (" << contentLength << ") is "
  ------------------
  |  |  131|    104|#define InfoLog(args_) \
  |  |  ------------------
  |  |  |  |  151|    104|   do                                                                   \
  |  |  |  |  152|    104|   {                                                                    \
  |  |  |  |  153|    104|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 104]
  |  |  |  |  ------------------
  |  |  |  |  154|    104|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|    104|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|    104|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Info, args_)
  ------------------
  952|    104|                    << (contentLength-len) << " bytes larger than body (" << len << ")!"
  953|    104|                    << " (We are supposed to 400 this) ");
  954|       |
  955|    104|            if(!mReason)
  ------------------
  |  Branch (955:16): [True: 62, False: 42]
  ------------------
  956|     62|            {
  957|     62|               mReason=new Data;
  958|     62|            }
  959|       |
  960|    104|            if(mInvalid)
  ------------------
  |  Branch (960:16): [True: 42, False: 62]
  ------------------
  961|     42|            {
  962|     42|               mReason->append(",",1);
  963|     42|            }
  964|       |
  965|    104|            mInvalid=true; 
  966|    104|            mReason->append("Bad Content-Length (larger than datagram)",41);
  967|    104|            header(h_ContentLength).value()=len;
  968|    104|            contentLength=len;
  969|       |                     
  970|    104|         }
  971|       |         
  972|  45.6k|         mContentsHfv.init(start,contentLength, false);
  973|  45.6k|      }
  974|  3.32k|      else
  975|  3.32k|      {
  976|  3.32k|         InfoLog(<< "Message has a body, but no Content-Length header.");
  ------------------
  |  |  131|  3.32k|#define InfoLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  3.32k|   do                                                                   \
  |  |  |  |  152|  3.32k|   {                                                                    \
  |  |  |  |  153|  3.32k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 3.32k]
  |  |  |  |  ------------------
  |  |  |  |  154|  3.32k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  3.32k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|  3.32k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Info, args_)
  ------------------
  977|  3.32k|         mContentsHfv.init(start,len, false);
  978|  3.32k|      }
  979|  49.0k|   }
  980|      0|   else
  981|      0|   {
  982|      0|      mContentsHfv.init(start,len, false);
  983|      0|   }
  984|  49.0k|}
_ZN5resip10SipMessage9addHeaderENS_7Headers4TypeEPKciS4_i:
 1203|  3.98M|{
 1204|  3.98M|   if (header != Headers::UNKNOWN)
  ------------------
  |  Branch (1204:8): [True: 3.67M, False: 317k]
  ------------------
 1205|  3.67M|   {
 1206|  3.67M|      resip_assert(header >= Headers::UNKNOWN && header < Headers::MAX_HEADERS);
  ------------------
  |  |   96|  3.67M|#define resip_assert(x)                                                        \
  |  |   97|  3.67M|{                                                                              \
  |  |   98|  7.34M|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:11): [True: 3.67M, False: 0]
  |  |  |  Branch (98:11): [True: 3.67M, False: 0]
  |  |  ------------------
  |  |   99|  3.67M|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  3.67M|   {                                                                           \
  |  |  103|  3.67M|      assert( (x) );                                                           \
  |  |  104|  3.67M|   }                                                                           \
  |  |  105|  3.67M|}
  ------------------
 1207|  3.67M|      HeaderFieldValueList* hfvl=0;
 1208|  3.67M|      if (mHeaderIndices[header] == 0)
  ------------------
  |  Branch (1208:11): [True: 1.31k, False: 3.66M]
  ------------------
 1209|  1.31k|      {
 1210|  1.31k|         mHeaderIndices[header] = (short)mHeaders.size();
 1211|  1.31k|         mHeaders.push_back(getEmptyHfvl());
 1212|  1.31k|         hfvl=mHeaders.back();
 1213|  1.31k|      }
 1214|  3.66M|      else
 1215|  3.66M|      {
 1216|  3.66M|         if(mHeaderIndices[header]<0)
  ------------------
  |  Branch (1216:13): [True: 0, False: 3.66M]
  ------------------
 1217|      0|         {
 1218|       |            // Adding to a previously removed header type; there is already an 
 1219|       |            // empty HeaderFieldValueList in mHeaders for this type, all we 
 1220|       |            // need to do is flip the sign to re-enable it.
 1221|      0|            mHeaderIndices[header] *= -1;
 1222|      0|         }
 1223|  3.66M|         hfvl=mHeaders[mHeaderIndices[header]];
 1224|  3.66M|      }
 1225|       |
 1226|  3.67M|      if(Headers::isMulti(header))
  ------------------
  |  Branch (1226:10): [True: 543k, False: 3.12M]
  ------------------
 1227|   543k|      {
 1228|   543k|         if (len)
  ------------------
  |  Branch (1228:14): [True: 539k, False: 3.42k]
  ------------------
 1229|   539k|         {
 1230|   539k|            hfvl->push_back(start, len, false);
 1231|   539k|         }
 1232|   543k|      }
 1233|  3.12M|      else
 1234|  3.12M|      {
 1235|  3.12M|         if(hfvl->size()==1)
  ------------------
  |  Branch (1235:13): [True: 3.12M, False: 1.04k]
  ------------------
 1236|  3.12M|         {
 1237|  3.12M|            if(!mReason)
  ------------------
  |  Branch (1237:16): [True: 156, False: 3.12M]
  ------------------
 1238|    156|            {
 1239|    156|               mReason=new Data;
 1240|    156|            }
 1241|       |            
 1242|  3.12M|            if(mInvalid)
  ------------------
  |  Branch (1242:16): [True: 3.12M, False: 156]
  ------------------
 1243|  3.12M|            {
 1244|  3.12M|               mReason->append(",",1);
 1245|  3.12M|            }
 1246|  3.12M|            mInvalid=true;
 1247|  3.12M|            mReason->append("Multiple values in single-value header ",39);
 1248|  3.12M|            (*mReason)+=Headers::getHeaderName(header);
 1249|  3.12M|            return;
 1250|  3.12M|         }
 1251|  1.04k|         hfvl->push_back(start ? start : Data::Empty.data(), len, false);
  ------------------
  |  Branch (1251:26): [True: 965, False: 80]
  ------------------
 1252|  1.04k|      }
 1253|       |
 1254|  3.67M|   }
 1255|   317k|   else
 1256|   317k|   {
 1257|   317k|      resip_assert(headerLen >= 0);
  ------------------
  |  |   96|   317k|#define resip_assert(x)                                                        \
  |  |   97|   317k|{                                                                              \
  |  |   98|   317k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 317k]
  |  |  ------------------
  |  |   99|   317k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|   317k|   {                                                                           \
  |  |  103|   317k|      assert( (x) );                                                           \
  |  |  104|   317k|   }                                                                           \
  |  |  105|   317k|}
  ------------------
 1258|   317k|      for (UnknownHeaders::iterator i = mUnknownHeaders.begin();
 1259|  11.8M|           i != mUnknownHeaders.end(); i++)
  ------------------
  |  Branch (1259:12): [True: 11.7M, False: 10.7k]
  ------------------
 1260|  11.7M|      {
 1261|  11.7M|         if (i->first.size() == (unsigned int)headerLen &&
  ------------------
  |  Branch (1261:14): [True: 1.46M, False: 10.3M]
  ------------------
 1262|  11.7M|             strncasecmp(i->first.data(), headerName, headerLen) == 0)
  ------------------
  |  Branch (1262:14): [True: 306k, False: 1.15M]
  ------------------
 1263|   306k|         {
 1264|       |            // add to end of list
 1265|   306k|            if (len)
  ------------------
  |  Branch (1265:17): [True: 158k, False: 148k]
  ------------------
 1266|   158k|            {
 1267|   158k|               i->second->push_back(start, len, false);
 1268|   158k|            }
 1269|   306k|            return;
 1270|   306k|         }
 1271|  11.7M|      }
 1272|       |
 1273|       |      // didn't find it, add an entry
 1274|  10.7k|      HeaderFieldValueList *hfvs = getEmptyHfvl();
 1275|  10.7k|      if (len)
  ------------------
  |  Branch (1275:11): [True: 2.95k, False: 7.80k]
  ------------------
 1276|  2.95k|      {
 1277|  2.95k|         hfvs->push_back(start, len, false);
 1278|  2.95k|      }
 1279|  10.7k|      mUnknownHeaders.push_back(pair<Data, HeaderFieldValueList*>(Data(headerName, headerLen),
 1280|  10.7k|                                                                  hfvs));
 1281|  10.7k|   }
 1282|  3.98M|}
_ZN5resip10SipMessage12ensureHeaderENS_7Headers4TypeE:
 1360|    199|{
 1361|    199|   HeaderFieldValueList* hfvl=0;
 1362|    199|   if(mHeaderIndices[type]!=0)
  ------------------
  |  Branch (1362:7): [True: 199, False: 0]
  ------------------
 1363|    199|   {
 1364|    199|      if(mHeaderIndices[type]<0)
  ------------------
  |  Branch (1364:10): [True: 0, False: 199]
  ------------------
 1365|      0|      {
 1366|       |         // Accessing a previously removed header type; there is already an 
 1367|       |         // empty HeaderFieldValueList in mHeaders for this type, all we 
 1368|       |         // need to do is flip the sign to re-enable it.
 1369|      0|         mHeaderIndices[type] *= -1;
 1370|      0|         hfvl = mHeaders[mHeaderIndices[type]];
 1371|      0|         hfvl->push_back(0,0,false);
 1372|      0|      }
 1373|    199|      hfvl = mHeaders[mHeaderIndices[type]];
 1374|    199|   }
 1375|      0|   else
 1376|      0|   {
 1377|       |      // create the list with a new component
 1378|      0|      mHeaders.push_back(getEmptyHfvl());
 1379|      0|      hfvl=mHeaders.back();
 1380|      0|      mHeaderIndices[type]=(short)mHeaders.size()-1;
 1381|      0|      mHeaders.back()->push_back(0,0,false);
 1382|      0|   }
 1383|       |
 1384|    199|   return hfvl;
 1385|    199|}
_ZNK5resip10SipMessage6existsERKNS_10HeaderBaseE:
 1400|  49.0k|{
 1401|  49.0k|   return mHeaderIndices[headerType.getTypeNum()] > 0;
 1402|  49.0k|};
_ZNK5resip10SipMessage6headerERKNS_15H_ContentLengthE:
 1428|  91.3k|SipMessage::header(const H_##_header& headerType) const                                                 \
 1429|  91.3k|{                                                                                                       \
 1430|  91.3k|   HeaderFieldValueList* hfvs = ensureHeader(headerType.getTypeNum());                           \
 1431|  91.3k|   if (hfvs->getParserContainer() == 0)                                                                 \
  ------------------
  |  Branch (1431:8): [True: 209, False: 91.1k]
  ------------------
 1432|  91.3k|   {                                                                                                    \
 1433|    209|      SipMessage* nc_this(const_cast<SipMessage*>(this)); \
 1434|    209|      hfvs->setParserContainer(nc_this->makeParserContainer<H_##_header::Type>(hfvs, headerType.getTypeNum()));  \
 1435|    209|   }                                                                                                    \
 1436|  91.3k|   return static_cast<ParserContainer<H_##_header::Type>*>(hfvs->getParserContainer())->front();       \
 1437|  91.3k|}                                                                                                       \
_ZN5resip10SipMessage6headerERKNS_15H_ContentLengthE:
 1440|    199|SipMessage::header(const H_##_header& headerType)                                                       \
 1441|    199|{                                                                                                       \
 1442|    199|   HeaderFieldValueList* hfvs = ensureHeader(headerType.getTypeNum());                           \
 1443|    199|   if (hfvs->getParserContainer() == 0)                                                                 \
  ------------------
  |  Branch (1443:8): [True: 0, False: 199]
  ------------------
 1444|    199|   {                                                                                                    \
 1445|      0|      hfvs->setParserContainer(makeParserContainer<H_##_header::Type>(hfvs, headerType.getTypeNum()));  \
 1446|      0|   }                                                                                                    \
 1447|    199|   return static_cast<ParserContainer<H_##_header::Type>*>(hfvs->getParserContainer())->front();       \
 1448|    199|}

_ZNK5resip10SipMessage12const_headerERKNS_15H_ContentLengthE:
  336|  91.3k|      {\
  337|  91.3k|         return header(headerType);\
  338|  91.3k|      }
_ZNK5resip10SipMessage12ensureHeaderENS_7Headers4TypeE:
  613|  91.3k|      {
  614|  91.3k|         if(mHeaderIndices[type]>0)
  ------------------
  |  Branch (614:13): [True: 91.3k, False: 0]
  ------------------
  615|  91.3k|         {
  616|  91.3k|            return mHeaders[mHeaderIndices[type]];
  617|  91.3k|         }
  618|      0|         throwHeaderMissing(type);
  619|      0|         return 0;
  620|  91.3k|      }
_ZN5resip10SipMessage12getEmptyHfvlEv:
  625|  21.6k|      {
  626|  21.6k|         void* ptr(mPool.allocate(sizeof(HeaderFieldValueList)));
  627|  21.6k|         return new (ptr) HeaderFieldValueList(mPool);
  628|  21.6k|      }
_ZN5resip10SipMessage8freeHfvlEPNS_20HeaderFieldValueListE:
  637|  21.6k|      {
  638|  21.6k|         if(hfvl)
  ------------------
  |  Branch (638:13): [True: 21.6k, False: 0]
  ------------------
  639|  21.6k|         {
  640|  21.6k|            hfvl->~HeaderFieldValueList();
  641|  21.6k|            mPool.deallocate(hfvl);
  642|  21.6k|         }
  643|  21.6k|      }
_ZN5resip10SipMessage19makeParserContainerINS_14UInt32CategoryEEEPNS_15ParserContainerIT_EEPNS_20HeaderFieldValueListENS_7Headers4TypeE:
  655|    209|      {
  656|    209|         void* ptr(mPool.allocate(sizeof(ParserContainer<T>)));
  657|    209|         return new (ptr) ParserContainer<T>(hfvs, type, mPool);
  658|    209|      }

_ZN5resip9StartLineC2ERKNS_16HeaderFieldValueE:
   14|  6.23k|      {}
_ZN5resip9StartLineC2EPKci:
   17|    520|      {}

_ZN5resip10StatusLineC2EPKci:
   39|      7|{}

_ZN5resip18TrickleIceContents4initEv:
   23|      4|{
   24|      4|   static ContentsFactory<TrickleIceContents> factory;
   25|      4|   (void)factory;
   26|      4|   return true;
   27|      4|}
_ZN5resip18TrickleIceContents13getStaticTypeEv:
  127|      2|{
  128|      2|   static Mime type("application", "trickle-ice-sdpfrag");
  129|      2|   return type;
  130|      2|}

_ZN5resip5TupleC2Ev:
   40|  35.0k|{
   41|  35.0k|   sockaddr_in* addr4 = (sockaddr_in*)&mSockaddr;
   42|  35.0k|   memset(addr4, 0, sizeof(sockaddr_in));
   43|  35.0k|   mSockaddr.sa_family = AF_INET;
   44|  35.0k|}
_ZN5resip5TupleC2ERKNS_4DataEiNS_13TransportTypeES3_S3_:
  123|     12|{
  124|     12|   if (DnsUtil::isIpV4Address(printableAddr))
  ------------------
  |  Branch (124:8): [True: 10, False: 2]
  ------------------
  125|     10|   {
  126|     10|      memset(&m_anonv4, 0, sizeof(m_anonv4));
  127|       |      
  128|     10|      DnsUtil::inet_pton( printableAddr, m_anonv4.sin_addr);
  129|     10|      m_anonv4.sin_family = AF_INET;
  130|     10|      m_anonv4.sin_port = htons(port);
  131|     10|   }
  132|      2|#ifdef USE_IPV6
  133|      2|   else if(DnsUtil::isIpV6Address(printableAddr))
  ------------------
  |  Branch (133:12): [True: 2, False: 0]
  ------------------
  134|      2|   {
  135|      2|      memset(&m_anonv6, 0, sizeof(m_anonv6));
  136|      2|      DnsUtil::inet_pton( printableAddr, m_anonv6.sin6_addr);
  137|      2|      m_anonv6.sin6_family = AF_INET6;
  138|      2|      m_anonv6.sin6_port = htons(port);
  139|      2|   }
  140|      0|#endif
  141|      0|   else
  142|      0|   {
  143|       |      // avoid asserts since Tuples created via printableAddr can be created from items 
  144|       |      // received from the wire or from configuration settings.  Just create an IPV4 inaddr_any tuple.
  145|       |      // assert(0);  
  146|      0|      memset(&m_anonv4, 0, sizeof(m_anonv4));
  147|      0|      m_anonv4.sin_family = AF_INET;
  148|      0|      m_anonv4.sin_port = htons(port);
  149|      0|      m_anonv4.sin_addr.s_addr = htonl(INADDR_ANY);
  150|      0|   }
  151|     12|}

_ZN5resip5Tuple7setTypeENS_13TransportTypeE:
  121|  6.23k|      void setType(TransportType type) { mTransportType = type; }

_ZN5resip14UInt32CategoryC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   30|    209|{}
_ZNK5resip14UInt32Category5valueEv:
   69|  45.6k|{
   70|  45.6k|   checkParsed(); 
   71|  45.6k|   return mValue;
   72|  45.6k|}
_ZN5resip14UInt32Category5valueEv:
   83|    199|{
   84|    199|   checkParsed(); 
   85|    199|   return mValue;
   86|    199|}
_ZN5resip14UInt32Category5parseERNS_11ParseBufferE:
   97|    209|{
   98|    209|   const char* start = pb.skipWhitespace();
   99|    209|   mValue = pb.uInt32();
  100|    209|   pb.skipToChar('(');
  101|    209|   if (!pb.eof())
  ------------------
  |  Branch (101:8): [True: 5, False: 204]
  ------------------
  102|      5|   {
  103|      5|      start = pb.skipChar();
  104|      5|      pb.skipToEndQuote(')');
  105|      5|      pb.data(mComment, start);
  106|      5|      pb.skipChar();
  107|      5|   }
  108|    204|   else
  109|    204|   {
  110|    204|      pb.reset(start);
  111|    204|      start = pb.skipNonWhitespace();
  112|    204|   }
  113|       |   
  114|    209|   parseParameters(pb);
  115|    209|}
_ZN5resip14UInt32Category11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
  135|  2.09k|{
  136|  2.09k|   if(type > ParameterTypes::UNKNOWN && type < ParameterTypes::MAX_PARAMETER && ParameterFactories[type])
  ------------------
  |  Branch (136:7): [True: 2.09k, False: 0]
  |  Branch (136:41): [True: 2.09k, False: 0]
  |  Branch (136:81): [True: 0, False: 2.09k]
  ------------------
  137|      0|   {
  138|      0|      return ParameterFactories[type](type, pb, terminators, pool);
  139|      0|   }
  140|  2.09k|   return 0;
  141|  2.09k|}

_ZN5resip15UInt32ParameterC2ENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEE:
   18|  10.5k|{
   19|  10.5k|   pb.skipWhitespace();
   20|  10.5k|   pb.skipChar(Symbols::EQUALS[0]);
   21|  10.5k|   pb.skipWhitespace();
   22|       |   
   23|       |   // hack to allow expires to have an 2543 style quoted Date
   24|  10.5k|   if (type == ParameterTypes::expires)
  ------------------
  |  Branch (24:8): [True: 6.63k, False: 3.95k]
  ------------------
   25|  6.63k|   {
   26|  6.63k|      pb.assertNotEof();
   27|  6.63k|      try
   28|  6.63k|      {
   29|  6.63k|         mValue = pb.uInt32();
   30|  6.63k|      }
   31|  6.63k|      catch (ParseException&)
   32|  6.63k|      {
   33|  6.42k|         mValue = 3600;
   34|  6.42k|         pb.skipToOneOf(ParseBuffer::ParamTerm);
   35|  6.42k|      }
   36|       |      
   37|  6.63k|   }
   38|  3.95k|   else
   39|  3.95k|   {
   40|  3.95k|      mValue = pb.uInt32();
   41|  3.95k|   }
   42|  10.5k|}
_ZNK5resip15UInt32Parameter5cloneEv:
   51|  2.82k|{
   52|  2.82k|   return new UInt32Parameter(*this);
   53|  2.82k|}

_ZN5resip15UInt32Parameter6decodeENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
   34|  10.5k|      {
   35|  10.5k|         return new (pool) UInt32Parameter(type, pb, terminators);
   36|  10.5k|      }

_ZN5resip16UnknownParameterC2EPKcjRNS_11ParseBufferERKNSt3__16bitsetILm256EEE:
   21|  11.6M|{
   22|  11.6M|   pb.skipWhitespace();
   23|  11.6M|   if (!pb.eof() && *pb.position() == Symbols::EQUALS[0])
  ------------------
  |  Branch (23:8): [True: 11.6M, False: 2.61k]
  |  Branch (23:8): [True: 63.0k, False: 11.5M]
  |  Branch (23:21): [True: 63.0k, False: 11.5M]
  ------------------
   24|  63.0k|   {
   25|  63.0k|      pb.skipChar(Symbols::EQUALS[0]);
   26|  63.0k|      pb.skipWhitespace();
   27|  63.0k|      if (*pb.position() == Symbols::DOUBLE_QUOTE[0])
  ------------------
  |  Branch (27:11): [True: 6.18k, False: 56.8k]
  ------------------
   28|  6.18k|      {
   29|  6.18k|         setQuoted(true);
   30|  6.18k|         pb.skipChar();
   31|  6.18k|         const char* pos = pb.position();
   32|  6.18k|         pb.skipToEndQuote();
   33|  6.18k|         pb.data(mValue, pos);
   34|  6.18k|         pb.skipChar();
   35|  6.18k|      }
   36|  56.8k|      else
   37|  56.8k|      {
   38|  56.8k|         const char* pos = pb.position();
   39|  56.8k|         pb.skipToOneOf(terminators);
   40|  56.8k|         pb.data(mValue, pos);
   41|  56.8k|      }
   42|       |      
   43|  63.0k|   }
   44|  11.5M|   else
   45|  11.5M|   {
   46|       |      // must be a terminator -- exists style
   47|  11.5M|   }
   48|  11.6M|}
_ZNK5resip16UnknownParameter7getNameEv:
   59|   743k|{
   60|   743k|   return mName;
   61|   743k|}
_ZNK5resip16UnknownParameter5cloneEv:
   66|  2.32M|{
   67|  2.32M|   return new UnknownParameter(*this);
   68|  2.32M|}
_ZNK5resip16UnknownParameter6encodeERNSt3__113basic_ostreamIcNS1_11char_traitsIcEEEE:
   72|   743k|{
   73|   743k|   if (mIsQuoted)
  ------------------
  |  Branch (73:8): [True: 1.16k, False: 742k]
  ------------------
   74|  1.16k|   {
   75|  1.16k|      return stream << getName() << Symbols::EQUALS 
   76|  1.16k|                    << Symbols::DOUBLE_QUOTE << mValue << Symbols::DOUBLE_QUOTE;
   77|  1.16k|   }
   78|   742k|   else if (!mValue.empty())
  ------------------
  |  Branch (78:13): [True: 4.16k, False: 738k]
  ------------------
   79|  4.16k|   {
   80|  4.16k|      return stream << getName() << Symbols::EQUALS << mValue;
   81|  4.16k|   }
   82|   738k|   else
   83|   738k|   {
   84|   738k|      return stream << getName();
   85|   738k|   }
   86|   743k|}

_ZN5resip16UnknownParameter9setQuotedEb:
   37|  6.18k|      void setQuoted(bool b) { mIsQuoted = b; }; // this parameter will be enclosed in quotes e.g. "foo"

_ZN5resip3UriC2EPNS_8PoolBaseE:
   41|  25.4k|{
   42|  25.4k|}
_ZN5resip3UriC2ERKNS_16HeaderFieldValueENS_7Headers4TypeEPNS_8PoolBaseE:
   48|  6.23k|{}
_ZN5resip3UriD2Ev:
   84|  31.7k|{}
_ZN5resip3UriaSERKS0_:
  347|  3.06k|{
  348|  3.06k|   if (this != &rhs)
  ------------------
  |  Branch (348:8): [True: 3.06k, False: 0]
  ------------------
  349|  3.06k|   {
  350|  3.06k|      ParserCategory::operator=(rhs);
  351|  3.06k|      mScheme = rhs.mScheme;
  352|  3.06k|      mHost = rhs.mHost;
  353|  3.06k|      mPath = rhs.mPath;
  354|  3.06k|      mHostCanonicalized = rhs.mHostCanonicalized;
  355|  3.06k|      mCanonicalHost = rhs.mCanonicalHost;
  356|  3.06k|      mUser = rhs.mUser;
  357|  3.06k|      mUserParameters = rhs.mUserParameters;
  358|  3.06k|      mPort = rhs.mPort;
  359|  3.06k|      mPassword = rhs.mPassword;
  360|  3.06k|      mNetNs = rhs.mNetNs;
  361|  3.06k|      if (rhs.mEmbeddedHeaders.get() != 0)
  ------------------
  |  Branch (361:11): [True: 0, False: 3.06k]
  ------------------
  362|      0|      {
  363|      0|         mEmbeddedHeaders.reset(new SipMessage(*rhs.mEmbeddedHeaders));
  364|      0|      }
  365|  3.06k|      else if(rhs.mEmbeddedHeadersText.get() != 0)
  ------------------
  |  Branch (365:15): [True: 1.01k, False: 2.05k]
  ------------------
  366|  1.01k|      {
  367|  1.01k|         if(!mEmbeddedHeadersText.get())
  ------------------
  |  Branch (367:13): [True: 1.01k, False: 0]
  ------------------
  368|  1.01k|         {
  369|  1.01k|            mEmbeddedHeadersText.reset(new Data(*rhs.mEmbeddedHeadersText));
  370|  1.01k|         }
  371|      0|         else
  372|      0|         {
  373|       |            // !bwc! Data::operator= is smart enough to handle this safely.
  374|      0|            *mEmbeddedHeadersText = *rhs.mEmbeddedHeadersText;
  375|      0|         }
  376|  1.01k|      }
  377|  3.06k|   }
  378|  3.06k|   return *this;
  379|  3.06k|}
_ZN5resip3Uri5parseERNS_11ParseBufferE:
  997|  18.5k|{
  998|  18.5k|   pb.skipWhitespace();
  999|  18.5k|   const char* start = pb.position();
 1000|       |
 1001|       |   // Relative URLs (typically HTTP) start with a slash.  These
 1002|       |   // are seen when parsing the WebSocket handshake.
 1003|  18.5k|   if (*pb.position() == Symbols::SLASH[0])
  ------------------
  |  Branch (1003:8): [True: 782, False: 17.7k]
  ------------------
 1004|    782|   {
 1005|    782|      mScheme.clear();
 1006|    782|      pb.skipToOneOf("?;", ParseBuffer::Whitespace);
 1007|    782|      pb.data(mPath, start);
 1008|    782|      if (!pb.eof() && !ParseBuffer::oneOf(*pb.position(), ParseBuffer::Whitespace))
  ------------------
  |  Branch (1008:11): [True: 734, False: 48]
  |  Branch (1008:11): [True: 712, False: 70]
  |  Branch (1008:24): [True: 712, False: 22]
  ------------------
 1009|    712|      {
 1010|    712|         parseParameters(pb);
 1011|    712|      }
 1012|    782|      return;
 1013|    782|   }
 1014|       |
 1015|  17.7k|   pb.skipToOneOf(":@");
 1016|       |
 1017|  17.7k|   pb.assertNotEof();
 1018|       |
 1019|  17.7k|   pb.data(mScheme, start);
 1020|  17.7k|   pb.skipChar(Symbols::COLON[0]);
 1021|  17.7k|   mScheme.schemeLowercase();
 1022|       |
 1023|  17.7k|   if (mScheme==Symbols::Tel)
  ------------------
  |  Branch (1023:8): [True: 47, False: 17.6k]
  ------------------
 1024|     47|   {
 1025|     47|      const char* anchor = pb.position();
 1026|     47|      static std::bitset<256> delimiter=Data::toBitset("\r\n\t ;>");
 1027|     47|      pb.skipToOneOf(delimiter);
 1028|     47|      pb.data(mUser, anchor);
 1029|     47|      if (!pb.eof() && *pb.position() == Symbols::SEMI_COLON[0])
  ------------------
  |  Branch (1029:11): [True: 25, False: 22]
  |  Branch (1029:11): [True: 13, False: 34]
  |  Branch (1029:24): [True: 13, False: 12]
  ------------------
 1030|     13|      {
 1031|     13|         anchor = pb.skipChar();
 1032|     13|         pb.skipToOneOf(ParseBuffer::Whitespace, Symbols::RA_QUOTE);
 1033|     13|         pb.data(mUserParameters, anchor);
 1034|     13|      }
 1035|     47|      return;
 1036|     47|   }
 1037|       |   
 1038|  17.6k|   start = pb.position();
 1039|  17.6k|   static std::bitset<256> userPortOrPasswordDelim(Data::toBitset("@:\""));
 1040|       |   // stop at double-quote to prevent matching an '@' in a quoted string param. 
 1041|  17.6k|   pb.skipToOneOf(userPortOrPasswordDelim);
 1042|  17.6k|   if (!pb.eof())
  ------------------
  |  Branch (1042:8): [True: 3.98k, False: 13.7k]
  ------------------
 1043|  3.98k|   {
 1044|  3.98k|      const char* atSign=0;
 1045|  3.98k|      if (*pb.position() == Symbols::COLON[0])
  ------------------
  |  Branch (1045:11): [True: 3.26k, False: 726]
  ------------------
 1046|  3.26k|      {
 1047|       |         // Either a password, or a port
 1048|  3.26k|         const char* afterColon = pb.skipChar();
 1049|  3.26k|         pb.skipToOneOf("@\"");
 1050|  3.26k|         if(!pb.eof() && *pb.position() == Symbols::AT_SIGN[0])
  ------------------
  |  Branch (1050:13): [True: 556, False: 2.70k]
  |  Branch (1050:13): [True: 241, False: 3.01k]
  |  Branch (1050:26): [True: 241, False: 315]
  ------------------
 1051|    241|         {
 1052|    241|            atSign=pb.position();
 1053|       |            // password
 1054|    241|#ifdef HANDLE_CHARACTER_ESCAPING
 1055|    241|            pb.dataUnescaped(mPassword, afterColon);
 1056|       |#else
 1057|       |            pb.data(mPassword, afterColon);
 1058|       |#endif
 1059|    241|            pb.reset(afterColon-1);
 1060|    241|         }
 1061|  3.01k|         else
 1062|  3.01k|         {
 1063|       |            // port. No user part.
 1064|  3.01k|            pb.reset(start);
 1065|  3.01k|         }
 1066|  3.26k|      }
 1067|    726|      else if(*pb.position() == Symbols::AT_SIGN[0])
  ------------------
  |  Branch (1067:15): [True: 344, False: 382]
  ------------------
 1068|    344|      {
 1069|    344|         atSign=pb.position();
 1070|    344|      }
 1071|    382|      else
 1072|    382|      {
 1073|       |         // Only a hostpart
 1074|    382|         pb.reset(start);
 1075|    382|      }
 1076|       |
 1077|  3.98k|      if(atSign)
  ------------------
  |  Branch (1077:10): [True: 518, False: 3.46k]
  ------------------
 1078|    518|      {
 1079|    518|#ifdef HANDLE_CHARACTER_ESCAPING
 1080|    518|         pb.dataUnescaped(mUser, start);
 1081|       |#else
 1082|       |         pb.data(mUser, start);
 1083|       |#endif
 1084|    518|         pb.reset(atSign);
 1085|    518|         start = pb.skipChar();
 1086|    518|      }
 1087|  3.98k|   }
 1088|  13.7k|   else
 1089|  13.7k|   {
 1090|  13.7k|      pb.reset(start);
 1091|  13.7k|   }
 1092|       |
 1093|  17.6k|   if (pb.eof())
  ------------------
  |  Branch (1093:8): [True: 413, False: 17.2k]
  ------------------
 1094|    413|   {
 1095|    413|      return;
 1096|    413|   }
 1097|       |
 1098|  17.2k|   mHostCanonicalized=false;
 1099|  17.2k|   static std::bitset<256> hostDelimiter(Data::toBitset("\r\n\t :;?>"));
 1100|  17.2k|   if (*start == '[')
  ------------------
  |  Branch (1100:8): [True: 118, False: 17.1k]
  ------------------
 1101|    118|   {
 1102|    118|      start = pb.skipChar();
 1103|    118|      pb.skipToChar(']');
 1104|    118|      pb.data(mHost, start);
 1105|    118|      mCanonicalHost = DnsUtil::canonicalizeIpV6Address(mHost);
 1106|    118|      if (mCanonicalHost.empty())
  ------------------
  |  Branch (1106:11): [True: 30, False: 88]
  ------------------
 1107|     30|      {
 1108|       |         // .bwc. So the V6 addy is garbage.
 1109|     30|         throw ParseException("Unparsable V6 address (note, this might"
 1110|     30|                                    " be unparsable because IPV6 support is not"
 1111|     30|                                    " enabled)","Uri",__FILE__,
 1112|     30|                                       __LINE__);
 1113|     30|      }
 1114|     88|      mHostCanonicalized = true;
 1115|     88|      pb.skipChar();
 1116|     88|      pb.skipToOneOf(hostDelimiter);
 1117|     88|   }
 1118|  17.1k|   else
 1119|  17.1k|   {
 1120|  17.1k|      pb.skipToOneOf(hostDelimiter);
 1121|  17.1k|      pb.data(mHost, start);
 1122|  17.1k|   }
 1123|       |
 1124|  17.2k|   if (!pb.eof() && *pb.position() == ':')
  ------------------
  |  Branch (1124:8): [True: 6.19k, False: 11.0k]
  |  Branch (1124:8): [True: 471, False: 16.7k]
  |  Branch (1124:21): [True: 471, False: 5.72k]
  ------------------
 1125|    471|   {
 1126|    471|      start = pb.skipChar();
 1127|    471|      mPort = pb.uInt32();
 1128|    471|   }
 1129|  16.7k|   else
 1130|  16.7k|   {
 1131|  16.7k|      mPort = 0;
 1132|  16.7k|   }
 1133|       |
 1134|  17.2k|   parseParameters(pb);
 1135|       |
 1136|  17.2k|   if (!pb.eof() && *pb.position() == Symbols::QUESTION[0])
  ------------------
  |  Branch (1136:8): [True: 4.41k, False: 12.8k]
  |  Branch (1136:8): [True: 2.41k, False: 14.8k]
  |  Branch (1136:21): [True: 2.41k, False: 2.00k]
  ------------------
 1137|  2.41k|   {
 1138|  2.41k|      const char* anchor = pb.position();
 1139|  2.41k|      pb.skipToOneOf(">;", ParseBuffer::Whitespace);
 1140|  2.41k|      if(!mEmbeddedHeadersText.get()) mEmbeddedHeadersText.reset(new Data);
  ------------------
  |  Branch (1140:10): [True: 2.41k, False: 0]
  ------------------
 1141|  2.41k|      pb.data(*mEmbeddedHeadersText, anchor);
 1142|  2.41k|   }
 1143|  17.2k|}
_ZN5resip3Uri8embeddedEv:
 1235|  6.23k|{
 1236|  6.23k|   checkParsed();
 1237|  6.23k|   if (mEmbeddedHeaders.get() == 0)
  ------------------
  |  Branch (1237:8): [True: 3.36k, False: 2.87k]
  ------------------
 1238|  3.36k|   {
 1239|  3.36k|      this->mEmbeddedHeaders.reset(new SipMessage());
 1240|  3.36k|      if (mEmbeddedHeadersText.get() && !mEmbeddedHeadersText->empty())
  ------------------
  |  Branch (1240:11): [True: 1.16k, False: 2.19k]
  |  Branch (1240:41): [True: 1.16k, False: 0]
  ------------------
 1241|  1.16k|      {
 1242|  1.16k|         ParseBuffer pb(mEmbeddedHeadersText->data(), mEmbeddedHeadersText->size());
 1243|  1.16k|         this->parseEmbeddedHeaders(pb);
 1244|  1.16k|      }
 1245|  3.36k|   }
 1246|       |
 1247|  6.23k|   return *mEmbeddedHeaders;
 1248|  6.23k|}
_ZN5resip3Uri20parseEmbeddedHeadersERNS_11ParseBufferE:
 1260|  1.16k|{
 1261|  1.16k|   DebugLog(<< "Uri::parseEmbeddedHeaders");
  ------------------
  |  |  128|  1.16k|#define DebugLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  1.16k|   do                                                                   \
  |  |  |  |  152|  1.16k|   {                                                                    \
  |  |  |  |  153|  1.16k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 1.16k]
  |  |  |  |  ------------------
  |  |  |  |  154|  1.16k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  1.16k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  1.16k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Debug, args_)
  ------------------
 1262|  1.16k|   if (!pb.eof() && *pb.position() == Symbols::QUESTION[0])
  ------------------
  |  Branch (1262:8): [True: 1.16k, False: 0]
  |  Branch (1262:8): [True: 1.16k, False: 0]
  |  Branch (1262:21): [True: 1.16k, False: 0]
  ------------------
 1263|  1.16k|   {
 1264|  1.16k|      pb.skipChar();
 1265|  1.16k|   }
 1266|       |
 1267|  1.16k|   const char* anchor;
 1268|  1.16k|   Data headerName;
 1269|  1.16k|   Data headerContents;
 1270|       |
 1271|  1.16k|   bool first = true;
 1272|  2.51M|   while (!pb.eof())
  ------------------
  |  Branch (1272:11): [True: 2.50M, False: 1.16k]
  ------------------
 1273|  2.50M|   {
 1274|  2.50M|      if (first)
  ------------------
  |  Branch (1274:11): [True: 1.15k, False: 2.50M]
  ------------------
 1275|  1.15k|      {
 1276|  1.15k|         first = false;
 1277|  1.15k|      }
 1278|  2.50M|      else
 1279|  2.50M|      {
 1280|  2.50M|         pb.skipChar(Symbols::AMPERSAND[0]);
 1281|  2.50M|      }
 1282|       |
 1283|  2.50M|      anchor = pb.position();
 1284|  2.50M|      pb.skipToChar(Symbols::EQUALS[0]);
 1285|  2.50M|      pb.data(headerName, anchor);
 1286|       |      // .dlb. in theory, need to decode header name
 1287|       |
 1288|  2.50M|      anchor = pb.skipChar(Symbols::EQUALS[0]);
 1289|  2.50M|      pb.skipToChar(Symbols::AMPERSAND[0]);
 1290|  2.50M|      pb.data(headerContents, anchor);
 1291|       |
 1292|  2.50M|      unsigned int len;
 1293|  2.50M|      char* decodedContents = Embedded::decode(headerContents, len);
 1294|  2.50M|      mEmbeddedHeaders->addBuffer(decodedContents);
 1295|       |
 1296|  2.50M|      if (isEqualNoCase(bodyData, headerName))
  ------------------
  |  Branch (1296:11): [True: 48.9k, False: 2.46M]
  ------------------
 1297|  48.9k|      {
 1298|  48.9k|         mEmbeddedHeaders->setBody(decodedContents, len); 
 1299|  48.9k|      }
 1300|  2.46M|      else
 1301|  2.46M|      {
 1302|  2.46M|         DebugLog(<< "Uri::parseEmbeddedHeaders(" << headerName << ", " << Data(decodedContents, len) << ")");
  ------------------
  |  |  128|  2.46M|#define DebugLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  2.46M|   do                                                                   \
  |  |  |  |  152|  2.46M|   {                                                                    \
  |  |  |  |  153|  2.46M|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 2.46M]
  |  |  |  |  ------------------
  |  |  |  |  154|  2.46M|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  2.46M|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  2.46M|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Debug, args_)
  ------------------
 1303|  2.46M|         mEmbeddedHeaders->addHeader(Headers::getType(headerName.data(), (int)headerName.size()),
 1304|  2.46M|                                     headerName.data(), (int)headerName.size(),
 1305|  2.46M|                                     decodedContents, len);
 1306|  2.46M|      }
 1307|  2.50M|   }
 1308|  1.16k|}
_ZN5resip3Uri11createParamENS_14ParameterTypes4TypeERNS_11ParseBufferERKNSt3__16bitsetILm256EEEPNS_8PoolBaseE:
 1340|  2.08M|{
 1341|  2.08M|   if(type > ParameterTypes::UNKNOWN && type < ParameterTypes::MAX_PARAMETER && ParameterFactories[type])
  ------------------
  |  Branch (1341:7): [True: 2.08M, False: 0]
  |  Branch (1341:41): [True: 2.08M, False: 0]
  |  Branch (1341:81): [True: 2.06M, False: 15.3k]
  ------------------
 1342|  2.06M|   {
 1343|  2.06M|      return ParameterFactories[type](type, pb, terminators, pool);
 1344|  2.06M|   }
 1345|  15.3k|   return 0;
 1346|  2.08M|}
Uri.cxx:_ZL13initAllTablesv:
   26|      2|{
   27|      2|   Uri::getUserEncodingTable();
   28|      2|   Uri::getPasswordEncodingTable();
   29|      2|   Uri::getLocalNumberTable();
   30|      2|   Uri::getGlobalNumberTable();
   31|      2|   return true;
   32|      2|}

_ZN5resip3Uri20getUserEncodingTableEv:
  192|      2|      {
  193|      2|         static EncodingTable userEncodingTable(
  194|      2|               Data::toBitset("abcdefghijklmnopqrstuvwxyz"
  195|      2|                              "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  196|      2|                              "0123456789"
  197|      2|                              "-_.!~*\\()&=+$,;?/").flip());
  198|      2|         return userEncodingTable;
  199|      2|      }
_ZN5resip3Uri24getPasswordEncodingTableEv:
  202|      2|      {
  203|      2|         static EncodingTable passwordEncodingTable(
  204|      2|               Data::toBitset("abcdefghijklmnopqrstuvwxyz"
  205|      2|                              "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  206|      2|                              "0123456789"
  207|      2|                              "-_.!~*\\()&=+$").flip());
  208|      2|         return passwordEncodingTable;
  209|      2|      }
_ZN5resip3Uri19getLocalNumberTableEv:
  212|      2|      {
  213|       |         // ?bwc? 'p' and 'w' are allowed in 2806, but have been removed in 
  214|       |         // 3966. Should we support these or not?
  215|      2|         static EncodingTable localNumberTable(
  216|      2|               Data::toBitset("*#-.()0123456789ABCDEFpw"));
  217|      2|         return localNumberTable;
  218|      2|      }
_ZN5resip3Uri20getGlobalNumberTableEv:
  221|      2|      {
  222|      2|         static EncodingTable globalNumberTable(
  223|      2|               Data::toBitset("-.()0123456789"));
  224|      2|         return globalNumberTable;
  225|      2|      }

_ZN5resip12X509Contents4initEv:
   22|      6|{
   23|      6|   static ContentsFactory<X509Contents> factory;
   24|      6|   (void)factory;
   25|      6|   return true;
   26|      6|}
_ZN5resip12X509ContentsC2Ev:
   31|      2|{
   32|      2|}
_ZN5resip12X509Contents13getStaticTypeEv:
   81|      4|{
   82|      4|   static Mime type("application", "pkix-cert");
   83|      4|   return type;
   84|      4|}

_ZN5resip13DayOfWeekHash11in_word_setEPKcm:
   88|    675|{
   89|    675|  enum
   90|    675|    {
   91|    675|      TOTAL_KEYWORDS = 7,
   92|    675|      MIN_WORD_LENGTH = 3,
   93|    675|      MAX_WORD_LENGTH = 3,
   94|    675|      MIN_HASH_VALUE = 0,
   95|    675|      MAX_HASH_VALUE = 15
   96|    675|    };
   97|       |
   98|    675|  static const struct days wordlist[] =
   99|    675|    {
  100|    675|#line 17 "DayOfWeekHash.gperf"
  101|    675|      {"Sat", Sat},
  102|    675|#line 12 "DayOfWeekHash.gperf"
  103|    675|      {"Mon", Mon},
  104|    675|#line 11 "DayOfWeekHash.gperf"
  105|    675|      {"Sun", Sun},
  106|    675|#line 14 "DayOfWeekHash.gperf"
  107|    675|      {"Wed", Wed},
  108|    675|#line 15 "DayOfWeekHash.gperf"
  109|    675|      {"Thu", Thu},
  110|    675|#line 16 "DayOfWeekHash.gperf"
  111|    675|      {"Fri", Fri},
  112|    675|#line 13 "DayOfWeekHash.gperf"
  113|    675|      {"Tue", Tue}
  114|    675|    };
  115|       |
  116|    675|  static const signed char lookup[] =
  117|    675|    {
  118|    675|       0, -1,  1, -1, -1,  2, -1,  3, -1, -1,  4, -1,  5, -1,
  119|    675|      -1,  6
  120|    675|    };
  121|       |
  122|    675|  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  ------------------
  |  Branch (122:7): [True: 103, False: 572]
  |  Branch (122:33): [True: 34, False: 69]
  ------------------
  123|     34|    {
  124|     34|      unsigned int key = hash (str, len);
  125|       |
  126|     34|      if (key <= MAX_HASH_VALUE)
  ------------------
  |  Branch (126:11): [True: 20, False: 14]
  ------------------
  127|     20|        {
  128|     20|          int index = lookup[key];
  129|       |
  130|     20|          if (index >= 0)
  ------------------
  |  Branch (130:15): [True: 19, False: 1]
  ------------------
  131|     19|            {
  132|     19|              const char *s = wordlist[index].name;
  133|       |
  134|     19|              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
  ------------------
  |  Branch (134:19): [True: 11, False: 8]
  |  Branch (134:33): [True: 1, False: 10]
  |  Branch (134:71): [True: 1, False: 0]
  ------------------
  135|      1|                return &wordlist[index];
  136|     19|            }
  137|     20|        }
  138|     34|    }
  139|    674|  return 0;
  140|    675|}
_ZN5resip13DayOfWeekHash4hashEPKcm:
   53|     34|{
   54|     34|  static const unsigned char asso_values[] =
   55|     34|    {
   56|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   57|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   58|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   59|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   60|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   61|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   62|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   63|     34|       2, 16, 16, 16, 16, 16, 16,  2, 16, 16,
   64|     34|      16, 16, 16,  0,  5, 16, 16,  2, 16, 16,
   65|     34|      16, 16, 16, 16, 16, 16, 16,  0, 16, 16,
   66|     34|       0,  5, 16, 16,  0,  5, 16, 16, 16, 16,
   67|     34|       0,  0, 16, 16,  5, 16,  0,  5, 16, 16,
   68|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   69|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   70|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   71|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   72|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   73|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   74|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   75|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   76|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   77|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   78|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   79|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   80|     34|      16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
   81|     34|      16, 16, 16, 16, 16, 16
   82|     34|    };
   83|     34|  return asso_values[static_cast<unsigned char>(str[2])] + asso_values[static_cast<unsigned char>(str[1])] + asso_values[static_cast<unsigned char>(str[0])];
   84|     34|}

_ZN5resip10HeaderHash11in_word_setEPKcm:
  226|  2.46M|{
  227|  2.46M|  enum
  228|  2.46M|    {
  229|  2.46M|      TOTAL_KEYWORDS = 113,
  230|  2.46M|      MIN_WORD_LENGTH = 1,
  231|  2.46M|      MAX_WORD_LENGTH = 29,
  232|  2.46M|      MIN_HASH_VALUE = 1,
  233|  2.46M|      MAX_HASH_VALUE = 438
  234|  2.46M|    };
  235|       |
  236|  2.46M|  static const struct headers wordlist[] =
  237|  2.46M|    {
  238|  2.46M|#line 20 "HeaderHash.gperf"
  239|  2.46M|      {"t", Headers::To},
  240|  2.46M|#line 26 "HeaderHash.gperf"
  241|  2.46M|      {"o", Headers::Event},
  242|  2.46M|#line 36 "HeaderHash.gperf"
  243|  2.46M|      {"to", Headers::To},
  244|  2.46M|#line 18 "HeaderHash.gperf"
  245|  2.46M|      {"s", Headers::Subject},
  246|  2.46M|#line 22 "HeaderHash.gperf"
  247|  2.46M|      {"r", Headers::ReferTo},
  248|  2.46M|#line 99 "HeaderHash.gperf"
  249|  2.46M|      {"path", Headers::Path},
  250|  2.46M|#line 14 "HeaderHash.gperf"
  251|  2.46M|      {"e", Headers::ContentEncoding},
  252|  2.46M|#line 52 "HeaderHash.gperf"
  253|  2.46M|      {"date", Headers::Date},
  254|  2.46M|#line 16 "HeaderHash.gperf"
  255|  2.46M|      {"c", Headers::ContentType},
  256|  2.46M|#line 12 "HeaderHash.gperf"
  257|  2.46M|      {"i", Headers::CallID},
  258|  2.46M|#line 64 "HeaderHash.gperf"
  259|  2.46M|      {"host", Headers::Host},
  260|  2.46M|#line 25 "HeaderHash.gperf"
  261|  2.46M|      {"y", Headers::Identity},
  262|  2.46M|#line 13 "HeaderHash.gperf"
  263|  2.46M|      {"m", Headers::Contact},
  264|  2.46M|#line 34 "HeaderHash.gperf"
  265|  2.46M|      {"route", Headers::Route},
  266|  2.46M|#line 17 "HeaderHash.gperf"
  267|  2.46M|      {"f", Headers::From},
  268|  2.46M|#line 15 "HeaderHash.gperf"
  269|  2.46M|      {"l", Headers::ContentLength},
  270|  2.46M|#line 93 "HeaderHash.gperf"
  271|  2.46M|      {"join", Headers::Join},
  272|  2.46M|#line 103 "HeaderHash.gperf"
  273|  2.46M|      {"reason", Headers::Reason},
  274|  2.46M|#line 83 "HeaderHash.gperf"
  275|  2.46M|      {"warning", Headers::Warning},
  276|  2.46M|#line 77 "HeaderHash.gperf"
  277|  2.46M|      {"supported", Headers::Supported},
  278|  2.46M|#line 81 "HeaderHash.gperf"
  279|  2.46M|      {"unsupported", Headers::Unsupported},
  280|  2.46M|#line 29 "HeaderHash.gperf"
  281|  2.46M|      {"contact", Headers::Contact},
  282|  2.46M|#line 23 "HeaderHash.gperf"
  283|  2.46M|      {"b", Headers::ReferredBy},
  284|  2.46M|#line 90 "HeaderHash.gperf"
  285|  2.46M|      {"hide", Headers::UNKNOWN},
  286|  2.46M|#line 21 "HeaderHash.gperf"
  287|  2.46M|      {"v", Headers::Via},
  288|  2.46M|#line 75 "HeaderHash.gperf"
  289|  2.46M|      {"sip-etag", Headers::SIPETag},
  290|  2.46M|#line 38 "HeaderHash.gperf"
  291|  2.46M|      {"accept", Headers::Accept},
  292|  2.46M|#line 110 "HeaderHash.gperf"
  293|  2.46M|      {"rseq", Headers::RSeq},
  294|  2.46M|#line 82 "HeaderHash.gperf"
  295|  2.46M|      {"user-agent", Headers::UserAgent},
  296|  2.46M|#line 19 "HeaderHash.gperf"
  297|  2.46M|      {"k", Headers::Supported},
  298|  2.46M|#line 27 "HeaderHash.gperf"
  299|  2.46M|      {"cseq", Headers::CSeq},
  300|  2.46M|#line 47 "HeaderHash.gperf"
  301|  2.46M|      {"content-id", Headers::ContentId},
  302|  2.46M|#line 63 "HeaderHash.gperf"
  303|  2.46M|      {"origin", Headers::Origin},
  304|  2.46M|#line 57 "HeaderHash.gperf"
  305|  2.46M|      {"organization", Headers::Organization},
  306|  2.46M|#line 37 "HeaderHash.gperf"
  307|  2.46M|      {"via", Headers::Via},
  308|  2.46M|#line 116 "HeaderHash.gperf"
  309|  2.46M|      {"min-se", Headers::MinSE},
  310|  2.46M|#line 124 "HeaderHash.gperf"
  311|  2.46M|      {"user-to-user", Headers::UserToUser},
  312|  2.46M|#line 32 "HeaderHash.gperf"
  313|  2.46M|      {"from", Headers::From},
  314|  2.46M|#line 43 "HeaderHash.gperf"
  315|  2.46M|      {"allow", Headers::Allow},
  316|  2.46M|#line 24 "HeaderHash.gperf"
  317|  2.46M|      {"x", Headers::SessionExpires},
  318|  2.46M|#line 86 "HeaderHash.gperf"
  319|  2.46M|      {"authorization", Headers::Authorization},
  320|  2.46M|#line 89 "HeaderHash.gperf"
  321|  2.46M|      {"event", Headers::Event},
  322|  2.46M|#line 50 "HeaderHash.gperf"
  323|  2.46M|      {"content-type", Headers::ContentType},
  324|  2.46M|#line 79 "HeaderHash.gperf"
  325|  2.46M|      {"answer-mode", Headers::AnswerMode},
  326|  2.46M|#line 91 "HeaderHash.gperf"
  327|  2.46M|      {"identity", Headers::Identity},
  328|  2.46M|#line 102 "HeaderHash.gperf"
  329|  2.46M|      {"rack", Headers::RAck},
  330|  2.46M|#line 84 "HeaderHash.gperf"
  331|  2.46M|      {"www-authenticate",Headers::WWWAuthenticate},
  332|  2.46M|#line 104 "HeaderHash.gperf"
  333|  2.46M|      {"refer-to",Headers::ReferTo},
  334|  2.46M|#line 69 "HeaderHash.gperf"
  335|  2.46M|      {"record-route", Headers::RecordRoute},
  336|  2.46M|#line 70 "HeaderHash.gperf"
  337|  2.46M|      {"reply-to", Headers::ReplyTo},
  338|  2.46M|#line 71 "HeaderHash.gperf"
  339|  2.46M|      {"require", Headers::Require},
  340|  2.46M|#line 65 "HeaderHash.gperf"
  341|  2.46M|      {"priority", Headers::Priority},
  342|  2.46M|#line 39 "HeaderHash.gperf"
  343|  2.46M|      {"accept-contact", Headers::AcceptContact},
  344|  2.46M|#line 88 "HeaderHash.gperf"
  345|  2.46M|      {"encryption", Headers::UNKNOWN},
  346|  2.46M|#line 35 "HeaderHash.gperf"
  347|  2.46M|      {"subject", Headers::Subject},
  348|  2.46M|#line 100 "HeaderHash.gperf"
  349|  2.46M|      {"target-dialog", Headers::TargetDialog},
  350|  2.46M|#line 49 "HeaderHash.gperf"
  351|  2.46M|      {"content-language", Headers::ContentLanguage},
  352|  2.46M|#line 106 "HeaderHash.gperf"
  353|  2.46M|      {"replaces",Headers::Replaces},
  354|  2.46M|#line 78 "HeaderHash.gperf"
  355|  2.46M|      {"timestamp", Headers::Timestamp},
  356|  2.46M|#line 48 "HeaderHash.gperf"
  357|  2.46M|      {"content-encoding", Headers::ContentEncoding},
  358|  2.46M|#line 30 "HeaderHash.gperf"
  359|  2.46M|      {"content-length", Headers::ContentLength},
  360|  2.46M|#line 74 "HeaderHash.gperf"
  361|  2.46M|      {"server", Headers::Server},
  362|  2.46M|#line 53 "HeaderHash.gperf"
  363|  2.46M|      {"error-info", Headers::ErrorInfo},
  364|  2.46M|#line 95 "HeaderHash.gperf"
  365|  2.46M|      {"p-associated-uri", Headers::PAssociatedUri},
  366|  2.46M|#line 28 "HeaderHash.gperf"
  367|  2.46M|      {"call-id", Headers::CallID},
  368|  2.46M|#line 107 "HeaderHash.gperf"
  369|  2.46M|      {"reject-contact", Headers::RejectContact},
  370|  2.46M|#line 41 "HeaderHash.gperf"
  371|  2.46M|      {"accept-language", Headers::AcceptLanguage},
  372|  2.46M|#line 54 "HeaderHash.gperf"
  373|  2.46M|      {"in-reply-to", Headers::InReplyTo},
  374|  2.46M|#line 40 "HeaderHash.gperf"
  375|  2.46M|      {"accept-encoding", Headers::AcceptEncoding},
  376|  2.46M|#line 62 "HeaderHash.gperf"
  377|  2.46M|      {"cookie", Headers::Cookie},
  378|  2.46M|#line 42 "HeaderHash.gperf"
  379|  2.46M|      {"alert-info",Headers::AlertInfo},
  380|  2.46M|#line 72 "HeaderHash.gperf"
  381|  2.46M|      {"retry-after", Headers::RetryAfter},
  382|  2.46M|#line 101 "HeaderHash.gperf"
  383|  2.46M|      {"privacy", Headers::Privacy},
  384|  2.46M|#line 46 "HeaderHash.gperf"
  385|  2.46M|      {"content-disposition", Headers::ContentDisposition},
  386|  2.46M|#line 118 "HeaderHash.gperf"
  387|  2.46M|      {"remote-party-id", Headers::RemotePartyId},
  388|  2.46M|#line 117 "HeaderHash.gperf"
  389|  2.46M|      {"refer-sub", Headers::ReferSub},
  390|  2.46M|#line 119 "HeaderHash.gperf"
  391|  2.46M|      {"history-info", Headers::HistoryInfo},
  392|  2.46M|#line 76 "HeaderHash.gperf"
  393|  2.46M|      {"sip-if-match", Headers::SIPIfMatch},
  394|  2.46M|#line 92 "HeaderHash.gperf"
  395|  2.46M|      {"identity-info", Headers::IdentityInfo},
  396|  2.46M|#line 94 "HeaderHash.gperf"
  397|  2.46M|      {"p-asserted-identity", Headers::PAssertedIdentity},
  398|  2.46M|#line 97 "HeaderHash.gperf"
  399|  2.46M|      {"p-media-authorization", Headers::PMediaAuthorization},
  400|  2.46M|#line 31 "HeaderHash.gperf"
  401|  2.46M|      {"expires", Headers::Expires},
  402|  2.46M|#line 45 "HeaderHash.gperf"
  403|  2.46M|      {"call-info", Headers::CallInfo},
  404|  2.46M|#line 73 "HeaderHash.gperf"
  405|  2.46M|      {"flow-timer", Headers::FlowTimer},
  406|  2.46M|#line 44 "HeaderHash.gperf"
  407|  2.46M|      {"authentication-info", Headers::AuthenticationInfo},
  408|  2.46M|#line 109 "HeaderHash.gperf"
  409|  2.46M|      {"response-key", Headers::UNKNOWN},
  410|  2.46M|#line 108 "HeaderHash.gperf"
  411|  2.46M|      {"request-disposition", Headers::RequestDisposition},
  412|  2.46M|#line 87 "HeaderHash.gperf"
  413|  2.46M|      {"allow-events", Headers::AllowEvents},
  414|  2.46M|#line 85 "HeaderHash.gperf"
  415|  2.46M|      {"subscription-state",Headers::SubscriptionState},
  416|  2.46M|#line 80 "HeaderHash.gperf"
  417|  2.46M|      {"priv-answer-mode", Headers::PrivAnswerMode},
  418|  2.46M|#line 96 "HeaderHash.gperf"
  419|  2.46M|      {"p-called-party-id", Headers::PCalledPartyId},
  420|  2.46M|#line 114 "HeaderHash.gperf"
  421|  2.46M|      {"service-route", Headers::ServiceRoute},
  422|  2.46M|#line 121 "HeaderHash.gperf"
  423|  2.46M|      {"p-charging-vector", Headers::PChargingVector},
  424|  2.46M|#line 33 "HeaderHash.gperf"
  425|  2.46M|      {"max-forwards", Headers::MaxForwards},
  426|  2.46M|#line 105 "HeaderHash.gperf"
  427|  2.46M|      {"referred-by",Headers::ReferredBy},
  428|  2.46M|#line 51 "HeaderHash.gperf"
  429|  2.46M|      {"content-transfer-encoding", Headers::ContentTransferEncoding},
  430|  2.46M|#line 111 "HeaderHash.gperf"
  431|  2.46M|      {"security-client", Headers::SecurityClient},
  432|  2.46M|#line 67 "HeaderHash.gperf"
  433|  2.46M|      {"proxy-authorization", Headers::ProxyAuthorization},
  434|  2.46M|#line 98 "HeaderHash.gperf"
  435|  2.46M|      {"p-preferred-identity", Headers::PPreferredIdentity},
  436|  2.46M|#line 55 "HeaderHash.gperf"
  437|  2.46M|      {"min-expires", Headers::MinExpires},
  438|  2.46M|#line 56 "HeaderHash.gperf"
  439|  2.46M|      {"mime-version", Headers::MIMEVersion},
  440|  2.46M|#line 66 "HeaderHash.gperf"
  441|  2.46M|      {"proxy-authenticate", Headers::ProxyAuthenticate},
  442|  2.46M|#line 112 "HeaderHash.gperf"
  443|  2.46M|      {"security-server", Headers::SecurityServer},
  444|  2.46M|#line 115 "HeaderHash.gperf"
  445|  2.46M|      {"session-expires", Headers::SessionExpires},
  446|  2.46M|#line 68 "HeaderHash.gperf"
  447|  2.46M|      {"proxy-require", Headers::ProxyRequire},
  448|  2.46M|#line 120 "HeaderHash.gperf"
  449|  2.46M|      {"p-access-network-info", Headers::PAccessNetworkInfo},
  450|  2.46M|#line 122 "HeaderHash.gperf"
  451|  2.46M|      {"p-charging-function-addresses", Headers::PChargingFunctionAddresses},
  452|  2.46M|#line 123 "HeaderHash.gperf"
  453|  2.46M|      {"p-visited-network-id", Headers::PVisitedNetworkID},
  454|  2.46M|#line 113 "HeaderHash.gperf"
  455|  2.46M|      {"security-verify", Headers::SecurityVerify},
  456|  2.46M|#line 61 "HeaderHash.gperf"
  457|  2.46M|      {"sec-websocket-accept", Headers::SecWebSocketAccept},
  458|  2.46M|#line 58 "HeaderHash.gperf"
  459|  2.46M|      {"sec-websocket-key", Headers::SecWebSocketKey},
  460|  2.46M|#line 60 "HeaderHash.gperf"
  461|  2.46M|      {"sec-websocket-key2", Headers::SecWebSocketKey2},
  462|  2.46M|#line 59 "HeaderHash.gperf"
  463|  2.46M|      {"sec-websocket-key1", Headers::SecWebSocketKey1}
  464|  2.46M|    };
  465|       |
  466|  2.46M|  static const signed char lookup[] =
  467|  2.46M|    {
  468|  2.46M|       -1,   0,  -1,  -1,  -1,  -1,   1,   2,  -1,  -1,
  469|  2.46M|       -1,   3,  -1,  -1,  -1,  -1,   4,  -1,  -1,   5,
  470|  2.46M|       -1,   6,  -1,  -1,   7,  -1,   8,  -1,  -1,  -1,
  471|  2.46M|       -1,   9,  -1,  -1,  10,  -1,  11,  -1,  -1,  -1,
  472|  2.46M|       -1,  12,  -1,  -1,  -1,  13,  14,  -1,  -1,  -1,
  473|  2.46M|       -1,  15,  -1,  -1,  16,  -1,  17,  18,  -1,  19,
  474|  2.46M|       -1,  20,  21,  -1,  -1,  -1,  22,  -1,  -1,  23,
  475|  2.46M|       -1,  24,  -1,  25,  -1,  -1,  26,  -1,  -1,  27,
  476|  2.46M|       28,  29,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  30,
  477|  2.46M|       31,  32,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  478|  2.46M|       -1,  -1,  33,  34,  -1,  -1,  35,  36,  -1,  37,
  479|  2.46M|       38,  39,  -1,  40,  -1,  41,  -1,  42,  -1,  -1,
  480|  2.46M|       -1,  43,  -1,  44,  45,  -1,  46,  -1,  47,  -1,
  481|  2.46M|       -1,  -1,  48,  49,  -1,  -1,  -1,  50,  51,  52,
  482|  2.46M|       53,  -1,  54,  55,  -1,  -1,  56,  -1,  57,  58,
  483|  2.46M|       -1,  59,  -1,  -1,  60,  -1,  61,  -1,  -1,  -1,
  484|  2.46M|       62,  63,  64,  -1,  65,  66,  67,  -1,  -1,  -1,
  485|  2.46M|       68,  69,  -1,  -1,  -1,  70,  71,  -1,  -1,  -1,
  486|  2.46M|       -1,  -1,  72,  -1,  -1,  -1,  -1,  -1,  -1,  73,
  487|  2.46M|       -1,  -1,  -1,  -1,  -1,  74,  -1,  -1,  -1,  75,
  488|  2.46M|       -1,  -1,  76,  -1,  -1,  -1,  -1,  77,  78,  79,
  489|  2.46M|       -1,  80,  81,  -1,  82,  83,  -1,  -1,  -1,  -1,
  490|  2.46M|       -1,  -1,  -1,  -1,  84,  -1,  -1,  85,  -1,  -1,
  491|  2.46M|       -1,  -1,  -1,  -1,  86,  -1,  -1,  87,  88,  -1,
  492|  2.46M|       -1,  89,  90,  91,  -1,  -1,  -1,  92,  -1,  -1,
  493|  2.46M|       -1,  -1,  93,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  494|  2.46M|       -1,  94,  -1,  -1,  -1,  95,  -1,  -1,  -1,  -1,
  495|  2.46M|       -1,  -1,  -1,  -1,  -1,  96,  -1,  -1,  -1,  -1,
  496|  2.46M|       -1,  -1,  -1,  -1,  97,  98,  99,  -1,  -1,  -1,
  497|  2.46M|       -1,  -1, 100, 101,  -1,  -1,  -1,  -1,  -1,  -1,
  498|  2.46M|      102,  -1,  -1,  -1,  -1, 103,  -1,  -1, 104,  -1,
  499|  2.46M|       -1, 105,  -1,  -1, 106,  -1,  -1,  -1,  -1,  -1,
  500|  2.46M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  501|  2.46M|      107,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  502|  2.46M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  503|  2.46M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  504|  2.46M|       -1,  -1,  -1,  -1,  -1, 108,  -1,  -1,  -1,  -1,
  505|  2.46M|      109,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  506|  2.46M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  507|  2.46M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  508|  2.46M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  509|  2.46M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  510|  2.46M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  511|  2.46M|       -1,  -1, 110, 111,  -1,  -1,  -1,  -1, 112
  512|  2.46M|    };
  513|       |
  514|  2.46M|  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  ------------------
  |  Branch (514:7): [True: 2.45M, False: 5.68k]
  |  Branch (514:33): [True: 2.38M, False: 76.9k]
  ------------------
  515|  2.38M|    {
  516|  2.38M|      unsigned int key = hash (str, len);
  517|       |
  518|  2.38M|      if (key <= MAX_HASH_VALUE)
  ------------------
  |  Branch (518:11): [True: 2.19M, False: 189k]
  ------------------
  519|  2.19M|        {
  520|  2.19M|          int index = lookup[key];
  521|       |
  522|  2.19M|          if (index >= 0)
  ------------------
  |  Branch (522:15): [True: 2.17M, False: 19.8k]
  ------------------
  523|  2.17M|            {
  524|  2.17M|              const char *s = wordlist[index].name;
  525|       |
  526|  2.17M|              if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0')
  ------------------
  |  Branch (526:19): [True: 2.14M, False: 24.5k]
  |  Branch (526:77): [True: 2.14M, False: 520]
  |  Branch (526:114): [True: 2.14M, False: 0]
  ------------------
  527|  2.14M|                return &wordlist[index];
  528|  2.17M|            }
  529|  2.19M|        }
  530|  2.38M|    }
  531|   317k|  return 0;
  532|  2.46M|}
_ZN5resip10HeaderHash4hashEPKcm:
   99|  2.38M|{
  100|  2.38M|  static const unsigned short asso_values[] =
  101|  2.38M|    {
  102|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  103|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  104|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  105|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  106|  2.38M|      439, 439, 439, 439, 439,   0, 439, 439, 439,   5,
  107|  2.38M|        0, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  108|  2.38M|      439, 439, 439, 439, 439,   0,  65,  25,   0,  20,
  109|  2.38M|       45,   5,  15,  30,  15,  80,  50,  40,   0,   5,
  110|  2.38M|        0,  30,  15,  10,   0,   0,  70,   0, 110,  35,
  111|  2.38M|        0, 439, 439, 439, 439, 439, 439,   0,  65,  25,
  112|  2.38M|        0,  20,  45,   5,  15,  30,  15,  80,  50,  40,
  113|  2.38M|        0,   5,   0,  30,  15,  10,   0,   0,  70,   0,
  114|  2.38M|      110,  35,   0, 439, 439, 439, 439, 439, 439, 439,
  115|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  116|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  117|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  118|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  119|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  120|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  121|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  122|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  123|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  124|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  125|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  126|  2.38M|      439, 439, 439, 439, 439, 439, 439, 439, 439, 439,
  127|  2.38M|      439, 439, 439, 439, 439, 439
  128|  2.38M|    };
  129|  2.38M|  unsigned int hval = len;
  130|       |
  131|  2.38M|  switch (hval)
  132|  2.38M|    {
  133|    411|      default:
  ------------------
  |  Branch (133:7): [True: 411, False: 2.38M]
  ------------------
  134|    411|        hval += asso_values[static_cast<unsigned char>(str[28])];
  135|       |      /*FALLTHROUGH*/
  136|    656|      case 28:
  ------------------
  |  Branch (136:7): [True: 245, False: 2.38M]
  ------------------
  137|    656|        hval += asso_values[static_cast<unsigned char>(str[27])];
  138|       |      /*FALLTHROUGH*/
  139|    962|      case 27:
  ------------------
  |  Branch (139:7): [True: 306, False: 2.38M]
  ------------------
  140|    962|        hval += asso_values[static_cast<unsigned char>(str[26])];
  141|       |      /*FALLTHROUGH*/
  142|  2.00k|      case 26:
  ------------------
  |  Branch (142:7): [True: 1.03k, False: 2.37M]
  ------------------
  143|  2.00k|        hval += asso_values[static_cast<unsigned char>(str[25])];
  144|       |      /*FALLTHROUGH*/
  145|  2.28k|      case 25:
  ------------------
  |  Branch (145:7): [True: 285, False: 2.38M]
  ------------------
  146|  2.28k|        hval += asso_values[static_cast<unsigned char>(str[24])];
  147|       |      /*FALLTHROUGH*/
  148|  2.77k|      case 24:
  ------------------
  |  Branch (148:7): [True: 490, False: 2.38M]
  ------------------
  149|  2.77k|        hval += asso_values[static_cast<unsigned char>(str[23])];
  150|       |      /*FALLTHROUGH*/
  151|  3.69k|      case 23:
  ------------------
  |  Branch (151:7): [True: 917, False: 2.37M]
  ------------------
  152|  3.69k|        hval += asso_values[static_cast<unsigned char>(str[22])];
  153|       |      /*FALLTHROUGH*/
  154|  4.36k|      case 22:
  ------------------
  |  Branch (154:7): [True: 675, False: 2.37M]
  ------------------
  155|  4.36k|        hval += asso_values[static_cast<unsigned char>(str[21])];
  156|       |      /*FALLTHROUGH*/
  157|  4.95k|      case 21:
  ------------------
  |  Branch (157:7): [True: 589, False: 2.37M]
  ------------------
  158|  4.95k|        hval += asso_values[static_cast<unsigned char>(str[20])];
  159|       |      /*FALLTHROUGH*/
  160|  5.56k|      case 20:
  ------------------
  |  Branch (160:7): [True: 606, False: 2.37M]
  ------------------
  161|  5.56k|        hval += asso_values[static_cast<unsigned char>(str[19])];
  162|       |      /*FALLTHROUGH*/
  163|  6.91k|      case 19:
  ------------------
  |  Branch (163:7): [True: 1.34k, False: 2.37M]
  ------------------
  164|  6.91k|        hval += asso_values[static_cast<unsigned char>(str[18])];
  165|       |      /*FALLTHROUGH*/
  166|  7.57k|      case 18:
  ------------------
  |  Branch (166:7): [True: 660, False: 2.37M]
  ------------------
  167|  7.57k|        hval += asso_values[static_cast<unsigned char>(str[17])];
  168|       |      /*FALLTHROUGH*/
  169|  8.26k|      case 17:
  ------------------
  |  Branch (169:7): [True: 697, False: 2.37M]
  ------------------
  170|  8.26k|        hval += asso_values[static_cast<unsigned char>(str[16])];
  171|       |      /*FALLTHROUGH*/
  172|  9.91k|      case 16:
  ------------------
  |  Branch (172:7): [True: 1.64k, False: 2.37M]
  ------------------
  173|  9.91k|        hval += asso_values[static_cast<unsigned char>(str[15])];
  174|       |      /*FALLTHROUGH*/
  175|  12.6k|      case 15:
  ------------------
  |  Branch (175:7): [True: 2.72k, False: 2.37M]
  ------------------
  176|  12.6k|        hval += asso_values[static_cast<unsigned char>(str[14])];
  177|       |      /*FALLTHROUGH*/
  178|  13.5k|      case 14:
  ------------------
  |  Branch (178:7): [True: 948, False: 2.37M]
  ------------------
  179|  13.5k|        hval += asso_values[static_cast<unsigned char>(str[13])];
  180|       |      /*FALLTHROUGH*/
  181|  18.3k|      case 13:
  ------------------
  |  Branch (181:7): [True: 4.78k, False: 2.37M]
  ------------------
  182|  18.3k|        hval += asso_values[static_cast<unsigned char>(str[12])];
  183|       |      /*FALLTHROUGH*/
  184|  20.6k|      case 12:
  ------------------
  |  Branch (184:7): [True: 2.29k, False: 2.37M]
  ------------------
  185|  20.6k|        hval += asso_values[static_cast<unsigned char>(str[11])];
  186|       |      /*FALLTHROUGH*/
  187|  22.8k|      case 11:
  ------------------
  |  Branch (187:7): [True: 2.15k, False: 2.37M]
  ------------------
  188|  22.8k|        hval += asso_values[static_cast<unsigned char>(str[10])];
  189|       |      /*FALLTHROUGH*/
  190|  26.0k|      case 10:
  ------------------
  |  Branch (190:7): [True: 3.20k, False: 2.37M]
  ------------------
  191|  26.0k|        hval += asso_values[static_cast<unsigned char>(str[9])];
  192|       |      /*FALLTHROUGH*/
  193|  32.0k|      case 9:
  ------------------
  |  Branch (193:7): [True: 6.04k, False: 2.37M]
  ------------------
  194|  32.0k|        hval += asso_values[static_cast<unsigned char>(str[8])];
  195|       |      /*FALLTHROUGH*/
  196|  46.2k|      case 8:
  ------------------
  |  Branch (196:7): [True: 14.1k, False: 2.36M]
  ------------------
  197|  46.2k|        hval += asso_values[static_cast<unsigned char>(str[7])];
  198|       |      /*FALLTHROUGH*/
  199|  55.0k|      case 7:
  ------------------
  |  Branch (199:7): [True: 8.81k, False: 2.37M]
  ------------------
  200|  55.0k|        hval += asso_values[static_cast<unsigned char>(str[6])];
  201|       |      /*FALLTHROUGH*/
  202|  66.3k|      case 6:
  ------------------
  |  Branch (202:7): [True: 11.3k, False: 2.36M]
  ------------------
  203|  66.3k|        hval += asso_values[static_cast<unsigned char>(str[5])];
  204|       |      /*FALLTHROUGH*/
  205|  87.5k|      case 5:
  ------------------
  |  Branch (205:7): [True: 21.1k, False: 2.35M]
  ------------------
  206|  87.5k|        hval += asso_values[static_cast<unsigned char>(str[4])];
  207|       |      /*FALLTHROUGH*/
  208|   122k|      case 4:
  ------------------
  |  Branch (208:7): [True: 35.2k, False: 2.34M]
  ------------------
  209|   122k|        hval += asso_values[static_cast<unsigned char>(str[3])];
  210|       |      /*FALLTHROUGH*/
  211|   146k|      case 3:
  ------------------
  |  Branch (211:7): [True: 23.6k, False: 2.35M]
  ------------------
  212|   146k|        hval += asso_values[static_cast<unsigned char>(str[2])];
  213|       |      /*FALLTHROUGH*/
  214|   184k|      case 2:
  ------------------
  |  Branch (214:7): [True: 38.5k, False: 2.34M]
  ------------------
  215|   184k|        hval += asso_values[static_cast<unsigned char>(str[1])];
  216|       |      /*FALLTHROUGH*/
  217|  2.38M|      case 1:
  ------------------
  |  Branch (217:7): [True: 2.19M, False: 184k]
  ------------------
  218|  2.38M|        hval += asso_values[static_cast<unsigned char>(str[0])];
  219|  2.38M|        break;
  220|  2.38M|    }
  221|  2.38M|  return hval;
  222|  2.38M|}
HeaderHash.cxx:_ZN5resipL18gperf_case_strncmpEPKcS1_m:
   73|  2.14M|{
   74|  4.29M|  for (; n > 0;)
  ------------------
  |  Branch (74:10): [True: 2.14M, False: 2.14M]
  ------------------
   75|  2.14M|    {
   76|  2.14M|      unsigned char c1 = gperf_downcase[(unsigned char)*s1++];
   77|  2.14M|      unsigned char c2 = gperf_downcase[(unsigned char)*s2++];
   78|  2.14M|      if (c1 != 0 && c1 == c2)
  ------------------
  |  Branch (78:11): [True: 2.14M, False: 0]
  |  Branch (78:22): [True: 2.14M, False: 520]
  ------------------
   79|  2.14M|        {
   80|  2.14M|          n--;
   81|  2.14M|          continue;
   82|  2.14M|        }
   83|    520|      return (int)c1 - (int)c2;
   84|  2.14M|    }
   85|  2.14M|  return 0;
   86|  2.14M|}

_ZN5resip10MethodHash11in_word_setEPKcm:
  120|  6.55k|{
  121|  6.55k|  enum
  122|  6.55k|    {
  123|  6.55k|      TOTAL_KEYWORDS = 16,
  124|  6.55k|      MIN_WORD_LENGTH = 3,
  125|  6.55k|      MAX_WORD_LENGTH = 9,
  126|  6.55k|      MIN_HASH_VALUE = 4,
  127|  6.55k|      MAX_HASH_VALUE = 34
  128|  6.55k|    };
  129|       |
  130|  6.55k|  static const struct methods wordlist[] =
  131|  6.55k|    {
  132|  6.55k|#line 24 "MethodHash.gperf"
  133|  6.55k|      {"INFO", INFO},
  134|  6.55k|#line 19 "MethodHash.gperf"
  135|  6.55k|      {"REFER", REFER},
  136|  6.55k|#line 14 "MethodHash.gperf"
  137|  6.55k|      {"INVITE", INVITE},
  138|  6.55k|#line 16 "MethodHash.gperf"
  139|  6.55k|      {"OPTIONS", OPTIONS},
  140|  6.55k|#line 22 "MethodHash.gperf"
  141|  6.55k|      {"RESPONSE", RESPONSE},
  142|  6.55k|#line 15 "MethodHash.gperf"
  143|  6.55k|      {"NOTIFY", NOTIFY},
  144|  6.55k|#line 25 "MethodHash.gperf"
  145|  6.55k|      {"SERVICE", SERVICE},
  146|  6.55k|#line 11 "MethodHash.gperf"
  147|  6.55k|      {"ACK", ACK},
  148|  6.55k|#line 17 "MethodHash.gperf"
  149|  6.55k|      {"PRACK", PRACK},
  150|  6.55k|#line 26 "MethodHash.gperf"
  151|  6.55k|      {"UPDATE", UPDATE},
  152|  6.55k|#line 18 "MethodHash.gperf"
  153|  6.55k|      {"PUBLISH", PUBLISH},
  154|  6.55k|#line 12 "MethodHash.gperf"
  155|  6.55k|      {"BYE", BYE},
  156|  6.55k|#line 13 "MethodHash.gperf"
  157|  6.55k|      {"CANCEL", CANCEL},
  158|  6.55k|#line 20 "MethodHash.gperf"
  159|  6.55k|      {"REGISTER", REGISTER},
  160|  6.55k|#line 23 "MethodHash.gperf"
  161|  6.55k|      {"MESSAGE", MESSAGE},
  162|  6.55k|#line 21 "MethodHash.gperf"
  163|  6.55k|      {"SUBSCRIBE", SUBSCRIBE}
  164|  6.55k|    };
  165|       |
  166|  6.55k|  static const signed char lookup[] =
  167|  6.55k|    {
  168|  6.55k|      -1, -1, -1, -1,  0,  1,  2,  3,  4, -1, -1,  5,  6,  7,
  169|  6.55k|      -1,  8,  9, 10, 11, -1, -1, 12, -1, 13, -1, -1, -1, 14,
  170|  6.55k|      -1, -1, -1, -1, -1, -1, 15
  171|  6.55k|    };
  172|       |
  173|  6.55k|  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  ------------------
  |  Branch (173:7): [True: 4.85k, False: 1.69k]
  |  Branch (173:33): [True: 3.84k, False: 1.00k]
  ------------------
  174|  3.84k|    {
  175|  3.84k|      unsigned int key = hash (str, len);
  176|       |
  177|  3.84k|      if (key <= MAX_HASH_VALUE)
  ------------------
  |  Branch (177:11): [True: 53, False: 3.79k]
  ------------------
  178|     53|        {
  179|     53|          int index = lookup[key];
  180|       |
  181|     53|          if (index >= 0)
  ------------------
  |  Branch (181:15): [True: 49, False: 4]
  ------------------
  182|     49|            {
  183|     49|              const char *s = wordlist[index].name;
  184|       |
  185|     49|              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
  ------------------
  |  Branch (185:19): [True: 37, False: 12]
  |  Branch (185:33): [True: 1, False: 36]
  |  Branch (185:71): [True: 1, False: 0]
  ------------------
  186|      1|                return &wordlist[index];
  187|     49|            }
  188|     53|        }
  189|  3.84k|    }
  190|  6.54k|  return 0;
  191|  6.55k|}
_ZN5resip10MethodHash4hashEPKcm:
   53|  3.84k|{
   54|  3.84k|  static const unsigned char asso_values[] =
   55|  3.84k|    {
   56|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   57|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   58|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   59|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   60|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   61|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   62|  3.84k|      35, 35, 35, 35, 35,  5, 10,  5,  5,  0,
   63|  3.84k|       0, 15,  0,  0, 35,  0,  0,  0,  0,  0,
   64|  3.84k|       0, 35,  0,  0,  0,  0,  0, 35, 35,  5,
   65|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   66|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   67|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   68|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   69|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   70|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   71|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   72|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   73|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   74|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   75|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   76|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   77|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   78|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   79|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   80|  3.84k|      35, 35, 35, 35, 35, 35, 35, 35, 35, 35,
   81|  3.84k|      35, 35, 35, 35, 35, 35
   82|  3.84k|    };
   83|  3.84k|  unsigned int hval = len;
   84|       |
   85|  3.84k|  switch (hval)
   86|  3.84k|    {
   87|    109|      default:
  ------------------
  |  Branch (87:7): [True: 109, False: 3.74k]
  ------------------
   88|    109|        hval += asso_values[static_cast<unsigned char>(str[8])];
   89|       |      /*FALLTHROUGH*/
   90|    415|      case 8:
  ------------------
  |  Branch (90:7): [True: 306, False: 3.54k]
  ------------------
   91|    415|        hval += asso_values[static_cast<unsigned char>(str[7])];
   92|       |      /*FALLTHROUGH*/
   93|    563|      case 7:
  ------------------
  |  Branch (93:7): [True: 148, False: 3.70k]
  ------------------
   94|    563|        hval += asso_values[static_cast<unsigned char>(str[6])];
   95|       |      /*FALLTHROUGH*/
   96|    752|      case 6:
  ------------------
  |  Branch (96:7): [True: 189, False: 3.66k]
  ------------------
   97|    752|        hval += asso_values[static_cast<unsigned char>(str[5])];
   98|       |      /*FALLTHROUGH*/
   99|    934|      case 5:
  ------------------
  |  Branch (99:7): [True: 182, False: 3.66k]
  ------------------
  100|    934|        hval += asso_values[static_cast<unsigned char>(str[4])];
  101|       |      /*FALLTHROUGH*/
  102|  1.23k|      case 4:
  ------------------
  |  Branch (102:7): [True: 301, False: 3.54k]
  ------------------
  103|  1.23k|        hval += asso_values[static_cast<unsigned char>(str[3])];
  104|       |      /*FALLTHROUGH*/
  105|  3.84k|      case 3:
  ------------------
  |  Branch (105:7): [True: 2.61k, False: 1.23k]
  ------------------
  106|  3.84k|        hval += asso_values[static_cast<unsigned char>(str[2])];
  107|       |      /*FALLTHROUGH*/
  108|  3.84k|      case 2:
  ------------------
  |  Branch (108:7): [True: 0, False: 3.84k]
  ------------------
  109|  3.84k|        hval += asso_values[static_cast<unsigned char>(str[1])];
  110|       |      /*FALLTHROUGH*/
  111|  3.84k|      case 1:
  ------------------
  |  Branch (111:7): [True: 0, False: 3.84k]
  ------------------
  112|  3.84k|        hval += asso_values[static_cast<unsigned char>(str[0])];
  113|  3.84k|        break;
  114|  3.84k|    }
  115|  3.84k|  return hval;
  116|  3.84k|}

_ZN5resip9MonthHash11in_word_setEPKcm:
   88|    320|{
   89|    320|  enum
   90|    320|    {
   91|    320|      TOTAL_KEYWORDS = 12,
   92|    320|      MIN_WORD_LENGTH = 3,
   93|    320|      MAX_WORD_LENGTH = 3,
   94|    320|      MIN_HASH_VALUE = 0,
   95|    320|      MAX_HASH_VALUE = 40
   96|    320|    };
   97|       |
   98|    320|  static const struct months wordlist[] =
   99|    320|    {
  100|    320|#line 16 "MonthHash.gperf"
  101|    320|      {"Jun", Jun},
  102|    320|#line 17 "MonthHash.gperf"
  103|    320|      {"Jul", Jul},
  104|    320|#line 11 "MonthHash.gperf"
  105|    320|      {"Jan", Jan},
  106|    320|#line 15 "MonthHash.gperf"
  107|    320|      {"May", May},
  108|    320|#line 12 "MonthHash.gperf"
  109|    320|      {"Feb", Feb},
  110|    320|#line 13 "MonthHash.gperf"
  111|    320|      {"Mar", Mar},
  112|    320|#line 14 "MonthHash.gperf"
  113|    320|      {"Apr", Apr},
  114|    320|#line 22 "MonthHash.gperf"
  115|    320|      {"Dec", Dec},
  116|    320|#line 18 "MonthHash.gperf"
  117|    320|      {"Aug", Aug},
  118|    320|#line 19 "MonthHash.gperf"
  119|    320|      {"Sep", Sep},
  120|    320|#line 20 "MonthHash.gperf"
  121|    320|      {"Oct", Oct},
  122|    320|#line 21 "MonthHash.gperf"
  123|    320|      {"Nov", Nov}
  124|    320|    };
  125|       |
  126|    320|  static const signed char lookup[] =
  127|    320|    {
  128|    320|       0, -1, -1, -1,  1,  2, -1, -1, -1, -1,  3, -1, -1, -1,
  129|    320|       4,  5, -1, -1, -1, -1,  6, -1, -1, -1,  7,  8, -1, -1,
  130|    320|      -1, -1,  9, -1, -1, -1, -1, 10, -1, -1, -1, -1, 11
  131|    320|    };
  132|       |
  133|    320|  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  ------------------
  |  Branch (133:7): [True: 191, False: 129]
  |  Branch (133:33): [True: 46, False: 145]
  ------------------
  134|     46|    {
  135|     46|      unsigned int key = hash (str, len);
  136|       |
  137|     46|      if (key <= MAX_HASH_VALUE)
  ------------------
  |  Branch (137:11): [True: 22, False: 24]
  ------------------
  138|     22|        {
  139|     22|          int index = lookup[key];
  140|       |
  141|     22|          if (index >= 0)
  ------------------
  |  Branch (141:15): [True: 21, False: 1]
  ------------------
  142|     21|            {
  143|     21|              const char *s = wordlist[index].name;
  144|       |
  145|     21|              if (*str == *s && !strncmp (str + 1, s + 1, len - 1) && s[len] == '\0')
  ------------------
  |  Branch (145:19): [True: 13, False: 8]
  |  Branch (145:33): [True: 1, False: 12]
  |  Branch (145:71): [True: 1, False: 0]
  ------------------
  146|      1|                return &wordlist[index];
  147|     21|            }
  148|     22|        }
  149|     46|    }
  150|    319|  return 0;
  151|    320|}
_ZN5resip9MonthHash4hashEPKcm:
   53|     46|{
   54|     46|  static const unsigned char asso_values[] =
   55|     46|    {
   56|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   57|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   58|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   59|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   60|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   61|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   62|     46|      41, 41, 41, 41, 41, 10, 41, 41,  4, 41,
   63|     46|       4, 41, 41, 41,  0, 41, 41,  5, 15, 15,
   64|     46|      41, 41, 41, 15, 41, 41, 41, 41, 41, 41,
   65|     46|      41, 41, 41, 41, 41, 41, 41,  5,  0, 10,
   66|     46|      41, 10, 41, 15, 41, 41, 41, 41,  4, 41,
   67|     46|       0, 15,  5, 41,  5, 41, 10,  0, 10, 41,
   68|     46|      41,  0, 41, 41, 41, 41, 41, 41, 41, 41,
   69|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   70|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   71|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   72|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   73|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   74|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   75|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   76|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   77|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   78|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   79|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   80|     46|      41, 41, 41, 41, 41, 41, 41, 41, 41, 41,
   81|     46|      41, 41, 41, 41, 41, 41
   82|     46|    };
   83|     46|  return asso_values[static_cast<unsigned char>(str[2])] + asso_values[static_cast<unsigned char>(str[1])] + asso_values[static_cast<unsigned char>(str[0])];
   84|     46|}

_ZN5resip13ParameterHash11in_word_setEPKcm:
  191|  13.7M|{
  192|  13.7M|  enum
  193|  13.7M|    {
  194|  13.7M|      TOTAL_KEYWORDS = 106,
  195|  13.7M|      MIN_WORD_LENGTH = 1,
  196|  13.7M|      MAX_WORD_LENGTH = 18,
  197|  13.7M|      MIN_HASH_VALUE = 2,
  198|  13.7M|      MAX_HASH_VALUE = 512
  199|  13.7M|    };
  200|       |
  201|  13.7M|  static const struct params wordlist[] =
  202|  13.7M|    {
  203|  13.7M|#line 100 "ParameterHash.gperf"
  204|  13.7M|      {"rc", ParameterTypes::rc},
  205|  13.7M|#line 23 "ParameterHash.gperf"
  206|  13.7M|      {"actor", ParameterTypes::actor},
  207|  13.7M|#line 60 "ParameterHash.gperf"
  208|  13.7M|      {"nc", ParameterTypes::nc},
  209|  13.7M|#line 83 "ParameterHash.gperf"
  210|  13.7M|      {"site", ParameterTypes::site},
  211|  13.7M|#line 54 "ParameterHash.gperf"
  212|  13.7M|      {"rport", ParameterTypes::rport},
  213|  13.7M|#line 102 "ParameterHash.gperf"
  214|  13.7M|      {"np", ParameterTypes::np},
  215|  13.7M|#line 81 "ParameterHash.gperf"
  216|  13.7M|      {"size", ParameterTypes::size},
  217|  13.7M|#line 71 "ParameterHash.gperf"
  218|  13.7M|      {"reason", ParameterTypes::reason},
  219|  13.7M|#line 34 "ParameterHash.gperf"
  220|  13.7M|      {"transport", ParameterTypes::transport},
  221|  13.7M|#line 59 "ParameterHash.gperf"
  222|  13.7M|      {"nonce", ParameterTypes::nonce},
  223|  13.7M|#line 56 "ParameterHash.gperf"
  224|  13.7M|      {"cnonce", ParameterTypes::cnonce},
  225|  13.7M|#line 111 "ParameterHash.gperf"
  226|  13.7M|      {"content", ParameterTypes::content},
  227|  13.7M|#line 52 "ParameterHash.gperf"
  228|  13.7M|      {"rinstance", ParameterTypes::rinstance},
  229|  13.7M|#line 58 "ParameterHash.gperf"
  230|  13.7M|      {"id", ParameterTypes::id},
  231|  13.7M|#line 63 "ParameterHash.gperf"
  232|  13.7M|      {"response", ParameterTypes::response},
  233|  13.7M|#line 10 "ParameterHash.gperf"
  234|  13.7M|      {"data", ParameterTypes::data},
  235|  13.7M|#line 101 "ParameterHash.gperf"
  236|  13.7M|      {"mp", ParameterTypes::mp},
  237|  13.7M|#line 27 "ParameterHash.gperf"
  238|  13.7M|      {"+sip.instance", ParameterTypes::Instance},
  239|  13.7M|#line 53 "ParameterHash.gperf"
  240|  13.7M|      {"comp", ParameterTypes::comp},
  241|  13.7M|#line 69 "ParameterHash.gperf"
  242|  13.7M|      {"uri", ParameterTypes::uri},
  243|  13.7M|#line 33 "ParameterHash.gperf"
  244|  13.7M|      {"name", ParameterTypes::name},
  245|  13.7M|#line 110 "ParameterHash.gperf"
  246|  13.7M|      {"term-ioi", ParameterTypes::termIoi},
  247|  13.7M|#line 35 "ParameterHash.gperf"
  248|  13.7M|      {"user", ParameterTypes::user},
  249|  13.7M|#line 25 "ParameterHash.gperf"
  250|  13.7M|      {"cause", ParameterTypes::cause},
  251|  13.7M|#line 95 "ParameterHash.gperf"
  252|  13.7M|      {"app-id", ParameterTypes::appId},
  253|  13.7M|#line 30 "ParameterHash.gperf"
  254|  13.7M|      {"gr", ParameterTypes::gr},
  255|  13.7M|#line 48 "ParameterHash.gperf"
  256|  13.7M|      {"tag", ParameterTypes::tag},
  257|  13.7M|#line 82 "ParameterHash.gperf"
  258|  13.7M|      {"permission", ParameterTypes::permission},
  259|  13.7M|#line 13 "ParameterHash.gperf"
  260|  13.7M|      {"description", ParameterTypes::description},
  261|  13.7M|#line 40 "ParameterHash.gperf"
  262|  13.7M|      {"lr", ParameterTypes::lr},
  263|  13.7M|#line 38 "ParameterHash.gperf"
  264|  13.7M|      {"ttl", ParameterTypes::ttl},
  265|  13.7M|#line 43 "ParameterHash.gperf"
  266|  13.7M|      {"to-tag", ParameterTypes::toTag},
  267|  13.7M|#line 42 "ParameterHash.gperf"
  268|  13.7M|      {"purpose", ParameterTypes::purpose},
  269|  13.7M|#line 109 "ParameterHash.gperf"
  270|  13.7M|      {"orig-ioi", ParameterTypes::origIoi},
  271|  13.7M|#line 85 "ParameterHash.gperf"
  272|  13.7M|      {"mode", ParameterTypes::mode},
  273|  13.7M|#line 64 "ParameterHash.gperf"
  274|  13.7M|      {"stale", ParameterTypes::stale},
  275|  13.7M|#line 57 "ParameterHash.gperf"
  276|  13.7M|      {"domain", ParameterTypes::domain},
  277|  13.7M|#line 11 "ParameterHash.gperf"
  278|  13.7M|      {"control", ParameterTypes::control},
  279|  13.7M|#line 77 "ParameterHash.gperf"
  280|  13.7M|      {"protocol", ParameterTypes::protocol},
  281|  13.7M|#line 114 "ParameterHash.gperf"
  282|  13.7M|      {"ws-src-ip", ParameterTypes::wsSrcIp},
  283|  13.7M|#line 115 "ParameterHash.gperf"
  284|  13.7M|      {"ws-src-port", ParameterTypes::wsSrcPort},
  285|  13.7M|#line 113 "ParameterHash.gperf"
  286|  13.7M|      {"addtransport", ParameterTypes::addTransport},
  287|  13.7M|#line 45 "ParameterHash.gperf"
  288|  13.7M|      {"duration", ParameterTypes::duration},
  289|  13.7M|#line 18 "ParameterHash.gperf"
  290|  13.7M|      {"application", ParameterTypes::application},
  291|  13.7M|#line 15 "ParameterHash.gperf"
  292|  13.7M|      {"priority", ParameterTypes::priority},
  293|  13.7M|#line 21 "ParameterHash.gperf"
  294|  13.7M|      {"type", ParameterTypes::type},
  295|  13.7M|#line 39 "ParameterHash.gperf"
  296|  13.7M|      {"maddr", ParameterTypes::maddr},
  297|  13.7M|#line 87 "ParameterHash.gperf"
  298|  13.7M|      {"charset", ParameterTypes::charset},
  299|  13.7M|#line 65 "ParameterHash.gperf"
  300|  13.7M|      {"username", ParameterTypes::username},
  301|  13.7M|#line 62 "ParameterHash.gperf"
  302|  13.7M|      {"realm", ParameterTypes::realm},
  303|  13.7M|#line 28 "ParameterHash.gperf"
  304|  13.7M|      {"reg-id", ParameterTypes::regid},
  305|  13.7M|#line 29 "ParameterHash.gperf"
  306|  13.7M|      {"ob", ParameterTypes::ob},
  307|  13.7M|#line 97 "ParameterHash.gperf"
  308|  13.7M|      {"url", ParameterTypes::url},
  309|  13.7M|#line 112 "ParameterHash.gperf"
  310|  13.7M|      {"encoding", ParameterTypes::encoding},
  311|  13.7M|#line 88 "ParameterHash.gperf"
  312|  13.7M|      {"access-type", ParameterTypes::accessType},
  313|  13.7M|#line 94 "ParameterHash.gperf"
  314|  13.7M|      {"document", ParameterTypes::document},
  315|  13.7M|#line 84 "ParameterHash.gperf"
  316|  13.7M|      {"directory", ParameterTypes::directory},
  317|  13.7M|#line 96 "ParameterHash.gperf"
  318|  13.7M|      {"network-user", ParameterTypes::networkUser},
  319|  13.7M|#line 91 "ParameterHash.gperf"
  320|  13.7M|      {"model", ParameterTypes::model},
  321|  13.7M|#line 17 "ParameterHash.gperf"
  322|  13.7M|      {"schemes", ParameterTypes::schemes},
  323|  13.7M|#line 104 "ParameterHash.gperf"
  324|  13.7M|      {"cgi-3gpp", ParameterTypes::cgi3gpp},
  325|  13.7M|#line 98 "ParameterHash.gperf"
  326|  13.7M|      {"sigcomp-id", ParameterTypes::sigcompId},
  327|  13.7M|#line 86 "ParameterHash.gperf"
  328|  13.7M|      {"server", ParameterTypes::server},
  329|  13.7M|#line 92 "ParameterHash.gperf"
  330|  13.7M|      {"version", ParameterTypes::version},
  331|  13.7M|#line 105 "ParameterHash.gperf"
  332|  13.7M|      {"ccf", ParameterTypes::ccf},
  333|  13.7M|#line 41 "ParameterHash.gperf"
  334|  13.7M|      {"q", ParameterTypes::q},
  335|  13.7M|#line 14 "ParameterHash.gperf"
  336|  13.7M|      {"events", ParameterTypes::events},
  337|  13.7M|#line 106 "ParameterHash.gperf"
  338|  13.7M|      {"ecf", ParameterTypes::ecf},
  339|  13.7M|#line 78 "ParameterHash.gperf"
  340|  13.7M|      {"micalg", ParameterTypes::micalg},
  341|  13.7M|#line 68 "ParameterHash.gperf"
  342|  13.7M|      {"qop", ParameterTypes::qop},
  343|  13.7M|#line 72 "ParameterHash.gperf"
  344|  13.7M|      {"d-alg", ParameterTypes::dAlg},
  345|  13.7M|#line 37 "ParameterHash.gperf"
  346|  13.7M|      {"method", ParameterTypes::method},
  347|  13.7M|#line 16 "ParameterHash.gperf"
  348|  13.7M|      {"methods", ParameterTypes::methods},
  349|  13.7M|#line 36 "ParameterHash.gperf"
  350|  13.7M|      {"ext", ParameterTypes::extension},
  351|  13.7M|#line 24 "ParameterHash.gperf"
  352|  13.7M|      {"text", ParameterTypes::text},
  353|  13.7M|#line 19 "ParameterHash.gperf"
  354|  13.7M|      {"video", ParameterTypes::video},
  355|  13.7M|#line 74 "ParameterHash.gperf"
  356|  13.7M|      {"d-ver", ParameterTypes::dVer},
  357|  13.7M|#line 90 "ParameterHash.gperf"
  358|  13.7M|      {"vendor", ParameterTypes::vendor},
  359|  13.7M|#line 108 "ParameterHash.gperf"
  360|  13.7M|      {"icid-generated-at", ParameterTypes::icidGeneratedAt},
  361|  13.7M|#line 75 "ParameterHash.gperf"
  362|  13.7M|      {"smime-type", ParameterTypes::smimeType},
  363|  13.7M|#line 46 "ParameterHash.gperf"
  364|  13.7M|      {"expires", ParameterTypes::expires},
  365|  13.7M|#line 50 "ParameterHash.gperf"
  366|  13.7M|      {"received", ParameterTypes::received},
  367|  13.7M|#line 80 "ParameterHash.gperf"
  368|  13.7M|      {"expiration", ParameterTypes::expiration},
  369|  13.7M|#line 26 "ParameterHash.gperf"
  370|  13.7M|      {"extensions", ParameterTypes::extensions},
  371|  13.7M|#line 22 "ParameterHash.gperf"
  372|  13.7M|      {"isfocus", ParameterTypes::isFocus},
  373|  13.7M|#line 73 "ParameterHash.gperf"
  374|  13.7M|      {"d-qop", ParameterTypes::dQop},
  375|  13.7M|#line 32 "ParameterHash.gperf"
  376|  13.7M|      {"temp-gruu", ParameterTypes::tempGruu},
  377|  13.7M|#line 99 "ParameterHash.gperf"
  378|  13.7M|      {"index", ParameterTypes::index},
  379|  13.7M|#line 49 "ParameterHash.gperf"
  380|  13.7M|      {"branch", ParameterTypes::branch},
  381|  13.7M|#line 61 "ParameterHash.gperf"
  382|  13.7M|      {"opaque", ParameterTypes::opaque},
  383|  13.7M|#line 51 "ParameterHash.gperf"
  384|  13.7M|      {"require", ParameterTypes::require},
  385|  13.7M|#line 20 "ParameterHash.gperf"
  386|  13.7M|      {"language", ParameterTypes::language},
  387|  13.7M|#line 44 "ParameterHash.gperf"
  388|  13.7M|      {"from-tag", ParameterTypes::fromTag},
  389|  13.7M|#line 55 "ParameterHash.gperf"
  390|  13.7M|      {"algorithm", ParameterTypes::algorithm},
  391|  13.7M|#line 70 "ParameterHash.gperf"
  392|  13.7M|      {"retry-after", ParameterTypes::retryAfter},
  393|  13.7M|#line 47 "ParameterHash.gperf"
  394|  13.7M|      {"handling", ParameterTypes::handling},
  395|  13.7M|#line 67 "ParameterHash.gperf"
  396|  13.7M|      {"refresher", ParameterTypes::refresher},
  397|  13.7M|#line 76 "ParameterHash.gperf"
  398|  13.7M|      {"filename", ParameterTypes::filename},
  399|  13.7M|#line 79 "ParameterHash.gperf"
  400|  13.7M|      {"boundary", ParameterTypes::boundary},
  401|  13.7M|#line 107 "ParameterHash.gperf"
  402|  13.7M|      {"icid-value", ParameterTypes::icidValue},
  403|  13.7M|#line 12 "ParameterHash.gperf"
  404|  13.7M|      {"mobility", ParameterTypes::mobility},
  405|  13.7M|#line 31 "ParameterHash.gperf"
  406|  13.7M|      {"pub-gruu", ParameterTypes::pubGruu},
  407|  13.7M|#line 66 "ParameterHash.gperf"
  408|  13.7M|      {"early-only", ParameterTypes::earlyOnly},
  409|  13.7M|#line 103 "ParameterHash.gperf"
  410|  13.7M|      {"utran-cell-id-3gpp", ParameterTypes::utranCellId3gpp},
  411|  13.7M|#line 89 "ParameterHash.gperf"
  412|  13.7M|      {"profile-type", ParameterTypes::profileType},
  413|  13.7M|#line 93 "ParameterHash.gperf"
  414|  13.7M|      {"effective-by", ParameterTypes::effectiveBy}
  415|  13.7M|    };
  416|       |
  417|  13.7M|  static const signed char lookup[] =
  418|  13.7M|    {
  419|  13.7M|       -1,  -1,   0,  -1,  -1,   1,  -1,   2,  -1,   3,
  420|  13.7M|        4,  -1,   5,  -1,   6,  -1,   7,  -1,  -1,   8,
  421|  13.7M|        9,  10,  11,  -1,  12,  -1,  -1,  13,  14,  15,
  422|  13.7M|       -1,  -1,  16,  17,  18,  -1,  -1,  -1,  19,  20,
  423|  13.7M|       -1,  -1,  -1,  21,  22,  23,  24,  25,  26,  -1,
  424|  13.7M|       27,  28,  29,  30,  -1,  -1,  31,  32,  33,  34,
  425|  13.7M|       35,  36,  37,  38,  39,  -1,  40,  -1,  -1,  -1,
  426|  13.7M|       -1,  -1,  41,  42,  -1,  -1,  43,  -1,  44,  45,
  427|  13.7M|       46,  -1,  47,  48,  -1,  49,  50,  51,  52,  -1,
  428|  13.7M|       -1,  -1,  -1,  53,  -1,  -1,  54,  -1,  -1,  -1,
  429|  13.7M|       -1,  -1,  -1,  55,  56,  -1,  -1,  57,  -1,  -1,
  430|  13.7M|       58,  -1,  59,  60,  -1,  61,  62,  63,  64,  -1,
  431|  13.7M|       65,  66,  -1,  67,  -1,  -1,  68,  69,  -1,  -1,
  432|  13.7M|       70,  71,  72,  73,  74,  75,  -1,  -1,  -1,  -1,
  433|  13.7M|       76,  77,  78,  -1,  -1,  79,  -1,  80,  81,  -1,
  434|  13.7M|       82,  -1,  -1,  -1,  -1,  83,  -1,  84,  -1,  85,
  435|  13.7M|       -1,  -1,  -1,  -1,  86,  87,  88,  -1,  -1,  -1,
  436|  13.7M|       89,  90,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  437|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  438|  13.7M|       -1,  -1,  -1,  91,  -1,  -1,  -1,  -1,  92,  93,
  439|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  94,  -1,  95,  96,
  440|  13.7M|       -1,  -1,  -1,  97,  -1,  -1,  -1,  -1,  -1,  -1,
  441|  13.7M|       -1,  -1,  -1,  98,  -1,  -1,  -1,  -1,  -1,  -1,
  442|  13.7M|       99,  -1,  -1, 100,  -1,  -1,  -1,  -1,  -1,  -1,
  443|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  444|  13.7M|       -1,  -1,  -1, 101,  -1, 102,  -1,  -1, 103,  -1,
  445|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1, 104,  -1,  -1,
  446|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  447|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  448|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  449|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  450|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  451|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  452|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  453|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  454|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  455|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  456|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  457|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  458|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  459|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  460|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  461|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  462|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  463|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  464|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  465|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  466|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  467|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  468|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  469|  13.7M|       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
  470|  13.7M|       -1,  -1, 105
  471|  13.7M|    };
  472|       |
  473|  13.7M|  if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
  ------------------
  |  Branch (473:7): [True: 13.7M, False: 2.90k]
  |  Branch (473:33): [True: 13.7M, False: 0]
  ------------------
  474|  13.7M|    {
  475|  13.7M|      unsigned int key = hash (str, len);
  476|       |
  477|  13.7M|      if (key <= MAX_HASH_VALUE)
  ------------------
  |  Branch (477:11): [True: 8.58M, False: 5.16M]
  ------------------
  478|  8.58M|        {
  479|  8.58M|          int index = lookup[key];
  480|       |
  481|  8.58M|          if (index >= 0)
  ------------------
  |  Branch (481:15): [True: 6.63M, False: 1.94M]
  ------------------
  482|  6.63M|            {
  483|  6.63M|              const char *s = wordlist[index].name;
  484|       |
  485|  6.63M|              if ((((unsigned char)*str ^ (unsigned char)*s) & ~32) == 0 && !gperf_case_strncmp (str, s, len) && s[len] == '\0')
  ------------------
  |  Branch (485:19): [True: 2.75M, False: 3.88M]
  |  Branch (485:77): [True: 2.74M, False: 1.94k]
  |  Branch (485:114): [True: 2.74M, False: 0]
  ------------------
  486|  2.74M|                return &wordlist[index];
  487|  6.63M|            }
  488|  8.58M|        }
  489|  13.7M|    }
  490|  11.0M|  return 0;
  491|  13.7M|}
_ZN5resip13ParameterHash4hashEPKcm:
   97|  13.7M|{
   98|  13.7M|  static const unsigned short asso_values[] =
   99|  13.7M|    {
  100|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  101|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  102|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  103|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  104|  13.7M|      513, 513, 513,   0, 513,   5,   0, 513, 513, 513,
  105|  13.7M|      513,   0, 513, 513, 513, 513, 513, 513, 513, 513,
  106|  13.7M|      513, 513, 513, 513, 513,   0,  85,   0,  25,   5,
  107|  13.7M|      115,  45,  70,   0, 513,   0,  50,  25,   5,   0,
  108|  13.7M|        5, 119,   0,   0,   0,  35, 100,  40, 125,  65,
  109|  13.7M|        5, 513, 513, 513, 513, 513, 513,   0,  85,   0,
  110|  13.7M|       25,   5, 115,  45,  70,   0, 513,   0,  50,  25,
  111|  13.7M|        5,   0,   5, 119,   0,   0,   0,  35, 100,  40,
  112|  13.7M|      125,  65,   5, 513, 513, 513, 513, 513, 513, 513,
  113|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  114|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  115|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  116|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  117|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  118|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  119|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  120|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  121|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  122|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  123|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  124|  13.7M|      513, 513, 513, 513, 513, 513, 513, 513, 513, 513,
  125|  13.7M|      513, 513, 513, 513, 513, 513
  126|  13.7M|    };
  127|  13.7M|  unsigned int hval = len;
  128|       |
  129|  13.7M|  switch (hval)
  130|  13.7M|    {
  131|    974|      default:
  ------------------
  |  Branch (131:7): [True: 974, False: 13.7M]
  ------------------
  132|    974|        hval += asso_values[static_cast<unsigned char>(str[17])];
  133|       |      /*FALLTHROUGH*/
  134|  1.23k|      case 17:
  ------------------
  |  Branch (134:7): [True: 261, False: 13.7M]
  ------------------
  135|  1.23k|        hval += asso_values[static_cast<unsigned char>(str[16])];
  136|       |      /*FALLTHROUGH*/
  137|  2.22k|      case 16:
  ------------------
  |  Branch (137:7): [True: 987, False: 13.7M]
  ------------------
  138|  2.22k|        hval += asso_values[static_cast<unsigned char>(str[15])];
  139|       |      /*FALLTHROUGH*/
  140|  2.51k|      case 15:
  ------------------
  |  Branch (140:7): [True: 296, False: 13.7M]
  ------------------
  141|  2.51k|        hval += asso_values[static_cast<unsigned char>(str[14])];
  142|       |      /*FALLTHROUGH*/
  143|  3.06k|      case 14:
  ------------------
  |  Branch (143:7): [True: 543, False: 13.7M]
  ------------------
  144|  3.06k|        hval += asso_values[static_cast<unsigned char>(str[13])];
  145|       |      /*FALLTHROUGH*/
  146|  3.34k|      case 13:
  ------------------
  |  Branch (146:7): [True: 288, False: 13.7M]
  ------------------
  147|  3.34k|        hval += asso_values[static_cast<unsigned char>(str[12])];
  148|       |      /*FALLTHROUGH*/
  149|  4.07k|      case 12:
  ------------------
  |  Branch (149:7): [True: 728, False: 13.7M]
  ------------------
  150|  4.07k|        hval += asso_values[static_cast<unsigned char>(str[11])];
  151|       |      /*FALLTHROUGH*/
  152|  4.83k|      case 11:
  ------------------
  |  Branch (152:7): [True: 757, False: 13.7M]
  ------------------
  153|  4.83k|        hval += asso_values[static_cast<unsigned char>(str[10])];
  154|       |      /*FALLTHROUGH*/
  155|  5.34k|      case 10:
  ------------------
  |  Branch (155:7): [True: 515, False: 13.7M]
  ------------------
  156|  5.34k|        hval += asso_values[static_cast<unsigned char>(str[9])];
  157|       |      /*FALLTHROUGH*/
  158|  7.26k|      case 9:
  ------------------
  |  Branch (158:7): [True: 1.91k, False: 13.7M]
  ------------------
  159|  7.26k|        hval += asso_values[static_cast<unsigned char>(str[8])];
  160|       |      /*FALLTHROUGH*/
  161|  8.36k|      case 8:
  ------------------
  |  Branch (161:7): [True: 1.10k, False: 13.7M]
  ------------------
  162|  8.36k|        hval += asso_values[static_cast<unsigned char>(str[7])];
  163|       |      /*FALLTHROUGH*/
  164|  22.9k|      case 7:
  ------------------
  |  Branch (164:7): [True: 14.5k, False: 13.7M]
  ------------------
  165|  22.9k|        hval += asso_values[static_cast<unsigned char>(str[6])];
  166|       |      /*FALLTHROUGH*/
  167|  24.4k|      case 6:
  ------------------
  |  Branch (167:7): [True: 1.59k, False: 13.7M]
  ------------------
  168|  24.4k|        hval += asso_values[static_cast<unsigned char>(str[5])];
  169|       |      /*FALLTHROUGH*/
  170|  27.1k|      case 5:
  ------------------
  |  Branch (170:7): [True: 2.61k, False: 13.7M]
  ------------------
  171|  27.1k|        hval += asso_values[static_cast<unsigned char>(str[4])];
  172|       |      /*FALLTHROUGH*/
  173|  29.7k|      case 4:
  ------------------
  |  Branch (173:7): [True: 2.59k, False: 13.7M]
  ------------------
  174|  29.7k|        hval += asso_values[static_cast<unsigned char>(str[3])];
  175|       |      /*FALLTHROUGH*/
  176|  50.9k|      case 3:
  ------------------
  |  Branch (176:7): [True: 21.2k, False: 13.7M]
  ------------------
  177|  50.9k|        hval += asso_values[static_cast<unsigned char>(str[2])];
  178|       |      /*FALLTHROUGH*/
  179|  2.77M|      case 2:
  ------------------
  |  Branch (179:7): [True: 2.72M, False: 11.0M]
  ------------------
  180|  2.77M|        hval += asso_values[static_cast<unsigned char>(str[1])];
  181|       |      /*FALLTHROUGH*/
  182|  13.7M|      case 1:
  ------------------
  |  Branch (182:7): [True: 10.9M, False: 2.77M]
  ------------------
  183|  13.7M|        hval += asso_values[static_cast<unsigned char>(str[0])];
  184|  13.7M|        break;
  185|  13.7M|    }
  186|  13.7M|  return hval;
  187|  13.7M|}
ParameterHash.cxx:_ZN5resipL18gperf_case_strncmpEPKcS1_m:
   71|  2.75M|{
   72|  8.30M|  for (; n > 0;)
  ------------------
  |  Branch (72:10): [True: 5.55M, False: 2.74M]
  ------------------
   73|  5.55M|    {
   74|  5.55M|      unsigned char c1 = gperf_downcase[(unsigned char)*s1++];
   75|  5.55M|      unsigned char c2 = gperf_downcase[(unsigned char)*s2++];
   76|  5.55M|      if (c1 != 0 && c1 == c2)
  ------------------
  |  Branch (76:11): [True: 5.55M, False: 0]
  |  Branch (76:22): [True: 5.55M, False: 1.94k]
  ------------------
   77|  5.55M|        {
   78|  5.55M|          n--;
   79|  5.55M|          continue;
   80|  5.55M|        }
   81|  1.94k|      return (int)c1 - (int)c2;
   82|  5.55M|    }
   83|  2.74M|  return 0;
   84|  2.75M|}

_ZN5resip11TestSupport11makeMessageERKNS_4DataEb:
  144|  6.23k|{
  145|  6.23k|   return SipMessage::make(data, isExternal);
  146|  6.23k|}

LLVMFuzzerInitialize:
  407|      2|extern "C" int LLVMFuzzerInitialize(int *argc, char ***argv) {
  408|      2|  resip::Log::initialize(resip::Log::Cout, resip::Log::None, *argv[0]);
  409|      2|  return 0;
  410|      2|}
LLVMFuzzerTestOneInput:
  414|  6.23k|                                      unsigned long size) {
  415|       |
  416|  6.23k|  const resip::Data buffer(resip::Data::Share, reinterpret_cast<const char*>(data), size);
  417|  6.23k|  const resip::HeaderFieldValue hfv(reinterpret_cast<const char*>(data), size);
  418|       |
  419|  6.23k|  fuzzAuth(hfv);
  420|  6.23k|  fuzzCSeqCategory(hfv);
  421|  6.23k|  fuzzCallId(hfv);
  422|  6.23k|  fuzzCpimContents(hfv);
  423|  6.23k|  fuzzDtmfPayloadContents(hfv);
  424|  6.23k|  fuzzDateCategory(hfv);
  425|  6.23k|  fuzzExpiresCategory(hfv);
  426|  6.23k|  fuzzGenericUri(hfv);
  427|  6.23k|  fuzzIntegerCategory(hfv);
  428|  6.23k|  fuzzInvalidContents(hfv);
  429|  6.23k|  fuzzMessageWaitingContents(hfv);
  430|  6.23k|  fuzzMime(hfv);
  431|  6.23k|  fuzzMultipartMixedContents(hfv);
  432|  6.23k|  fuzzNameAddr(buffer);
  433|  6.23k|  fuzzOctetContents(hfv);
  434|       |
  435|  6.23k|  fuzzPkcs7Contents(hfv);
  436|  6.23k|  fuzzPkcs8Contents(hfv);
  437|  6.23k|  fuzzPlainContents(hfv);
  438|  6.23k|  fuzzPrivacyCategory(hfv);
  439|  6.23k|  fuzzRAckCategory(hfv);
  440|  6.23k|  fuzzRequestLine(hfv);
  441|  6.23k|  fuzzRlmi(hfv);
  442|  6.23k|  fuzzSdp(hfv);
  443|  6.23k|  fuzzSip(buffer);
  444|  6.23k|  fuzzUri(hfv);
  445|       |
  446|       |  // leaks or hogs memory
  447|       |  //fuzzDialogInfoContents(hfv);
  448|       |  //fuzzGenericPidfContents(hfv);
  449|       |  //fuzzPidf(hfv); return 0;
  450|       |
  451|  6.23k|  return 0;
  452|  6.23k|}
fuzzStack.cxx:_ZL8fuzzAuthRKN5resip16HeaderFieldValueE:
   44|  6.23k|{
   45|  6.23k|    resip::Auth payload(hfv, resip::Headers::UNKNOWN);
   46|  6.23k|    try
   47|  6.23k|    {
   48|  6.23k|        payload.checkParsed();
   49|  6.23k|    }
   50|  6.23k|    catch (const resip::ParseException&)
   51|  6.23k|    {
   52|    345|    }
   53|  6.23k|}
fuzzStack.cxx:_ZL16fuzzCSeqCategoryRKN5resip16HeaderFieldValueE:
   56|  6.23k|{
   57|  6.23k|    resip::CSeqCategory payload(hfv, resip::Headers::UNKNOWN);
   58|  6.23k|    try
   59|  6.23k|    {
   60|  6.23k|        payload.checkParsed();
   61|  6.23k|    }
   62|  6.23k|    catch (const resip::ParseException&)
   63|  6.23k|    {
   64|  5.91k|    }
   65|  6.23k|}
fuzzStack.cxx:_ZL10fuzzCallIdRKN5resip16HeaderFieldValueE:
   81|  6.23k|{
   82|  6.23k|    resip::CallId payload(hfv, resip::Headers::UNKNOWN);
   83|  6.23k|    try
   84|  6.23k|    {
   85|  6.23k|        payload.checkParsed();
   86|  6.23k|    }
   87|  6.23k|    catch (const resip::ParseException&)
   88|  6.23k|    {
   89|    149|    }
   90|  6.23k|}
fuzzStack.cxx:_ZL16fuzzCpimContentsRKN5resip16HeaderFieldValueE:
   68|  6.23k|{
   69|  6.23k|    static const resip::Mime type("message", "cpim");
   70|  6.23k|    resip::CpimContents payload(hfv, type);
   71|  6.23k|    try
   72|  6.23k|    {
   73|  6.23k|        payload.checkParsed();
   74|  6.23k|    }
   75|  6.23k|    catch (const resip::ParseException&)
   76|  6.23k|    {
   77|      0|    }
   78|  6.23k|}
fuzzStack.cxx:_ZL23fuzzDtmfPayloadContentsRKN5resip16HeaderFieldValueE:
   93|  6.23k|{
   94|  6.23k|  static const resip::Mime type("application", "dtmf-relay");
   95|  6.23k|  resip::DtmfPayloadContents payload(hfv, type);
   96|  6.23k|  try
   97|  6.23k|  {
   98|  6.23k|    payload.checkParsed();
   99|  6.23k|  }
  100|  6.23k|  catch (const resip::ParseException&)
  101|  6.23k|  {
  102|  6.21k|  }
  103|  6.23k|}
fuzzStack.cxx:_ZL16fuzzDateCategoryRKN5resip16HeaderFieldValueE:
  106|  6.23k|{
  107|  6.23k|    resip::DateCategory payload(hfv, resip::Headers::UNKNOWN);
  108|  6.23k|    try
  109|  6.23k|    {
  110|  6.23k|        payload.checkParsed();
  111|  6.23k|    }
  112|  6.23k|    catch (const resip::ParseException&)
  113|  6.23k|    {
  114|  6.23k|    }
  115|  6.23k|}
fuzzStack.cxx:_ZL19fuzzExpiresCategoryRKN5resip16HeaderFieldValueE:
  131|  6.23k|{
  132|  6.23k|    resip::ExpiresCategory payload(hfv, resip::Headers::UNKNOWN);
  133|  6.23k|    try
  134|  6.23k|    {
  135|  6.23k|        payload.checkParsed();
  136|  6.23k|    }
  137|  6.23k|    catch (const resip::ParseException&)
  138|  6.23k|    {
  139|    208|    }
  140|  6.23k|}
fuzzStack.cxx:_ZL14fuzzGenericUriRKN5resip16HeaderFieldValueE:
  156|  6.23k|{
  157|  6.23k|    resip::GenericURI payload(hfv, resip::Headers::UNKNOWN);
  158|  6.23k|    try
  159|  6.23k|    {
  160|  6.23k|        payload.checkParsed();
  161|  6.23k|    }
  162|  6.23k|    catch (const resip::ParseException&)
  163|  6.23k|    {
  164|  6.21k|    }
  165|  6.23k|}
fuzzStack.cxx:_ZL19fuzzIntegerCategoryRKN5resip16HeaderFieldValueE:
  168|  6.23k|{
  169|  6.23k|    resip::IntegerCategory payload(hfv, resip::Headers::UNKNOWN);
  170|  6.23k|    try
  171|  6.23k|    {
  172|  6.23k|        payload.checkParsed();
  173|  6.23k|    }
  174|  6.23k|    catch (const resip::ParseException&)
  175|  6.23k|    {
  176|  5.86k|    }
  177|  6.23k|}
fuzzStack.cxx:_ZL19fuzzInvalidContentsRKN5resip16HeaderFieldValueE:
  180|  6.23k|{
  181|  6.23k|    static const resip::Mime type("Invalid", "Invalid");
  182|  6.23k|    resip::InvalidContents payload(hfv, type, type);
  183|  6.23k|    try
  184|  6.23k|    {
  185|  6.23k|        payload.checkParsed();
  186|  6.23k|    }
  187|  6.23k|    catch (const resip::ParseException&)
  188|  6.23k|    {
  189|      0|    }
  190|  6.23k|}
fuzzStack.cxx:_ZL26fuzzMessageWaitingContentsRKN5resip16HeaderFieldValueE:
  193|  6.23k|{
  194|  6.23k|    static const resip::Mime type("application", "simple-message-summary");
  195|  6.23k|    resip::MessageWaitingContents payload(hfv, type);
  196|  6.23k|    try
  197|  6.23k|    {
  198|  6.23k|        payload.checkParsed();
  199|  6.23k|    }
  200|  6.23k|    catch (const resip::ParseException&)
  201|  6.23k|    {
  202|  6.23k|    }
  203|  6.23k|}
fuzzStack.cxx:_ZL8fuzzMimeRKN5resip16HeaderFieldValueE:
  206|  6.23k|{
  207|  6.23k|    resip::Mime payload(hfv, resip::Headers::UNKNOWN);
  208|  6.23k|    try
  209|  6.23k|    {
  210|  6.23k|        payload.checkParsed();
  211|  6.23k|    }
  212|  6.23k|    catch (const resip::ParseException&)
  213|  6.23k|    {
  214|  5.57k|    }
  215|  6.23k|}
fuzzStack.cxx:_ZL26fuzzMultipartMixedContentsRKN5resip16HeaderFieldValueE:
  218|  6.23k|{
  219|  6.23k|    static const resip::Mime type("multipart", "mixed");
  220|  6.23k|    resip::MultipartMixedContents payload(hfv, type);
  221|  6.23k|    try
  222|  6.23k|    {
  223|  6.23k|        payload.checkParsed();
  224|  6.23k|    }
  225|  6.23k|    catch (const resip::ParseException&)
  226|  6.23k|    {
  227|  6.23k|    }
  228|  6.23k|}
fuzzStack.cxx:_ZL12fuzzNameAddrRKN5resip4DataE:
  231|  6.23k|{
  232|  6.23k|  try
  233|  6.23k|  {
  234|  6.23k|    resip::NameAddr illegal(buffer);
  235|  6.23k|  }
  236|  6.23k|  catch (const resip::ParseException&)
  237|  6.23k|  {
  238|  3.17k|  }
  239|  6.23k|}
fuzzStack.cxx:_ZL17fuzzOctetContentsRKN5resip16HeaderFieldValueE:
  242|  6.23k|{
  243|  6.23k|    static const resip::Mime type("application", "octet-stream");
  244|  6.23k|    resip::OctetContents payload(hfv, type);
  245|  6.23k|    try
  246|  6.23k|    {
  247|  6.23k|        payload.checkParsed();
  248|  6.23k|    }
  249|  6.23k|    catch (const resip::ParseException&)
  250|  6.23k|    {
  251|      0|    }
  252|  6.23k|}
fuzzStack.cxx:_ZL17fuzzPkcs7ContentsRKN5resip16HeaderFieldValueE:
  268|  6.23k|{
  269|  6.23k|    static const resip::Mime type("application", "pkcs7-mime");
  270|  6.23k|    resip::Pkcs7Contents payload(hfv, type);
  271|  6.23k|    try
  272|  6.23k|    {
  273|  6.23k|        payload.checkParsed();
  274|  6.23k|    }
  275|  6.23k|    catch (const resip::ParseException&)
  276|  6.23k|    {
  277|      0|    }
  278|  6.23k|}
fuzzStack.cxx:_ZL17fuzzPkcs8ContentsRKN5resip16HeaderFieldValueE:
  281|  6.23k|{
  282|  6.23k|    static const resip::Mime type("application", "pkcs8");
  283|  6.23k|    resip::Pkcs8Contents payload(hfv, type);
  284|  6.23k|    try
  285|  6.23k|    {
  286|  6.23k|        payload.checkParsed();
  287|  6.23k|    }
  288|  6.23k|    catch (const resip::ParseException&)
  289|  6.23k|    {
  290|      0|    }
  291|  6.23k|}
fuzzStack.cxx:_ZL17fuzzPlainContentsRKN5resip16HeaderFieldValueE:
  294|  6.23k|{
  295|  6.23k|    static const resip::Mime type("text", "plain");
  296|  6.23k|    resip::PlainContents payload(hfv, type);
  297|  6.23k|    try
  298|  6.23k|    {
  299|  6.23k|        payload.checkParsed();
  300|  6.23k|    }
  301|  6.23k|    catch (const resip::ParseException&)
  302|  6.23k|    {
  303|      0|    }
  304|  6.23k|}
fuzzStack.cxx:_ZL19fuzzPrivacyCategoryRKN5resip16HeaderFieldValueE:
  307|  6.23k|{
  308|  6.23k|    resip::PrivacyCategory payload(hfv, resip::Headers::UNKNOWN);
  309|  6.23k|    try
  310|  6.23k|    {
  311|  6.23k|        payload.checkParsed();
  312|  6.23k|    }
  313|  6.23k|    catch (const resip::ParseException&)
  314|  6.23k|    {
  315|  3.65k|    }
  316|  6.23k|}
fuzzStack.cxx:_ZL16fuzzRAckCategoryRKN5resip16HeaderFieldValueE:
  319|  6.23k|{
  320|  6.23k|    resip::RAckCategory payload(hfv, resip::Headers::UNKNOWN);
  321|  6.23k|    try
  322|  6.23k|    {
  323|  6.23k|        payload.checkParsed();
  324|  6.23k|    }
  325|  6.23k|    catch (const resip::ParseException&)
  326|  6.23k|    {
  327|  6.22k|    }
  328|  6.23k|}
fuzzStack.cxx:_ZL15fuzzRequestLineRKN5resip16HeaderFieldValueE:
  331|  6.23k|{
  332|  6.23k|    resip::RequestLine payload(hfv);
  333|  6.23k|    try
  334|  6.23k|    {
  335|  6.23k|        payload.checkParsed();
  336|  6.23k|    }
  337|  6.23k|    catch (const resip::ParseException&)
  338|  6.23k|    {
  339|  5.55k|    }
  340|  6.23k|}
fuzzStack.cxx:_ZL8fuzzRlmiRKN5resip16HeaderFieldValueE:
  343|  6.23k|{
  344|  6.23k|    static const resip::Mime type("application", "rlmi+xml");
  345|  6.23k|    resip::Rlmi payload(hfv, type);
  346|  6.23k|    try
  347|  6.23k|    {
  348|  6.23k|        payload.checkParsed();
  349|  6.23k|    }
  350|  6.23k|    catch (const resip::ParseException&)
  351|  6.23k|    {
  352|      0|    }
  353|  6.23k|}
fuzzStack.cxx:_ZL7fuzzSdpRKN5resip16HeaderFieldValueE:
  356|  6.23k|{
  357|  6.23k|  static const resip::Mime type("application", "sdp");
  358|  6.23k|  resip::SdpContents sdp(hfv, type);
  359|  6.23k|  try
  360|  6.23k|  {
  361|  6.23k|    sdp.checkParsed();
  362|  6.23k|  }
  363|  6.23k|  catch (const resip::ParseException&)
  364|  6.23k|  {
  365|  5.51k|  }
  366|  6.23k|}
fuzzStack.cxx:_ZL7fuzzSipRKN5resip4DataE:
  369|  6.23k|{
  370|  6.23k|  try
  371|  6.23k|  {
  372|  6.23k|    std::unique_ptr<resip::SipMessage> msg(resip::TestSupport::makeMessage(buffer));
  373|  6.23k|  }
  374|  6.23k|  catch (const resip::ParseException&)
  375|  6.23k|  {
  376|      0|  }
  377|  6.23k|}
fuzzStack.cxx:_ZL7fuzzUriRKN5resip16HeaderFieldValueE:
  396|  6.23k|{
  397|  6.23k|  resip::Uri uri(hfv, resip::Headers::UNKNOWN);
  398|  6.23k|  try
  399|  6.23k|  {
  400|  6.23k|    uri.embedded();
  401|  6.23k|  }
  402|  6.23k|  catch (const resip::ParseException&)
  403|  6.23k|  {
  404|  3.14k|  }
  405|  6.23k|}

_ZN5resip13BaseExceptionC2ERKNS_4DataES3_i:
   18|  87.8k|{
   19|  87.8k|#if !defined(RESIP_NO_EXCEPTION_DEBUG_LOGS)
   20|  87.8k|   DebugLog(<< "BaseException at " << file << ":" << line << " " << message);
  ------------------
  |  |  128|  87.8k|#define DebugLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  87.8k|   do                                                                   \
  |  |  |  |  152|  87.8k|   {                                                                    \
  |  |  |  |  153|  87.8k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 87.8k]
  |  |  |  |  ------------------
  |  |  |  |  154|  87.8k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  87.8k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  87.8k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Debug, args_)
  ------------------
   21|  87.8k|#endif
   22|  87.8k|}

_ZN5resip4Data15PreallocateTypeC2Ei:
   32|      2|{}
_ZN5resip4Data4initENS_13DataLocalSizeILi16EEE:
  214|    196|{
  215|    196|   return true;
  216|    196|}
_ZN5resip4DataC2EjRKNS0_15PreallocateTypeE:
  228|   253k|{
  229|   253k|   resip_assert( capacity >= 0 );
  ------------------
  |  |   96|   253k|#define resip_assert(x)                                                        \
  |  |   97|   253k|{                                                                              \
  |  |   98|   253k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 253k]
  |  |  ------------------
  |  |   99|   253k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|   253k|   {                                                                           \
  |  |  103|   253k|      assert( (x) );                                                           \
  |  |  104|   253k|   }                                                                           \
  |  |  105|   253k|}
  ------------------
  230|   253k|   mBuf[mSize] = 0;
  231|   253k|}
_ZN5resip4DataC2EPKcj:
  251|  13.4M|{
  252|  13.4M|   initFromString(str, length);
  253|  13.4M|}
_ZN5resip4DataC2ENS0_9ShareEnumEPKcj:
  310|  6.24k|{
  311|  6.24k|   resip_assert(buffer);
  ------------------
  |  |   96|  6.24k|#define resip_assert(x)                                                        \
  |  |   97|  6.24k|{                                                                              \
  |  |   98|  6.24k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 6.24k]
  |  |  ------------------
  |  |   99|  6.24k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  6.24k|   {                                                                           \
  |  |  103|  6.24k|      assert( (x) );                                                           \
  |  |  104|  6.24k|   }                                                                           \
  |  |  105|  6.24k|}
  ------------------
  312|  6.24k|}
_ZN5resip4DataC2ENS0_9ShareEnumEPKc:
  328|  32.2k|{
  329|  32.2k|   resip_assert(buffer);
  ------------------
  |  |   96|  32.2k|#define resip_assert(x)                                                        \
  |  |   97|  32.2k|{                                                                              \
  |  |   98|  32.2k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 32.2k]
  |  |  ------------------
  |  |   99|  32.2k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  32.2k|   {                                                                           \
  |  |  103|  32.2k|      assert( (x) );                                                           \
  |  |  104|  32.2k|   }                                                                           \
  |  |  105|  32.2k|}
  ------------------
  330|  32.2k|}
_ZN5resip4DataC2ENS0_9ShareEnumERKS0_:
  337|  6.75k|{
  338|       |   // !dlb! maybe:
  339|       |   // if you are trying to use Take, but make sure that you unset the mShareEnum on
  340|       |   // the staticData
  341|  6.75k|   resip_assert(se == Share); // makes no sense to call this with 'Take'.
  ------------------
  |  |   96|  6.75k|#define resip_assert(x)                                                        \
  |  |   97|  6.75k|{                                                                              \
  |  |   98|  6.75k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 6.75k]
  |  |  ------------------
  |  |   99|  6.75k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  6.75k|   {                                                                           \
  |  |  103|  6.75k|      assert( (x) );                                                           \
  |  |  104|  6.75k|   }                                                                           \
  |  |  105|  6.75k|}
  ------------------
  342|  6.75k|}
_ZN5resip4DataC2EPKc:
  346|   254k|{
  347|   254k|   initFromString(str, str ? strlen(str) : 0);
  ------------------
  |  Branch (347:24): [True: 254k, False: 0]
  ------------------
  348|   254k|}
_ZN5resip4DataC2ERKS0_:
  356|  10.0M|{
  357|  10.0M|   initFromString(data.mBuf, data.mSize);
  358|  10.0M|}
_ZN5resip4DataC2Ei:
  383|  7.50k|{
  384|  7.50k|   if (val == 0)
  ------------------
  |  Branch (384:8): [True: 212, False: 7.29k]
  ------------------
  385|    212|   {
  386|    212|      mBuf[0] = '0';
  387|    212|      mBuf[1] = 0;
  388|    212|      mSize = 1;
  389|    212|      return;
  390|    212|   }
  391|       |
  392|  7.29k|   bool neg = false;
  393|       |   
  394|  7.29k|   int32_t value = val;
  395|  7.29k|   if (value < 0)
  ------------------
  |  Branch (395:8): [True: 722, False: 6.57k]
  ------------------
  396|    722|   {
  397|    722|      value = -value;
  398|    722|      neg = true;
  399|    722|   }
  400|       |
  401|  7.29k|   int c = 0;
  402|  7.29k|   int32_t v = value;
  403|  14.9k|   while (v /= 10)
  ------------------
  |  Branch (403:11): [True: 7.62k, False: 7.29k]
  ------------------
  404|  7.62k|   {
  405|  7.62k|      ++c;
  406|  7.62k|   }
  407|       |
  408|  7.29k|   if (neg)
  ------------------
  |  Branch (408:8): [True: 722, False: 6.57k]
  ------------------
  409|    722|   {
  410|    722|      ++c;
  411|    722|   }
  412|       |
  413|  7.29k|   mSize = c+1;
  414|  7.29k|   mBuf[c+1] = 0;
  415|       |   
  416|  7.29k|   v = value;
  417|  22.2k|   while (v)
  ------------------
  |  Branch (417:11): [True: 14.9k, False: 7.29k]
  ------------------
  418|  14.9k|   {
  419|  14.9k|      mBuf[c--] = '0' + v%10;
  420|  14.9k|      v /= 10;
  421|  14.9k|   }
  422|       |
  423|  7.29k|   if (neg)
  ------------------
  |  Branch (423:8): [True: 722, False: 6.57k]
  ------------------
  424|    722|   {
  425|    722|      mBuf[0] = '-';
  426|    722|   }
  427|  7.29k|}
_ZN5resip4Data4copyEPKcj:
  692|   113k|{
  693|   113k|   if (mShareEnum == Data::Share || mCapacity < length+1)
  ------------------
  |  Branch (693:8): [True: 3.06k, False: 110k]
  |  Branch (693:37): [True: 15.3k, False: 94.9k]
  ------------------
  694|  18.3k|   {
  695|       |      // will alloc length+1, so the term NULL below is safe
  696|  18.3k|      resize(length, false);
  697|  18.3k|   }
  698|       |   // {buf} might be part of ourselves already, in which case {length}
  699|       |   // is smaller than our capacity, so resize above won't happen, so
  700|       |   // just memmove (not memcpy) and everything good
  701|   113k|   mSize = length;
  702|   113k|   if (mSize>0)
  ------------------
  |  Branch (702:8): [True: 88.6k, False: 24.6k]
  ------------------
  703|  88.6k|   {
  704|  88.6k|      memmove(mBuf, buf, mSize);
  705|  88.6k|   }
  706|       |   // DONT do term NULL until after copy, because may be shifting contents
  707|       |   // down and don't want to put NULL in middle of it
  708|   113k|   mBuf[mSize] = 0;
  709|   113k|   return *this;
  710|   113k|}
_ZN5resipeqERKNS_4DataES2_:
  734|   231k|{
  735|   231k|   if (lhs.mSize != rhs.mSize)
  ------------------
  |  Branch (735:8): [True: 133k, False: 97.8k]
  ------------------
  736|   133k|   {
  737|   133k|      return false;
  738|   133k|   }
  739|  97.8k|   return memcmp(lhs.mBuf, rhs.mBuf, lhs.mSize) == 0;
  740|   231k|}
_ZN5resipeqERKNS_4DataEPKc:
  744|  46.9k|{
  745|  46.9k|   resip_assert(rhs); // .dlb. not consistent with constructor
  ------------------
  |  |   96|  46.9k|#define resip_assert(x)                                                        \
  |  |   97|  46.9k|{                                                                              \
  |  |   98|  46.9k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 46.9k]
  |  |  ------------------
  |  |   99|  46.9k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  46.9k|   {                                                                           \
  |  |  103|  46.9k|      assert( (x) );                                                           \
  |  |  104|  46.9k|   }                                                                           \
  |  |  105|  46.9k|}
  ------------------
  746|  46.9k|   if (strncmp(lhs.mBuf, rhs, lhs.mSize) != 0)
  ------------------
  |  Branch (746:8): [True: 9.30k, False: 37.6k]
  ------------------
  747|  9.30k|   {
  748|  9.30k|      return false;
  749|  9.30k|   }
  750|  37.6k|   return strlen(rhs) == lhs.mSize;
  751|  46.9k|}
_ZN5resipltERKNS_4DataES2_:
  755|     12|{
  756|     12|   int res = memcmp(lhs.mBuf, rhs.mBuf, resipMin(lhs.mSize, rhs.mSize));
  757|       |
  758|     12|   if (res < 0)
  ------------------
  |  Branch (758:8): [True: 8, False: 4]
  ------------------
  759|      8|   {
  760|      8|      return true;
  761|      8|   }
  762|      4|   else if (res > 0)
  ------------------
  |  Branch (762:13): [True: 4, False: 0]
  ------------------
  763|      4|   {
  764|      4|      return false;
  765|      4|   }
  766|      0|   else
  767|      0|   {
  768|      0|      return (lhs.mSize < rhs.mSize);
  769|      0|   }
  770|     12|}
_ZN5resip4Data9truncate2Ej:
  887|    784|{
  888|    784|   if (len < mSize)
  ------------------
  |  Branch (888:8): [True: 400, False: 384]
  ------------------
  889|    400|   {
  890|       |      // NOTE: Do not write terminating NULL, to avoid un-doing Share
  891|    400|      mSize = len;
  892|    400|   }
  893|    784|   return *this;
  894|    784|}
_ZNK5resip4DataplERKS0_:
  898|  78.9k|{
  899|  78.9k|   Data tmp(mSize + (int)data.mSize, Data::Preallocate);
  900|  78.9k|   tmp.mSize = mSize + data.mSize;
  901|  78.9k|   tmp.mCapacity = tmp.mSize;
  902|  78.9k|   memcpy(tmp.mBuf, mBuf, mSize);
  903|  78.9k|   memcpy(tmp.mBuf + mSize, data.mBuf, data.mSize);
  904|  78.9k|   tmp.mBuf[tmp.mSize] = 0;
  905|       |
  906|  78.9k|   return tmp;
  907|  78.9k|}
_ZN5resip4Data6appendEPKcj:
 1005|  1.21G|{
 1006|  1.21G|   resip_assert(str);
  ------------------
  |  |   96|  1.21G|#define resip_assert(x)                                                        \
  |  |   97|  1.21G|{                                                                              \
  |  |   98|  1.21G|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 1.21G]
  |  |  ------------------
  |  |   99|  1.21G|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  1.21G|   {                                                                           \
  |  |  103|  1.21G|      assert( (x) );                                                           \
  |  |  104|  1.21G|   }                                                                           \
  |  |  105|  1.21G|}
  ------------------
 1007|  1.21G|   if (mCapacity <= mSize + len)  // append null terminates, thus the equality
  ------------------
  |  Branch (1007:8): [True: 45.5k, False: 1.21G]
  ------------------
 1008|  45.5k|   {
 1009|       |      // .dlb. pad for future growth?
 1010|  45.5k|      resize(((mSize + len +16)*3)/2, true);
 1011|  45.5k|   }
 1012|  1.21G|   else
 1013|  1.21G|   {
 1014|  1.21G|      if (mShareEnum == Share)
  ------------------
  |  Branch (1014:11): [True: 0, False: 1.21G]
  ------------------
 1015|      0|      {
 1016|      0|         resize(mSize + len, true);
 1017|      0|      }
 1018|  1.21G|   }
 1019|       |
 1020|       |   // could conceivably overlap
 1021|  1.21G|   memmove(mBuf + mSize, str, len);
 1022|  1.21G|   mSize += len;
 1023|  1.21G|   mBuf[mSize] = 0;
 1024|       |
 1025|  1.21G|   return *this;
 1026|  1.21G|}
_ZNK5resip4Data5c_strEv:
 1044|    130|{
 1045|    130|   if (mShareEnum == Data::Share || mSize == mCapacity)
  ------------------
  |  Branch (1045:8): [True: 118, False: 12]
  |  Branch (1045:37): [True: 0, False: 12]
  ------------------
 1046|    118|   {
 1047|    118|      const_cast<Data*>(this)->resize(mSize+1,true);
 1048|    118|   }
 1049|       |   // mostly is zero terminated, but not by DataStream
 1050|    130|   mBuf[mSize] = 0;
 1051|    130|   return mBuf;
 1052|    130|}
_ZNK5resip4Data3ownEv:
 1056|  8.39k|{
 1057|  8.39k|   if (mShareEnum == Share)
  ------------------
  |  Branch (1057:8): [True: 8.39k, False: 0]
  ------------------
 1058|  8.39k|   {
 1059|  8.39k|      const_cast<Data*>(this)->resize(mSize, true);
 1060|  8.39k|   }
 1061|  8.39k|}
_ZN5resip4Data6resizeEjb:
 1067|   478k|{
 1068|   478k|   resip_assert(newCapacity >= mCapacity || mShareEnum == Data::Share);
  ------------------
  |  |   96|   478k|#define resip_assert(x)                                                        \
  |  |   97|   478k|{                                                                              \
  |  |   98|   480k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:11): [True: 476k, False: 1.66k]
  |  |  |  Branch (98:11): [True: 1.66k, False: 0]
  |  |  ------------------
  |  |   99|   478k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|   478k|   {                                                                           \
  |  |  103|   478k|      assert( (x) );                                                           \
  |  |  104|   478k|   }                                                                           \
  |  |  105|   478k|}
  ------------------
 1069|       |
 1070|   478k|   char *oldBuf = mBuf;
 1071|   478k|   bool needToDelete=(mShareEnum==Take);
 1072|       |
 1073|   478k|   size_t newBytes = newCapacity + 1;
 1074|   478k|   if(newBytes <= newCapacity)
  ------------------
  |  Branch (1074:7): [True: 0, False: 478k]
  ------------------
 1075|      0|   {
 1076|       |      // integer overflow
 1077|      0|      throw std::range_error("newCapacity too big");
 1078|      0|   }
 1079|       |
 1080|   478k|   if(newCapacity > LocalAlloc)
  ------------------
  |  Branch (1080:7): [True: 462k, False: 15.8k]
  ------------------
 1081|   462k|   {
 1082|   462k|      mBuf = new char[newBytes];
 1083|   462k|      mShareEnum = Take;
 1084|   462k|   }
 1085|  15.8k|   else
 1086|  15.8k|   {
 1087|  15.8k|      mBuf = mPreBuffer;
 1088|  15.8k|      mShareEnum = Borrow;
 1089|  15.8k|   }
 1090|       |
 1091|   478k|   if (copy)
  ------------------
  |  Branch (1091:8): [True: 460k, False: 18.5k]
  ------------------
 1092|   460k|   {
 1093|   460k|      memcpy(mBuf, oldBuf, mSize);
 1094|   460k|      mBuf[mSize] = 0;
 1095|   460k|   }
 1096|       |
 1097|   478k|   if (needToDelete)
  ------------------
  |  Branch (1097:8): [True: 368k, False: 110k]
  ------------------
 1098|   368k|   {
 1099|   368k|      delete[] oldBuf;
 1100|   368k|   }
 1101|       |
 1102|   478k|   mCapacity = newCapacity;
 1103|   478k|}
_Z24urlNonEncodedCharsInitFnv:
 1316|      2|{
 1317|       |   // query part of HTTP URL can be a pchar, slash, or question
 1318|       |   // pchar is unreserved, subdelims, colon, at-sign
 1319|       |
 1320|    514|   for (int i = 0; i < 256; ++i)
  ------------------
  |  Branch (1320:20): [True: 512, False: 2]
  ------------------
 1321|    512|   {
 1322|    512|      unsigned char c(i);
 1323|    512|      urlNonEncodedChars[c] = (isalpha(c) ||  // unreserved
  ------------------
  |  Branch (1323:32): [True: 104, False: 408]
  ------------------
 1324|    512|                               isdigit(c) ||  // unreserved
  ------------------
  |  Branch (1324:32): [True: 20, False: 388]
  ------------------
 1325|    512|                               c == '-' ||  // these first 4 are unreserved
  ------------------
  |  Branch (1325:32): [True: 2, False: 386]
  ------------------
 1326|    512|                               c == '_' ||
  ------------------
  |  Branch (1326:32): [True: 2, False: 384]
  ------------------
 1327|    512|                               c == '.' ||
  ------------------
  |  Branch (1327:32): [True: 2, False: 382]
  ------------------
 1328|    512|                               c == '~' ||
  ------------------
  |  Branch (1328:32): [True: 2, False: 380]
  ------------------
 1329|    512|                               c == '!' ||  // these are subdelims (allowed in pchars)
  ------------------
  |  Branch (1329:32): [True: 2, False: 378]
  ------------------
 1330|    512|                               c == '$' ||
  ------------------
  |  Branch (1330:32): [True: 2, False: 376]
  ------------------
 1331|       |//                               c == '&' ||  // while these are allowed subdelims, this is an error
 1332|       |//                               c == '+' ||  // I believe this is an error as well.
 1333|    512|                               c == '\'' ||
  ------------------
  |  Branch (1333:32): [True: 2, False: 374]
  ------------------
 1334|    512|                               c == '(' ||
  ------------------
  |  Branch (1334:32): [True: 2, False: 372]
  ------------------
 1335|    512|                               c == ')' ||
  ------------------
  |  Branch (1335:32): [True: 2, False: 370]
  ------------------
 1336|    512|                               c == '*' ||
  ------------------
  |  Branch (1336:32): [True: 2, False: 368]
  ------------------
 1337|    512|                               c == ',' ||
  ------------------
  |  Branch (1337:32): [True: 2, False: 366]
  ------------------
 1338|    512|                               c == ';' ||
  ------------------
  |  Branch (1338:32): [True: 2, False: 364]
  ------------------
 1339|    512|                               c == '=' ||
  ------------------
  |  Branch (1339:32): [True: 2, False: 362]
  ------------------
 1340|    512|                               c == ':' ||   // next two explicitly allowed in pchar
  ------------------
  |  Branch (1340:32): [True: 2, False: 360]
  ------------------
 1341|    512|                               c == '@' ||   
  ------------------
  |  Branch (1341:32): [True: 2, False: 358]
  ------------------
 1342|    512|                               c == '/' ||   // next two explicitly allowed in query in addition to pchar
  ------------------
  |  Branch (1342:32): [True: 2, False: 356]
  ------------------
 1343|    512|                               c == '?');    
  ------------------
  |  Branch (1343:32): [True: 2, False: 354]
  ------------------
 1344|    512|   }
 1345|       |
 1346|      2|   return false;
 1347|      2|}
_ZNK5resip4Data3hexEv:
 1510|  6.24k|{
 1511|  6.24k|   Data ret( 2*mSize, Data::Preallocate);
 1512|       |
 1513|  6.24k|   const char* p = mBuf;
 1514|  6.24k|   char* r = ret.mBuf;
 1515|  56.1k|   for (size_type i=0; i < mSize; ++i)
  ------------------
  |  Branch (1515:24): [True: 49.9k, False: 6.24k]
  ------------------
 1516|  49.9k|   {
 1517|  49.9k|      unsigned char temp = *p++;
 1518|       |
 1519|  49.9k|      int hi = (temp & 0xf0)>>4;
 1520|  49.9k|      int low = (temp & 0xf);
 1521|       |
 1522|  49.9k|      *r++ = hexmap[hi];
 1523|  49.9k|      *r++ = hexmap[low];
 1524|  49.9k|   }
 1525|  6.24k|   *r = 0;
 1526|  6.24k|   ret.mSize = 2*mSize;
 1527|  6.24k|   return ret;
 1528|  6.24k|}
_ZN5resip4Data15schemeLowercaseEv:
 1594|  8.19k|{
 1595|  8.19k|   own();
 1596|  8.19k|   char* p = mBuf;
 1597|  15.8M|   for (size_type i=0; i < mSize; ++i)
  ------------------
  |  Branch (1597:24): [True: 15.8M, False: 8.19k]
  ------------------
 1598|  15.8M|   {
 1599|  15.8M|      *p |= ' ';
 1600|  15.8M|      ++p;
 1601|  15.8M|   }
 1602|  8.19k|   return *this;
 1603|  8.19k|}
_ZN5resip4Data7rawHashEPKhm:
 1938|   103k|{
 1939|       |   // 4 byte Pearson's hash
 1940|       |   // essentially random hashing
 1941|       |
 1942|   103k|   union 
 1943|   103k|   {
 1944|   103k|         size_t st;
 1945|   103k|         unsigned char bytes[4];
 1946|   103k|   };
 1947|   103k|   st = 0; // suppresses warnings about unused st
 1948|   103k|   bytes[0] = randomPermutation[0];
 1949|   103k|   bytes[1] = randomPermutation[1];
 1950|   103k|   bytes[2] = randomPermutation[2];
 1951|   103k|   bytes[3] = randomPermutation[3];
 1952|       |
 1953|   103k|   const unsigned char* end = c + size;
 1954|   794k|   for ( ; c != end; ++c)
  ------------------
  |  Branch (1954:12): [True: 690k, False: 103k]
  ------------------
 1955|   690k|   {
 1956|   690k|      bytes[0] = randomPermutation[*c ^ bytes[0]];
 1957|   690k|      bytes[1] = randomPermutation[*c ^ bytes[1]];
 1958|   690k|      bytes[2] = randomPermutation[*c ^ bytes[2]];
 1959|   690k|      bytes[3] = randomPermutation[*c ^ bytes[3]];
 1960|   690k|   }
 1961|       |
 1962|       |   // convert from network to host byte order
 1963|   103k|   return ntohl((u_long)st);
 1964|   103k|}
_ZN5resip4Data27rawCaseInsensitiveTokenHashEPKhm:
 2041|    148|{
 2042|       |   // .bwc. Hsieh hash, with some bitmasking to get the case-insensitive 
 2043|       |   // property (this is what all the "0x2020 |" business is about.)
 2044|    148|   uint32_t hash = len, tmp;
 2045|    148|   int rem;
 2046|       |
 2047|    148|    if (len <= 0 || data == NULL) return 0;
  ------------------
  |  Branch (2047:9): [True: 0, False: 148]
  |  Branch (2047:21): [True: 0, False: 148]
  ------------------
 2048|       |
 2049|    148|    rem = len & 3;
 2050|    148|    len >>= 2;
 2051|       |
 2052|    148|    union 
 2053|    148|    {
 2054|    148|          uint32_t masked;
 2055|    148|          uint16_t ui16[2];
 2056|    148|    };
 2057|       |
 2058|       |    /* Main loop */
 2059|    432|    for (;len > 0; len--) 
  ------------------
  |  Branch (2059:11): [True: 284, False: 148]
  ------------------
 2060|    284|    {
 2061|       |        // mask out bit 6 for case-insensitivity
 2062|    284|        masked = (0x20202020 | get32bits(data));
  ------------------
  |  | 2027|    284|#define get32bits(d) ((get16bits(d+2) << 16) + get16bits(d))
  |  |  ------------------
  |  |  |  | 2016|    284|#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
  |  |  |  | 2017|    284|                       +(uint32_t)(((const uint8_t *)(d))[0]) )
  |  |  ------------------
  |  |               #define get32bits(d) ((get16bits(d+2) << 16) + get16bits(d))
  |  |  ------------------
  |  |  |  | 2016|    284|#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
  |  |  |  | 2017|    284|                       +(uint32_t)(((const uint8_t *)(d))[0]) )
  |  |  ------------------
  ------------------
 2063|    284|        hash  += ui16[0];
 2064|    284|        tmp    = ((uint32_t)ui16[1] << 11) ^ hash;
 2065|    284|        hash   = (hash << 16) ^ tmp;
 2066|    284|        data  += 2*sizeof (uint16_t);
 2067|    284|        hash  += hash >> 11;
 2068|    284|    }
 2069|       |
 2070|       |    /* Handle end cases */
 2071|    148|    switch (rem) 
  ------------------
  |  Branch (2071:13): [True: 22, False: 126]
  ------------------
 2072|    148|    {
 2073|     82|        case 3: hash += (0x2020 | get16bits (data));
  ------------------
  |  | 2016|     82|#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
  |  | 2017|     82|                       +(uint32_t)(((const uint8_t *)(d))[0]) )
  ------------------
  |  Branch (2073:9): [True: 82, False: 66]
  ------------------
 2074|     82|                hash ^= hash << 16;
 2075|     82|                hash ^= (0x20 | data[sizeof (uint16_t)]) << 18;
 2076|     82|                hash += hash >> 11;
 2077|     82|                break;
 2078|     16|        case 2: hash += (0x2020 | get16bits (data));
  ------------------
  |  | 2016|     16|#define get16bits(d) ((((uint32_t)(((const uint8_t *)(d))[1])) << 8)\
  |  | 2017|     16|                       +(uint32_t)(((const uint8_t *)(d))[0]) )
  ------------------
  |  Branch (2078:9): [True: 16, False: 132]
  ------------------
 2079|     16|                hash ^= hash << 11;
 2080|     16|                hash += hash >> 17;
 2081|     16|                break;
 2082|     28|        case 1: hash += (0x20 | *data);
  ------------------
  |  Branch (2082:9): [True: 28, False: 120]
  ------------------
 2083|     28|                hash ^= hash << 10;
 2084|     28|                hash += hash >> 1;
 2085|    148|    }
 2086|       |
 2087|       |    /* Force "avalanching" of final 127 bits */
 2088|    148|    hash ^= hash << 3;
 2089|    148|    hash += hash >> 5;
 2090|    148|    hash ^= hash << 4;
 2091|    148|    hash += hash >> 17;
 2092|    148|    hash ^= hash << 25;
 2093|    148|    hash += hash >> 6;
 2094|       |
 2095|    148|    return hash;
 2096|       |
 2097|       |//   union 
 2098|       |//   {
 2099|       |//         size_t st;
 2100|       |//         unsigned char bytes[4];
 2101|       |//   };
 2102|       |//   st = 0; // suppresses warnings about unused st
 2103|       |//   bytes[0] = randomPermutation[0];
 2104|       |//   bytes[1] = randomPermutation[1];
 2105|       |//   bytes[2] = randomPermutation[2];
 2106|       |//   bytes[3] = randomPermutation[3];
 2107|       |//
 2108|       |//   const unsigned char* end = c + size;
 2109|       |//   for ( ; c != end; ++c)
 2110|       |//   {
 2111|       |//       union
 2112|       |//       {
 2113|       |//         uint32_t temp;
 2114|       |//         uint8_t cccc[4];
 2115|       |//       };
 2116|       |//       // .bwc. Mask out bit 6, use a multiplication op to write the 
 2117|       |//       // resulting byte to each of the 4 bytes in temp, and xor the whole 
 2118|       |//       // thing with bytes/st.
 2119|       |//      temp = ( (*c | ' ') * 16843009UL) ^ st;
 2120|       |//      bytes[0] = randomPermutation[cccc[0]];
 2121|       |//      bytes[1] = randomPermutation[cccc[1]];
 2122|       |//      bytes[2] = randomPermutation[cccc[2]];
 2123|       |//      bytes[3] = randomPermutation[cccc[3]];
 2124|       |//   }
 2125|       |//
 2126|       |//   // convert from network to host byte order
 2127|       |//   return ntohl((u_long)st);
 2128|    148|}
_ZNK5resip4Data4hashEv:
 2145|   103k|{
 2146|   103k|   return rawHash((const unsigned char*)(this->data()), this->size());
 2147|   103k|}
_ZNK5resip4Data24caseInsensitiveTokenHashEv:
 2157|    148|{
 2158|    148|   return rawCaseInsensitiveTokenHash((const unsigned char*)(this->data()), this->size());
 2159|    148|}
_ZN5resip4Data8toBitsetERKS0_:
 2255|     19|{
 2256|     19|   std::bitset<256> result;
 2257|     19|   result.reset();
 2258|    464|   for (unsigned int i=0; i!=chars.mSize;++i)
  ------------------
  |  Branch (2258:27): [True: 445, False: 19]
  ------------------
 2259|    445|   {
 2260|    445|      result.set(*(unsigned char*)(chars.mBuf+i));
 2261|    445|   }
 2262|     19|   return result;
 2263|     19|}
_ZN5resip4Data14initFromStringEPKcj:
  274|  23.7M|{
  275|  23.7M|   mSize = len;
  276|  23.7M|   if(len > 0)
  ------------------
  |  Branch (276:7): [True: 20.8M, False: 2.96M]
  ------------------
  277|  20.8M|   {
  278|  20.8M|      resip_assert(str);
  ------------------
  |  |   96|  20.8M|#define resip_assert(x)                                                        \
  |  |   97|  20.8M|{                                                                              \
  |  |   98|  20.8M|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 20.8M]
  |  |  ------------------
  |  |   99|  20.8M|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  20.8M|   {                                                                           \
  |  |  103|  20.8M|      assert( (x) );                                                           \
  |  |  104|  20.8M|   }                                                                           \
  |  |  105|  20.8M|}
  ------------------
  279|  20.8M|   }
  280|  23.7M|   size_t bytes = len + 1;
  281|  23.7M|   if(bytes <= len)
  ------------------
  |  Branch (281:7): [True: 0, False: 23.7M]
  ------------------
  282|      0|   {
  283|       |      // integer overflow
  284|      0|      throw std::bad_alloc();
  285|      0|   }
  286|  23.7M|   if(bytes > LocalAlloc)
  ------------------
  |  Branch (286:7): [True: 375k, False: 23.4M]
  ------------------
  287|   375k|   {
  288|   375k|      mBuf = new char[bytes];
  289|   375k|      mCapacity = mSize;
  290|   375k|      mShareEnum = Take;
  291|   375k|   }
  292|  23.4M|   else
  293|  23.4M|   {
  294|  23.4M|      mBuf = mPreBuffer;
  295|  23.4M|      mCapacity = LocalAlloc;
  296|  23.4M|      mShareEnum = Borrow;
  297|  23.4M|   }
  298|  23.7M|   if(str)
  ------------------
  |  Branch (298:7): [True: 23.7M, False: 26]
  ------------------
  299|  23.7M|   {
  300|  23.7M|      memcpy(mBuf, str, len);
  301|  23.7M|   }
  302|  23.7M|   mBuf[mSize] = 0;
  303|  23.7M|}

_ZN5resip4DataD2Ev:
  309|  36.8M|      {
  310|  36.8M|         if (mShareEnum == Take)
  ------------------
  |  Branch (310:14): [True: 586k, False: 36.2M]
  ------------------
  311|   586k|         {
  312|   586k|            delete[] mBuf;
  313|   586k|         }
  314|  36.8M|      }
_ZN5resip13DataLocalSizeILi16EEC2Em:
   41|    196|      explicit DataLocalSize(size_t) noexcept {}
_ZN5resip4DataC2Ev:
   98|  12.7M|      {
   99|  12.7M|         mBuf[mSize] = 0;
  100|  12.7M|      }
_ZN5resip4DataaSERKS0_:
  408|   112k|      {
  409|   112k|         if (&data==this)
  ------------------
  |  Branch (409:14): [True: 0, False: 112k]
  ------------------
  410|      0|             return *this;
  411|   112k|         return copy(data.mBuf,data.mSize);
  412|   112k|      }
_ZN5resip4DataaSEPKc:
  427|    424|      {
  428|    424|         return copy(str, (size_type)strlen(str));
  429|    424|      }
_ZN5resip4DatapLERKS0_:
  453|  3.22M|      {
  454|  3.22M|         return append(rhs.data(), rhs.size());
  455|  3.22M|      }
_ZN5resip4DatapLEPKc:
  465|   198k|      {
  466|   198k|         resip_assert(str);
  ------------------
  |  |   96|   198k|#define resip_assert(x)                                                        \
  |  |   97|   198k|{                                                                              \
  |  |   98|   198k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 198k]
  |  |  ------------------
  |  |   99|   198k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|   198k|   {                                                                           \
  |  |  103|   198k|      assert( (x) );                                                           \
  |  |  104|   198k|   }                                                                           \
  |  |  105|   198k|}
  ------------------
  467|   198k|         return append(str, (size_type)strlen(str));
  468|   198k|      }
_ZN5resip4DatapLEc:
  475|  1.20G|      {
  476|  1.20G|         return append(&c, 1);
  477|  1.20G|      }
_ZN5resip4DataixEj:
  493|    204|      {
  494|    204|         resip_assert(p < mSize);
  ------------------
  |  |   96|    204|#define resip_assert(x)                                                        \
  |  |   97|    204|{                                                                              \
  |  |   98|    204|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 204]
  |  |  ------------------
  |  |   99|    204|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|    204|   {                                                                           \
  |  |  103|    204|      assert( (x) );                                                           \
  |  |  104|    204|   }                                                                           \
  |  |  105|    204|}
  ------------------
  495|    204|         own();
  496|    204|         return mBuf[p];
  497|    204|      }
_ZNK5resip4DataixEj:
  503|  3.37M|      {
  504|  3.37M|         resip_assert(p < mSize);
  ------------------
  |  |   96|  3.37M|#define resip_assert(x)                                                        \
  |  |   97|  3.37M|{                                                                              \
  |  |   98|  3.37M|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 3.37M]
  |  |  ------------------
  |  |   99|  3.37M|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  3.37M|   {                                                                           \
  |  |  103|  3.37M|      assert( (x) );                                                           \
  |  |  104|  3.37M|   }                                                                           \
  |  |  105|  3.37M|}
  ------------------
  505|  3.37M|         return mBuf[p];
  506|  3.37M|      }
_ZNK5resip4Data5emptyEv:
  551|   773k|      bool empty() const noexcept { return mSize == 0; }
_ZNK5resip4Data4sizeEv:
  559|  30.4M|      size_type size() const noexcept { return mSize; }
_ZNK5resip4Data4dataEv:
  569|  12.5M|      {
  570|  12.5M|         return mBuf;
  571|  12.5M|      }
_ZN5resip4Data5clearEv:
  748|    784|      Data& clear() { return truncate2(0); };
_ZN5resip13isEqualNoCaseERKNS_4DataES2_:
 1024|  2.51M|{
 1025|  2.51M|   return ( (left.size() == right.size()) &&
  ------------------
  |  Branch (1025:13): [True: 84.7k, False: 2.43M]
  ------------------
 1026|  2.51M|            (strncasecmp(left.data(), right.data(), left.size()) == 0) );
  ------------------
  |  Branch (1026:13): [True: 49.2k, False: 35.5k]
  ------------------
 1027|  2.51M|}
_ZN5resipneERKNS_4DataES2_:
 1094|  81.3k|inline bool operator!=(const Data& lhs, const Data& rhs) { return !(lhs == rhs); }
_ZN5resiplsERNSt3__113basic_ostreamIcNS0_11char_traitsIcEEEERKNS_4DataE:
 1111|   992k|{
 1112|   992k|   return strm.write(d.mBuf, d.mSize);
 1113|   992k|}

_ZN5resip10DataBufferC2ERNS_4DataE:
   18|  82.0k|{
   19|  82.0k|#ifdef RESIP_USE_STL_STREAMS
   20|  82.0k|   char* gbuf = const_cast<char*>(mStr.mBuf);
   21|  82.0k|   setg(gbuf, gbuf, gbuf+mStr.size());
   22|       |   // expose the excess capacity as the put buffer
   23|  82.0k|   setp(gbuf+mStr.mSize, gbuf+mStr.mCapacity);
   24|  82.0k|#endif
   25|  82.0k|}
_ZN5resip10DataBufferD2Ev:
   28|  82.0k|{}
_ZN5resip10DataBuffer4syncEv:
   80|   244k|{
   81|   244k|   size_t len = pptr() - pbase();
   82|   244k|   if (len > 0)
  ------------------
  |  Branch (82:8): [True: 163k, False: 81.3k]
  ------------------
   83|   163k|   {
   84|   163k|      size_t pos = gptr() - eback();  // remember the get position
   85|   163k|      mStr.mSize += len;
   86|   163k|      char* gbuf = const_cast<char*>(mStr.data());
   87|       |      // reset the get buffer
   88|   163k|      setg(gbuf, gbuf+pos, gbuf+mStr.size());
   89|       |      // reset the put buffer
   90|   163k|      setp(gbuf + mStr.mSize, gbuf + mStr.mCapacity);
   91|   163k|   }
   92|   244k|   return 0;
   93|   244k|}
_ZN5resip10DataBuffer8overflowEi:
   97|   406k|{
   98|       |   // sync, but reallocate
   99|   406k|   size_t len = pptr() - pbase();
  100|       |   // .kw. test below is always true. Checked with David Butcher
  101|       |   // and he says this is safe but perhaps performs unrequired
  102|       |   // re-allocs.
  103|   406k|   if (len >= 0)
  ------------------
  |  Branch (103:8): [True: 406k, False: 0]
  ------------------
  104|   406k|   {
  105|   406k|      size_t pos = gptr() - eback();  // remember the get position
  106|       |
  107|       |      // update the length
  108|   406k|      mStr.mSize += len;
  109|       |
  110|       |      // resize the underlying Data and reset the input buffer
  111|   406k|      mStr.resize(((mStr.mCapacity+16)*3)/2, true);
  112|       |
  113|   406k|      char* gbuf = const_cast<char*>(mStr.mBuf);
  114|       |      // reset the get buffer
  115|   406k|      setg(gbuf, gbuf+pos, gbuf+mStr.mSize);
  116|       |      // reset the put buffer
  117|   406k|      setp(gbuf + mStr.mSize, gbuf + mStr.mCapacity);
  118|   406k|   }
  119|   406k|   if (c != -1)
  ------------------
  |  Branch (119:8): [True: 406k, False: 0]
  ------------------
  120|   406k|   {
  121|   406k|      mStr.mBuf[mStr.mSize] = c;
  122|   406k|      pbump(1);
  123|   406k|      return c;
  124|   406k|   }
  125|      0|   return 0;
  126|   406k|}
_ZN5resip11oDataStreamC1ERNS_4DataE:
  141|    700|{
  142|       |   // don't call this with a read-only buffer!
  143|    700|   resip_assert(str.mShareEnum != Data::Share);
  ------------------
  |  |   96|    700|#define resip_assert(x)                                                        \
  |  |   97|    700|{                                                                              \
  |  |   98|    700|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 700]
  |  |  ------------------
  |  |   99|    700|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|    700|   {                                                                           \
  |  |  103|    700|      assert( (x) );                                                           \
  |  |  104|    700|   }                                                                           \
  |  |  105|    700|}
  ------------------
  144|    700|}
_ZN5resip11oDataStreamD2Ev:
  147|    700|{
  148|    700|   flush();
  149|    700|}
_ZN5resip10DataStreamC1ERNS_4DataE:
  171|  81.3k|{
  172|       |   // don't call this with a read-only buffer!
  173|  81.3k|   resip_assert(str.mShareEnum != Data::Share);
  ------------------
  |  |   96|  81.3k|#define resip_assert(x)                                                        \
  |  |   97|  81.3k|{                                                                              \
  |  |   98|  81.3k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 81.3k]
  |  |  ------------------
  |  |   99|  81.3k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  81.3k|   {                                                                           \
  |  |  103|  81.3k|      assert( (x) );                                                           \
  |  |  104|  81.3k|   }                                                                           \
  |  |  105|  81.3k|}
  ------------------
  174|  81.3k|}
_ZN5resip10DataStreamD2Ev:
  177|  81.3k|{
  178|  81.3k|   flush();
  179|  81.3k|}

_ZN5resip9DinkyPoolILj3732EE8allocateEm:
   27|   210k|      {
   28|   210k|         if((8*count)+size <= S)
  ------------------
  |  Branch (28:13): [True: 40.1k, False: 169k]
  ------------------
   29|  40.1k|         {
   30|  40.1k|            void* result=mBuf[count];
   31|  40.1k|            count+=(size+7)/8;
   32|  40.1k|            return result;
   33|  40.1k|         }
   34|   169k|         heapBytes += size;
   35|   169k|         return ::operator new(size);
   36|   210k|      }
_ZN5resip9DinkyPoolILj3732EE10deallocateEPv:
   39|   210k|      {
   40|   210k|         if(ptr >= (void*)mBuf[0] && ptr < (void*)mBuf[(S+7)/8])
  ------------------
  |  Branch (40:13): [True: 163k, False: 46.1k]
  |  Branch (40:38): [True: 40.1k, False: 123k]
  ------------------
   41|  40.1k|         {
   42|  40.1k|            return;
   43|  40.1k|         }
   44|   169k|         ::operator delete(ptr);
   45|   169k|      }
_ZN5resip9DinkyPoolILj3732EEC2Ev:
   23|  9.60k|      DinkyPool() : count(0), heapBytes(0) {}
_ZNK5resip9DinkyPoolILj3732EE8max_sizeEv:
   48|  22.2k|      {
   49|  22.2k|         return std::numeric_limits<size_t>::max();
   50|  22.2k|      }

_ZN5resip7DnsUtil9inet_ntopERK8in6_addr:
  249|     88|{
  250|     88|   char str[256];
  251|     88|   inet_ntop(AF_INET6, &addr, str, sizeof(str));
  252|     88|   return Data(str);
  253|     88|}
_ZN5resip7DnsUtil9inet_ptonERKNS_4DataER7in_addr:
  275|     10|{
  276|     10|   return DnsUtil::inet_pton(AF_INET, printableIp.c_str(), &dst);
  277|     10|}
_ZN5resip7DnsUtil9inet_ptonERKNS_4DataER8in6_addr:
  282|    120|{
  283|    120|   return DnsUtil::inet_pton(AF_INET6, printableIp.c_str(), &dst);
  284|    120|}
_ZN5resip7DnsUtil13isIpV4AddressERKNS_4DataE:
  290|     12|{
  291|       |   // ok, this is fairly monstrous but it works. It is also more than 10 times 
  292|       |   // faster than the commented-out code below, in the worst case scenario.
  293|       |
  294|     12|   const char* first = ipAddress.data();
  295|     12|   const char* end = first + ipAddress.size();
  296|     12|   int octets = 0;
  297|     52|   while(octets++ < 4)
  ------------------
  |  Branch (297:10): [True: 42, False: 10]
  ------------------
  298|     42|   {
  299|     42|      const char* last=first;
  300|       |
  301|       |      // .bwc. I have tried using std::bitset instead of the 0 <= *last <= 9
  302|       |      // check, but it is slower.
  303|    108|      while(last != end && *last >= '0' && *last <= '9' && last - first <= 3)
  ------------------
  |  Branch (303:13): [True: 98, False: 10]
  |  Branch (303:28): [True: 68, False: 30]
  |  Branch (303:44): [True: 66, False: 2]
  |  Branch (303:60): [True: 66, False: 0]
  ------------------
  304|     66|      {
  305|       |         // Skip at most 3 decimals, without going past the end of the buffer.
  306|     66|         ++last;
  307|     66|      }
  308|       |
  309|       |      // last should now point to either a '.', or the end of the buffer.
  310|       |
  311|     42|      switch(last-first) // number of decimals in this octet
  312|     42|      {
  313|      6|         case 2:
  ------------------
  |  Branch (313:10): [True: 6, False: 36]
  ------------------
  314|      6|            if(*first == '0')
  ------------------
  |  Branch (314:16): [True: 0, False: 6]
  ------------------
  315|      0|            {
  316|       |               // Two-decimal octet can't begin with 0...
  317|       |               // ?bwc? Maybe let this slide?
  318|      0|               return false;
  319|      0|            }
  320|     30|         case 1:
  ------------------
  |  Branch (320:10): [True: 24, False: 18]
  ------------------
  321|       |            // ... but a one-decimal octet can begin with a 0.
  322|     30|            break; // x. or xx.
  323|     10|         case 3:
  ------------------
  |  Branch (323:10): [True: 10, False: 32]
  ------------------
  324|       |            // xxx. (could be too large)
  325|       |            // .bwc. I have tried implementing this with a reinterpret_cast 
  326|       |            // and a UInt32 comparison (accounting for endianness), and memcmp, 
  327|       |            // but both appear to be slower, even when using 
  328|       |            // "255.255.255.255" (which maximizes the number of comparisons).
  329|     10|            if(*first != '1')
  ------------------
  |  Branch (329:16): [True: 0, False: 10]
  ------------------
  330|      0|            {
  331|      0|               if(*first == '2')
  ------------------
  |  Branch (331:19): [True: 0, False: 0]
  ------------------
  332|      0|               {
  333|       |                  // Might have overflow if first digit is 2
  334|      0|                  if(*(first+1)>'5' || (*(first+1)=='5' && *(first+2)>'5'))
  ------------------
  |  Branch (334:22): [True: 0, False: 0]
  |  Branch (334:41): [True: 0, False: 0]
  |  Branch (334:60): [True: 0, False: 0]
  ------------------
  335|      0|                  {
  336|      0|                     return false;
  337|      0|                  }
  338|      0|               }
  339|      0|               else
  340|      0|               {
  341|       |                  // First digit greater than 2 means overflow, 0 not allowed.
  342|      0|                  return false;
  343|      0|               }
  344|      0|            }
  345|     10|            break;
  346|     10|         default:
  ------------------
  |  Branch (346:10): [True: 2, False: 40]
  ------------------
  347|      2|            return false;
  348|     42|      }
  349|       |
  350|     40|      if(octets < 4)
  ------------------
  |  Branch (350:10): [True: 30, False: 10]
  ------------------
  351|     30|      {
  352|     30|         if(last != end && *last == '.')
  ------------------
  |  Branch (352:13): [True: 30, False: 0]
  |  Branch (352:28): [True: 30, False: 0]
  ------------------
  353|     30|         {
  354|       |            // Skip over the '.'
  355|     30|            ++last;
  356|     30|         }
  357|      0|         else
  358|      0|         {
  359|      0|            return false;
  360|      0|         }
  361|     30|      }
  362|     40|      first = last; // is now pointing at either the first digit in the next
  363|       |                     // octet, or the end of the buffer.
  364|     40|   }
  365|       |
  366|     10|   return first==end;
  367|       |//   unsigned int p1,p2,p3,p4;
  368|       |//   int count=0;
  369|       |//   int result = sscanf( ipAddress.c_str(),
  370|       |//                        "%u.%u.%u.%u%n",
  371|       |//                        &p1, &p2, &p3, &p4, &count );
  372|       |//
  373|       |//   if ( (result == 4) && (p1 <= 255) && (p2 <= 255) && (p3 <= 255) && (p4 <= 255) && (count == int(ipAddress.size())) )
  374|       |//   {
  375|       |//      return true;
  376|       |//   }
  377|       |//   else
  378|       |//   {
  379|       |//      return false;
  380|       |//   }
  381|     12|}
_ZN5resip7DnsUtil13isIpV6AddressERKNS_4DataE:
  386|      2|{
  387|      2|   if (ipAddress.empty())
  ------------------
  |  Branch (387:8): [True: 0, False: 2]
  ------------------
  388|      0|   {
  389|      0|      return false;
  390|      0|   }
  391|       |
  392|       |   // first character must be a hex digit or colon
  393|      2|   if (!isxdigit(*ipAddress.data()) &&
  ------------------
  |  Branch (393:8): [True: 0, False: 2]
  ------------------
  394|      2|       *ipAddress.data() != ':')
  ------------------
  |  Branch (394:8): [True: 0, False: 0]
  ------------------
  395|      0|   {
  396|      0|      return false;
  397|      0|   }
  398|       |
  399|      2|   switch (ipAddress.size())
  400|      2|   {
  401|      0|      case 1:
  ------------------
  |  Branch (401:7): [True: 0, False: 2]
  ------------------
  402|      0|         return false;
  403|      0|      case 2:
  ------------------
  |  Branch (403:7): [True: 0, False: 2]
  ------------------
  404|      0|         return (*(ipAddress.data()+1) == ':' ||
  ------------------
  |  Branch (404:18): [True: 0, False: 0]
  ------------------
  405|      0|                 *(ipAddress.data()+0) == ':');
  ------------------
  |  Branch (405:18): [True: 0, False: 0]
  ------------------
  406|      0|      case 3:
  ------------------
  |  Branch (406:7): [True: 0, False: 2]
  ------------------
  407|      0|         return (*(ipAddress.data()+2) == ':' ||
  ------------------
  |  Branch (407:18): [True: 0, False: 0]
  ------------------
  408|      0|                 *(ipAddress.data()+1) == ':' ||
  ------------------
  |  Branch (408:18): [True: 0, False: 0]
  ------------------
  409|      0|                 *(ipAddress.data()+0) == ':');
  ------------------
  |  Branch (409:18): [True: 0, False: 0]
  ------------------
  410|      0|      case 4:
  ------------------
  |  Branch (410:7): [True: 0, False: 2]
  ------------------
  411|      0|         return (*(ipAddress.data()+3) == ':' ||
  ------------------
  |  Branch (411:18): [True: 0, False: 0]
  ------------------
  412|      0|                 *(ipAddress.data()+2) == ':' ||
  ------------------
  |  Branch (412:18): [True: 0, False: 0]
  ------------------
  413|      0|                 *(ipAddress.data()+1) == ':' ||
  ------------------
  |  Branch (413:18): [True: 0, False: 0]
  ------------------
  414|      0|                 *(ipAddress.data()+0) == ':');
  ------------------
  |  Branch (414:18): [True: 0, False: 0]
  ------------------
  415|      2|      default:
  ------------------
  |  Branch (415:7): [True: 2, False: 0]
  ------------------
  416|       |
  417|      2|         return (*(ipAddress.data()+4) == ':' ||
  ------------------
  |  Branch (417:18): [True: 2, False: 0]
  ------------------
  418|      2|                 *(ipAddress.data()+3) == ':' ||
  ------------------
  |  Branch (418:18): [True: 0, False: 0]
  ------------------
  419|      2|                 *(ipAddress.data()+2) == ':' ||
  ------------------
  |  Branch (419:18): [True: 0, False: 0]
  ------------------
  420|      2|                 *(ipAddress.data()+1) == ':' ||
  ------------------
  |  Branch (420:18): [True: 0, False: 0]
  ------------------
  421|      2|                 *(ipAddress.data()+0) == ':');
  ------------------
  |  Branch (421:18): [True: 0, False: 0]
  ------------------
  422|      2|   }
  423|      2|}
_ZN5resip7DnsUtil23canonicalizeIpV6AddressERKNS_4DataE:
  427|    118|{
  428|    118|#ifdef USE_IPV6
  429|    118|   struct in6_addr dst;
  430|    118|   int res = DnsUtil::inet_pton(ipV6Address, dst);
  431|    118|   if (res <= 0)
  ------------------
  |  Branch (431:8): [True: 30, False: 88]
  ------------------
  432|     30|   {
  433|       |      // .bwc. Until we supply an isIpV6Address that works, this is not an
  434|       |      // error on anyone's part but our own. Don't log as a warning/error.
  435|     30|      InfoLog(<< ipV6Address << " is not a well formed IPV6 address");
  ------------------
  |  |  131|     30|#define InfoLog(args_) \
  |  |  ------------------
  |  |  |  |  151|     30|   do                                                                   \
  |  |  |  |  152|     30|   {                                                                    \
  |  |  |  |  153|     30|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 30]
  |  |  |  |  ------------------
  |  |  |  |  154|     30|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|     30|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  132|     30|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Info, args_)
  ------------------
  436|       |      // .bwc. We should not assert in this function, because 
  437|       |      // DnsUtil::isIpV6Address does not do a full validity check. If we have no
  438|       |      // way of determining whether a V6 addr is valid before making this call,
  439|       |      // this call _needs_ to be safe.
  440|       |      // assert(0);
  441|     30|      return Data::Empty;
  442|     30|   }
  443|     88|   return DnsUtil::inet_ntop(dst);
  444|       |#else
  445|       |   // assert(0);
  446|       |
  447|       |   return ipV6Address;
  448|       |#endif
  449|    118|}
_ZN5resip7DnsUtil9inet_ntopEiPKvPcm:
  638|     88|{
  639|       |
  640|       |#ifdef __APPLE__
  641|       |   if(af==AF_INET)
  642|       |   {
  643|       |      // .bwc. inet_ntop4 seems to be implemented with sprintf on OS X.
  644|       |      // This code is about 5-6 times faster. Linux has a well-optimized 
  645|       |      // inet_ntop, however.
  646|       |      const uint8_t* bytes=(const uint8_t*)src;
  647|       |      Data dest(Data::Borrow, dst, sizeof("xxx.xxx.xxx.xxx."));
  648|       |      dest.clear();
  649|       |      dest.append(UInt8ToStr[bytes[0]].data(), UInt8ToStr[bytes[0]].size());
  650|       |      dest.append(UInt8ToStr[bytes[1]].data(), UInt8ToStr[bytes[1]].size());
  651|       |      dest.append(UInt8ToStr[bytes[2]].data(), UInt8ToStr[bytes[2]].size());
  652|       |      dest.append(UInt8ToStr[bytes[3]].data(), UInt8ToStr[bytes[3]].size()-1);
  653|       |      return dst;
  654|       |   }
  655|       |   else
  656|       |#endif // __APPLE__
  657|     88|   {
  658|     88|      return ::inet_ntop(af, src, dst, size);
  659|     88|   }
  660|     88|}
_ZN5resip7DnsUtil9inet_ptonEiPKcPv:
  663|    130|{
  664|    130|   return ::inet_pton(af, src, dst);
  665|    130|}

_ZNKSt3__14hashIN5resip4MimeEEclERKS2_:
   24|     74|#define HashValueImp(type, ret) size_t std::hash<type>::operator()(const type& data) const { return ret; }
_ZNKSt3__14hashIN5resip4DataEEclERKS2_:
   24|   103k|#define HashValueImp(type, ret) size_t std::hash<type>::operator()(const type& data) const { return ret; }

_ZN5resip20LogStaticInitializerC2Ev:
  105|    136|{
  106|    136|   if (mInstanceCounter++ == 0)
  ------------------
  |  Branch (106:8): [True: 2, False: 134]
  ------------------
  107|      2|   {
  108|      2|#ifdef LOG_ENABLE_THREAD_SETTING
  109|      2|         Log::mLevelKey = new ThreadIf::TlsKey;
  110|      2|         ThreadIf::tlsKeyCreate(*Log::mLevelKey, freeThreadSetting);
  111|      2|#endif
  112|       |
  113|      2|         Log::mLocalLoggerKey = new ThreadIf::TlsKey;
  114|      2|         ThreadIf::tlsKeyCreate(*Log::mLocalLoggerKey, freeLocalLogger);
  115|      2|   }
  116|    136|}
_ZN5resip3Log23parseSyslogFacilityNameERKNS_4DataE:
  166|      2|{
  167|      2|#ifndef WIN32
  168|       |   /* In theory, some platforms may not have all the log facilities
  169|       |      defined in syslog.h.  Only LOG_USER and LOG_LOCAL[0-7] are considered
  170|       |      mandatory.
  171|       |      If the compile fails with errors in this method, then the unsupported
  172|       |      facility names could be wrapped in conditional logic.
  173|       |   */
  174|      2|   if(facilityName == "LOG_AUTH")
  ------------------
  |  Branch (174:7): [True: 0, False: 2]
  ------------------
  175|      0|   {
  176|      0|      return LOG_AUTH;
  177|      0|   }
  178|      2|   else if(facilityName == "LOG_AUTHPRIV")
  ------------------
  |  Branch (178:12): [True: 0, False: 2]
  ------------------
  179|      0|   {
  180|      0|      return LOG_AUTHPRIV;
  181|      0|   }
  182|      2|   else if(facilityName == "LOG_CRON")
  ------------------
  |  Branch (182:12): [True: 0, False: 2]
  ------------------
  183|      0|   {
  184|      0|      return LOG_CRON;
  185|      0|   }
  186|      2|   else if(facilityName == "LOG_DAEMON")
  ------------------
  |  Branch (186:12): [True: 2, False: 0]
  ------------------
  187|      2|   {
  188|      2|      return LOG_DAEMON;
  189|      2|   }
  190|      0|   else if(facilityName == "LOG_FTP")
  ------------------
  |  Branch (190:12): [True: 0, False: 0]
  ------------------
  191|      0|   {
  192|      0|      return LOG_FTP;
  193|      0|   }
  194|      0|   else if(facilityName == "LOG_KERN")
  ------------------
  |  Branch (194:12): [True: 0, False: 0]
  ------------------
  195|      0|   {
  196|      0|      return LOG_KERN;
  197|      0|   }
  198|      0|   else if(facilityName == "LOG_LOCAL0")
  ------------------
  |  Branch (198:12): [True: 0, False: 0]
  ------------------
  199|      0|   {
  200|      0|      return LOG_LOCAL0;
  201|      0|   }
  202|      0|   else if(facilityName == "LOG_LOCAL1")
  ------------------
  |  Branch (202:12): [True: 0, False: 0]
  ------------------
  203|      0|   {
  204|      0|      return LOG_LOCAL1;
  205|      0|   }
  206|      0|   else if(facilityName == "LOG_LOCAL2")
  ------------------
  |  Branch (206:12): [True: 0, False: 0]
  ------------------
  207|      0|   {
  208|      0|      return LOG_LOCAL2;
  209|      0|   }
  210|      0|   else if(facilityName == "LOG_LOCAL3")
  ------------------
  |  Branch (210:12): [True: 0, False: 0]
  ------------------
  211|      0|   {
  212|      0|      return LOG_LOCAL3;
  213|      0|   }
  214|      0|   else if(facilityName == "LOG_LOCAL4")
  ------------------
  |  Branch (214:12): [True: 0, False: 0]
  ------------------
  215|      0|   {
  216|      0|      return LOG_LOCAL4;
  217|      0|   }
  218|      0|   else if(facilityName == "LOG_LOCAL5")
  ------------------
  |  Branch (218:12): [True: 0, False: 0]
  ------------------
  219|      0|   {
  220|      0|      return LOG_LOCAL5;
  221|      0|   }
  222|      0|   else if(facilityName == "LOG_LOCAL6")
  ------------------
  |  Branch (222:12): [True: 0, False: 0]
  ------------------
  223|      0|   {
  224|      0|      return LOG_LOCAL6;
  225|      0|   }
  226|      0|   else if(facilityName == "LOG_LOCAL7")
  ------------------
  |  Branch (226:12): [True: 0, False: 0]
  ------------------
  227|      0|   {
  228|      0|      return LOG_LOCAL7;
  229|      0|   }
  230|      0|   else if(facilityName == "LOG_LPR")
  ------------------
  |  Branch (230:12): [True: 0, False: 0]
  ------------------
  231|      0|   {
  232|      0|      return LOG_LPR;
  233|      0|   }
  234|      0|   else if(facilityName == "LOG_MAIL")
  ------------------
  |  Branch (234:12): [True: 0, False: 0]
  ------------------
  235|      0|   {
  236|      0|      return LOG_MAIL;
  237|      0|   }
  238|      0|   else if(facilityName == "LOG_NEWS")
  ------------------
  |  Branch (238:12): [True: 0, False: 0]
  ------------------
  239|      0|   {
  240|      0|      return LOG_NEWS;
  241|      0|   }
  242|      0|   else if(facilityName == "LOG_SYSLOG")
  ------------------
  |  Branch (242:12): [True: 0, False: 0]
  ------------------
  243|      0|   {
  244|      0|      return LOG_SYSLOG;
  245|      0|   }
  246|      0|   else if(facilityName == "LOG_USER")
  ------------------
  |  Branch (246:12): [True: 0, False: 0]
  ------------------
  247|      0|   {
  248|      0|      return LOG_USER;
  249|      0|   }
  250|      0|   else if(facilityName == "LOG_UUCP")
  ------------------
  |  Branch (250:12): [True: 0, False: 0]
  ------------------
  251|      0|   {
  252|      0|      return LOG_UUCP;
  253|      0|   }
  254|      0|#endif
  255|       |   // Nothing matched or syslog not supported on this platform
  256|      0|   return -1;
  257|      2|}
_ZN5resip3Log10initializeENS0_4TypeENS0_5LevelERKNS_4DataEPKcPNS_14ExternalLoggerES5_NS0_16MessageStructureES5_:
  266|      2|{
  267|      2|   {
  268|      2|      Lock lock(_mutex);
  269|      2|      mDefaultLoggerData.reset();   
  270|       |
  271|      2|      mDefaultLoggerData.set(type, level, logFileName, externalLogger, messageStructure, instanceName);
  272|       |
  273|      2|      ParseBuffer pb(appName);
  274|      2|      pb.skipToEnd();
  275|       |#ifdef _WIN32
  276|       |      pb.skipBackToChar('\\');
  277|       |#else
  278|      2|      pb.skipBackToChar('/');
  279|      2|#endif
  280|      2|      mAppName = pb.position();
  281|       |
  282|      2|      mInstanceName = instanceName;
  283|       |
  284|      2|#ifndef WIN32
  285|      2|      if (!syslogFacilityName.empty())
  ------------------
  |  Branch (285:11): [True: 2, False: 0]
  ------------------
  286|      2|      {
  287|      2|         mSyslogFacility = parseSyslogFacilityName(syslogFacilityName);
  288|      2|         if(mSyslogFacility == -1)
  ------------------
  |  Branch (288:13): [True: 0, False: 2]
  ------------------
  289|      0|         {
  290|      0|            mSyslogFacility = LOG_DAEMON;
  291|      0|            if(type == Log::Syslog)
  ------------------
  |  Branch (291:16): [True: 0, False: 0]
  ------------------
  292|      0|            {
  293|      0|               syslog(LOG_DAEMON | LOG_ERR, "invalid syslog facility name specified (%s), falling back to LOG_DAEMON", syslogFacilityName.c_str());
  294|      0|            }
  295|      0|         }
  296|      2|      }
  297|       |#else
  298|       |      if (type == Syslog)
  299|       |      {
  300|       |         std::cerr << "syslog not supported on windows, using cout!" << std::endl;
  301|       |         type = Cout;
  302|       |      }
  303|       |#endif
  304|       |
  305|      2|      char buffer[1024];  
  306|      2|      buffer[1023] = '\0';
  307|      2|      if(gethostname(buffer, sizeof(buffer)) == -1)
  ------------------
  |  Branch (307:10): [True: 0, False: 2]
  ------------------
  308|      0|      {
  309|      0|         mHostname = "?";
  310|      0|      }
  311|      2|      else
  312|      2|      {
  313|      2|         mHostname = buffer;
  314|      2|      }
  315|       |
  316|       |      // Note: for Windows users, you must call initNetwork to initialize WinSock before calling 
  317|       |      //       Log::initialize in order for getaddrinfo to be successful
  318|      2|      {
  319|      2|         struct addrinfo hints;
  320|      2|         struct addrinfo* info = nullptr;
  321|      2|         int gai_result;
  322|       |
  323|      2|         memset (&hints, 0, sizeof (hints));
  324|      2|         hints.ai_family = AF_UNSPEC;    /*either IPV4 or IPV6 */
  325|      2|         hints.ai_socktype = SOCK_STREAM;
  326|      2|         hints.ai_flags = AI_CANONNAME;
  327|       |
  328|      2|         if ((gai_result = getaddrinfo (buffer, 0, &hints, &info)) != 0) {
  ------------------
  |  Branch (328:14): [True: 0, False: 2]
  ------------------
  329|      0|            mFqdn = mHostname;
  330|      2|         } else if (info == NULL) {
  ------------------
  |  Branch (330:21): [True: 0, False: 2]
  ------------------
  331|      0|            mFqdn = mHostname;
  332|      2|         } else {
  333|      2|            mFqdn = info->ai_canonname;
  334|      2|         }
  335|       |
  336|      2|         freeaddrinfo (info);
  337|      2|      }
  338|       |
  339|      2|   }
  340|      2|#ifdef ENABLE_LOG_REPOSITORY_DETAILS
  341|      2|   GenericLog(resip::Subsystem::NONE, resip::Log::Info, << "logger initialized app=" << appName << " version=" << VERSION << " git-commit=" << RESIPROCATE_GIT_ID << " git-branch=" << RESIPROCATE_BRANCH_NAME);
  ------------------
  |  |  151|      2|   do                                                                   \
  |  |  152|      2|   {                                                                    \
  |  |  153|      2|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  ------------------
  |  |  |  Branch (153:11): [True: 0, False: 2]
  |  |  ------------------
  |  |  154|      2|      {                                                                 \
  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  157|      0|      }                                                                 \
  |  |  158|      2|   } while (false)
  |  |  ------------------
  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  ------------------
  ------------------
  342|       |#else
  343|       |#ifdef VERSION
  344|       |   GenericLog(resip::Subsystem::NONE, resip::Log::Info, << "logger initialized app=" << appName << " version=" << VERSION << " git repository details unknown");
  345|       |#else
  346|       |   GenericLog(resip::Subsystem::NONE, resip::Log::Info, << "logger initialized app=" << appName << " version and git repository details unknown");
  347|       |#endif
  348|       |#endif
  349|      2|}
_ZN5resip3Log9isLoggingENS0_5LevelERKNS_9SubsystemE:
  944|  2.67M|{
  945|  2.67M|   if (sub.getLevel() != Log::None)
  ------------------
  |  Branch (945:8): [True: 0, False: 2.67M]
  ------------------
  946|      0|   {
  947|      0|      return level <= sub.getLevel();
  948|      0|   }
  949|  2.67M|   else
  950|  2.67M|   {
  951|  2.67M|      return (level <= Log::getLoggerData().mLevel);
  952|  2.67M|   }
  953|  2.67M|}
_ZN5resip3Log10ThreadData3setENS0_4TypeENS0_5LevelEPKcPNS_14ExternalLoggerENS0_16MessageStructureERKNS_4DataE:
 1238|      2|{
 1239|      2|   mType = type;
 1240|      2|   mLevel = level;
 1241|       |
 1242|      2|   if (logFileName)
  ------------------
  |  Branch (1242:8): [True: 0, False: 2]
  ------------------
 1243|      0|   {
 1244|       |#ifdef USE_FMT
 1245|       |      fmt::memory_buffer _loggingFilename;
 1246|       |      fmt::format_to(std::back_inserter(_loggingFilename),
 1247|       |                     logFileName,
 1248|       |#ifdef WIN32
 1249|       |                     fmt::arg("pid", (int)GetCurrentProcess()),
 1250|       |#else
 1251|       |                     fmt::arg("pid", getpid()),
 1252|       |#endif
 1253|       |                     fmt::arg("timestamp", time(0)));
 1254|       |      mLogFileName = Data(_loggingFilename.data(), _loggingFilename.size());
 1255|       |#else
 1256|      0|      mLogFileName = logFileName;
 1257|      0|      mLogFileName.replace("{timestamp}", Data((uint64_t)time(0)));
 1258|       |#ifdef WIN32
 1259|       |      mLogFileName.replace("{pid}", Data((int)GetCurrentProcess()));
 1260|       |#else
 1261|      0|      mLogFileName.replace("{pid}", Data(getpid()));
 1262|      0|#endif
 1263|      0|#endif
 1264|      0|   }
 1265|      2|   else
 1266|      2|   {
 1267|      2|      mLogFileName.clear();
 1268|      2|   }
 1269|      2|   mExternalLogger = pExternalLogger;
 1270|      2|   mMessageStructure = messageStructure;
 1271|      2|   mInstanceName = instanceName;
 1272|      2|}
_ZN5resip3Log10ThreadData5resetEv:
 1276|      2|{
 1277|      2|   delete mLogger;
 1278|      2|   mLogger = NULL;
 1279|      2|}

_ZN5resip3Log10ThreadDataC2EiNS0_4TypeENS0_5LevelEPKcPNS_14ExternalLoggerENS0_16MessageStructureERKNS_4DataE:
  316|      2|            {
  317|      2|               if (logFileName)
  ------------------
  |  Branch (317:20): [True: 0, False: 2]
  ------------------
  318|      0|               {
  319|      0|                  mLogFileName = logFileName;
  320|      0|               }
  321|      2|            }
_ZN5resip3Log13getLoggerDataEv:
  374|  2.67M|      {
  375|  2.67M|         ThreadData* pData = static_cast<ThreadData*>(ThreadIf::tlsGetValue(*Log::mLocalLoggerKey));
  376|  2.67M|         return pData?*pData:mDefaultLoggerData;
  ------------------
  |  Branch (376:17): [True: 0, False: 2.67M]
  ------------------
  377|  2.67M|      }
_ZN5resip3Log14LocalLoggerMapC2Ev:
  384|      2|            : mLastLocalLoggerId(0) {};

DtmfPayloadContents.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|  6.48k|{
  146|  6.48k|   return resip::Log::isLogging(level, sub);
  147|  6.48k|}
Pkcs7Contents.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|  6.23k|{
  146|  6.23k|   return resip::Log::isLogging(level, sub);
  147|  6.23k|}
QuotedDataParameter.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|    362|{
  146|    362|   return resip::Log::isLogging(level, sub);
  147|    362|}
SdpContents.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|  4.67k|{
  146|  4.67k|   return resip::Log::isLogging(level, sub);
  147|  4.67k|}
SipMessage.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|  22.0k|{
  146|  22.0k|   return resip::Log::isLogging(level, sub);
  147|  22.0k|}
Uri.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|  2.46M|{
  146|  2.46M|   return resip::Log::isLogging(level, sub);
  147|  2.46M|}
BaseException.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|  87.8k|{
  146|  87.8k|   return resip::Log::isLogging(level, sub);
  147|  87.8k|}
DnsUtil.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|     30|{
  146|     30|   return resip::Log::isLogging(level, sub);
  147|     30|}
Log.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|      2|{
  146|      2|   return resip::Log::isLogging(level, sub);
  147|      2|}
ParseBuffer.cxx:_ZL20genericLogCheckLevelN5resip3Log5LevelERKNS_9SubsystemE:
  145|  81.3k|{
  146|  81.3k|   return resip::Log::isLogging(level, sub);
  147|  81.3k|}

_ZN5resip9MD5BufferC2Ev:
   11|      2|{
   12|      2|   MD5Init(&mContext);
   13|      2|   setp(mBuf, mBuf + sizeof(mBuf));
   14|      2|   mLen = 0;
   15|      2|}
_ZN5resip9MD5BufferD2Ev:
   18|      2|{
   19|      2|}
_ZN5resip9MD5Buffer4syncEv:
   23|      2|{
   24|      2|   size_t len = pptr() - pbase();
   25|      2|   if (len > 0) 
  ------------------
  |  Branch (25:8): [True: 0, False: 2]
  ------------------
   26|      0|   {
   27|      0|      MD5Update(&mContext, reinterpret_cast <unsigned const char*>(pbase()), (unsigned int)len);
   28|       |      // reset the put buffer
   29|      0|      setp(mBuf, mBuf + sizeof(mBuf));
   30|      0|      mLen += len;
   31|      0|   }
   32|      2|   return 0;
   33|      2|}
_ZN5resip9MD5Buffer6getHexEv:
   50|      2|{
   51|      2|   MD5Context tmp = mContext;
   52|      2|   MD5Final((unsigned char*)mBuf, &tmp);
   53|      2|   Data digest(Data::Share, (const char*)mBuf,16);
   54|      2|   return digest.hex();   
   55|      2|}
_ZN5resip9MD5StreamC1Ev:
   74|      2|{
   75|      2|}
_ZN5resip9MD5StreamD2Ev:
   78|      2|{}
_ZN5resip9MD5Stream6getHexEv:
   82|      2|{
   83|      2|   flush();
   84|      2|   return MD5Buffer::getHex();
   85|       |   //return mStreambuf.getHex();
   86|      2|}

_ZN5resip11ParseBufferC2EPKcmRKNS_4DataE:
   23|   153k|{}
_ZN5resip11ParseBufferC2ERKNS_4DataES3_:
   39|    702|{}
_ZN5resip11ParseBuffer8skipCharEc:
   63|  7.54M|{
   64|  7.54M|   if (eof())
  ------------------
  |  Branch (64:8): [True: 2.81k, False: 7.54M]
  ------------------
   65|  2.81k|   {
   66|  2.81k|      fail(__FILE__, __LINE__,"skipped over eof");
   67|  2.81k|   }
   68|  7.54M|   if (*mPosition != c)
  ------------------
  |  Branch (68:8): [True: 17.0k, False: 7.53M]
  ------------------
   69|  17.0k|   {
   70|  17.0k|      Data msg("expected '");
   71|  17.0k|      msg += c;
   72|  17.0k|      msg += "'";
   73|  17.0k|      fail(__FILE__, __LINE__,msg);
   74|  17.0k|   }
   75|  7.54M|   ++mPosition;
   76|  7.54M|   return CurrentPosition(*this);
   77|  7.54M|}
_ZN5resip11ParseBuffer9skipCharsEPKc:
   81|  6.23k|{
   82|  6.23k|   const char* match = cs;
   83|  12.4k|   while (*match != 0)
  ------------------
  |  Branch (83:11): [True: 6.25k, False: 6.23k]
  ------------------
   84|  6.25k|   {
   85|  6.25k|      if (eof() || (*match != *mPosition))
  ------------------
  |  Branch (85:11): [True: 4, False: 6.24k]
  |  Branch (85:20): [True: 6.23k, False: 15]
  ------------------
   86|  6.23k|      {
   87|  6.23k|          Data msg("Expected \"");
   88|  6.23k|          msg += cs;
   89|  6.23k|          msg +=  "\"";
   90|  6.23k|         fail(__FILE__, __LINE__,msg);
   91|  6.23k|      }
   92|  6.25k|      match++;
   93|  6.25k|      mPosition++;
   94|  6.25k|   }
   95|  6.23k|   return CurrentPosition(*this);
   96|  6.23k|}
_ZN5resip11ParseBuffer17skipNonWhitespaceEv:
  119|  9.13k|{
  120|  9.13k|   assertNotEof();
  121|  66.4M|   while (mPosition < mEnd)
  ------------------
  |  Branch (121:11): [True: 66.4M, False: 4.14k]
  ------------------
  122|  66.4M|   {
  123|  66.4M|      switch (*mPosition)
  124|  66.4M|      {
  125|  1.06k|         case ' ' :
  ------------------
  |  Branch (125:10): [True: 1.06k, False: 66.4M]
  ------------------
  126|  1.32k|         case '\t' : 
  ------------------
  |  Branch (126:10): [True: 265, False: 66.4M]
  ------------------
  127|  1.93k|         case '\r' : 
  ------------------
  |  Branch (127:10): [True: 604, False: 66.4M]
  ------------------
  128|  4.98k|         case '\n' : 
  ------------------
  |  Branch (128:10): [True: 3.05k, False: 66.4M]
  ------------------
  129|  4.98k|            return CurrentPosition(*this);
  130|  66.4M|         default : 
  ------------------
  |  Branch (130:10): [True: 66.4M, False: 4.98k]
  ------------------
  131|  66.4M|            mPosition++;
  132|  66.4M|      }
  133|  66.4M|   }
  134|  4.14k|   return CurrentPosition(*this);
  135|  9.13k|}
_ZN5resip11ParseBuffer14skipWhitespaceEv:
  139|  45.0M|{
  140|  45.0M|   while (mPosition < mEnd)
  ------------------
  |  Branch (140:11): [True: 45.0M, False: 18.8k]
  ------------------
  141|  45.0M|   {
  142|  45.0M|      switch (*mPosition)
  143|  45.0M|      {
  144|  7.86k|         case ' ' :
  ------------------
  |  Branch (144:10): [True: 7.86k, False: 45.0M]
  ------------------
  145|  11.6k|         case '\t' : 
  ------------------
  |  Branch (145:10): [True: 3.76k, False: 45.0M]
  ------------------
  146|  19.8k|         case '\r' : 
  ------------------
  |  Branch (146:10): [True: 8.21k, False: 45.0M]
  ------------------
  147|  43.7k|         case '\n' : 
  ------------------
  |  Branch (147:10): [True: 23.9k, False: 45.0M]
  ------------------
  148|  43.7k|         {
  149|  43.7k|            mPosition++;
  150|  43.7k|            break;
  151|  19.8k|         }
  152|  45.0M|         default : 
  ------------------
  |  Branch (152:10): [True: 45.0M, False: 43.7k]
  ------------------
  153|  45.0M|            return CurrentPosition(*this);
  154|  45.0M|      }
  155|  45.0M|   }
  156|  18.8k|   return CurrentPosition(*this);
  157|  45.0M|}
_ZN5resip11ParseBuffer11skipToCharsEPKc:
  247|  6.42k|{
  248|  6.42k|   resip_assert(cs);
  ------------------
  |  |   96|  6.42k|#define resip_assert(x)                                                        \
  |  |   97|  6.42k|{                                                                              \
  |  |   98|  6.42k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 6.42k]
  |  |  ------------------
  |  |   99|  6.42k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  6.42k|   {                                                                           \
  |  |  103|  6.42k|      assert( (x) );                                                           \
  |  |  104|  6.42k|   }                                                                           \
  |  |  105|  6.42k|}
  ------------------
  249|  6.42k|   unsigned int l = (unsigned int)strlen(cs);
  250|       |
  251|  6.42k|   const char* rpos;
  252|  6.42k|   const char* cpos;
  253|       |   // Checking mPosition >= mEnd - l +1 is unnecessary because there won't be
  254|       |   // enough bytes left to find [cs].
  255|  45.1M|   while (mPosition < mEnd - l + 1)
  ------------------
  |  Branch (255:11): [True: 45.0M, False: 1.64k]
  ------------------
  256|  45.0M|   {
  257|  45.0M|      rpos = mPosition;
  258|  45.0M|      cpos = cs;
  259|  45.1M|      for (unsigned int i = 0; i < l; i++)
  ------------------
  |  Branch (259:32): [True: 45.0M, False: 4.78k]
  ------------------
  260|  45.0M|      {
  261|  45.0M|         if (*cpos++ != *rpos++)
  ------------------
  |  Branch (261:14): [True: 45.0M, False: 4.78k]
  ------------------
  262|  45.0M|         {
  263|  45.0M|            mPosition++;
  264|  45.0M|            goto skip;
  265|  45.0M|         }
  266|  45.0M|      }
  267|  4.78k|      return CurrentPosition(*this);
  268|  45.0M|     skip: ;
  269|  45.0M|   }
  270|       |   // Advance to the end since we didn't find a match.
  271|  1.64k|   mPosition = mEnd;
  272|  1.64k|   return CurrentPosition(*this);
  273|  6.42k|}
_ZN5resip11ParseBuffer11skipToCharsERKNS_4DataE:
  277|  6.23k|{
  278|  6.23k|   const char* begSub = sub.mBuf;
  279|  6.23k|   const char* endSub = sub.mBuf + sub.mSize;
  280|  6.23k|   if(begSub == endSub)
  ------------------
  |  Branch (280:7): [True: 0, False: 6.23k]
  ------------------
  281|      0|   {
  282|      0|      fail(__FILE__, __LINE__, "ParseBuffer::skipToChars() called with an "
  283|      0|                                 "empty string. Don't do this!");
  284|      0|   }
  285|       |
  286|  6.23k|   while (true)
  ------------------
  |  Branch (286:11): [Folded - Ignored]
  ------------------
  287|  6.23k|   {
  288|  88.9M|next:
  289|  88.9M|     const char* searchPos = mPosition;
  290|  88.9M|     const char* subPos = sub.mBuf;
  291|       |
  292|  89.0M|     while (subPos != endSub) 
  ------------------
  |  Branch (292:13): [True: 89.0M, False: 0]
  ------------------
  293|  89.0M|     {
  294|  89.0M|         if (searchPos == mEnd)
  ------------------
  |  Branch (294:14): [True: 6.23k, False: 89.0M]
  ------------------
  295|  6.23k|         {
  296|       |            // nope
  297|  6.23k|            mPosition = mEnd;
  298|  6.23k|            return CurrentPosition(*this);
  299|  6.23k|         }
  300|  89.0M|         if (*subPos++ != *searchPos++)
  ------------------
  |  Branch (300:14): [True: 88.9M, False: 87.4k]
  ------------------
  301|  88.9M|         {
  302|       |            // nope, but try the next position
  303|  88.9M|            ++mPosition;
  304|  88.9M|            goto next;
  305|  88.9M|         }
  306|  89.0M|     }
  307|       |     // found a match
  308|      0|     return CurrentPosition(*this);
  309|  88.9M|   }
  310|  6.23k|}
_ZN5resip11ParseBuffer5oneOfEcPKc:
  314|   361M|{
  315|  1.25G|   while (*cs)
  ------------------
  |  Branch (315:11): [True: 891M, False: 359M]
  ------------------
  316|   891M|   {
  317|   891M|      if (c == *(cs++))
  ------------------
  |  Branch (317:11): [True: 2.10M, False: 889M]
  ------------------
  318|  2.10M|      {
  319|  2.10M|         return true;
  320|  2.10M|      }
  321|   891M|   }
  322|   359M|   return false;
  323|   361M|}
_ZN5resip11ParseBuffer11skipToOneOfEPKc:
  340|  36.2k|{
  341|   123M|   while (mPosition < mEnd)
  ------------------
  |  Branch (341:11): [True: 123M, False: 9.56k]
  ------------------
  342|   123M|   {
  343|   123M|      if (oneOf(*mPosition, cs))
  ------------------
  |  Branch (343:11): [True: 26.6k, False: 123M]
  ------------------
  344|  26.6k|      {
  345|  26.6k|         return CurrentPosition(*this);
  346|  26.6k|      }
  347|   123M|      else
  348|   123M|      {
  349|   123M|         mPosition++;
  350|   123M|      }
  351|   123M|   }
  352|  9.56k|   return CurrentPosition(*this);
  353|  36.2k|}
_ZN5resip11ParseBuffer11skipToOneOfEPKcS2_:
  358|  2.08M|{
  359|   119M|   while (mPosition < mEnd)
  ------------------
  |  Branch (359:11): [True: 119M, False: 4.85k]
  ------------------
  360|   119M|   {
  361|   119M|      if (oneOf(*mPosition, cs1) ||
  ------------------
  |  Branch (361:11): [True: 1.95M, False: 117M]
  ------------------
  362|   119M|          oneOf(*mPosition, cs2))
  ------------------
  |  Branch (362:11): [True: 123k, False: 117M]
  ------------------
  363|  2.08M|      {
  364|  2.08M|         return CurrentPosition(*this);
  365|  2.08M|      }
  366|   117M|      else
  367|   117M|      {
  368|   117M|         mPosition++;
  369|   117M|      }
  370|   119M|   }
  371|  4.85k|   return CurrentPosition(*this);
  372|  2.08M|}
_ZN5resip11ParseBuffer14skipToEndQuoteEc:
  412|  7.14k|{
  413|  3.70M|   while (mPosition < mEnd)
  ------------------
  |  Branch (413:11): [True: 3.70M, False: 453]
  ------------------
  414|  3.70M|   {
  415|       |      // !dlb! mark character encoding
  416|  3.70M|      if (*mPosition == '\\')
  ------------------
  |  Branch (416:11): [True: 374, False: 3.70M]
  ------------------
  417|    374|      {
  418|    374|         mPosition += 2;
  419|    374|      }
  420|  3.70M|      else if (*mPosition == quote)
  ------------------
  |  Branch (420:16): [True: 6.68k, False: 3.69M]
  ------------------
  421|  6.68k|      {
  422|  6.68k|         return mPosition;
  423|  6.68k|      }
  424|  3.69M|      else
  425|  3.69M|      {
  426|  3.69M|         mPosition++;
  427|  3.69M|      }
  428|  3.70M|   }
  429|       |
  430|    453|   {
  431|    453|      Data msg("Missing '");
  432|    453|      msg += quote;
  433|    453|      msg += "'";
  434|    453|      fail(__FILE__,__LINE__,msg);
  435|    453|   }
  436|    453|   return 0;
  437|  7.14k|}
_ZN5resip11ParseBuffer18skipBackWhitespaceEv:
  452|    303|{
  453|  1.12k|   while (!bof())
  ------------------
  |  Branch (453:11): [True: 1.12k, False: 0]
  ------------------
  454|  1.12k|   {
  455|  1.12k|      switch (*(--mPosition))
  456|  1.12k|      {
  457|    210|         case ' ' :
  ------------------
  |  Branch (457:10): [True: 210, False: 912]
  ------------------
  458|    404|         case '\t' : 
  ------------------
  |  Branch (458:10): [True: 194, False: 928]
  ------------------
  459|    599|         case '\r' : 
  ------------------
  |  Branch (459:10): [True: 195, False: 927]
  ------------------
  460|    819|         case '\n' : 
  ------------------
  |  Branch (460:10): [True: 220, False: 902]
  ------------------
  461|    819|         {
  462|    819|            break;
  463|    599|         }
  464|    303|         default : 
  ------------------
  |  Branch (464:10): [True: 303, False: 819]
  ------------------
  465|    303|            return ++mPosition;
  466|  1.12k|      }
  467|  1.12k|   }
  468|      0|   return mBuff;
  469|    303|}
_ZN5resip11ParseBuffer14skipBackToCharEc:
  503|      2|{
  504|     20|   while (!bof())
  ------------------
  |  Branch (504:11): [True: 20, False: 0]
  ------------------
  505|     20|   {
  506|     20|      if (*(--mPosition) == c)
  ------------------
  |  Branch (506:11): [True: 2, False: 18]
  ------------------
  507|      2|      {
  508|      2|         return ++mPosition;
  509|      2|      }
  510|     20|   }
  511|      0|   return mBuff;
  512|      2|}
_ZNK5resip11ParseBuffer4dataERNS_4DataEPKc:
  529|  5.56M|{
  530|  5.56M|   if (!(mBuff <= start && start <= mPosition))
  ------------------
  |  Branch (530:10): [True: 5.56M, False: 0]
  |  Branch (530:28): [True: 5.56M, False: 0]
  ------------------
  531|      0|   {
  532|      0|      fail(__FILE__, __LINE__,"Bad anchor position");
  533|      0|   }
  534|       |
  535|  5.56M|   if (data.mShareEnum == Data::Take)
  ------------------
  |  Branch (535:8): [True: 0, False: 5.56M]
  ------------------
  536|      0|   {
  537|      0|      delete[] data.mBuf;
  538|      0|   }
  539|  5.56M|   data.mSize = (unsigned int)(mPosition - start);
  540|  5.56M|   data.mBuf = const_cast<char*>(start);
  541|  5.56M|   data.mCapacity = data.mSize;
  542|  5.56M|   data.mShareEnum = Data::Share;
  543|  5.56M|}
_ZNK5resip11ParseBuffer13dataUnescapedERNS_4DataEPKc:
  568|    759|{
  569|    759|   if (!(mBuff <= start && start <= mPosition))
  ------------------
  |  Branch (569:10): [True: 759, False: 0]
  |  Branch (569:28): [True: 759, False: 0]
  ------------------
  570|      0|   {
  571|      0|      fail(__FILE__, __LINE__, "Bad anchor position");
  572|      0|   }
  573|       |
  574|    759|   {
  575|    759|      const char* current = start;   
  576|  7.43M|      while (current < mPosition)
  ------------------
  |  Branch (576:14): [True: 7.43M, False: 382]
  ------------------
  577|  7.43M|      {
  578|  7.43M|         if (*current == '%')
  ------------------
  |  Branch (578:14): [True: 377, False: 7.43M]
  ------------------
  579|    377|         {
  580|       |            // needs to be unencoded
  581|    377|            goto copy;
  582|    377|         }
  583|  7.43M|         current++;
  584|  7.43M|      }
  585|       |      // can use an overlay
  586|    382|      data(dataToUse, start);
  587|    382|      return;
  588|    759|   }
  589|       |
  590|    377|  copy:
  591|    377|   if ((size_t)(mPosition-start) > dataToUse.mCapacity)
  ------------------
  |  Branch (591:8): [True: 184, False: 193]
  ------------------
  592|    184|   {
  593|    184|      dataToUse.resize(mPosition-start, false);
  594|    184|   }
  595|       |
  596|    377|   char* target = dataToUse.mBuf;
  597|    377|   const char* current = start;   
  598|   747k|   while (current < mPosition)
  ------------------
  |  Branch (598:11): [True: 746k, False: 377]
  ------------------
  599|   746k|   {
  600|   746k|      if (*current == '%')
  ------------------
  |  Branch (600:11): [True: 1.18k, False: 745k]
  ------------------
  601|  1.18k|      {
  602|  1.18k|         current++;
  603|  1.18k|         if (mPosition - current < 2)
  ------------------
  |  Branch (603:14): [True: 60, False: 1.12k]
  ------------------
  604|     60|         {
  605|     60|            fail(__FILE__, __LINE__,"Illegal escaping");
  606|     60|         }
  607|  1.18k|         const char high = hexToByte[(unsigned char)*current];
  608|  1.18k|         const char low = hexToByte[(unsigned char)*(current + 1)];
  609|  1.18k|         if (high!='k' && low!='k')
  ------------------
  |  Branch (609:14): [True: 1.03k, False: 154]
  |  Branch (609:27): [True: 996, False: 38]
  ------------------
  610|    996|         {
  611|    996|            unsigned char escaped = 0;            
  612|    996|            escaped = high << 4 | low;
  613|       |            // !bwc! I think this check is bogus, especially the ':' (58) check
  614|       |            // You could maybe argue that the point of %-escaping is to allow
  615|       |            // the use of UTF-8 data (including ASCII that is not allowed in an 
  616|       |            // on-the-wire representation of whatever it is we're unescaping),
  617|       |            // and not unprintable characters (the unprintable codes are not 
  618|       |            // used by UTF-8). 
  619|    996|            if (escaped > 31 && escaped != 127 && escaped != 58)
  ------------------
  |  Branch (619:17): [True: 737, False: 259]
  |  Branch (619:33): [True: 498, False: 239]
  |  Branch (619:51): [True: 270, False: 228]
  ------------------
  620|    270|            {
  621|    270|               *target++ = escaped;
  622|    270|               current+= 2;
  623|    270|            }
  624|    726|            else
  625|    726|            {
  626|    726|               *target++ = '%';
  627|    726|               *target++ = *current++;
  628|    726|               *target++ = *current++;
  629|    726|            }
  630|    996|         }
  631|    192|         else
  632|    192|         {
  633|    192|            fail(__FILE__, __LINE__,"Illegal escaping, not hex");
  634|    192|         }
  635|  1.18k|      }
  636|   745k|      else
  637|   745k|      {
  638|   745k|         *target++ = *current++;
  639|   745k|      }
  640|   746k|   }
  641|    377|   *target = 0;
  642|    377|   dataToUse.mSize = target - dataToUse.mBuf;   
  643|    377|}
_ZNK5resip11ParseBuffer4dataEPKc:
  647|  1.75M|{
  648|  1.75M|   if (!(mBuff <= start && start <= mPosition))
  ------------------
  |  Branch (648:10): [True: 1.75M, False: 0]
  |  Branch (648:28): [True: 1.75M, False: 0]
  ------------------
  649|      0|   {
  650|       |      
  651|      0|      fail(__FILE__, __LINE__,"Bad anchor position");
  652|      0|   }
  653|       |
  654|  1.75M|   Data data(start, mPosition - start);
  655|  1.75M|   return data;
  656|  1.75M|}
_ZN5resip11ParseBuffer7integerEv:
  660|   143k|{
  661|   143k|   if (this->eof())
  ------------------
  |  Branch (661:8): [True: 372, False: 143k]
  ------------------
  662|    372|   {
  663|    372|      fail(__FILE__, __LINE__,"Expected a digit, got eof ");
  664|    372|   }
  665|       |
  666|   143k|   bool negative = false;
  667|   143k|   if (*mPosition == '-')
  ------------------
  |  Branch (667:8): [True: 770, False: 142k]
  ------------------
  668|    770|   {
  669|    770|      negative = true;
  670|    770|      ++mPosition;
  671|    770|      assertNotEof();
  672|    770|   }
  673|   142k|   else if (*mPosition == '+')
  ------------------
  |  Branch (673:13): [True: 221, False: 142k]
  ------------------
  674|    221|   {
  675|    221|      ++mPosition;
  676|    221|      assertNotEof();
  677|    221|   }
  678|       |
  679|   143k|   if (!isdigit(*mPosition))
  ------------------
  |  Branch (679:8): [True: 11.8k, False: 131k]
  ------------------
  680|  11.8k|   {
  681|  11.8k|      Data msg("Expected a digit, got: ");
  682|  11.8k|      msg += Data(mPosition, (mEnd - mPosition));
  683|  11.8k|      fail(__FILE__, __LINE__,msg);
  684|  11.8k|   }
  685|       |
  686|       |#ifdef _MSC_VER
  687|       |#pragma warning( push )
  688|       |#pragma warning( disable : 4146)
  689|       |#endif
  690|       |   // The absolute value limit depending on the detected sign
  691|   143k|   const unsigned int absoluteLimit = negative ? -(unsigned int)INT_MIN : INT_MAX;
  ------------------
  |  Branch (691:39): [True: 733, False: 142k]
  ------------------
  692|       |   // maximum value for full number except last digit
  693|   143k|   const unsigned int border = absoluteLimit / 10;
  694|       |   // value the last digit must not exceed
  695|   143k|   const unsigned int digitLimit = absoluteLimit % 10;
  696|       |
  697|   143k|   unsigned int num = 0;
  698|   339k|   while (!eof() && isdigit(*mPosition))
  ------------------
  |  Branch (698:11): [True: 322k, False: 16.2k]
  |  Branch (698:21): [True: 195k, False: 127k]
  ------------------
  699|   195k|   {
  700|   195k|      const unsigned int c = *mPosition++ - '0';
  701|   195k|      if (num > border || (num == border && c > digitLimit)) {
  ------------------
  |  Branch (701:11): [True: 123, False: 195k]
  |  Branch (701:28): [True: 259, False: 195k]
  |  Branch (701:45): [True: 9, False: 250]
  ------------------
  702|    132|         fail(__FILE__, __LINE__,"Overflow detected.");
  703|    132|      }
  704|   195k|      num *= 10;
  705|   195k|      num += c;
  706|   195k|    }
  707|   143k|    if (negative)
  ------------------
  |  Branch (707:9): [True: 728, False: 142k]
  ------------------
  708|    728|    {
  709|    728|        num = -num;
  710|    728|    }
  711|   143k|    return num;
  712|       |#ifdef _MSC_VER
  713|       |#pragma warning( pop ) 
  714|       |#endif
  715|   143k|}
_ZN5resip11ParseBuffer6uInt32Ev:
  745|  27.3k|{
  746|  27.3k|   const char* begin=mPosition;
  747|  27.3k|   uint32_t num = 0;
  748|   141k|   while (!eof() && isdigit(*mPosition))
  ------------------
  |  Branch (748:11): [True: 141k, False: 816]
  |  Branch (748:21): [True: 114k, False: 26.5k]
  ------------------
  749|   114k|   {
  750|   114k|      num = num*10 + (*mPosition-'0');
  751|   114k|      ++mPosition;
  752|   114k|   }
  753|       |
  754|  27.3k|   switch(mPosition-begin)
  755|  27.3k|   {
  756|  18.2k|      case 0:
  ------------------
  |  Branch (756:7): [True: 18.2k, False: 9.06k]
  ------------------
  757|  18.2k|         fail(__FILE__, __LINE__,"Expected a digit");
  758|  23.3k|      case 1:
  ------------------
  |  Branch (758:7): [True: 5.13k, False: 22.1k]
  ------------------
  759|  23.7k|      case 2:
  ------------------
  |  Branch (759:7): [True: 333, False: 26.9k]
  ------------------
  760|  24.0k|      case 3:
  ------------------
  |  Branch (760:7): [True: 300, False: 27.0k]
  ------------------
  761|  24.3k|      case 4:
  ------------------
  |  Branch (761:7): [True: 331, False: 26.9k]
  ------------------
  762|  24.6k|      case 5:
  ------------------
  |  Branch (762:7): [True: 334, False: 26.9k]
  ------------------
  763|  24.9k|      case 6:
  ------------------
  |  Branch (763:7): [True: 246, False: 27.0k]
  ------------------
  764|  25.1k|      case 7:
  ------------------
  |  Branch (764:7): [True: 227, False: 27.0k]
  ------------------
  765|  25.4k|      case 8:
  ------------------
  |  Branch (765:7): [True: 240, False: 27.0k]
  ------------------
  766|  25.6k|      case 9:
  ------------------
  |  Branch (766:7): [True: 288, False: 27.0k]
  ------------------
  767|  25.6k|         break;
  768|  1.39k|      case 10:
  ------------------
  |  Branch (768:7): [True: 1.39k, False: 25.9k]
  ------------------
  769|  1.39k|         if(*begin<'4')
  ------------------
  |  Branch (769:13): [True: 669, False: 728]
  ------------------
  770|    669|         {
  771|    669|            break;
  772|    669|         }
  773|    728|         else if(*begin=='4' && num >= 4000000000UL)
  ------------------
  |  Branch (773:18): [True: 508, False: 220]
  |  Branch (773:33): [True: 233, False: 275]
  ------------------
  774|    233|         {
  775|    233|            break;
  776|    233|         }
  777|    727|      default:
  ------------------
  |  Branch (777:7): [True: 232, False: 27.0k]
  ------------------
  778|    727|         fail(__FILE__, __LINE__,"Overflow detected");
  779|  27.3k|   }
  780|       |
  781|  8.33k|   return num;
  782|  27.3k|}
_ZN5resip11ParseBuffer6uInt64Ev:
  786|  4.78k|{
  787|  4.78k|   const char* begin=mPosition;
  788|  4.78k|   uint64_t num = 0;
  789|  6.83k|   while (!eof() && isdigit(*mPosition))
  ------------------
  |  Branch (789:11): [True: 6.73k, False: 104]
  |  Branch (789:21): [True: 2.04k, False: 4.68k]
  ------------------
  790|  2.04k|   {
  791|  2.04k|      num = num*10 + (*mPosition-'0');
  792|  2.04k|      ++mPosition;
  793|  2.04k|   }
  794|       |
  795|  4.78k|   switch(mPosition-begin)
  796|  4.78k|   {
  797|  4.64k|      case 0:
  ------------------
  |  Branch (797:7): [True: 4.64k, False: 137]
  ------------------
  798|  4.64k|         fail(__FILE__, __LINE__,"Expected a digit");
  799|  4.66k|      case 1:
  ------------------
  |  Branch (799:7): [True: 13, False: 4.77k]
  ------------------
  800|  4.66k|      case 2:
  ------------------
  |  Branch (800:7): [True: 3, False: 4.78k]
  ------------------
  801|  4.66k|      case 3:
  ------------------
  |  Branch (801:7): [True: 3, False: 4.78k]
  ------------------
  802|  4.67k|      case 4:
  ------------------
  |  Branch (802:7): [True: 3, False: 4.78k]
  ------------------
  803|  4.67k|      case 5:
  ------------------
  |  Branch (803:7): [True: 3, False: 4.78k]
  ------------------
  804|  4.67k|      case 6:
  ------------------
  |  Branch (804:7): [True: 3, False: 4.78k]
  ------------------
  805|  4.67k|      case 7:
  ------------------
  |  Branch (805:7): [True: 3, False: 4.78k]
  ------------------
  806|  4.68k|      case 8:
  ------------------
  |  Branch (806:7): [True: 4, False: 4.78k]
  ------------------
  807|  4.69k|      case 9:
  ------------------
  |  Branch (807:7): [True: 7, False: 4.77k]
  ------------------
  808|  4.69k|      case 10:
  ------------------
  |  Branch (808:7): [True: 3, False: 4.78k]
  ------------------
  809|  4.69k|      case 11:
  ------------------
  |  Branch (809:7): [True: 3, False: 4.78k]
  ------------------
  810|  4.69k|      case 12:
  ------------------
  |  Branch (810:7): [True: 3, False: 4.78k]
  ------------------
  811|  4.70k|      case 13:
  ------------------
  |  Branch (811:7): [True: 3, False: 4.78k]
  ------------------
  812|  4.70k|      case 14:
  ------------------
  |  Branch (812:7): [True: 3, False: 4.78k]
  ------------------
  813|  4.70k|      case 15:
  ------------------
  |  Branch (813:7): [True: 3, False: 4.78k]
  ------------------
  814|  4.71k|      case 16:
  ------------------
  |  Branch (814:7): [True: 3, False: 4.78k]
  ------------------
  815|  4.71k|      case 17:
  ------------------
  |  Branch (815:7): [True: 3, False: 4.78k]
  ------------------
  816|  4.71k|      case 18:
  ------------------
  |  Branch (816:7): [True: 3, False: 4.78k]
  ------------------
  817|  4.72k|      case 19:
  ------------------
  |  Branch (817:7): [True: 3, False: 4.78k]
  ------------------
  818|  4.72k|         break;
  819|     60|      case 20:
  ------------------
  |  Branch (819:7): [True: 60, False: 4.72k]
  ------------------
  820|     60|         if(*begin=='1' && num >= 10000000000000000000ULL)
  ------------------
  |  Branch (820:13): [True: 57, False: 3]
  |  Branch (820:28): [True: 43, False: 14]
  ------------------
  821|     43|         {
  822|     43|            break;
  823|     43|         }
  824|     22|      default:
  ------------------
  |  Branch (824:7): [True: 5, False: 4.78k]
  ------------------
  825|     22|         fail(__FILE__, __LINE__,"Overflow detected");
  826|  4.78k|   }
  827|       |
  828|    115|   return num;
  829|  4.78k|}
_ZN5resip11ParseBuffer4qValEv:
  866|  5.01k|{
  867|       |   // parse a qvalue into an integer between 0 and 1000  (ex: 1.0 -> 1000,  0.8 -> 800, 0.05 -> 50)
  868|  5.01k|   const char* s = mPosition;
  869|  5.01k|   try
  870|  5.01k|   {
  871|  5.01k|      int num = integer();
  872|  5.01k|      if (num == 1)
  ------------------
  |  Branch (872:11): [True: 984, False: 4.03k]
  ------------------
  873|    984|      {
  874|    984|         num = 1000;
  875|    984|      }
  876|  4.03k|      else if (num != 0)
  ------------------
  |  Branch (876:16): [True: 2.49k, False: 1.53k]
  ------------------
  877|  2.49k|      {
  878|       |         // error: qvalue must start with 1 or 0
  879|  2.49k|         return 0;
  880|  2.49k|      }
  881|       |      
  882|  2.52k|      if (!eof() && *mPosition == '.')
  ------------------
  |  Branch (882:11): [True: 2.22k, False: 292]
  |  Branch (882:21): [True: 902, False: 1.32k]
  ------------------
  883|    902|      {
  884|    902|         skipChar();
  885|       |         
  886|    902|         int i = 100;
  887|  2.24k|         while(!eof() && isdigit(*mPosition) && i)
  ------------------
  |  Branch (887:16): [True: 2.16k, False: 72]
  |  Branch (887:26): [True: 1.33k, False: 830]
  |  Branch (887:49): [True: 1.33k, False: 0]
  ------------------
  888|  1.33k|         {
  889|  1.33k|            num += (*mPosition-'0') * i;
  890|  1.33k|            i /= 10;
  891|  1.33k|            skipChar();
  892|  1.33k|         }
  893|    902|      }
  894|  2.52k|      return num;
  895|  5.01k|   }
  896|  5.01k|   catch (ParseException&)
  897|  5.01k|   {
  898|    246|      Data msg("Expected a floating point value, got: ");
  899|    246|      msg += Data(s, mPosition - s);
  900|    246|      fail(__FILE__, __LINE__,msg);
  901|    246|      return 0;
  902|    246|   }
  903|  5.01k|}
_Z6spacesj:
  908|  75.0k|{
  909|  75.0k|   Data sps(numSpaces, Data::Preallocate);
  910|   187M|   for (unsigned int i = 0; i < numSpaces; i++)
  ------------------
  |  Branch (910:29): [True: 187M, False: 75.0k]
  ------------------
  911|   187M|   {
  912|   187M|      sps += ' ';
  913|   187M|   }
  914|  75.0k|   return sps;
  915|  75.0k|}
_Z17escapeAndAnnotatePKcjS0_:
  921|  81.3k|{ 
  922|  81.3k|   Data ret(2*size+16, Data::Preallocate);
  923|       |
  924|  81.3k|   const char* lastReturn = buffer;
  925|  81.3k|   int lineCount = 0;
  926|  81.3k|   bool doneAt = false;
  927|       |
  928|  81.3k|   const char* p = buffer;
  929|  1.02G|   for (unsigned int i = 0; i < size; i++)
  ------------------
  |  Branch (929:29): [True: 1.02G, False: 81.3k]
  ------------------
  930|  1.02G|   {
  931|  1.02G|      unsigned char c = *p++;
  932|       |
  933|  1.02G|      switch (c)
  ------------------
  |  Branch (933:15): [True: 1.01G, False: 3.83M]
  ------------------
  934|  1.02G|      {
  935|  91.2k|         case 0x0D: // CR
  ------------------
  |  Branch (935:10): [True: 91.2k, False: 1.02G]
  ------------------
  936|  91.2k|         {
  937|  91.2k|            continue;
  938|      0|         }
  939|  3.74M|         case 0x0A: // LF
  ------------------
  |  Branch (939:10): [True: 3.74M, False: 1.01G]
  ------------------
  940|  3.74M|         {
  941|  3.74M|            if (!doneAt && p >= position)
  ------------------
  |  Branch (941:17): [True: 941k, False: 2.79M]
  |  Branch (941:28): [True: 33.0k, False: 908k]
  ------------------
  942|  33.0k|            {
  943|  33.0k|               ret += "[CRLF]\n";
  944|  33.0k|               ret += spaces((unsigned int)(position - lastReturn));
  945|  33.0k|               ret += "^[CRLF]\n";
  946|  33.0k|               doneAt = true;
  947|  33.0k|            }
  948|  3.70M|            else
  949|  3.70M|            {
  950|  3.70M|               lastReturn = p;
  951|  3.70M|               ret += c;
  952|  3.70M|            }
  953|  3.74M|            lineCount++;
  954|  3.74M|            continue;
  955|      0|         }
  956|  1.02G|      }
  957|       |      
  958|  1.01G|      if (iscntrl(c) || (c >= 0x7F))
  ------------------
  |  Branch (958:11): [True: 335M, False: 682M]
  |  Branch (958:25): [True: 95.9M, False: 586M]
  ------------------
  959|   431M|      {
  960|   431M|         ret +='*'; // indicates unprintable character
  961|   431M|         continue;
  962|   431M|      }
  963|       |
  964|   586M|      ret += c;
  965|   586M|   }
  966|  81.3k|   if (!doneAt && p >= position)
  ------------------
  |  Branch (966:8): [True: 48.2k, False: 33.0k]
  |  Branch (966:19): [True: 42.0k, False: 6.27k]
  ------------------
  967|  42.0k|   {
  968|  42.0k|      ret += "\n";
  969|  42.0k|      ret += spaces((unsigned int)(position - lastReturn));
  970|  42.0k|      ret += "^\n";
  971|  42.0k|   }
  972|       |
  973|  81.3k|   return ret;
  974|  81.3k|}
_ZNK5resip11ParseBuffer4failEPKcjRKNS_4DataE:
  978|  81.3k|{
  979|  81.3k|    Data errmsg;
  980|  81.3k|    {
  981|  81.3k|       DataStream ds(errmsg);
  982|  81.3k|       ds << file << ":" << line
  983|  81.3k|          << ", Parse failed ";
  984|       |
  985|  81.3k|       if (detail != Data::Empty) ds << detail << ' ' ;
  ------------------
  |  Branch (985:12): [True: 81.2k, False: 6]
  ------------------
  986|       |
  987|  81.3k|       ds << "in context: " << mErrorContext
  988|  81.3k|          << std::endl
  989|  81.3k|          << escapeAndAnnotate(mBuff, mEnd - mBuff, mPosition);
  990|       |          
  991|  81.3k|       ds.flush();
  992|  81.3k|   }
  993|  81.3k|   DebugLog(<<errmsg);
  ------------------
  |  |  128|  81.3k|#define DebugLog(args_) \
  |  |  ------------------
  |  |  |  |  151|  81.3k|   do                                                                   \
  |  |  |  |  152|  81.3k|   {                                                                    \
  |  |  |  |  153|  81.3k|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 81.3k]
  |  |  |  |  ------------------
  |  |  |  |  154|  81.3k|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|  81.3k|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  129|  81.3k|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Debug, args_)
  ------------------
  994|  81.3k|   throw ParseException(errmsg, mErrorContext, file, line);
  995|  81.3k|}
_ZN5resip11ParseBuffer7PointerC2ERKS0_PKcb:
 1003|  5.56k|{}

_ZN5resip11ParseBuffer15CurrentPositionC2ERKS0_:
   53|   136M|            {}
_ZNK5resip11ParseBuffer15CurrentPositioncvPKcEv:
   56|  50.6M|            {
   57|  50.6M|               return mPb.mPosition;
   58|  50.6M|            }
_ZNK5resip11ParseBuffer15CurrentPositiondeEv:
   61|  29.0M|            {
   62|  29.0M|               mPb.assertNotEof();
   63|  29.0M|               return *mPb.mPosition;
   64|  29.0M|            }
_ZNK5resip11ParseBuffer7PointercvPKcEv:
   83|  5.56k|            {
   84|  5.56k|               return mPosition;
   85|  5.56k|            }
_ZNK5resip11ParseBuffer10getContextEv:
   96|  6.20k|      const Data& getContext() const {return mErrorContext;}
_ZN5resip11ParseBuffer5resetEPKc:
  101|  40.9k|      {
  102|  40.9k|         resip_assert( mBuff <= mEnd);
  ------------------
  |  |   96|  40.9k|#define resip_assert(x)                                                        \
  |  |   97|  40.9k|{                                                                              \
  |  |   98|  40.9k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 40.9k]
  |  |  ------------------
  |  |   99|  40.9k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  40.9k|   {                                                                           \
  |  |  103|  40.9k|      assert( (x) );                                                           \
  |  |  104|  40.9k|   }                                                                           \
  |  |  105|  40.9k|}
  ------------------
  103|  40.9k|         resip_assert( (pos >= mBuff) && (pos <= mEnd) );
  ------------------
  |  |   96|  40.9k|#define resip_assert(x)                                                        \
  |  |   97|  40.9k|{                                                                              \
  |  |   98|  81.8k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:11): [True: 40.9k, False: 0]
  |  |  |  Branch (98:11): [True: 40.9k, False: 0]
  |  |  ------------------
  |  |   99|  40.9k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  40.9k|   {                                                                           \
  |  |  103|  40.9k|      assert( (x) );                                                           \
  |  |  104|  40.9k|   }                                                                           \
  |  |  105|  40.9k|}
  ------------------
  104|  40.9k|         mPosition = pos;
  105|  40.9k|      }
_ZNK5resip11ParseBuffer3eofEv:
  110|   101M|      bool eof() const { return mPosition >= mEnd;}
_ZNK5resip11ParseBuffer3bofEv:
  111|  1.14k|      bool bof() const { return mPosition <= mBuff;}
_ZNK5resip11ParseBuffer5startEv:
  113|  5.56k|      Pointer start() const { return Pointer(*this, mBuff, eof()); }
_ZNK5resip11ParseBuffer8positionEv:
  114|  49.2M|      CurrentPosition position() const { return CurrentPosition(*this); }
_ZN5resip11ParseBuffer8skipCharEv:
  119|  13.9M|      {
  120|  13.9M|         if (eof())
  ------------------
  |  Branch (120:14): [True: 68, False: 13.9M]
  ------------------
  121|     68|         {
  122|     68|            fail(__FILE__, __LINE__,"skipped over eof");
  123|     68|         }
  124|  13.9M|         ++mPosition;
  125|  13.9M|         return CurrentPosition(*this);
  126|  13.9M|      }
_ZN5resip11ParseBuffer10skipToCharEc:
  136|  5.07M|      {
  137|  5.07M|         mPosition = (const char*)memchr(mPosition, c, mEnd-mPosition);
  138|  5.07M|         if(!mPosition)
  ------------------
  |  Branch (138:13): [True: 18.5k, False: 5.06M]
  ------------------
  139|  18.5k|         {
  140|  18.5k|            mPosition=mEnd;
  141|  18.5k|         }
  142|  5.07M|         return CurrentPosition(*this);
  143|  5.07M|      }
_ZN5resip11ParseBuffer11skipToOneOfERKNSt3__16bitsetILm256EEE:
  169|  13.8M|      {
  170|   230M|         while (mPosition < mEnd)
  ------------------
  |  Branch (170:17): [True: 230M, False: 16.3k]
  ------------------
  171|   230M|         {
  172|   230M|            if (cs.test((unsigned char)(*mPosition)))
  ------------------
  |  Branch (172:17): [True: 13.8M, False: 216M]
  ------------------
  173|  13.8M|            {
  174|  13.8M|               return CurrentPosition(*this);
  175|  13.8M|            }
  176|   216M|            else
  177|   216M|            {
  178|   216M|               mPosition++;
  179|   216M|            }
  180|   230M|         }
  181|  16.3k|         return CurrentPosition(*this);
  182|  13.8M|      }
_ZN5resip11ParseBuffer5skipNEi:
  186|  6.23k|      {
  187|  6.23k|         mPosition += count;
  188|  6.23k|         if (mPosition > mEnd)
  ------------------
  |  Branch (188:14): [True: 6.23k, False: 0]
  ------------------
  189|  6.23k|         {
  190|  6.23k|            fail(__FILE__, __LINE__, "skipped eof");
  191|  6.23k|         }
  192|  6.23k|         return CurrentPosition(*this);
  193|  6.23k|      }
_ZN5resip11ParseBuffer9skipToEndEv:
  196|  43.6k|      {
  197|  43.6k|         mPosition = mEnd;
  198|  43.6k|         return CurrentPosition(*this);
  199|  43.6k|      }
_ZNK5resip11ParseBuffer9assertEofEv:
  219|      2|      {
  220|      2|         if (!eof())
  ------------------
  |  Branch (220:14): [True: 1, False: 1]
  ------------------
  221|      1|         {
  222|      1|            fail(__FILE__, __LINE__,"expected eof");
  223|      1|         }
  224|      2|      }
_ZNK5resip11ParseBuffer12assertNotEofEv:
  227|  29.0M|      {
  228|  29.0M|         if (eof())
  ------------------
  |  Branch (228:14): [True: 11.9k, False: 29.0M]
  ------------------
  229|  11.9k|         {
  230|  11.9k|            fail(__FILE__, __LINE__,"unexpected eof");
  231|  11.9k|         }
  232|  29.0M|      }

_ZN5resip14ParseExceptionC2ERKNS_4DataES3_S3_i:
   12|  87.8k|{}

_ZnwmPN5resip8PoolBaseE:
    4|  13.7M|{
    5|  13.7M|   if(pool)
  ------------------
  |  Branch (5:7): [True: 155k, False: 13.5M]
  ------------------
    6|   155k|   {
    7|   155k|      return pool->allocate(size);
    8|   155k|   }
    9|  13.5M|   return ::operator new(size);
   10|  13.7M|}
_ZdlPvPN5resip8PoolBaseE:
   13|    891|{
   14|    891|   if(pool)
  ------------------
  |  Branch (14:7): [True: 2, False: 889]
  ------------------
   15|      2|   {
   16|      2|      pool->deallocate(ptr);
   17|      2|      return;
   18|      2|   }
   19|    889|   ::operator delete(ptr);
   20|    889|}

_ZN5resip8PoolBaseD2Ev:
   11|  9.60k|      virtual ~PoolBase(){}

_ZN5resip6Random13getSimpleSeedEv:
   96|      1|{
   97|       |   // !cj! need to find a better way - use pentium random commands?
   98|      1|   Data buffer;
   99|      1|   {
  100|      1|      DataStream strm(buffer);
  101|       |#ifdef WIN32
  102|       |      strm << GetTickCount() << ":";
  103|       |      strm << GetCurrentProcessId() << ":";
  104|       |      strm << GetCurrentThreadId();
  105|       |#else
  106|       |      // .kw. previously just used the lower 32bits of getTimeMs()
  107|      1|      strm << ResipClock::getTimeMicroSec() << ":";
  108|      1|      strm << getpid();
  109|       |#if defined(RESIP_RANDOM_THREAD_LOCAL)
  110|       |      strm << ":" << ThreadIf::selfId();
  111|       |#endif
  112|      1|#endif
  113|      1|   }
  114|      1|   return (unsigned int)buffer.hash();
  115|      1|}
_ZN5resip6Random10initializeEv:
  119|  18.7k|{  
  120|       |#ifdef WIN32
  121|       |//#if defined(USE_SSL)
  122|       |#if 0 //!dcm! - this shouldn't be per thread for win32, and this is slow. Going
  123|       |      //to re-work openssl initialization
  124|       |   if ( !Random::mIsInitialized)
  125|       |   {
  126|       |      Lock lock(mMutex);
  127|       |      if (!Random::mIsInitialized)
  128|       |      {
  129|       |         mIsInitialized = true;
  130|       |         RAND_screen ();
  131|       |      }
  132|       |   }
  133|       |#else      
  134|       |   if (!Random::mInitializer.isInitialized())
  135|       |   {
  136|       |      Lock lock(mMutex);      
  137|       |      if (!Random::mInitializer.isInitialized())
  138|       |      {
  139|       |         Random::mInitializer.setInitialized();
  140|       |
  141|       |         unsigned seed = getSimpleSeed();
  142|       |         srand(seed);
  143|       |
  144|       |#ifdef RESIP_RANDOM_WIN32_RTL
  145|       |         // .jjg. from http://blogs.msdn.com/michael_howard/archive/2005/01/14/353379.aspx
  146|       |         // srand(..) and rand() have proven to be insufficient sources of randomness,
  147|       |         // leading to transaction id collisions in resip.
  148|       |         // SystemFunction036 maps to RtlGenRandom, which is used by rand_s() (which is available
  149|       |         // only with the VC 8.0 runtime or later) and is the Microsoft-recommended way of getting
  150|       |         // a random number. This code allows that functionality to be accessed even from VC 7.1.
  151|       |         // However, SystemFunction036 only exists in Windows XP and later, so we may need to fallback
  152|       |         // to the old method using rand().
  153|       |         HMODULE hLib = LoadLibrary("ADVAPI32.DLL");
  154|       |         if (hLib)
  155|       |         {
  156|       |            Random::RtlGenRandom =
  157|       |               (BOOLEAN (APIENTRY *)(void*,ULONG))GetProcAddress(hLib,"SystemFunction036");
  158|       |
  159|       |            if (!Random::RtlGenRandom)
  160|       |            {
  161|       |               WarningLog(<< "Using srand(..) and rand() for random numbers");
  162|       |            }
  163|       |         }
  164|       |#endif   // RESIP_RANDOM_WIN32_RTL
  165|       |
  166|       |         mIsInitialized = true;
  167|       |
  168|       |      }
  169|       |   }
  170|       |#endif  // not dead code
  171|       |
  172|       |#else   // WIN32
  173|       |   // ?dcm? -- OpenSSL will transparently initialize PRNG if /dev/urandom is
  174|       |   // present. In any case, will move into OpenSSLInit
  175|  18.7k|   if ( !Random::mIsInitialized)
  ------------------
  |  Branch (175:9): [True: 1, False: 18.7k]
  ------------------
  176|      1|   {
  177|      1|      Lock lock(mMutex);
  178|      1|      if (!Random::mIsInitialized)
  ------------------
  |  Branch (178:11): [True: 1, False: 0]
  ------------------
  179|      1|      {
  180|      1|         mIsInitialized = true;
  181|      1|         Timer::setupTimeOffsets();
  182|       |
  183|      1|         unsigned seed = getSimpleSeed();
  184|       |
  185|       |#if defined(RESIP_RANDOM_THREAD_LOCAL)
  186|       |         ThreadIf::tlsKeyCreate(sRandomStateKey, ::free);
  187|       |#elif defined(RESIP_RANDOM_THREAD_MUTEX)
  188|       |         struct random_data *buf;
  189|       |         size_t sz = sizeof(*buf)+RANDOM_STATE_SIZE;
  190|       |         buf = (struct random_data*) ::malloc(sz);
  191|       |         memset( buf, 0, sz);      // .kw. strange segfaults without this
  192|       |         initstate_r(seed, ((char*)buf)+sizeof(*buf), RANDOM_STATE_SIZE, buf);
  193|       |         sRandomState = buf;
  194|       |#else
  195|      1|         srandom(seed);
  196|      1|#endif
  197|       |
  198|       |
  199|      1|         int fd = open("/dev/urandom", O_RDONLY);
  200|       |         // !ah! blocks on embedded devices -- not enough entropy.
  201|      1|         if ( fd != -1 )
  ------------------
  |  Branch (201:15): [True: 1, False: 0]
  ------------------
  202|      1|         {
  203|      1|            int s = read( fd,&seed,sizeof(seed) ); //!ah! blocks if /dev/random on embedded sys
  204|       |
  205|      1|            if ( s != sizeof(seed) )
  ------------------
  |  Branch (205:18): [True: 0, False: 1]
  ------------------
  206|      0|            {
  207|      0|               ErrLog( << "System is short of randomness" ); // !ah! never prints
  ------------------
  |  |  137|      0|#define ErrLog(args_) \
  |  |  ------------------
  |  |  |  |  151|      0|   do                                                                   \
  |  |  |  |  152|      0|   {                                                                    \
  |  |  |  |  153|      0|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|      0|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|      0|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Err, args_)
  ------------------
  208|      0|            }
  209|      1|         }
  210|      0|         else
  211|      0|         {
  212|      0|            ErrLog( << "Could not open /dev/urandom" );
  ------------------
  |  |  137|      0|#define ErrLog(args_) \
  |  |  ------------------
  |  |  |  |  151|      0|   do                                                                   \
  |  |  |  |  152|      0|   {                                                                    \
  |  |  |  |  153|      0|      if (genericLogCheckLevel(level_, system_))                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (153:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |  154|      0|      {                                                                 \
  |  |  |  |  155|      0|         resip::Log::Guard _resip_log_guard(level_, system_, __FILE__, __LINE__, __func__); \
  |  |  |  |  156|      0|         _resip_log_guard.asStream()  args_;                            \
  |  |  |  |  157|      0|      }                                                                 \
  |  |  |  |  158|      0|   } while (false)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (158:13): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  138|      0|GenericLog(RESIPROCATE_SUBSYSTEM, resip::Log::Err, args_)
  ------------------
  213|      0|         }
  214|       |
  215|       |#if defined(USE_SSL)
  216|       |         if (fd == -1 )
  217|       |         {
  218|       |            // really bad sign - /dev/random does not exist so need to intialize
  219|       |            // OpenSSL some other way
  220|       |
  221|       |            // !cj! need to fix         assert(0);
  222|       |         }
  223|       |         else
  224|       |         {
  225|       |            char buf[1024/8]; // size is number byes used for OpenSSL init 
  226|       |
  227|       |            int s = read( fd,&buf,sizeof(buf) );
  228|       |
  229|       |            if ( s != sizeof(buf) )
  230|       |            {
  231|       |               ErrLog( << "System is short of randomness" );
  232|       |            }
  233|       |         
  234|       |            RAND_add(buf,sizeof(buf),double(s*8));
  235|       |         }
  236|       |#endif   // SSL
  237|      1|         if (fd != -1 )
  ------------------
  |  Branch (237:14): [True: 1, False: 0]
  ------------------
  238|      1|         {
  239|      1|            ::close(fd);
  240|      1|         }
  241|      1|      }
  242|      1|   }
  243|  18.7k|#endif  // not WIN32
  244|  18.7k|}
_ZN5resip6Random9getRandomEv:
  248|  12.4k|{
  249|  12.4k|   initialize();
  250|       |
  251|       |#ifdef WIN32
  252|       |
  253|       |   int ret = 0;
  254|       |
  255|       |#ifdef RESIP_RANDOM_WIN32_RTL
  256|       |   // see comment in initialize()
  257|       |   if (Random::RtlGenRandom)
  258|       |   {
  259|       |      unsigned long buff[1];
  260|       |      ULONG ulCbBuff = sizeof(buff);
  261|       |      if (Random::RtlGenRandom(buff,ulCbBuff))
  262|       |      {
  263|       |         // .kw. all other impls here return positive number, so do the same...
  264|       |         ret = buff[0] & (~(1<<31));
  265|       |         return ret;
  266|       |      }
  267|       |   }
  268|       |   // fallback to using rand() if this is a Windows version previous to XP
  269|       |#endif	// RESIP_RANDOM_WIN32_RTL
  270|       |   {
  271|       |      // rand() returns [0,RAND_MAX], which on Windows is 15 bits and positive
  272|       |      // code below gets 30bits of randomness; with bit31 and bit15
  273|       |      // always zero; result is always positive
  274|       |      resip_assert( RAND_MAX == 0x7fff );
  275|       |      // WATCHOUT: on Linux, rand() returns 31bits, and assert above will fail
  276|       |      int r1 = rand();
  277|       |      int r2 = rand();
  278|       |      ret = (r1<<16) + r2;
  279|       |   }
  280|       |
  281|       |   return ret;
  282|       |#else	// WIN32
  283|       |
  284|       |#if defined(RESIP_RANDOM_THREAD_LOCAL)
  285|       |   struct random_data *buf = (struct random_data*) ThreadIf::tlsGetValue(sRandomStateKey);
  286|       |   if ( buf==NULL ) {
  287|       |      size_t sz = sizeof(*buf)+RANDOM_STATE_SIZE;
  288|       |      buf = (struct random_data*) ::malloc(sz);
  289|       |      memset( buf, 0, sz);      // .kw. strange segfaults without this
  290|       |      unsigned seed = getSimpleSeed();
  291|       |      initstate_r(seed, ((char*)buf)+sizeof(*buf), RANDOM_STATE_SIZE, buf);
  292|       |      ThreadIf::tlsSetValue(sRandomStateKey, buf);
  293|       |   }
  294|       |   int32_t ret;
  295|       |   random_r(buf, &ret);
  296|       |   return ret;
  297|       |#elif defined(RESIP_RANDOM_THREAD_MUTEX)
  298|       |   int32_t ret;
  299|       |   {
  300|       |      Lock statelock(mMutex);
  301|       |      random_r(sRandomState, &ret);
  302|       |   }
  303|       |   return ret;
  304|       |#else
  305|       |   // random returns [0,RAN_MAX]. On Linux, this is 31 bits and positive.
  306|       |   // On some platforms it might be on 15 bits, and will need to do something.
  307|       |   // assert( RAND_MAX == ((1<<31)-1) );  // ?slg? commented out assert since, RAND_MAX is not used in random(), it applies to rand() only
  308|  12.4k|   return random(); 
  309|  12.4k|#endif  // THREAD_LOCAL
  310|  12.4k|#endif // WIN32
  311|  12.4k|}
_ZN5resip6Random9getRandomEj:
  340|  6.23k|{
  341|  6.23k|   initialize();
  342|  6.23k|   resip_assert(len < Random::maxLength+1);
  ------------------
  |  |   96|  6.23k|#define resip_assert(x)                                                        \
  |  |   97|  6.23k|{                                                                              \
  |  |   98|  6.23k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [True: 0, False: 6.23k]
  |  |  ------------------
  |  |   99|  6.23k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  6.23k|   {                                                                           \
  |  |  103|  6.23k|      assert( (x) );                                                           \
  |  |  104|  6.23k|   }                                                                           \
  |  |  105|  6.23k|}
  ------------------
  343|       |   
  344|  6.23k|   union 
  345|  6.23k|   {
  346|  6.23k|         char cbuf[Random::maxLength+1];
  347|  6.23k|         unsigned int  ibuf[(Random::maxLength+1)/sizeof(int)];
  348|  6.23k|   };
  349|       |   
  350|  18.7k|   for (unsigned int count=0; count<(len+sizeof(int)-1)/sizeof(int); ++count)
  ------------------
  |  Branch (350:31): [True: 12.4k, False: 6.23k]
  ------------------
  351|  12.4k|   {
  352|  12.4k|      ibuf[count] = Random::getRandom();
  353|  12.4k|   }
  354|  6.23k|   return Data(cbuf, len);
  355|  6.23k|}
_ZN5resip6Random12getRandomHexEj:
  367|  6.23k|{
  368|  6.23k|   return Random::getRandom(numBytes).hex();
  369|  6.23k|}

_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEE7destroyEPS1_:
  142|  2.00M|      {
  143|  2.00M|         ptr->~T();
  144|  2.00M|      }
_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEE10deallocateEPS1_m:
   95|  12.1k|      {
   96|  12.1k|         deallocate_raw((void*)ptr);
   97|  12.1k|      }
_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEE14deallocate_rawEPv:
  109|  12.1k|      {
  110|  12.1k|         if(mPool)
  ------------------
  |  Branch (110:13): [True: 12.1k, False: 0]
  ------------------
  111|  12.1k|         {
  112|  12.1k|            mPool->deallocate(ptr);
  113|  12.1k|            return;
  114|  12.1k|         }
  115|      0|         ::operator delete(ptr);
  116|      0|      }
_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEE9constructEPS1_RKS1_:
  137|  2.00M|      {
  138|  2.00M|         new (p) T(orig);
  139|  2.00M|      }
_ZNK5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEE8max_sizeEv:
  119|  12.1k|      {
  120|  12.1k|         if(mPool)
  ------------------
  |  Branch (120:13): [True: 12.1k, False: 0]
  ------------------
  121|  12.1k|         {
  122|  12.1k|            return mPool->max_size();
  123|  12.1k|         }
  124|      0|         return std::numeric_limits<size_type>::max()/sizeof(T);
  125|  12.1k|      }
_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEE8allocateEmPKv:
   90|  12.1k|      {
   91|  12.1k|         return (pointer)(allocate_raw(n*sizeof(T)));
   92|  12.1k|      }
_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEE12allocate_rawEm:
  100|  12.1k|      {
  101|  12.1k|         if(mPool)
  ------------------
  |  Branch (101:13): [True: 12.1k, False: 0]
  ------------------
  102|  12.1k|         {
  103|  12.1k|            return mPool->allocate(bytes);
  104|  12.1k|         }
  105|      0|         return ::operator new(bytes);
  106|  12.1k|      }
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEE7destroyEPS2_:
  142|    209|      {
  143|    209|         ptr->~T();
  144|    209|      }
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEE9constructEPS2_RKS2_:
  137|    209|      {
  138|    209|         new (p) T(orig);
  139|    209|      }
_ZNK5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEE8max_sizeEv:
  119|    209|      {
  120|    209|         if(mPool)
  ------------------
  |  Branch (120:13): [True: 209, False: 0]
  ------------------
  121|    209|         {
  122|    209|            return mPool->max_size();
  123|    209|         }
  124|      0|         return std::numeric_limits<size_type>::max()/sizeof(T);
  125|    209|      }
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEE8allocateEmPKv:
   90|    209|      {
   91|    209|         return (pointer)(allocate_raw(n*sizeof(T)));
   92|    209|      }
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEE12allocate_rawEm:
  100|    209|      {
  101|    209|         if(mPool)
  ------------------
  |  Branch (101:13): [True: 209, False: 0]
  ------------------
  102|    209|         {
  103|    209|            return mPool->allocate(bytes);
  104|    209|         }
  105|      0|         return ::operator new(bytes);
  106|    209|      }
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEE10deallocateEPS2_m:
   95|    209|      {
   96|    209|         deallocate_raw((void*)ptr);
   97|    209|      }
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEE14deallocate_rawEPv:
  109|    209|      {
  110|    209|         if(mPool)
  ------------------
  |  Branch (110:13): [True: 209, False: 0]
  ------------------
  111|    209|         {
  112|    209|            mPool->deallocate(ptr);
  113|    209|            return;
  114|    209|         }
  115|      0|         ::operator delete(ptr);
  116|      0|      }
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEE9constructEPS2_RKS2_:
  137|  37.1M|      {
  138|  37.1M|         new (p) T(orig);
  139|  37.1M|      }
_ZNK5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEE8max_sizeEv:
  119|  38.1k|      {
  120|  38.1k|         if(mPool)
  ------------------
  |  Branch (120:13): [True: 298, False: 37.8k]
  ------------------
  121|    298|         {
  122|    298|            return mPool->max_size();
  123|    298|         }
  124|  37.8k|         return std::numeric_limits<size_type>::max()/sizeof(T);
  125|  38.1k|      }
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEE8allocateEmPKv:
   90|  38.1k|      {
   91|  38.1k|         return (pointer)(allocate_raw(n*sizeof(T)));
   92|  38.1k|      }
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEE12allocate_rawEm:
  100|  38.1k|      {
  101|  38.1k|         if(mPool)
  ------------------
  |  Branch (101:13): [True: 298, False: 37.8k]
  ------------------
  102|    298|         {
  103|    298|            return mPool->allocate(bytes);
  104|    298|         }
  105|  37.8k|         return ::operator new(bytes);
  106|  38.1k|      }
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEE7destroyEPS2_:
  142|  37.1M|      {
  143|  37.1M|         ptr->~T();
  144|  37.1M|      }
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEE10deallocateEPS2_m:
   95|  38.1k|      {
   96|  38.1k|         deallocate_raw((void*)ptr);
   97|  38.1k|      }
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEE14deallocate_rawEPv:
  109|  38.1k|      {
  110|  38.1k|         if(mPool)
  ------------------
  |  Branch (110:13): [True: 298, False: 37.8k]
  ------------------
  111|    298|         {
  112|    298|            mPool->deallocate(ptr);
  113|    298|            return;
  114|    298|         }
  115|  37.8k|         ::operator delete(ptr);
  116|  37.8k|      }
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEEC2EPS3_:
   41|   363k|         mPool(pool){}
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEED2Ev:
   70|   726k|      ~StlPoolAllocator(){}
_ZN5resip16StlPoolAllocatorIPNS_9ParameterENS_8PoolBaseEEC2ERKS4_:
   43|   363k|         mPool(other.mPool){}
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEEC2EPS3_:
   41|    209|         mPool(pool){}
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEED2Ev:
   70|    418|      ~StlPoolAllocator(){}
_ZN5resip16StlPoolAllocatorINS_19ParserContainerBase9HeaderKitENS_8PoolBaseEEC2ERKS4_:
   43|    209|         mPool(other.mPool){}
_ZN5resip16StlPoolAllocatorINSt3__111__list_nodeINS1_4pairINS_4DataEPNS_20HeaderFieldValueListEEEPvEENS_8PoolBaseEE10deallocateEPS9_m:
   95|  10.7k|      {
   96|  10.7k|         deallocate_raw((void*)ptr);
   97|  10.7k|      }
_ZN5resip16StlPoolAllocatorINSt3__111__list_nodeINS1_4pairINS_4DataEPNS_20HeaderFieldValueListEEEPvEENS_8PoolBaseEE14deallocate_rawES8_:
  109|  10.7k|      {
  110|  10.7k|         if(mPool)
  ------------------
  |  Branch (110:13): [True: 10.7k, False: 0]
  ------------------
  111|  10.7k|         {
  112|  10.7k|            mPool->deallocate(ptr);
  113|  10.7k|            return;
  114|  10.7k|         }
  115|      0|         ::operator delete(ptr);
  116|      0|      }
_ZN5resip16StlPoolAllocatorINSt3__111__list_nodeINS1_4pairINS_4DataEPNS_20HeaderFieldValueListEEEPvEENS_8PoolBaseEED2Ev:
   70|  19.2k|      ~StlPoolAllocator(){}
_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEEC2EPS2_:
   41|  21.6k|         mPool(pool){}
_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEEC2ERKS3_:
   43|  21.6k|         mPool(other.mPool){}
_ZN5resip16StlPoolAllocatorINS_16HeaderFieldValueENS_8PoolBaseEED2Ev:
   70|  43.3k|      ~StlPoolAllocator(){}
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEEC2EPS3_:
   41|  9.60k|         mPool(pool){}
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEED2Ev:
   70|  19.2k|      ~StlPoolAllocator(){}
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEEC2ERKS4_:
   43|  9.60k|         mPool(other.mPool){}
_ZN5resip16StlPoolAllocatorINSt3__14pairINS_4DataEPNS_20HeaderFieldValueListEEENS_8PoolBaseEEC2EPS7_:
   41|  9.60k|         mPool(pool){}
_ZN5resip16StlPoolAllocatorINSt3__14pairINS_4DataEPNS_20HeaderFieldValueListEEENS_8PoolBaseEED2Ev:
   70|  9.60k|      ~StlPoolAllocator(){}
_ZN5resip16StlPoolAllocatorINSt3__111__list_nodeINS1_4pairINS_4DataEPNS_20HeaderFieldValueListEEEPvEENS_8PoolBaseEEC2IS7_EERKNS0_IT_SA_EE:
   68|  9.60k|         mPool(other.mPool){}
_ZN5resip16StlPoolAllocatorINSt3__111__list_nodeINS1_4pairINS_4DataEPNS_20HeaderFieldValueListEEEPvEENS_8PoolBaseEEC2ERKSB_:
   43|  9.60k|         mPool(other.mPool){}
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEE7destroyEPS2_:
  142|  10.9k|      {
  143|  10.9k|         ptr->~T();
  144|  10.9k|      }
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEE10deallocateEPS2_m:
   95|  9.60k|      {
   96|  9.60k|         deallocate_raw((void*)ptr);
   97|  9.60k|      }
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEE14deallocate_rawEPv:
  109|  9.60k|      {
  110|  9.60k|         if(mPool)
  ------------------
  |  Branch (110:13): [True: 9.60k, False: 0]
  ------------------
  111|  9.60k|         {
  112|  9.60k|            mPool->deallocate(ptr);
  113|  9.60k|            return;
  114|  9.60k|         }
  115|      0|         ::operator delete(ptr);
  116|      0|      }
_ZNK5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEE8max_sizeEv:
  119|  9.60k|      {
  120|  9.60k|         if(mPool)
  ------------------
  |  Branch (120:13): [True: 9.60k, False: 0]
  ------------------
  121|  9.60k|         {
  122|  9.60k|            return mPool->max_size();
  123|  9.60k|         }
  124|      0|         return std::numeric_limits<size_type>::max()/sizeof(T);
  125|  9.60k|      }
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEE8allocateEmPKv:
   90|  9.60k|      {
   91|  9.60k|         return (pointer)(allocate_raw(n*sizeof(T)));
   92|  9.60k|      }
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEE12allocate_rawEm:
  100|  9.60k|      {
  101|  9.60k|         if(mPool)
  ------------------
  |  Branch (101:13): [True: 9.60k, False: 0]
  ------------------
  102|  9.60k|         {
  103|  9.60k|            return mPool->allocate(bytes);
  104|  9.60k|         }
  105|      0|         return ::operator new(bytes);
  106|  9.60k|      }
_ZN5resip16StlPoolAllocatorIPNS_20HeaderFieldValueListENS_8PoolBaseEE9constructEPS2_RKS2_:
  137|  10.9k|      {
  138|  10.9k|         new (p) T(orig);
  139|  10.9k|      }
_ZN5resip16StlPoolAllocatorINSt3__111__list_nodeINS1_4pairINS_4DataEPNS_20HeaderFieldValueListEEEPvEENS_8PoolBaseEE8allocateEmPKv:
   90|  10.7k|      {
   91|  10.7k|         return (pointer)(allocate_raw(n*sizeof(T)));
   92|  10.7k|      }
_ZN5resip16StlPoolAllocatorINSt3__111__list_nodeINS1_4pairINS_4DataEPNS_20HeaderFieldValueListEEEPvEENS_8PoolBaseEE12allocate_rawEm:
  100|  10.7k|      {
  101|  10.7k|         if(mPool)
  ------------------
  |  Branch (101:13): [True: 10.7k, False: 0]
  ------------------
  102|  10.7k|         {
  103|  10.7k|            return mPool->allocate(bytes);
  104|  10.7k|         }
  105|      0|         return ::operator new(bytes);
  106|  10.7k|      }

_ZNK5resip9Subsystem8getLevelEv:
   56|  2.67M|      Log::Level getLevel() const { return mLevel; }
_ZN5resip9SubsystemC2EPKc:
   59|     34|      explicit Subsystem(const char* rhs) : mSubsystem(rhs), mLevel(Log::None) {};

_ZN5resip8ThreadIf12tlsKeyCreateERjPFvPvE:
  131|      4|{
  132|       |#if defined(WIN32)
  133|       |   key = TlsAlloc();
  134|       |   if (key!=TLS_OUT_OF_INDEXES)
  135|       |   {
  136|       |      Lock lock(*mTlsDestructorsMutex);
  137|       |      (*mTlsDestructors)[key] = destructor;
  138|       |      return 0;
  139|       |   }
  140|       |   else
  141|       |   {
  142|       |      return GetLastError();
  143|       |   }
  144|       |#else
  145|      4|   return pthread_key_create(&key, destructor);
  146|      4|#endif
  147|      4|}
_ZN5resip8ThreadIf11tlsGetValueEj:
  180|  2.67M|{
  181|       |#if defined(WIN32)
  182|       |   return TlsGetValue(key);
  183|       |#else
  184|  2.67M|   return pthread_getspecific(key);
  185|  2.67M|#endif
  186|  2.67M|}

_ZN5resip10ResipClock13getSystemTimeEv:
  195|  9.60k|{
  196|  9.60k|   resip_assert(sizeof(uint64_t) == 64/8);
  ------------------
  |  |   96|  9.60k|#define resip_assert(x)                                                        \
  |  |   97|  9.60k|{                                                                              \
  |  |   98|  9.60k|   if ( !(x) )                                                                 \
  |  |  ------------------
  |  |  |  Branch (98:9): [Folded - Ignored]
  |  |  ------------------
  |  |   99|  9.60k|   {                                                                           \
  |  |  100|      0|      syslog( RESIP_ASSERT_SYSLOG_PRIORITY, "assertion failed: %s:%d: %s", __FILE__, __LINE__, #x );                 \
  |  |  ------------------
  |  |  |  |   95|      0|#define RESIP_ASSERT_SYSLOG_PRIORITY (LOG_DAEMON | LOG_CRIT)
  |  |  ------------------
  |  |  101|      0|   }                                                                           \
  |  |  102|  9.60k|   {                                                                           \
  |  |  103|  9.60k|      assert( (x) );                                                           \
  |  |  104|  9.60k|   }                                                                           \
  |  |  105|  9.60k|}
  ------------------
  197|       |
  198|       |#if defined(WIN32) || defined(UNDER_CE)
  199|       |#ifdef _RESIP_MONOTONIC_CLOCK
  200|       |   static ResipClock::WinMonoClock clockInit;
  201|       |   return WinMonoClock::GetClock64() * 1000;
  202|       |#else
  203|       |   FILETIME ft;
  204|       |
  205|       |#ifdef UNDER_CE
  206|       |   SYSTEMTIME st;
  207|       |   ::GetSystemTime(&st);
  208|       |   ::SystemTimeToFileTime(&st,&ft);
  209|       |#else
  210|       |   ::GetSystemTimeAsFileTime(&ft);
  211|       |#endif
  212|       |
  213|       |   ULARGE_INTEGER li;
  214|       |   li.LowPart = ft.dwLowDateTime;
  215|       |   li.HighPart = ft.dwHighDateTime;
  216|       |   return li.QuadPart/10;
  217|       |
  218|       |#endif //_RESIP_MONOTONIC_CLOCK
  219|       |
  220|       |#else //#if defined(WIN32) || defined(UNDER_CE)
  221|       |
  222|  9.60k|   uint64_t time=0;
  223|       |#ifdef _RESIP_MONOTONIC_CLOCK
  224|       |   struct timespec now_monotonic;
  225|       |   if (clock_gettime( CLOCK_MONOTONIC, &now_monotonic ) == 0)
  226|       |//   if ( syscall( __NR_clock_gettime, CLOCK_MONOTONIC, &now_monotonic ) == 0 )
  227|       |   {
  228|       |      time = now_monotonic.tv_sec;
  229|       |      time = time*1000000;
  230|       |      time += now_monotonic.tv_nsec/1000;
  231|       |      return time;
  232|       |   }
  233|       |#endif
  234|  9.60k|   struct timeval now;
  235|  9.60k|   gettimeofday( &now , NULL );
  236|       |   //assert( now );
  237|  9.60k|   time = now.tv_sec;
  238|  9.60k|   time = time*1000000;
  239|  9.60k|   time += now.tv_usec;
  240|  9.60k|   return time;
  241|  9.60k|#endif
  242|  9.60k|}

_ZN5resip10ResipClock15getTimeMicroSecEv:
   62|  9.60k|      {
   63|  9.60k|         return getSystemTime();
   64|  9.60k|      }

_ZN5resip5Timer16setupTimeOffsetsEv:
   62|      1|      {}
_ZN5resip5Timer15getTimeMicroSecEv:
   67|  9.60k|      {
   68|  9.60k|         return ResipClock::getTimeMicroSec();
   69|  9.60k|      }

_ZN5resip8resipMinIjEERKT_S3_S3_:
  167|     12|{
  168|     12|   if (__b < __a)
  ------------------
  |  Branch (168:8): [True: 0, False: 12]
  ------------------
  169|      0|   {
  170|      0|      return __b;
  171|      0|   }
  172|       |
  173|     12|   return __a;
  174|     12|}

_ZN5resip7MD5InitEPNS_10MD5ContextE:
   59|      2|{
   60|      2|   ctx->buf[0] = 0x67452301;
   61|      2|   ctx->buf[1] = 0xefcdab89;
   62|      2|   ctx->buf[2] = 0x98badcfe;
   63|      2|   ctx->buf[3] = 0x10325476;
   64|       |
   65|      2|   ctx->bytes[0] = 0;
   66|      2|   ctx->bytes[1] = 0;
   67|      2|}
_ZN5resip8MD5FinalEPhPNS_10MD5ContextE:
  117|      2|{
  118|      2|   int count = ctx->bytes[0] & 0x3f; 	/* Number of bytes in ctx->in */
  119|      2|   md5byte *p = (md5byte *)ctx->in + count;
  120|       |
  121|       |   /* Set the first char of padding to 0x80.  There is always room. */
  122|      2|   *p++ = 0x80;
  123|       |
  124|       |   /* Bytes of padding needed to make 56 bytes (-8..55) */
  125|      2|   count = 56 - 1 - count;
  126|       |
  127|      2|   if (count < 0)
  ------------------
  |  Branch (127:8): [True: 0, False: 2]
  ------------------
  128|      0|   {	/* Padding forces an extra block */
  129|      0|      memset(p, 0, count + 8);
  130|      0|      byteSwap(ctx->in, 16);
  131|      0|      MD5Transform(ctx->buf, ctx->in);
  132|      0|      p = (md5byte *)ctx->in;
  133|      0|      count = 56;
  134|      0|   }
  135|      2|   memset(p, 0, count);
  136|      2|   byteSwap(ctx->in, 14);
  137|       |
  138|       |   /* Append length in bits and transform */
  139|      2|   ctx->in[14] = ctx->bytes[0] << 3;
  140|      2|   ctx->in[15] = ctx->bytes[1] << 3 | ctx->bytes[0] >> 29;
  141|      2|   MD5Transform(ctx->buf, ctx->in);
  142|       |
  143|      2|   byteSwap(ctx->buf, 4);
  144|      2|   memcpy(digest, ctx->buf, 16);
  145|      2|   memset(ctx, 0, sizeof(*ctx)); 	/* In case it's sensitive */
  146|      2|}
_ZN5resip12MD5TransformEPjPKj:
  169|      2|{
  170|      2|   u_int32_t a, b, c, d;
  171|       |
  172|      2|   a = buf[0];
  173|      2|   b = buf[1];
  174|      2|   c = buf[2];
  175|      2|   d = buf[3];
  176|       |
  177|      2|   MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  177|      2|   MD5STEP(F1, a, b, c, d, in[0] + 0xd76aa478, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  178|      2|   MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  178|      2|   MD5STEP(F1, d, a, b, c, in[1] + 0xe8c7b756, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  179|      2|   MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  179|      2|   MD5STEP(F1, c, d, a, b, in[2] + 0x242070db, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  180|      2|   MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  180|      2|   MD5STEP(F1, b, c, d, a, in[3] + 0xc1bdceee, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  181|      2|   MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  181|      2|   MD5STEP(F1, a, b, c, d, in[4] + 0xf57c0faf, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  182|      2|   MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  182|      2|   MD5STEP(F1, d, a, b, c, in[5] + 0x4787c62a, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  183|      2|   MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  183|      2|   MD5STEP(F1, c, d, a, b, in[6] + 0xa8304613, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  184|      2|   MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  184|      2|   MD5STEP(F1, b, c, d, a, in[7] + 0xfd469501, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  185|      2|   MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  185|      2|   MD5STEP(F1, a, b, c, d, in[8] + 0x698098d8, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  186|      2|   MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  186|      2|   MD5STEP(F1, d, a, b, c, in[9] + 0x8b44f7af, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  187|      2|   MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  187|      2|   MD5STEP(F1, c, d, a, b, in[10] + 0xffff5bb1, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  188|      2|   MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  188|      2|   MD5STEP(F1, b, c, d, a, in[11] + 0x895cd7be, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  189|      2|   MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  189|      2|   MD5STEP(F1, a, b, c, d, in[12] + 0x6b901122, 7);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  190|      2|   MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  190|      2|   MD5STEP(F1, d, a, b, c, in[13] + 0xfd987193, 12);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  191|      2|   MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  191|      2|   MD5STEP(F1, c, d, a, b, in[14] + 0xa679438e, 17);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  192|      2|   MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  192|      2|   MD5STEP(F1, b, c, d, a, in[15] + 0x49b40821, 22);
  |  |  |  |  ------------------
  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  193|       |
  194|      2|   MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  194|      2|   MD5STEP(F2, a, b, c, d, in[1] + 0xf61e2562, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  195|      2|   MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  195|      2|   MD5STEP(F2, d, a, b, c, in[6] + 0xc040b340, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  196|      2|   MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  196|      2|   MD5STEP(F2, c, d, a, b, in[11] + 0x265e5a51, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  197|      2|   MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  197|      2|   MD5STEP(F2, b, c, d, a, in[0] + 0xe9b6c7aa, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  198|      2|   MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  198|      2|   MD5STEP(F2, a, b, c, d, in[5] + 0xd62f105d, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  199|      2|   MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  199|      2|   MD5STEP(F2, d, a, b, c, in[10] + 0x02441453, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  200|      2|   MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  200|      2|   MD5STEP(F2, c, d, a, b, in[15] + 0xd8a1e681, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  201|      2|   MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  201|      2|   MD5STEP(F2, b, c, d, a, in[4] + 0xe7d3fbc8, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  202|      2|   MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  202|      2|   MD5STEP(F2, a, b, c, d, in[9] + 0x21e1cde6, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  203|      2|   MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  203|      2|   MD5STEP(F2, d, a, b, c, in[14] + 0xc33707d6, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  204|      2|   MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  204|      2|   MD5STEP(F2, c, d, a, b, in[3] + 0xf4d50d87, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  205|      2|   MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  205|      2|   MD5STEP(F2, b, c, d, a, in[8] + 0x455a14ed, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  206|      2|   MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  206|      2|   MD5STEP(F2, a, b, c, d, in[13] + 0xa9e3e905, 5);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  207|      2|   MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  207|      2|   MD5STEP(F2, d, a, b, c, in[2] + 0xfcefa3f8, 9);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  208|      2|   MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  208|      2|   MD5STEP(F2, c, d, a, b, in[7] + 0x676f02d9, 14);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  209|      2|   MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  209|      2|   MD5STEP(F2, b, c, d, a, in[12] + 0x8d2a4c8a, 20);
  |  |  |  |  ------------------
  |  |  |  |  |  |  154|      2|#define F2(x, y, z) F1(z, x, y)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  153|      2|#define F1(x, y, z) (z ^ (x & (y ^ z)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  210|       |
  211|      2|   MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  211|      2|   MD5STEP(F3, a, b, c, d, in[5] + 0xfffa3942, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  212|      2|   MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  212|      2|   MD5STEP(F3, d, a, b, c, in[8] + 0x8771f681, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  213|      2|   MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  213|      2|   MD5STEP(F3, c, d, a, b, in[11] + 0x6d9d6122, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  214|      2|   MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  214|      2|   MD5STEP(F3, b, c, d, a, in[14] + 0xfde5380c, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  215|      2|   MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  215|      2|   MD5STEP(F3, a, b, c, d, in[1] + 0xa4beea44, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  216|      2|   MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  216|      2|   MD5STEP(F3, d, a, b, c, in[4] + 0x4bdecfa9, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  217|      2|   MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  217|      2|   MD5STEP(F3, c, d, a, b, in[7] + 0xf6bb4b60, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  218|      2|   MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  218|      2|   MD5STEP(F3, b, c, d, a, in[10] + 0xbebfbc70, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  219|      2|   MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  219|      2|   MD5STEP(F3, a, b, c, d, in[13] + 0x289b7ec6, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  220|      2|   MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  220|      2|   MD5STEP(F3, d, a, b, c, in[0] + 0xeaa127fa, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  221|      2|   MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  221|      2|   MD5STEP(F3, c, d, a, b, in[3] + 0xd4ef3085, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  222|      2|   MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  222|      2|   MD5STEP(F3, b, c, d, a, in[6] + 0x04881d05, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  223|      2|   MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  223|      2|   MD5STEP(F3, a, b, c, d, in[9] + 0xd9d4d039, 4);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  224|      2|   MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  224|      2|   MD5STEP(F3, d, a, b, c, in[12] + 0xe6db99e5, 11);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  225|      2|   MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  225|      2|   MD5STEP(F3, c, d, a, b, in[15] + 0x1fa27cf8, 16);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  226|      2|   MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  226|      2|   MD5STEP(F3, b, c, d, a, in[2] + 0xc4ac5665, 23);
  |  |  |  |  ------------------
  |  |  |  |  |  |  155|      2|#define F3(x, y, z) (x ^ y ^ z)
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  227|       |
  228|      2|   MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  228|      2|   MD5STEP(F4, a, b, c, d, in[0] + 0xf4292244, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  229|      2|   MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  229|      2|   MD5STEP(F4, d, a, b, c, in[7] + 0x432aff97, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  230|      2|   MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  230|      2|   MD5STEP(F4, c, d, a, b, in[14] + 0xab9423a7, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  231|      2|   MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  231|      2|   MD5STEP(F4, b, c, d, a, in[5] + 0xfc93a039, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  232|      2|   MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  232|      2|   MD5STEP(F4, a, b, c, d, in[12] + 0x655b59c3, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  233|      2|   MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  233|      2|   MD5STEP(F4, d, a, b, c, in[3] + 0x8f0ccc92, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  234|      2|   MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  234|      2|   MD5STEP(F4, c, d, a, b, in[10] + 0xffeff47d, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  235|      2|   MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  235|      2|   MD5STEP(F4, b, c, d, a, in[1] + 0x85845dd1, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  236|      2|   MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  236|      2|   MD5STEP(F4, a, b, c, d, in[8] + 0x6fa87e4f, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  237|      2|   MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  237|      2|   MD5STEP(F4, d, a, b, c, in[15] + 0xfe2ce6e0, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  238|      2|   MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  238|      2|   MD5STEP(F4, c, d, a, b, in[6] + 0xa3014314, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  239|      2|   MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  239|      2|   MD5STEP(F4, b, c, d, a, in[13] + 0x4e0811a1, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  240|      2|   MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  240|      2|   MD5STEP(F4, a, b, c, d, in[4] + 0xf7537e82, 6);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  241|      2|   MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  241|      2|   MD5STEP(F4, d, a, b, c, in[11] + 0xbd3af235, 10);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  242|      2|   MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  242|      2|   MD5STEP(F4, c, d, a, b, in[2] + 0x2ad7d2bb, 15);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  243|      2|   MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
  ------------------
  |  |  159|      2|#define MD5STEP(f,w,x,y,z,in,s) \
  |  |  160|      2|(w += f(x,y,z) + in, w = (w<<s | w>>(32-s)) + x)
  |  |  ------------------
  |  |  |  |  243|      2|   MD5STEP(F4, b, c, d, a, in[9] + 0xeb86d391, 21);
  |  |  |  |  ------------------
  |  |  |  |  |  |  156|      2|#define F4(x, y, z) (y ^ (x | ~z))
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  244|       |
  245|      2|   buf[0] += a;
  246|      2|   buf[1] += b;
  247|      2|   buf[2] += c;
  248|      2|   buf[3] += d;
  249|      2|}

