_ZN4asio6detail15keyword_tss_ptrINS0_10call_stackINS0_14thread_contextENS0_16thread_info_baseEE7contextEEC2Ev:
   36|      2|  {
   37|      2|  }
_ZN4asio6detail15keyword_tss_ptrINS0_10call_stackINS0_14strand_service11strand_implEhE7contextEEC2Ev:
   36|      2|  {
   37|      2|  }
_ZN4asio6detail15keyword_tss_ptrINS0_10call_stackINS0_23strand_executor_service11strand_implEhE7contextEEC2Ev:
   36|      2|  {
   37|      2|  }

_ZN4asio6detail11noncopyableC2Ev:
   28|     16|  noncopyable() {}

_ZN4asio5error19get_system_categoryEv:
  227|      4|{
  228|      4|  return asio::system_category();
  229|      4|}

_ZN4asio17execution_context2idC2Ev:
  311|     10|  id() {}

_ZN4asio5error18get_netdb_categoryEv:
   56|      4|{
   57|      4|  static detail::netdb_category instance;
   58|      4|  return instance;
   59|      4|}
_ZN4asio5error21get_addrinfo_categoryEv:
   84|      4|{
   85|      4|  static detail::addrinfo_category instance;
   86|      4|  return instance;
   87|      4|}
_ZN4asio5error17get_misc_categoryEv:
  118|      4|{
  119|      4|  static detail::misc_category instance;
  120|      4|  return instance;
  121|      4|}

_ZN4asio15system_categoryEv:
  197|      4|{
  198|      4|  static detail::system_category instance;
  199|      4|  return instance;
  200|      4|}

_ZN7exe4cpp17ISteadyTimeSourceD2Ev:
   36|     10|    virtual ~ISteadyTimeSource() = default;

_ZN7exe4cpp6ITimerD2Ev:
   39|     10|    virtual ~ITimer() = default;

_ZN7exe4cpp12MockExecutorC2Ev:
   74|  6.25k|    MockExecutor() = default;
_ZN7exe4cpp12MockExecutor8get_timeEv:
  103|  6.27k|    {
  104|  6.27k|        return current_time;
  105|  6.27k|    }
_ZN7exe4cpp12MockExecutor5startERKNSt3__16chrono8durationIxNS1_5ratioILl1ELl1000000000EEEEERKNS1_8functionIFvvEEE:
   79|  6.25k|    {
   80|  6.25k|        return start(current_time + delay, action);
   81|  6.25k|    }
_ZN7exe4cpp12MockExecutor5startERKNSt3__16chrono10time_pointINS2_12steady_clockENS2_8durationIxNS1_5ratioILl1ELl1000000000EEEEEEERKNS1_8functionIFvvEEE:
   84|  6.25k|    {
   85|  6.25k|        const auto timer = std::make_shared<MockTimer>(this, time, action);
   86|  6.25k|        this->timers.push_back(timer);
   87|  6.25k|        return Timer{timer};
   88|  6.25k|    }
_ZN7exe4cpp12MockExecutor9MockTimerC2EPS0_RKNSt3__16chrono10time_pointINS4_12steady_clockENS4_8durationIxNS3_5ratioILl1ELl1000000000EEEEEEERKNS3_8functionIFvvEEE:
   51|  6.25k|                time{time},
   52|  6.25k|                source{source},
   53|  6.25k|                action{action}
   54|  6.25k|        {}
_ZN7exe4cpp12MockExecutor9MockTimer6cancelEv:
   58|     10|        {
   59|     10|            source->cancel(this);
   60|     10|        }
_ZN7exe4cpp12MockExecutor6cancelEPNS_6ITimerE:
  261|     10|    {
  262|     10|        const auto result = std::find_if(this->timers.begin(), this->timers.end(), [timer](const std::shared_ptr<MockTimer>& item)
  263|     10|        {
  264|     10|            return item.get() == timer;
  265|     10|        });
  266|       |
  267|     10|        if (result != this->timers.end())
  ------------------
  |  Branch (267:13): [True: 10, False: 0]
  ------------------
  268|     10|        {
  269|     10|            ++num_timer_cancel_;
  270|     10|            this->timers.erase(result);
  271|     10|        }
  272|     10|    }
_ZZN7exe4cpp12MockExecutor6cancelEPNS_6ITimerEENKUlRKNSt3__110shared_ptrINS0_9MockTimerEEEE_clES8_:
  263|     10|        {
  264|     10|            return item.get() == timer;
  265|     10|        });
_ZN7exe4cpp12MockExecutor9MockTimer10expires_atEv:
   63|  15.7k|        {
   64|  15.7k|            return this->time;
   65|  15.7k|        }
_ZN7exe4cpp12MockExecutor4postERKNSt3__18functionIFvvEEE:
   98|  9.47k|    {
   99|  9.47k|        this->post_queue.push_back(action);
  100|  9.47k|    }
_ZN7exe4cpp12MockExecutor8run_manyEm:
  136|  12.5k|    {
  137|  12.5k|        size_t num = 0;
  138|  21.9k|        while (num < maximum && this->run_one()) ++num;
  ------------------
  |  Branch (138:16): [True: 21.9k, False: 0]
  |  Branch (138:33): [True: 9.47k, False: 12.5k]
  ------------------
  139|  12.5k|        return num;
  140|  12.5k|    }
_ZN7exe4cpp12MockExecutor7run_oneEv:
  114|  21.9k|    {
  115|  21.9k|        this->check_for_expired_timers();
  116|       |
  117|  21.9k|        if (this->post_queue.size() > 0)
  ------------------
  |  Branch (117:13): [True: 9.47k, False: 12.5k]
  ------------------
  118|  9.47k|        {
  119|  9.47k|            auto runnable = post_queue.front();
  120|  9.47k|            this->post_queue.pop_front();
  121|  9.47k|            runnable();
  122|  9.47k|            return true;
  123|  9.47k|        }
  124|  12.5k|        else
  125|  12.5k|        {
  126|  12.5k|            return false;
  127|  12.5k|        }
  128|  21.9k|    }
_ZN7exe4cpp12MockExecutor24check_for_expired_timersEv:
  228|  21.9k|    {
  229|  21.9k|        size_t count = 0;
  230|  21.9k|        while (find_expired_timer())
  ------------------
  |  Branch (230:16): [True: 0, False: 21.9k]
  ------------------
  231|      0|        {
  232|      0|            ++count;
  233|      0|        }
  234|  21.9k|        return count;
  235|  21.9k|    }
_ZN7exe4cpp12MockExecutor18find_expired_timerEv:
  238|  21.9k|    {
  239|  21.9k|        auto expired = [this](const std::shared_ptr<MockTimer>& timer)
  240|  21.9k|        {
  241|  21.9k|            return timer->expires_at() <= this->current_time;
  242|  21.9k|        };
  243|       |
  244|  21.9k|        auto iter = std::find_if(this->timers.begin(), this->timers.end(), expired);
  245|       |
  246|  21.9k|        if (iter == this->timers.end())
  ------------------
  |  Branch (246:13): [True: 21.9k, False: 0]
  ------------------
  247|  21.9k|        {
  248|  21.9k|            return false;
  249|  21.9k|        }
  250|      0|        else
  251|      0|        {
  252|       |            // keep the timer alive until it's callback is completed.
  253|      0|            auto action = [timer = (*iter), action = (*iter)->action]() -> void { action(); };
  254|      0|            this->post_queue.push_back(action);
  255|      0|            this->timers.erase(iter);
  256|      0|            return true;
  257|      0|        }
  258|  21.9k|    }
_ZZN7exe4cpp12MockExecutor18find_expired_timerEvENKUlRKNSt3__110shared_ptrINS0_9MockTimerEEEE_clES6_:
  240|  15.7k|        {
  241|  15.7k|            return timer->expires_at() <= this->current_time;
  242|  15.7k|        };

_ZN7exe4cpp5TimerC2ERKNSt3__110shared_ptrINS_6ITimerEEE:
   44|  6.25k|    explicit Timer(const std::shared_ptr<ITimer>& timer) : timer{timer}
   45|  6.25k|    {}
_ZN7exe4cpp5TimerC2Ev:
   41|  18.7k|    Timer() : timer{}
   42|  18.7k|    {}
_ZN7exe4cpp5Timer6cancelEv:
   48|  21.9k|    {
   49|  21.9k|        if (auto impl = timer.lock())
  ------------------
  |  Branch (49:18): [True: 10, False: 21.9k]
  ------------------
   50|     10|        {
   51|     10|            impl->cancel();
   52|     10|            return true;
   53|     10|        }
   54|  21.9k|        else
   55|  21.9k|        {
   56|  21.9k|            return false;
   57|  21.9k|        }
   58|  21.9k|    }

_ZN7ser4cpp6BufferC2Em:
   45|  6.25k|        HasLength(length),
   46|  6.25k|        bytes(std::make_unique<uint8_t[]>(length))
   47|  6.25k|    {}
_ZN7ser4cpp6Buffer9as_wsliceEv:
   64|  6.25k|    {
   65|  6.25k|        return wseq_t(this->bytes.get(), this->length());
   66|  6.25k|    }
_ZN7ser4cpp6BufferD2Ev:
   42|     10|    ~Buffer() = default;

_ZN7ser4cpp9HasLengthImEC2Em:
   53|  59.4k|    explicit HasLength(L length) : m_length(length)
   54|  59.4k|    {}
_ZNK7ser4cpp9HasLengthImE6lengthEv:
   36|  2.44M|    {
   37|  2.44M|        return m_length;
   38|  2.44M|    }
_ZNK7ser4cpp9HasLengthImE12is_not_emptyEv:
   46|  9.91k|    {
   47|  9.91k|        return m_length != 0;
   48|  9.91k|    }
_ZNK7ser4cpp9HasLengthImE8is_emptyEv:
   41|      7|    {
   42|      7|        return m_length == 0;
   43|      7|    }
_ZN7ser4cpp9HasLengthImEC2Ev:
   51|  6.25k|    HasLength() {}

_ZN7ser4cpp4RSeqImEC2EPKhm:
   59|  43.3k|        HasLength<L>(length),
   60|  43.3k|        buffer_(buffer)
   61|  43.3k|    {}
_ZNK7ser4cpp4RSeqImEcvPKhEv:
   88|   928k|    {
   89|   928k|        return this->buffer_;
   90|   928k|    };
_ZN7ser4cpp4RSeqImE7advanceEm:
   81|   877k|    {
   82|   877k|        auto num = ser4cpp::min(this->length(), count);
   83|   877k|        this->buffer_ += num;
   84|   877k|        this->m_length -= num;
   85|   877k|    }
_ZNK7ser4cpp4RSeqImE4takeEm:
   70|  17.2k|    {
   71|  17.2k|        return RSeq(this->buffer_, (count < this->length()) ? count : this->length());
  ------------------
  |  Branch (71:36): [True: 13.4k, False: 3.75k]
  ------------------
   72|  17.2k|    }
_ZNK7ser4cpp4RSeqImE4skipEm:
   75|  6.25k|    {
   76|  6.25k|        auto num = ser4cpp::min(this->length(), count);
   77|  6.25k|        return RSeq(this->buffer_ + num, this->length() - num);
   78|  6.25k|    }
_ZN7ser4cpp4RSeqImEC2Ev:
   55|      2|    RSeq() : HasLength<L>(0)
   56|      2|    {}

_ZN7ser4cpp8SettableINS_4WSeqImEEEC2Ev:
   35|  6.25k|    Settable() : value_is_set(false) {}

_ZNK7ser4cpp4WSeqImEcvPhEv:
  106|  68.7k|    {
  107|  68.7k|        return buffer_;
  108|  68.7k|    };
_ZN7ser4cpp4WSeqImE7advanceEm:
   70|  66.1k|    {
   71|  66.1k|        const auto num = ser4cpp::min(count, this->length());
   72|  66.1k|        this->buffer_ += num;
   73|  66.1k|        this->m_length -= num;
   74|  66.1k|        return num;
   75|  66.1k|    }
_ZN7ser4cpp4WSeqImE9copy_fromERKNS_4RSeqImEE:
  111|  3.65k|    {
  112|  3.65k|        return this->transfer_from<memcpy>(src);
  113|  3.65k|    }
_ZN7ser4cpp4WSeqImE13transfer_fromIXcvPFPvS3_PKvmEadL_Z6memcpyEEEENS_4RSeqImEERKS9_:
  123|  3.65k|    {
  124|  3.65k|        if (src.length() > this->length())
  ------------------
  |  Branch (124:13): [True: 0, False: 3.65k]
  ------------------
  125|      0|        {
  126|      0|            return RSeq<L>::empty();
  127|      0|        }
  128|  3.65k|        else
  129|  3.65k|        {
  130|  3.65k|            const auto ret = this->readonly().take(src.length());
  131|  3.65k|            mem_func(buffer_, src, src.length());
  132|  3.65k|            this->advance(src.length());
  133|  3.65k|            return ret;
  134|  3.65k|        }
  135|  3.65k|    }
_ZNK7ser4cpp4WSeqImE8readonlyEv:
  101|  9.91k|    {
  102|  9.91k|        return RSeq<L>(this->buffer_, this->length());
  103|  9.91k|    }
_ZN7ser4cpp4WSeqImEC2EPhm:
   55|  9.91k|    WSeq(uint8_t* buffer, L length) : HasLength<L>(length), buffer_(buffer)
   56|  9.91k|    {}
_ZN7ser4cpp4WSeqImEC2Ev:
   53|  6.25k|    {}

_ZN7ser4cpp11DoubleFloat9read_fromERNS_4RSeqImEERd:
   44|  9.46k|    {
   45|  9.46k|        uint64_t value;
   46|  9.46k|        if(UInt64::read_from(input, value))
  ------------------
  |  Branch (46:12): [True: 9.46k, False: 0]
  ------------------
   47|  9.46k|        {
   48|  9.46k|            out = to_double(value);
   49|  9.46k|            return true;
   50|  9.46k|        }
   51|       |        
   52|      0|        return false;
   53|  9.46k|    }
_ZN7ser4cpp11DoubleFloat9to_doubleEm:
   64|  9.46k|    {
   65|       |        // Extract the required values
   66|  9.46k|        bool sign = (value & 0x8000000000000000) != 0;
   67|  9.46k|        uint16_t exponent = static_cast<uint16_t>((value >> 52) & 0x7FF);
   68|  9.46k|        uint64_t mantissa = value & 0xFFFFFFFFFFFFF;
   69|       |
   70|       |        // Check special cases
   71|  9.46k|        if(exponent == 0x7FF)
  ------------------
  |  Branch (71:12): [True: 1.39k, False: 8.07k]
  ------------------
   72|  1.39k|        {
   73|  1.39k|            if(mantissa != 0)
  ------------------
  |  Branch (73:16): [True: 837, False: 555]
  ------------------
   74|    837|            {
   75|    837|                return std::numeric_limits<double>::quiet_NaN();
   76|    837|            }
   77|    555|            else
   78|    555|            {
   79|    555|                if(!sign)
  ------------------
  |  Branch (79:20): [True: 441, False: 114]
  ------------------
   80|    441|                {
   81|    441|                    return std::numeric_limits<double>::infinity();
   82|    441|                }
   83|    114|                else
   84|    114|                {
   85|    114|                    return -std::numeric_limits<double>::infinity();
   86|    114|                }
   87|       |                
   88|    555|            }
   89|  1.39k|        }
   90|  8.07k|        if(exponent == 0 && mantissa == 0)
  ------------------
  |  Branch (90:12): [True: 1.71k, False: 6.36k]
  |  Branch (90:29): [True: 322, False: 1.38k]
  ------------------
   91|    322|        {
   92|    322|            return 0.0;
   93|    322|        }
   94|       |
   95|       |        // Build the actual value
   96|  7.75k|        auto weighted_mantissa = static_cast<double>(mantissa)/(uint64_t{1} << 52);
   97|  7.75k|        double result;
   98|  7.75k|        if(exponent == 0)
  ------------------
  |  Branch (98:12): [True: 1.38k, False: 6.36k]
  ------------------
   99|  1.38k|        {
  100|  1.38k|            result = std::ldexp(weighted_mantissa, 2 - (uint16_t{1} << 11));
  101|  1.38k|        }
  102|  6.36k|        else
  103|  6.36k|        {
  104|  6.36k|            result = std::ldexp(1.0 + weighted_mantissa, exponent - 1023);
  105|  6.36k|        }
  106|       |
  107|       |        // Adjust the sign
  108|  7.75k|        if(sign)
  ------------------
  |  Branch (108:12): [True: 1.84k, False: 5.91k]
  ------------------
  109|  1.84k|        {
  110|  1.84k|            result = -result;
  111|  1.84k|        }
  112|       |
  113|  7.75k|        return result;
  114|  8.07k|    }

_ZN7ser4cpp13EndianHelpers4readERNS_4RSeqImEE:
  182|   128k|    {
  183|   128k|        return true;
  184|   128k|    }
_ZN7ser4cpp11serializers8read_oneIhEEbRNS_4RSeqImEERT_:
   41|   110k|{
   42|   110k|    return UInt8::read_from(input, out);
   43|   110k|}
_ZN7ser4cpp11serializers8read_oneIsEEbRNS_4RSeqImEERT_:
   47|  15.7k|{
   48|  15.7k|    return Int16::read_from(input, out);
   49|  15.7k|}
_ZN7ser4cpp11serializers8read_oneItEEbRNS_4RSeqImEERT_:
   53|  18.1k|{
   54|  18.1k|    return UInt16::read_from(input, out);
   55|  18.1k|}
_ZN7ser4cpp11serializers8read_oneIiEEbRNS_4RSeqImEERT_:
   59|  11.6k|{
   60|  11.6k|    return Int32::read_from(input, out);
   61|  11.6k|}
_ZN7ser4cpp11serializers8read_oneIjEEbRNS_4RSeqImEERT_:
   65|  14.3k|{
   66|  14.3k|    return UInt32::read_from(input, out);
   67|  14.3k|}
_ZN7ser4cpp11serializers8read_oneIdEEbRNS_4RSeqImEERT_:
   89|  9.46k|{
   90|  9.46k|    return DoubleFloat::read_from(input, out);
   91|  9.46k|}
_ZN7ser4cpp11serializers8read_oneIfEEbRNS_4RSeqImEERT_:
   95|  12.9k|{
   96|  12.9k|    return SingleFloat::read_from(input, out);
   97|  12.9k|}
_ZN7ser4cpp13EndianHelpers4readIhJEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  38.9k|    {
  171|  38.9k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 38.9k, False: 0]
  |  Branch (171:55): [True: 38.9k, False: 0]
  ------------------
  172|  38.9k|    }
_ZN7ser4cpp13EndianHelpers4readIhJN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  4.99k|    {
  171|  4.99k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 4.99k, False: 0]
  |  Branch (171:55): [True: 4.99k, False: 0]
  ------------------
  172|  4.99k|    }
_ZN7ser4cpp13EndianHelpers4readIN8opendnp37DNPTimeEJEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  28.0k|    {
  171|  28.0k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 28.0k, False: 0]
  |  Branch (171:55): [True: 28.0k, False: 0]
  ------------------
  172|  28.0k|    }
_ZN7ser4cpp13EndianHelpers4readIhJtEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  10.3k|    {
  171|  10.3k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 10.3k, False: 0]
  |  Branch (171:55): [True: 10.3k, False: 0]
  ------------------
  172|  10.3k|    }
_ZN7ser4cpp13EndianHelpers4readItJEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  15.6k|    {
  171|  15.6k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 15.6k, False: 0]
  |  Branch (171:55): [True: 15.6k, False: 0]
  ------------------
  172|  15.6k|    }
_ZN7ser4cpp13EndianHelpers4readIjJhEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  2.39k|    {
  171|  2.39k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 2.39k, False: 0]
  |  Branch (171:55): [True: 2.39k, False: 0]
  ------------------
  172|  2.39k|    }
_ZN7ser4cpp13EndianHelpers4readIhJjEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  5.39k|    {
  171|  5.39k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 5.39k, False: 0]
  |  Branch (171:55): [True: 5.39k, False: 0]
  ------------------
  172|  5.39k|    }
_ZN7ser4cpp13EndianHelpers4readIjJEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  9.02k|    {
  171|  9.02k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 9.02k, False: 0]
  |  Branch (171:55): [True: 9.02k, False: 0]
  ------------------
  172|  9.02k|    }
_ZN7ser4cpp13EndianHelpers4readIhJjN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  2.95k|    {
  171|  2.95k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 2.95k, False: 0]
  |  Branch (171:55): [True: 2.95k, False: 0]
  ------------------
  172|  2.95k|    }
_ZN7ser4cpp13EndianHelpers4readIjJN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  2.95k|    {
  171|  2.95k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 2.95k, False: 0]
  |  Branch (171:55): [True: 2.95k, False: 0]
  ------------------
  172|  2.95k|    }
_ZN7ser4cpp13EndianHelpers4readIhJtN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  2.54k|    {
  171|  2.54k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 2.54k, False: 0]
  |  Branch (171:55): [True: 2.54k, False: 0]
  ------------------
  172|  2.54k|    }
_ZN7ser4cpp13EndianHelpers4readItJN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  2.54k|    {
  171|  2.54k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 2.54k, False: 0]
  |  Branch (171:55): [True: 2.54k, False: 0]
  ------------------
  172|  2.54k|    }
_ZN7ser4cpp13EndianHelpers4readIhJiEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  6.49k|    {
  171|  6.49k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 6.49k, False: 0]
  |  Branch (171:55): [True: 6.49k, False: 0]
  ------------------
  172|  6.49k|    }
_ZN7ser4cpp13EndianHelpers4readIhJsEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  9.12k|    {
  171|  9.12k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 9.12k, False: 0]
  |  Branch (171:55): [True: 9.12k, False: 0]
  ------------------
  172|  9.12k|    }
_ZN7ser4cpp13EndianHelpers4readIiJEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  7.73k|    {
  171|  7.73k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 7.73k, False: 0]
  |  Branch (171:55): [True: 7.73k, False: 0]
  ------------------
  172|  7.73k|    }
_ZN7ser4cpp13EndianHelpers4readIsJEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  12.2k|    {
  171|  12.2k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 12.2k, False: 0]
  |  Branch (171:55): [True: 12.2k, False: 0]
  ------------------
  172|  12.2k|    }
_ZN7ser4cpp13EndianHelpers4readIhJfEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  10.3k|    {
  171|  10.3k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 10.3k, False: 0]
  |  Branch (171:55): [True: 10.3k, False: 0]
  ------------------
  172|  10.3k|    }
_ZN7ser4cpp13EndianHelpers4readIfJEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  10.3k|    {
  171|  10.3k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 10.3k, False: 0]
  |  Branch (171:55): [True: 10.3k, False: 0]
  ------------------
  172|  10.3k|    }
_ZN7ser4cpp13EndianHelpers4readIhJdEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  6.13k|    {
  171|  6.13k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 6.13k, False: 0]
  |  Branch (171:55): [True: 6.13k, False: 0]
  ------------------
  172|  6.13k|    }
_ZN7ser4cpp13EndianHelpers4readIdJEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  6.13k|    {
  171|  6.13k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 6.13k, False: 0]
  |  Branch (171:55): [True: 6.13k, False: 0]
  ------------------
  172|  6.13k|    }
_ZN7ser4cpp13EndianHelpers4readIhJiN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  3.90k|    {
  171|  3.90k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 3.90k, False: 0]
  |  Branch (171:55): [True: 3.90k, False: 0]
  ------------------
  172|  3.90k|    }
_ZN7ser4cpp13EndianHelpers4readIiJN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  3.90k|    {
  171|  3.90k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 3.90k, False: 0]
  |  Branch (171:55): [True: 3.90k, False: 0]
  ------------------
  172|  3.90k|    }
_ZN7ser4cpp13EndianHelpers4readIhJsN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  3.42k|    {
  171|  3.42k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 3.42k, False: 0]
  |  Branch (171:55): [True: 3.42k, False: 0]
  ------------------
  172|  3.42k|    }
_ZN7ser4cpp13EndianHelpers4readIsJN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  3.42k|    {
  171|  3.42k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 3.42k, False: 0]
  |  Branch (171:55): [True: 3.42k, False: 0]
  ------------------
  172|  3.42k|    }
_ZN7ser4cpp13EndianHelpers4readIhJfN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  2.64k|    {
  171|  2.64k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 2.64k, False: 0]
  |  Branch (171:55): [True: 2.64k, False: 0]
  ------------------
  172|  2.64k|    }
_ZN7ser4cpp13EndianHelpers4readIfJN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  2.64k|    {
  171|  2.64k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 2.64k, False: 0]
  |  Branch (171:55): [True: 2.64k, False: 0]
  ------------------
  172|  2.64k|    }
_ZN7ser4cpp13EndianHelpers4readIhJdN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  3.33k|    {
  171|  3.33k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 3.33k, False: 0]
  |  Branch (171:55): [True: 3.33k, False: 0]
  ------------------
  172|  3.33k|    }
_ZN7ser4cpp13EndianHelpers4readIdJN8opendnp37DNPTimeEEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  3.33k|    {
  171|  3.33k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 3.33k, False: 0]
  |  Branch (171:55): [True: 3.33k, False: 0]
  ------------------
  172|  3.33k|    }
_ZN7ser4cpp13EndianHelpers4readIN8opendnp37DNPTimeEJjhEEEbRNS_4RSeqImEERT_DpRT0_:
  170|  2.39k|    {
  171|  2.39k|        return serializers::read_one(input, value) && read(input, args...);
  ------------------
  |  Branch (171:16): [True: 2.39k, False: 0]
  |  Branch (171:55): [True: 2.39k, False: 0]
  ------------------
  172|  2.39k|    }

_ZN7ser4cpp5UInt89read_fromERNS_4RSeqImEERh:
   48|   653k|    {
   49|   653k|        if (input.length() < size) return false;
  ------------------
  |  Branch (49:13): [True: 0, False: 653k]
  ------------------
   50|       |
   51|   653k|        out = read(input);
   52|   653k|        input.advance(size);
   53|   653k|        return true;
   54|   653k|    }
_ZN7ser4cpp5UInt88write_toERNS_4WSeqImEEh:
   57|  56.2k|    {
   58|  56.2k|        if (dest.length() < size) return false;
  ------------------
  |  Branch (58:13): [True: 0, False: 56.2k]
  ------------------
   59|       |
   60|  56.2k|        write(dest, value);
   61|  56.2k|        dest.advance(size);
   62|  56.2k|        return true;
   63|  56.2k|    }
_ZN7ser4cpp5UInt84readEPKh:
   73|   653k|    {
   74|   653k|        return (*start);
   75|   653k|    }
_ZN7ser4cpp5UInt85writeEPhh:
   78|  56.2k|    {
   79|  56.2k|        *(start) = value;
   80|  56.2k|    }
_ZN7ser4cpp5Bit64ImLh0ELh1ELh2ELh3ELh4ELh5ELh6ELh7EE9read_fromERNS_4RSeqImEERm:
  208|  9.46k|    {
  209|  9.46k|        if (input.length() < size) return false;
  ------------------
  |  Branch (209:13): [True: 0, False: 9.46k]
  ------------------
  210|       |
  211|  9.46k|        out = read(input);
  212|  9.46k|        input.advance(size);
  213|  9.46k|        return true;
  214|  9.46k|    }
_ZN7ser4cpp5Bit64ImLh0ELh1ELh2ELh3ELh4ELh5ELh6ELh7EE4readEPKh:
  224|  9.46k|    {
  225|  9.46k|        return	(static_cast<T>(data[B0]) << 0) |
  226|  9.46k|                (static_cast<T>(data[B1]) << 8) |
  227|  9.46k|                (static_cast<T>(data[B2]) << 16) |
  228|  9.46k|                (static_cast<T>(data[B3]) << 24) |
  229|  9.46k|                (static_cast<T>(data[B4]) << 32) |
  230|  9.46k|                (static_cast<T>(data[B5]) << 40) |
  231|  9.46k|                (static_cast<T>(data[B6]) << 48) |
  232|  9.46k|                (static_cast<T>(data[B7]) << 56);
  233|  9.46k|    }
_ZN7ser4cpp5Bit32IjLh0ELh1ELh2ELh3EE9read_fromERNS_4RSeqImEERj:
  150|  27.3k|    {
  151|  27.3k|        if (input.length() < size) return false;
  ------------------
  |  Branch (151:13): [True: 0, False: 27.3k]
  ------------------
  152|       |
  153|  27.3k|        out = read(input);
  154|  27.3k|        input.advance(size);
  155|  27.3k|        return true;
  156|  27.3k|    }
_ZN7ser4cpp5Bit32IjLh0ELh1ELh2ELh3EE4readEPKh:
  166|  27.3k|    {
  167|  27.3k|        return	(static_cast<T>(data[B0]) << 0) |
  168|  27.3k|                (static_cast<T>(data[B1]) << 8) |
  169|  27.3k|                (static_cast<T>(data[B2]) << 16) |
  170|  27.3k|                (static_cast<T>(data[B3]) << 24);
  171|  27.3k|    }
_ZN7ser4cpp5Bit16IsLh0ELh1EE9read_fromERNS_4RSeqImEERs:
  100|  15.7k|    {
  101|  15.7k|        if (input.length() < size) return false;
  ------------------
  |  Branch (101:13): [True: 0, False: 15.7k]
  ------------------
  102|       |
  103|  15.7k|        out = read(input);
  104|  15.7k|        input.advance(size);
  105|  15.7k|        return true;
  106|  15.7k|    }
_ZN7ser4cpp5Bit16IsLh0ELh1EE4readEPKh:
  116|  15.7k|    {
  117|  15.7k|        return (static_cast<T>(data[B0]) << 0) | (static_cast<T>(data[B1]) << 8);
  118|  15.7k|    }
_ZN7ser4cpp5Bit16ItLh0ELh1EE9read_fromERNS_4RSeqImEERt:
  100|  33.9k|    {
  101|  33.9k|        if (input.length() < size) return false;
  ------------------
  |  Branch (101:13): [True: 0, False: 33.9k]
  ------------------
  102|       |
  103|  33.9k|        out = read(input);
  104|  33.9k|        input.advance(size);
  105|  33.9k|        return true;
  106|  33.9k|    }
_ZN7ser4cpp5Bit16ItLh0ELh1EE4readEPKh:
  116|  33.9k|    {
  117|  33.9k|        return (static_cast<T>(data[B0]) << 0) | (static_cast<T>(data[B1]) << 8);
  118|  33.9k|    }
_ZN7ser4cpp5Bit32IiLh0ELh1ELh2ELh3EE9read_fromERNS_4RSeqImEERi:
  150|  11.6k|    {
  151|  11.6k|        if (input.length() < size) return false;
  ------------------
  |  Branch (151:13): [True: 0, False: 11.6k]
  ------------------
  152|       |
  153|  11.6k|        out = read(input);
  154|  11.6k|        input.advance(size);
  155|  11.6k|        return true;
  156|  11.6k|    }
_ZN7ser4cpp5Bit32IiLh0ELh1ELh2ELh3EE4readEPKh:
  166|  11.6k|    {
  167|  11.6k|        return	(static_cast<T>(data[B0]) << 0) |
  168|  11.6k|                (static_cast<T>(data[B1]) << 8) |
  169|  11.6k|                (static_cast<T>(data[B2]) << 16) |
  170|  11.6k|                (static_cast<T>(data[B3]) << 24);
  171|  11.6k|    }
_ZN7ser4cpp6UBit48ILh0ELh1ELh2ELh3ELh4ELh5EE9read_fromERNS_4RSeqImEERNS_10UInt48TypeE:
  262|  30.4k|    {
  263|  30.4k|        if (input.length() < size) return false;
  ------------------
  |  Branch (263:13): [True: 0, False: 30.4k]
  ------------------
  264|       |
  265|  30.4k|        out = read(input);
  266|  30.4k|        input.advance(size);
  267|  30.4k|        return true;
  268|  30.4k|    }
_ZN7ser4cpp6UBit48ILh0ELh1ELh2ELh3ELh4ELh5EE4readEPKh:
  285|  30.4k|    {
  286|  30.4k|        return UInt48Type(
  287|  30.4k|                    (static_cast<uint64_t>(data[B0]) << 0) |
  288|  30.4k|                    (static_cast<uint64_t>(data[B1]) << 8) |
  289|  30.4k|                    (static_cast<uint64_t>(data[B2]) << 16) |
  290|  30.4k|                    (static_cast<uint64_t>(data[B3]) << 24) |
  291|  30.4k|                    (static_cast<uint64_t>(data[B4]) << 32) |
  292|  30.4k|                    (static_cast<uint64_t>(data[B5]) << 40));
  293|  30.4k|    }

_ZN7ser4cpp11SingleFloat9read_fromERNS_4RSeqImEERf:
   44|  12.9k|    {
   45|  12.9k|        uint32_t value;
   46|  12.9k|        if(UInt32::read_from(input, value))
  ------------------
  |  Branch (46:12): [True: 12.9k, False: 0]
  ------------------
   47|  12.9k|        {
   48|  12.9k|            out = to_float32(value);
   49|  12.9k|            return true;
   50|  12.9k|        }
   51|       |        
   52|      0|        return false;
   53|  12.9k|    }
_ZN7ser4cpp11SingleFloat10to_float32Ej:
   64|  12.9k|    {
   65|       |        // Extract the required values
   66|  12.9k|        bool sign = (value & 0x80000000) != 0;
   67|  12.9k|        uint8_t exponent = static_cast<uint8_t>((value >> 23) & 0xFF);
   68|  12.9k|        uint32_t mantissa = value & 0x7FFFFF;
   69|       |
   70|       |        // Check special cases
   71|  12.9k|        if(exponent == 0xFF)
  ------------------
  |  Branch (71:12): [True: 1.38k, False: 11.5k]
  ------------------
   72|  1.38k|        {
   73|  1.38k|            if(mantissa != 0)
  ------------------
  |  Branch (73:16): [True: 900, False: 486]
  ------------------
   74|    900|            {
   75|    900|                return std::numeric_limits<float>::quiet_NaN();
   76|    900|            }
   77|    486|            else
   78|    486|            {
   79|    486|                if(!sign)
  ------------------
  |  Branch (79:20): [True: 36, False: 450]
  ------------------
   80|     36|                {
   81|     36|                    return std::numeric_limits<float>::infinity();
   82|     36|                }
   83|    450|                else
   84|    450|                {
   85|    450|                    return -std::numeric_limits<float>::infinity();
   86|    450|                }
   87|       |                
   88|    486|            }
   89|  1.38k|        }
   90|  11.5k|        if(exponent == 0 && mantissa == 0)
  ------------------
  |  Branch (90:12): [True: 2.24k, False: 9.35k]
  |  Branch (90:29): [True: 632, False: 1.61k]
  ------------------
   91|    632|        {
   92|    632|            return 0.0f;
   93|    632|        }
   94|       |
   95|       |        // Build the actual value
   96|  10.9k|        auto weighted_mantissa = static_cast<float>(mantissa)/(uint32_t{1} << 23);
   97|  10.9k|        float result;
   98|  10.9k|        if(exponent == 0)
  ------------------
  |  Branch (98:12): [True: 1.61k, False: 9.35k]
  ------------------
   99|  1.61k|        {
  100|  1.61k|            result = std::ldexp(weighted_mantissa, 2 - (uint16_t{1} << 8));
  101|  1.61k|        }
  102|  9.35k|        else
  103|  9.35k|        {
  104|  9.35k|            result = std::ldexp(1.0f + weighted_mantissa, exponent - 127);
  105|  9.35k|        }
  106|       |
  107|       |        // Adjust the sign
  108|  10.9k|        if(sign)
  ------------------
  |  Branch (108:12): [True: 2.00k, False: 8.96k]
  ------------------
  109|  2.00k|        {
  110|  2.00k|            result = -result;
  111|  2.00k|        }
  112|       |
  113|  10.9k|        return result;
  114|  11.5k|    }

_ZN7ser4cpp10UInt48TypeC2Em:
   37|  30.4k|    explicit UInt48Type(uint64_t value) : representation(value)
   38|  30.4k|    {}
_ZN7ser4cpp10UInt48TypeC2Ev:
   40|  30.4k|    UInt48Type() : representation(0)
   41|  30.4k|    {}
_ZNK7ser4cpp10UInt48Type3GetEv:
   49|  30.4k|    {
   50|  30.4k|        return representation;
   51|  30.4k|    }

_ZN7ser4cpp3minImEET_S1_S1_:
   33|   949k|{
   34|   949k|    return (a < b) ? a : b;
  ------------------
  |  Branch (34:12): [True: 66.1k, False: 883k]
  ------------------
   35|   949k|}
_ZN7ser4cpp3minIhEET_S1_S1_:
   33|  3.65k|{
   34|  3.65k|    return (a < b) ? a : b;
  ------------------
  |  Branch (34:12): [True: 0, False: 3.65k]
  ------------------
   35|  3.65k|}

_ZN7ser4cpp10UncopyableC2Ev:
   37|  6.25k|    Uncopyable() = default; //allow construction/destruction/move
_ZN7ser4cpp10UncopyableD2Ev:
   39|     10|    virtual ~Uncopyable() = default;

_ZN8opendnp311MeasurementC2ENS_5FlagsE:
   43|   426k|    Measurement(Flags flags) : flags(flags) {}
_ZN8opendnp311MeasurementC2ENS_5FlagsENS_7DNPTimeE:
   45|  22.4k|    Measurement(Flags flags, DNPTime time) : flags(flags), time(time) {}
_ZN8opendnp316TypedMeasurementIbEC2EbNS_5FlagsE:
   59|   206k|    TypedMeasurement(T value, Flags flags) : Measurement(flags), value(value) {}
_ZN8opendnp316TypedMeasurementIbEC2EbNS_5FlagsENS_7DNPTimeE:
   60|  5.73k|    TypedMeasurement(T value, Flags flags, DNPTime time) : Measurement(flags, time), value(value) {}
_ZN8opendnp316TypedMeasurementINS_9DoubleBitEEC2ES1_NS_5FlagsE:
   59|  75.7k|    TypedMeasurement(T value, Flags flags) : Measurement(flags), value(value) {}
_ZN8opendnp316TypedMeasurementINS_9DoubleBitEEC2ES1_NS_5FlagsENS_7DNPTimeE:
   60|  2.38k|    TypedMeasurement(T value, Flags flags, DNPTime time) : Measurement(flags, time), value(value) {}
_ZN8opendnp316TypedMeasurementIdEC2ENS_5FlagsE:
   58|  55.3k|    TypedMeasurement(Flags flags) : Measurement(flags), value(0) {}
_ZN8opendnp316TypedMeasurementIdEC2EdNS_5FlagsE:
   59|  28.1k|    TypedMeasurement(T value, Flags flags) : Measurement(flags), value(value) {}
_ZN8opendnp316TypedMeasurementIdEC2EdNS_5FlagsENS_7DNPTimeE:
   60|  8.79k|    TypedMeasurement(T value, Flags flags, DNPTime time) : Measurement(flags, time), value(value) {}
_ZN8opendnp316TypedMeasurementIjEC2EjNS_5FlagsE:
   59|  59.9k|    TypedMeasurement(T value, Flags flags) : Measurement(flags), value(value) {}
_ZN8opendnp316TypedMeasurementIjEC2EjNS_5FlagsENS_7DNPTimeE:
   60|  5.50k|    TypedMeasurement(T value, Flags flags, DNPTime time) : Measurement(flags, time), value(value) {}

_ZN8opendnp37DNPTimeC2Ev:
   32|   464k|    DNPTime() : value(0), quality(TimestampQuality::INVALID) {}
_ZN8opendnp37DNPTimeC2Em:
   33|  61.6k|    explicit DNPTime(uint64_t value) : value(value), quality(TimestampQuality::SYNCHRONIZED) {}
_ZN8opendnp37DNPTimeC2EmNS_16TimestampQualityE:
   34|  10.9k|    DNPTime(uint64_t value, TimestampQuality quality) : value(value), quality(quality) {}

_ZN8opendnp35FlagsC2Eh:
   42|   208k|    explicit Flags(uint8_t value) : value(value) {}

_ZN8opendnp316GroupVariationIDC2Ehh:
   33|  18.7k|    GroupVariationID(uint8_t aGroup, uint8_t aVariation) : group(aGroup), variation(aVariation) {}

_ZN8opendnp38IINField5EmptyEv:
   83|  1.75k|    {
   84|  1.75k|        return IINField(0, 0);
   85|  1.75k|    }
_ZN8opendnp38IINFieldC2ENS_6IINBitE:
   87|  16.4k|    IINField(IINBit bit) : LSB(0), MSB(0)
   88|  16.4k|    {
   89|  16.4k|        this->SetBit(bit);
   90|  16.4k|    }
_ZN8opendnp38IINFieldC2Ehh:
   92|  8.00k|    IINField(uint8_t aLSB, uint8_t aMSB) : LSB(aLSB), MSB(aMSB) {}
_ZN8opendnp38IINFieldC2Ev:
   94|  43.5k|    IINField() : LSB(0), MSB(0) {}
_ZNK8opendnp38IINField15HasRequestErrorEv:
  121|      5|    {
  122|      5|        return Get(MSBMask::REQUEST_ERROR_MASK);
  123|      5|    }
_ZN8opendnp38IINFieldoRERKS0_:
  131|  55.4k|    {
  132|  55.4k|        MSB |= aIIN.MSB;
  133|  55.4k|        LSB |= aIIN.LSB;
  134|  55.4k|        return *this;
  135|  55.4k|    }
_ZNK8opendnp38IINField3GetENS0_7LSBMaskE:
  161|  31.0k|    {
  162|  31.0k|        return (LSB & static_cast<uint8_t>(bit)) != 0;
  163|  31.0k|    }
_ZNK8opendnp38IINField3GetENS0_7MSBMaskE:
  166|  6.21k|    {
  167|  6.21k|        return (MSB & static_cast<uint8_t>(bit)) != 0;
  168|  6.21k|    }
_ZN8opendnp38IINField3SetENS0_7MSBMaskE:
  175|  16.4k|    {
  176|  16.4k|        MSB |= static_cast<uint8_t>(bit);
  177|  16.4k|    }

_ZN8opendnp37IndexedINS_6BinaryEEC2Ev:
   36|  7.16k|    Indexed() : value(), index(0) {}
_ZN8opendnp37IndexedINS_15DoubleBitBinaryEEC2Ev:
   36|  4.52k|    Indexed() : value(), index(0) {}
_ZN8opendnp37IndexedINS_18BinaryOutputStatusEEC2Ev:
   36|  4.00k|    Indexed() : value(), index(0) {}
_ZN8opendnp37IndexedINS_18BinaryCommandEventEEC2Ev:
   36|  15.2k|    Indexed() : value(), index(0) {}
_ZN8opendnp37IndexedINS_7CounterEEC2Ev:
   36|  5.05k|    Indexed() : value(), index(0) {}
_ZN8opendnp37IndexedINS_13FrozenCounterEEC2Ev:
   36|  3.78k|    Indexed() : value(), index(0) {}
_ZN8opendnp37IndexedINS_6AnalogEEC2Ev:
   36|  8.79k|    Indexed() : value(), index(0) {}
_ZN8opendnp37IndexedINS_18AnalogOutputStatusEEC2Ev:
   36|  9.46k|    Indexed() : value(), index(0) {}
_ZN8opendnp37IndexedINS_18AnalogCommandEventEEC2Ev:
   36|  12.8k|    Indexed() : value(), index(0) {}
_ZN8opendnp39WithIndexINS_11OctetStringEEENS_7IndexedIT_EERKS3_t:
   43|  3.65k|{
   44|  3.65k|    return Indexed<T>(value, index);
   45|  3.65k|}
_ZN8opendnp37IndexedINS_11OctetStringEEC2ERKS1_t:
   34|  3.65k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}
_ZN8opendnp39WithIndexINS_6BinaryEEENS_7IndexedIT_EERKS3_t:
   43|  78.4k|{
   44|  78.4k|    return Indexed<T>(value, index);
   45|  78.4k|}
_ZN8opendnp37IndexedINS_6BinaryEEC2ERKS1_t:
   34|  78.4k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}
_ZN8opendnp39WithIndexINS_15DoubleBitBinaryEEENS_7IndexedIT_EERKS3_t:
   43|  32.9k|{
   44|  32.9k|    return Indexed<T>(value, index);
   45|  32.9k|}
_ZN8opendnp37IndexedINS_15DoubleBitBinaryEEC2ERKS1_t:
   34|  32.9k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}
_ZN8opendnp39WithIndexINS_18BinaryOutputStatusEEENS_7IndexedIT_EERKS3_t:
   43|  17.5k|{
   44|  17.5k|    return Indexed<T>(value, index);
   45|  17.5k|}
_ZN8opendnp37IndexedINS_18BinaryOutputStatusEEC2ERKS1_t:
   34|  17.5k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}
_ZN8opendnp39WithIndexINS_7CounterEEENS_7IndexedIT_EERKS3_t:
   43|  6.33k|{
   44|  6.33k|    return Indexed<T>(value, index);
   45|  6.33k|}
_ZN8opendnp37IndexedINS_7CounterEEC2ERKS1_t:
   34|  6.33k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}
_ZN8opendnp39WithIndexINS_13FrozenCounterEEENS_7IndexedIT_EERKS3_t:
   43|  10.2k|{
   44|  10.2k|    return Indexed<T>(value, index);
   45|  10.2k|}
_ZN8opendnp37IndexedINS_13FrozenCounterEEC2ERKS1_t:
   34|  10.2k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}
_ZN8opendnp39WithIndexINS_6AnalogEEENS_7IndexedIT_EERKS3_t:
   43|  11.1k|{
   44|  11.1k|    return Indexed<T>(value, index);
   45|  11.1k|}
_ZN8opendnp37IndexedINS_6AnalogEEC2ERKS1_t:
   34|  11.1k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}
_ZN8opendnp39WithIndexINS_18AnalogOutputStatusEEENS_7IndexedIT_EERKS3_t:
   43|  7.50k|{
   44|  7.50k|    return Indexed<T>(value, index);
   45|  7.50k|}
_ZN8opendnp37IndexedINS_18AnalogOutputStatusEEC2ERKS1_t:
   34|  7.50k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}
_ZN8opendnp39WithIndexINS_15TimeAndIntervalEEENS_7IndexedIT_EERKS3_t:
   43|  2.39k|{
   44|  2.39k|    return Indexed<T>(value, index);
   45|  2.39k|}
_ZN8opendnp37IndexedINS_15TimeAndIntervalEEC2ERKS1_t:
   34|  2.39k|    Indexed(const T& value_, uint16_t index_) : value(value_), index(index_) {}

_ZN8opendnp311OctetStringC2Ev:
   37|  2.48k|    OctetString() : OctetData() {}
_ZN8opendnp311OctetStringC2ERKNS_6BufferE:
   57|  3.65k|    OctetString(const Buffer& buffer) : OctetData(buffer) {}

_ZNK8opendnp311ICollectionINS_7IndexedINS_6BinaryEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  3.63k|    {
   80|  3.63k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  3.63k|        this->Foreach(visitor);
   82|  3.63k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_6BinaryEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  3.63k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_6BinaryEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  85.5k|    {
   50|  85.5k|        fun(value);
   51|  85.5k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_15DoubleBitBinaryEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  2.98k|    {
   80|  2.98k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  2.98k|        this->Foreach(visitor);
   82|  2.98k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_15DoubleBitBinaryEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  2.98k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_15DoubleBitBinaryEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  37.5k|    {
   50|  37.5k|        fun(value);
   51|  37.5k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_6AnalogEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  6.47k|    {
   80|  6.47k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  6.47k|        this->Foreach(visitor);
   82|  6.47k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_6AnalogEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  6.47k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_6AnalogEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  19.9k|    {
   50|  19.9k|        fun(value);
   51|  19.9k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_7CounterEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  3.55k|    {
   80|  3.55k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  3.55k|        this->Foreach(visitor);
   82|  3.55k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_7CounterEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  3.55k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_7CounterEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  11.3k|    {
   50|  11.3k|        fun(value);
   51|  11.3k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_13FrozenCounterEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  4.39k|    {
   80|  4.39k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  4.39k|        this->Foreach(visitor);
   82|  4.39k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_13FrozenCounterEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  4.39k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_13FrozenCounterEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  14.0k|    {
   50|  14.0k|        fun(value);
   51|  14.0k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_18BinaryOutputStatusEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  2.24k|    {
   80|  2.24k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  2.24k|        this->Foreach(visitor);
   82|  2.24k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_18BinaryOutputStatusEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  2.24k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_18BinaryOutputStatusEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  21.5k|    {
   50|  21.5k|        fun(value);
   51|  21.5k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_18AnalogOutputStatusEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  5.94k|    {
   80|  5.94k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  5.94k|        this->Foreach(visitor);
   82|  5.94k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_18AnalogOutputStatusEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  5.94k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_18AnalogOutputStatusEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  16.9k|    {
   50|  16.9k|        fun(value);
   51|  16.9k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_11OctetStringEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|    894|    {
   80|    894|        FunctorVisitor<T, Fun> visitor(fun);
   81|    894|        this->Foreach(visitor);
   82|    894|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_11OctetStringEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|    894|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_11OctetStringEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  3.65k|    {
   50|  3.65k|        fun(value);
   51|  3.65k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_15TimeAndIntervalEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|    797|    {
   80|    797|        FunctorVisitor<T, Fun> visitor(fun);
   81|    797|        this->Foreach(visitor);
   82|    797|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_15TimeAndIntervalEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|    797|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_15TimeAndIntervalEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  2.39k|    {
   50|  2.39k|        fun(value);
   51|  2.39k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_18BinaryCommandEventEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  1.53k|    {
   80|  1.53k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  1.53k|        this->Foreach(visitor);
   82|  1.53k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_18BinaryCommandEventEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  1.53k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_18BinaryCommandEventEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  15.2k|    {
   50|  15.2k|        fun(value);
   51|  15.2k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_18AnalogCommandEventEEEE11ForeachItemIZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS0_INS1_IT_EEEERNSt3__13mapItNS6_6RecordISB_EENSG_4lessItEENSG_9allocatorINSG_4pairIKtSJ_EEEEEEEUlRKS3_E_EEvRKSB_:
   79|  3.78k|    {
   80|  3.78k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  3.78k|        this->Foreach(visitor);
   82|  3.78k|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_18AnalogCommandEventEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_EC2ERKSU_:
   46|  3.78k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_18AnalogCommandEventEEEZN14MockSOEHandler9RecordAnyIS2_EEvRKNS_10HeaderInfoERKNS_11ICollectionINS1_IT_EEEERNSt3__13mapItNS4_6RecordISA_EENSF_4lessItEENSF_9allocatorINSF_4pairIKtSI_EEEEEEEUlRKS3_E_E7OnValueEST_:
   49|  12.8k|    {
   50|  12.8k|        fun(value);
   51|  12.8k|    }
_ZNK8opendnp311ICollectionINS_7DNPTimeEE11ForeachItemIZN14MockSOEHandler7ProcessERKNS_10HeaderInfoERKS2_EUlRKS1_E_EEvRKT_:
   79|  1.06k|    {
   80|  1.06k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  1.06k|        this->Foreach(visitor);
   82|  1.06k|    }
_ZN8opendnp314FunctorVisitorINS_7DNPTimeEZN14MockSOEHandler7ProcessERKNS_10HeaderInfoERKNS_11ICollectionIS1_EEEUlRKS1_E_EC2ERKSC_:
   46|  1.06k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7DNPTimeEZN14MockSOEHandler7ProcessERKNS_10HeaderInfoERKNS_11ICollectionIS1_EEEUlRKS1_E_E7OnValueESB_:
   49|  2.87k|    {
   50|  2.87k|        fun(value);
   51|  2.87k|    }
MeasurementHandler.cpp:_ZNK8opendnp311ICollectionINS_11Group50Var1EE11ForeachItemIZNKS_21TransformedCollectionIS1_NS_7DNPTimeEZNS_18MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKS2_E3$_0E7ForeachERNS_8IVisitorIS5_EEEUlRKS1_E_EEvRKT_:
   79|  1.06k|    {
   80|  1.06k|        FunctorVisitor<T, Fun> visitor(fun);
   81|  1.06k|        this->Foreach(visitor);
   82|  1.06k|    }
MeasurementHandler.cpp:_ZN8opendnp314FunctorVisitorINS_11Group50Var1EZNKS_21TransformedCollectionIS1_NS_7DNPTimeEZNS_18MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionIS1_EEE3$_0E7ForeachERNS_8IVisitorIS3_EEEUlRKS1_E_EC2ERKSJ_:
   46|  1.06k|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
MeasurementHandler.cpp:_ZN8opendnp314FunctorVisitorINS_11Group50Var1EZNKS_21TransformedCollectionIS1_NS_7DNPTimeEZNS_18MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionIS1_EEE3$_0E7ForeachERNS_8IVisitorIS3_EEEUlRKS1_E_E7OnValueESI_:
   49|  2.87k|    {
   50|  2.87k|        fun(value);
   51|  2.87k|    }
_ZNK8opendnp311ICollectionINS_11Group51Var1EE13ReadOnlyValueERS1_:
   88|  1.15k|    {
   89|  1.15k|        if (this->Count() == 1)
  ------------------
  |  Branch (89:13): [True: 901, False: 254]
  ------------------
   90|    901|        {
   91|    901|            auto assignValue = [&value](const T& item) { value = item; };
   92|    901|            this->ForeachItem(assignValue);
   93|    901|            return true;
   94|    901|        }
   95|    254|        else
   96|    254|        {
   97|    254|            return false;
   98|    254|        }
   99|  1.15k|    }
_ZNK8opendnp311ICollectionINS_11Group51Var1EE11ForeachItemIZNKS2_13ReadOnlyValueERS1_EUlRKS1_E_EEvRKT_:
   79|    901|    {
   80|    901|        FunctorVisitor<T, Fun> visitor(fun);
   81|    901|        this->Foreach(visitor);
   82|    901|    }
_ZN8opendnp314FunctorVisitorINS_11Group51Var1EZNKS_11ICollectionIS1_E13ReadOnlyValueERS1_EUlRKS1_E_EC2ERKS7_:
   46|    901|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_11Group51Var1EZNKS_11ICollectionIS1_E13ReadOnlyValueERS1_EUlRKS1_E_E7OnValueES6_:
   49|    901|    {
   50|    901|        fun(value);
   51|    901|    }
_ZZNK8opendnp311ICollectionINS_11Group51Var1EE13ReadOnlyValueERS1_ENKUlRKS1_E_clES5_:
   91|    901|            auto assignValue = [&value](const T& item) { value = item; };
_ZNK8opendnp311ICollectionINS_11Group51Var2EE13ReadOnlyValueERS1_:
   88|    595|    {
   89|    595|        if (this->Count() == 1)
  ------------------
  |  Branch (89:13): [True: 479, False: 116]
  ------------------
   90|    479|        {
   91|    479|            auto assignValue = [&value](const T& item) { value = item; };
   92|    479|            this->ForeachItem(assignValue);
   93|    479|            return true;
   94|    479|        }
   95|    116|        else
   96|    116|        {
   97|    116|            return false;
   98|    116|        }
   99|    595|    }
_ZNK8opendnp311ICollectionINS_11Group51Var2EE11ForeachItemIZNKS2_13ReadOnlyValueERS1_EUlRKS1_E_EEvRKT_:
   79|    479|    {
   80|    479|        FunctorVisitor<T, Fun> visitor(fun);
   81|    479|        this->Foreach(visitor);
   82|    479|    }
_ZN8opendnp314FunctorVisitorINS_11Group51Var2EZNKS_11ICollectionIS1_E13ReadOnlyValueERS1_EUlRKS1_E_EC2ERKS7_:
   46|    479|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_11Group51Var2EZNKS_11ICollectionIS1_E13ReadOnlyValueERS1_EUlRKS1_E_E7OnValueES6_:
   49|    479|    {
   50|    479|        fun(value);
   51|    479|    }
_ZZNK8opendnp311ICollectionINS_11Group51Var2EE13ReadOnlyValueERS1_ENKUlRKS1_E_clES5_:
   91|    479|            auto assignValue = [&value](const T& item) { value = item; };
_ZNK8opendnp311ICollectionINS_7IndexedINS_6BinaryEEEE11ForeachItemIZNKS_21TransformedCollectionIS3_S3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS0_INS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EEEUlSJ_E_EEvRKSD_:
   79|    693|    {
   80|    693|        FunctorVisitor<T, Fun> visitor(fun);
   81|    693|        this->Foreach(visitor);
   82|    693|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_6BinaryEEEZNKS_21TransformedCollectionIS3_S3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EEEUlSI_E_EC2ERKSO_:
   46|    693|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_6BinaryEEEZNKS_21TransformedCollectionIS3_S3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EEEUlSI_E_E7OnValueESI_:
   49|  2.86k|    {
   50|  2.86k|        fun(value);
   51|  2.86k|    }
_ZNK8opendnp311ICollectionINS_7IndexedINS_15DoubleBitBinaryEEEE11ForeachItemIZNKS_21TransformedCollectionIS3_S3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS0_INS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EEEUlSJ_E_EEvRKSD_:
   79|    904|    {
   80|    904|        FunctorVisitor<T, Fun> visitor(fun);
   81|    904|        this->Foreach(visitor);
   82|    904|    }
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_15DoubleBitBinaryEEEZNKS_21TransformedCollectionIS3_S3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EEEUlSI_E_EC2ERKSO_:
   46|    904|    FunctorVisitor(const Fun& fun_) : fun(fun_) {}
_ZN8opendnp314FunctorVisitorINS_7IndexedINS_15DoubleBitBinaryEEEZNKS_21TransformedCollectionIS3_S3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EEEUlSI_E_E7OnValueESI_:
   49|  1.84k|    {
   50|  1.84k|        fun(value);
   51|  1.84k|    }

_ZN8opendnp39AddressesC2Ev:
   30|  6.25k|    Addresses() = default;
_ZNK8opendnp39Addresses7ReverseEv:
   35|  6.25k|    {
   36|  6.25k|        return Addresses(this->destination, this->source);
   37|  6.25k|    }
_ZN8opendnp39AddressesC2Ett:
   32|  6.25k|    Addresses(uint16_t source, uint16_t destination) : source(source), destination(destination) {}

_ZN8opendnp38LogLevelC2Ei:
   43|    986|    explicit LogLevel(int32_t level) : value(level) {}
_ZNK8opendnp38LogLevel4nextEv:
   46|    928|    {
   47|    928|        return LogLevel(value << 1);
   48|    928|    }
_ZN8opendnp39LogLevels4noneEv:
   71|     58|    {
   72|     58|        return LogLevels(0);
   73|     58|    }
_ZN8opendnp39LogLevelsC2Ei:
   66|  7.18k|    explicit LogLevels(int32_t levels) : levels(levels) {}
_ZN8opendnp39LogLevels10everythingEv:
   76|     58|    {
   77|     58|        return LogLevels(~0);
   78|     58|    }
_ZNK8opendnp39LogLevelsorERKNS_8LogLevelE:
   97|    812|    {
   98|    812|        return LogLevels(this->levels | other.value);
   99|    812|    }
_ZN8opendnp38ModuleIdC2Ei:
   33|  6.25k|    explicit ModuleId(int32_t level) : value(level) {}

_ZN8opendnp36LoggerC2ERKNSt3__110shared_ptrINS_11ILogHandlerEEENS_8ModuleIdERKNS1_12basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEENS_9LogLevelsE:
   49|  6.25k|        : backend(backend), settings(std::make_shared<Settings>(moduleid, id, levels))
   50|  6.25k|    {
   51|  6.25k|    }
_ZN8opendnp36Logger8SettingsC2ENS_8ModuleIdERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS_9LogLevelsE:
   41|  6.25k|        Settings(ModuleId module, const std::string& id, LogLevels levels) : module(module), id(id), levels(levels) {}
_ZNK8opendnp36Logger10is_enabledERKNS_8LogLevelE:
   82|  91.8k|    {
   83|  91.8k|        return backend && settings->levels.is_set(level);
  ------------------
  |  Branch (83:16): [True: 0, False: 91.8k]
  |  Branch (83:27): [True: 0, False: 0]
  ------------------
   84|  91.8k|    }

_ZN8opendnp310HeaderInfoC2Ev:
   39|   161k|        : gv(GroupVariation::UNKNOWN),
   40|   161k|          qualifier(QualifierCode::UNDEFINED),
   41|   161k|          tsquality(TimestampQuality::INVALID),
   42|   161k|          isEventVariation(false),
   43|   161k|          flagsValid(false),
   44|   161k|          headerIndex(0)
   45|   161k|    {
   46|   161k|    }
_ZN8opendnp310HeaderInfoC2ENS_14GroupVariationENS_13QualifierCodeENS_16TimestampQualityEj:
   49|  37.3k|        : gv(gv_),
   50|  37.3k|          qualifier(qualifier_),
   51|  37.3k|          tsquality(tsquality_),
   52|  37.3k|          isEventVariation(IsEvent(gv_)),
   53|  37.3k|          flagsValid(HasFlags(gv_)),
   54|  37.3k|          headerIndex(headerIndex_)
   55|  37.3k|    {
   56|  37.3k|    }

_ZN8opendnp318IMasterApplicationD2Ev:
   44|     10|    virtual ~IMasterApplication() {}

_ZN8opendnp311ISOEHandlerD2Ev:
   47|     10|    virtual ~ISOEHandler() = default;

_ZN8opendnp312MasterParamsC2Ev:
   38|  6.25k|    MasterParams() {}

_ZN8opendnp312ResponseInfoC2Ebbb:
   31|  6.19k|    ResponseInfo(bool unsolicited, bool fir, bool fin) : unsolicited(unsolicited), fir(fir), fin(fin) {}

_ZN8opendnp310TaskConfigC2ENS_6TaskIdENSt3__110shared_ptrINS_13ITaskCallbackEEE:
   37|  37.5k|    TaskConfig(TaskId taskId, std::shared_ptr<ITaskCallback> pCallback) : taskId(taskId), pCallback(pCallback) {}
_ZN8opendnp310TaskConfig7DefaultEv:
   40|  37.5k|    {
   41|  37.5k|        return TaskConfig(TaskId::Undefined(), nullptr);
   42|  37.5k|    }

_ZN8opendnp36TaskId9UndefinedEv:
   37|  37.5k|    {
   38|  37.5k|        return TaskId(-1, false);
   39|  37.5k|    }
_ZN8opendnp36TaskIdC2Eib:
   53|  37.5k|    TaskId(int id_, bool isDefined_) : id(id_), isDefined(isDefined_) {}

_ZN8opendnp38TaskInfoC2ENS_14MasterTaskTypeENS_14TaskCompletionENS_6TaskIdE:
   37|     10|    TaskInfo(MasterTaskType type_, TaskCompletion result_, TaskId id_) : type(type_), result(result_), id(id_) {}

_ZN8opendnp36BufferC2EPKhm:
   32|  3.65k|    Buffer(const uint8_t* data, std::size_t length) : data(data), length(length) {}

_ZN8opendnp310UncopyableC2Ev:
   32|  50.0k|    Uncopyable() = default; // allow construction/destruction/move
_ZN8opendnp310UncopyableD2Ev:
   34|     80|    virtual ~Uncopyable() = default;

_ZN8opendnp313HasUpperLayerC2Ev:
   94|  6.25k|    HasUpperLayer() : pUpperLayer(nullptr) {}
_ZN8opendnp311ILowerLayerD2Ev:
   67|     10|    virtual ~ILowerLayer() {}
_ZN8opendnp313HasUpperLayer13SetUpperLayerERNS_11IUpperLayerE:
   99|  6.25k|    {
  100|  6.25k|        assert(!pUpperLayer);
  ------------------
  |  Branch (100:9): [True: 6.25k, False: 0]
  ------------------
  101|  6.25k|        pUpperLayer = &upperLayer;
  102|  6.25k|    }
_ZN8opendnp37IUpDownD2Ev:
   38|     10|    virtual ~IUpDown() {}

_ZN8opendnp311SequenceNumIhLh16EEC2Ev:
   46|  12.5k|    SequenceNum() : seq(0) {}
_ZNK8opendnp311SequenceNumIhLh16EEcvhEv:
   42|  6.26k|    {
   43|  6.26k|        return this->seq;
   44|  6.26k|    }
_ZN8opendnp311SequenceNumIhLh16EE9IncrementEv:
   56|     10|    {
   57|     10|        this->seq = Next(this->seq);
   58|     10|    }
_ZN8opendnp311SequenceNumIhLh16EE4NextEh:
   31|     10|    {
   32|     10|        return (seq + 1) % Modulus;
   33|     10|    }

_ZN8opendnp35build12ClassRequestERNS_11APDURequestENS_12FunctionCodeERKNS_10ClassFieldEh:
   47|  6.25k|    {
   48|  6.25k|        request.SetControl(AppControlField(true, true, false, false, seq));
   49|  6.25k|        request.SetFunction(fc);
   50|  6.25k|        auto writer = request.GetWriter();
   51|  6.25k|        WriteClassHeaders(writer, classes);
   52|  6.25k|    }
_ZN8opendnp35build17WriteClassHeadersERNS_12HeaderWriterERKNS_10ClassFieldE:
   55|  6.25k|    {
   56|  6.25k|        if (classes.HasClass1())
  ------------------
  |  Branch (56:13): [True: 6.25k, False: 0]
  ------------------
   57|  6.25k|        {
   58|  6.25k|            if (!writer.WriteHeader(Group60Var2::ID(), QualifierCode::ALL_OBJECTS))
  ------------------
  |  Branch (58:17): [True: 0, False: 6.25k]
  ------------------
   59|      0|            {
   60|      0|                return false;
   61|      0|            }
   62|  6.25k|        }
   63|  6.25k|        if (classes.HasClass2())
  ------------------
  |  Branch (63:13): [True: 6.25k, False: 0]
  ------------------
   64|  6.25k|        {
   65|  6.25k|            if (!writer.WriteHeader(Group60Var3::ID(), QualifierCode::ALL_OBJECTS))
  ------------------
  |  Branch (65:17): [True: 0, False: 6.25k]
  ------------------
   66|      0|            {
   67|      0|                return false;
   68|      0|            }
   69|  6.25k|        }
   70|  6.25k|        if (classes.HasClass3())
  ------------------
  |  Branch (70:13): [True: 6.25k, False: 0]
  ------------------
   71|  6.25k|        {
   72|  6.25k|            if (!writer.WriteHeader(Group60Var4::ID(), QualifierCode::ALL_OBJECTS))
  ------------------
  |  Branch (72:17): [True: 0, False: 6.25k]
  ------------------
   73|      0|            {
   74|      0|                return false;
   75|      0|            }
   76|  6.25k|        }
   77|  6.25k|        if (classes.HasClass0())
  ------------------
  |  Branch (77:13): [True: 0, False: 6.25k]
  ------------------
   78|      0|        {
   79|      0|            if (!writer.WriteHeader(Group60Var1::ID(), QualifierCode::ALL_OBJECTS))
  ------------------
  |  Branch (79:17): [True: 0, False: 0]
  ------------------
   80|      0|            {
   81|      0|                return false;
   82|      0|            }
   83|      0|        }
   84|       |
   85|  6.25k|        return true;
   86|  6.25k|    }
_ZN8opendnp35build18DisableUnsolicitedERNS_11APDURequestEh:
   89|  6.25k|    {
   90|  6.25k|        ClassRequest(request, FunctionCode::DISABLE_UNSOLICITED, ClassField::AllEventClasses(), seq);
   91|  6.25k|    }

_ZN8opendnp310APDUHeader16SolicitedConfirmEh:
   26|      7|{
   27|      7|    return Confirm(seq, false);
   28|      7|}
_ZN8opendnp310APDUHeader18UnsolicitedConfirmEh:
   31|  1.38k|{
   32|  1.38k|    return Confirm(seq, true);
   33|  1.38k|}
_ZN8opendnp310APDUHeader7ConfirmEhb:
   36|  1.39k|{
   37|  1.39k|    APDUHeader header;
   38|  1.39k|    header.function = FunctionCode::CONFIRM;
   39|  1.39k|    header.control = AppControlField(true, true, false, unsolicited, seq);
   40|  1.39k|    return header;
   41|  1.39k|}

_ZN8opendnp310APDUHeaderC2ERKNS_15AppControlFieldENS_12FunctionCodeE:
   43|  6.25k|    APDUHeader(const AppControlField& control, FunctionCode function) : control(control), function(function) {}
_ZN8opendnp318APDUResponseHeaderC2ERKNS_15AppControlFieldENS_12FunctionCodeERKNS_8IINFieldE:
   59|  6.25k|        : APDUHeader(control, function), IIN(IIN)
   60|  6.25k|    {
   61|  6.25k|    }
_ZNK8opendnp318APDUResponseHeader16as_response_infoEv:
   64|  6.19k|    {
   65|  6.19k|        return ResponseInfo(this->function == FunctionCode::UNSOLICITED_RESPONSE, control.FIR, control.FIN);
   66|  6.19k|    }
_ZN8opendnp310APDUHeaderC2Ev:
   41|  1.39k|    APDUHeader() = default;
_ZN8opendnp318APDUResponseHeaderC2Ev:
   56|      2|    APDUResponseHeader() = default;

_ZN8opendnp37logging9LogHeaderERNS_6LoggerERKNS_8LogLevelERKNS_18APDUResponseHeaderE:
   40|  6.25k|    {
   41|  6.25k|        FORMAT_LOG_BLOCK(logger, flags, "FIR: %i FIN: %i CON: %i UNS: %i SEQ: %i FUNC: %s IIN: [0x%02x, 0x%02x]",
  ------------------
  |  |   54|  6.25k|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 6.25k]
  |  |  ------------------
  |  |   55|  6.25k|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
   42|  6.25k|                         header.control.FIR, header.control.FIN, header.control.CON, header.control.UNS,
   43|  6.25k|                         header.control.SEQ, FunctionCodeSpec::to_human_string(header.function), header.IIN.LSB,
   44|  6.25k|                         header.IIN.MSB);
   45|  6.25k|    }
_ZN8opendnp37logging20ParseAndLogRequestTxERNS_6LoggerERKN7ser4cpp4RSeqImEE:
   48|  6.25k|    {
   49|  6.25k|        FORMAT_HEX_BLOCK(logger, flags::APP_HEX_TX, apdu, 18, 18);
  ------------------
  |  |   70|  6.25k|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (70:9): [True: 0, False: 6.25k]
  |  |  ------------------
  |  |   71|  6.25k|    {                                                                                                                  \
  |  |   72|      0|        opendnp3::HexLogging::log(logger, levels, buffer, ' ', firstSize, otherSize);                                  \
  |  |   73|      0|    }
  ------------------
   50|       |
   51|  6.25k|        if (logger.is_enabled(flags::APP_HEADER_TX))
  ------------------
  |  Branch (51:13): [True: 0, False: 6.25k]
  ------------------
   52|      0|        {
   53|      0|            const auto result = APDUHeaderParser::ParseRequest(apdu, &logger);
   54|      0|            if (result.success)
  ------------------
  |  Branch (54:17): [True: 0, False: 0]
  ------------------
   55|      0|            {
   56|      0|                LogHeader(logger, flags::APP_HEADER_TX, result.header);
   57|       |
   58|      0|                if (logger.is_enabled(flags::APP_OBJECT_TX))
  ------------------
  |  Branch (58:21): [True: 0, False: 0]
  ------------------
   59|      0|                {
   60|      0|                    auto expectsContents = result.header.function != FunctionCode::READ;
   61|      0|                    APDUParser::ParseAndLogAll(result.objects, &logger,
   62|      0|                                               ParserSettings::Create(expectsContents, flags::APP_OBJECT_TX));
   63|      0|                }
   64|      0|            }
   65|      0|        }
   66|  6.25k|    }

_ZN8opendnp311APDURequestC2ERKN7ser4cpp4WSeqImEE:
   25|  6.25k|APDURequest::APDURequest(const ser4cpp::wseq_t& aBuffer) : APDUWrapper(aBuffer) {}

_ZN8opendnp311APDUWrapperC2ERKN7ser4cpp4WSeqImEE:
   31|  6.25k|APDUWrapper::APDUWrapper(const ser4cpp::wseq_t& buffer) : valid(true), buffer(buffer), remaining(buffer)
   32|  6.25k|{
   33|  6.25k|    assert(buffer.length() >= 2); // need a control & function at a minimum
  ------------------
  |  Branch (33:5): [True: 6.25k, False: 0]
  ------------------
   34|  6.25k|    remaining.advance(2);
   35|  6.25k|}
_ZN8opendnp311APDUWrapper9GetWriterEv:
   43|  6.25k|{
   44|  6.25k|    return HeaderWriter(&remaining);
   45|  6.25k|}
_ZN8opendnp311APDUWrapper11SetFunctionENS_12FunctionCodeE:
   53|  6.25k|{
   54|  6.25k|    assert(buffer.is_not_empty());
  ------------------
  |  Branch (54:5): [True: 6.25k, False: 0]
  ------------------
   55|  6.25k|    buffer[1] = FunctionCodeSpec::to_type(code);
   56|  6.25k|}
_ZN8opendnp311APDUWrapper10SetControlENS_15AppControlFieldE:
   71|  6.25k|{
   72|  6.25k|    buffer[0] = control.ToByte();
   73|  6.25k|}
_ZNK8opendnp311APDUWrapper4SizeEv:
   76|  6.25k|{
   77|  6.25k|    return buffer.length() - remaining.length();
   78|  6.25k|}
_ZNK8opendnp311APDUWrapper6ToRSeqEv:
   81|  6.25k|{
   82|  6.25k|    return buffer.readonly().take(this->Size());
   83|  6.25k|}

_ZN8opendnp318AnalogCommandEventC2Ev:
   26|  16.7k|AnalogCommandEvent::AnalogCommandEvent() : value(0), status(CommandStatus::SUCCESS) {}
_ZN8opendnp318AnalogCommandEventC2EdNS_13CommandStatusE:
   28|  8.34k|AnalogCommandEvent::AnalogCommandEvent(double value_, CommandStatus status_) : value(value_), status(status_) {}
_ZN8opendnp318AnalogCommandEventC2EdNS_13CommandStatusENS_7DNPTimeE:
   31|  4.51k|    : value(value_), status(status_), time(time_)
   32|  4.51k|{
   33|  4.51k|}

_ZN8opendnp315AppControlFieldC2Eh:
   28|  6.25k|    : FIR((byte & FIR_MASK) != 0),
   29|  6.25k|      FIN((byte & FIN_MASK) != 0),
   30|  6.25k|      CON((byte & CON_MASK) != 0),
   31|  6.25k|      UNS((byte & UNS_MASK) != 0),
   32|  6.25k|      SEQ(byte & SEQ_MASK)
   33|  6.25k|{
   34|  6.25k|}
_ZN8opendnp315AppControlFieldC2Ebbbbh:
   42|  7.64k|    : FIR(fir), FIN(fin), CON(con), UNS(uns), SEQ(seq)
   43|  7.64k|{
   44|  7.64k|}
_ZNK8opendnp315AppControlField6ToByteEv:
   47|  6.25k|{
   48|  6.25k|    uint8_t ret = 0;
   49|       |
   50|  6.25k|    if (FIR)
  ------------------
  |  Branch (50:9): [True: 6.25k, False: 0]
  ------------------
   51|  6.25k|    {
   52|  6.25k|        ret |= FIR_MASK;
   53|  6.25k|    }
   54|  6.25k|    if (FIN)
  ------------------
  |  Branch (54:9): [True: 6.25k, False: 0]
  ------------------
   55|  6.25k|    {
   56|  6.25k|        ret |= FIN_MASK;
   57|  6.25k|    }
   58|  6.25k|    if (CON)
  ------------------
  |  Branch (58:9): [True: 0, False: 6.25k]
  ------------------
   59|      0|    {
   60|      0|        ret |= CON_MASK;
   61|      0|    }
   62|  6.25k|    if (UNS)
  ------------------
  |  Branch (62:9): [True: 0, False: 6.25k]
  ------------------
   63|      0|    {
   64|      0|        ret |= UNS_MASK;
   65|      0|    }
   66|       |
   67|  6.25k|    uint8_t seq = SEQ % 16;
   68|       |
   69|  6.25k|    return ret | seq;
   70|  6.25k|}

_ZN8opendnp315AppControlFieldC2Ev:
   36|  1.39k|    AppControlField() = default;

_ZN8opendnp318BinaryCommandEventC2Ev:
   26|  20.7k|BinaryCommandEvent::BinaryCommandEvent() : value(false), status(CommandStatus::SUCCESS), time(0) {}
_ZN8opendnp318BinaryCommandEventC2ENS_5FlagsE:
   28|  13.6k|BinaryCommandEvent::BinaryCommandEvent(Flags flags) : value(GetValueFromFlags(flags)), status(GetStatusFromFlags(flags))
   29|  13.6k|{
   30|  13.6k|}
_ZN8opendnp318BinaryCommandEventC2ENS_5FlagsENS_7DNPTimeE:
   33|  1.58k|    : value(GetValueFromFlags(flags)), status(GetStatusFromFlags(flags)), time(time)
   34|  1.58k|{
   35|  1.58k|}
_ZN8opendnp318BinaryCommandEvent17GetValueFromFlagsENS_5FlagsE:
   55|  15.2k|{
   56|  15.2k|    return (flags.value & ValueMask) == ValueMask;
   57|  15.2k|}
_ZN8opendnp318BinaryCommandEvent18GetStatusFromFlagsENS_5FlagsE:
   60|  15.2k|{
   61|  15.2k|    return CommandStatusSpec::from_type(flags.value & StatusMask);
   62|  15.2k|}

_ZN8opendnp310ClassField4NoneEv:
   26|  6.25k|{
   27|  6.25k|    return ClassField();
   28|  6.25k|}
_ZN8opendnp310ClassField10AllClassesEv:
   31|  6.25k|{
   32|  6.25k|    return ClassField(ALL_CLASSES);
   33|  6.25k|}
_ZN8opendnp310ClassField15AllEventClassesEv:
   36|  12.5k|{
   37|  12.5k|    return ClassField(EVENT_CLASSES);
   38|  12.5k|}
_ZN8opendnp310ClassFieldC2Ev:
   40|  6.25k|ClassField::ClassField() : bitfield(0) {}
_ZN8opendnp310ClassFieldC2Eh:
   57|  25.0k|ClassField::ClassField(uint8_t mask_) : bitfield(mask_ & ALL_CLASSES) {}
_ZNK8opendnp310ClassField16OnlyEventClassesEv:
   70|  6.25k|{
   71|  6.25k|    return ClassField(bitfield & EVENT_CLASSES);
   72|  6.25k|}
_ZNK8opendnp310ClassField9HasClass0Ev:
  105|  6.25k|{
  106|  6.25k|    return (bitfield & CLASS_0) != 0;
  107|  6.25k|}
_ZNK8opendnp310ClassField9HasClass1Ev:
  110|  9.12k|{
  111|  9.12k|    return (bitfield & CLASS_1) != 0;
  112|  9.12k|}
_ZNK8opendnp310ClassField9HasClass2Ev:
  115|  8.78k|{
  116|  8.78k|    return (bitfield & CLASS_2) != 0;
  117|  8.78k|}
_ZNK8opendnp310ClassField9HasClass3Ev:
  120|  8.64k|{
  121|  8.64k|    return (bitfield & CLASS_3) != 0;
  122|  8.64k|}
_ZNK8opendnp310ClassField13HasEventClassEv:
  125|  25.0k|{
  126|  25.0k|    return (bitfield & EVENT_CLASSES) != 0;
  127|  25.0k|}
_ZNK8opendnp310ClassField11HasAnyClassEv:
  130|  37.5k|{
  131|  37.5k|    return bitfield != 0;
  132|  37.5k|}

_ZN8opendnp320GroupVariationRecordC2EhhNS_14GroupVariationENS_18GroupVariationTypeE:
   29|   120k|    : enumeration(enumeration_), type(type_), group(group_), variation(variation_)
   30|   120k|{
   31|   120k|}
_ZN8opendnp312HeaderRecordC2ERKNS_20GroupVariationRecordEhj:
   34|   119k|    : GroupVariationRecord(gv), qualifier(qualifier_), headerIndex(headerIndex_)
   35|   119k|{
   36|   119k|}
_ZNK8opendnp312HeaderRecord16GetQualifierCodeEv:
   39|   156k|{
   40|   156k|    return QualifierCodeSpec::from_type(qualifier);
   41|   156k|}
_ZN8opendnp320GroupVariationRecord9GetRecordEhh:
   44|   120k|{
   45|   120k|    auto pair = GetEnumAndType(group, variation);
   46|   120k|    return GroupVariationRecord(group, variation, pair.enumeration, pair.type);
   47|   120k|}
_ZN8opendnp320GroupVariationRecord11GetGroupVarEhh:
   50|   120k|{
   51|   120k|    return (group << 8) | variation;
   52|   120k|}
_ZN8opendnp320GroupVariationRecord14GetEnumAndTypeEhh:
   55|   120k|{
   56|   120k|    auto type = GetType(group, variation);
   57|   120k|    auto enumeration = GroupVariationSpec::from_type(GetGroupVar(group, variation));
   58|       |
   59|   120k|    if (enumeration == GroupVariation::UNKNOWN)
  ------------------
  |  Branch (59:9): [True: 3.48k, False: 116k]
  ------------------
   60|  3.48k|    {
   61|  3.48k|        switch (group)
   62|  3.48k|        {
   63|    872|        case (110):
  ------------------
  |  Branch (63:9): [True: 872, False: 2.61k]
  ------------------
   64|    872|            enumeration = GroupVariation::Group110Var0;
   65|    872|            break;
   66|  1.22k|        case (111):
  ------------------
  |  Branch (66:9): [True: 1.22k, False: 2.26k]
  ------------------
   67|  1.22k|            enumeration = GroupVariation::Group111Var0;
   68|  1.22k|            break;
   69|    178|        case (112):
  ------------------
  |  Branch (69:9): [True: 178, False: 3.31k]
  ------------------
   70|    178|            enumeration = GroupVariation::Group112Var0;
   71|    178|            break;
   72|    294|        case (113):
  ------------------
  |  Branch (72:9): [True: 294, False: 3.19k]
  ------------------
   73|    294|            enumeration = GroupVariation::Group113Var0;
   74|    294|            break;
   75|    925|        default:
  ------------------
  |  Branch (75:9): [True: 925, False: 2.56k]
  ------------------
   76|    925|            break;
   77|  3.48k|        }
   78|  3.48k|    }
   79|       |
   80|   120k|    return EnumAndType(enumeration, type);
   81|   120k|}
_ZN8opendnp320GroupVariationRecord7GetTypeEhh:
   84|   120k|{
   85|   120k|    switch (group)
   86|   120k|    {
   87|  4.98k|    case (1):
  ------------------
  |  Branch (87:5): [True: 4.98k, False: 115k]
  ------------------
   88|  4.98k|        return GroupVariationType::STATIC;
   89|       |
   90|  5.76k|    case (2):
  ------------------
  |  Branch (90:5): [True: 5.76k, False: 114k]
  ------------------
   91|  5.76k|        return GroupVariationType::EVENT;
   92|       |
   93|  4.44k|    case (3):
  ------------------
  |  Branch (93:5): [True: 4.44k, False: 115k]
  ------------------
   94|  4.44k|        return GroupVariationType::STATIC;
   95|       |
   96|  4.97k|    case (4):
  ------------------
  |  Branch (96:5): [True: 4.97k, False: 115k]
  ------------------
   97|  4.97k|        return GroupVariationType::EVENT;
   98|       |
   99|  2.94k|    case (10):
  ------------------
  |  Branch (99:5): [True: 2.94k, False: 117k]
  ------------------
  100|  2.94k|        return GroupVariationType::STATIC;
  101|       |
  102|  3.31k|    case (11):
  ------------------
  |  Branch (102:5): [True: 3.31k, False: 116k]
  ------------------
  103|  3.31k|        return GroupVariationType::EVENT;
  104|       |
  105|  3.43k|    case (13):
  ------------------
  |  Branch (105:5): [True: 3.43k, False: 116k]
  ------------------
  106|  3.43k|        return GroupVariationType::EVENT;
  107|       |
  108|  4.92k|    case (20):
  ------------------
  |  Branch (108:5): [True: 4.92k, False: 115k]
  ------------------
  109|  4.92k|        return GroupVariationType::STATIC;
  110|       |
  111|  6.49k|    case (21):
  ------------------
  |  Branch (111:5): [True: 6.49k, False: 113k]
  ------------------
  112|  6.49k|        return GroupVariationType::STATIC;
  113|       |
  114|  5.17k|    case (22):
  ------------------
  |  Branch (114:5): [True: 5.17k, False: 115k]
  ------------------
  115|  5.17k|        return GroupVariationType::EVENT;
  116|       |
  117|  5.22k|    case (23):
  ------------------
  |  Branch (117:5): [True: 5.22k, False: 115k]
  ------------------
  118|  5.22k|        return GroupVariationType::EVENT;
  119|       |
  120|  8.74k|    case (30):
  ------------------
  |  Branch (120:5): [True: 8.74k, False: 111k]
  ------------------
  121|  8.74k|        return GroupVariationType::STATIC;
  122|       |
  123|  8.87k|    case (32):
  ------------------
  |  Branch (123:5): [True: 8.87k, False: 111k]
  ------------------
  124|  8.87k|        return GroupVariationType::EVENT;
  125|       |
  126|  6.27k|    case (40):
  ------------------
  |  Branch (126:5): [True: 6.27k, False: 114k]
  ------------------
  127|  6.27k|        return GroupVariationType::STATIC;
  128|       |
  129|  3.08k|    case (41):
  ------------------
  |  Branch (129:5): [True: 3.08k, False: 117k]
  ------------------
  130|  3.08k|        return GroupVariationType::EVENT;
  131|       |
  132|  10.7k|    case (42):
  ------------------
  |  Branch (132:5): [True: 10.7k, False: 109k]
  ------------------
  133|  10.7k|        return GroupVariationType::EVENT;
  134|       |
  135|  9.92k|    case (43):
  ------------------
  |  Branch (135:5): [True: 9.92k, False: 110k]
  ------------------
  136|  9.92k|        return GroupVariationType::EVENT;
  137|       |
  138|  5.61k|    case (50):
  ------------------
  |  Branch (138:5): [True: 5.61k, False: 114k]
  ------------------
  139|  5.61k|        switch (variation)
  140|  5.61k|        {
  141|  2.35k|        case (4):
  ------------------
  |  Branch (141:9): [True: 2.35k, False: 3.26k]
  ------------------
  142|  2.35k|            return GroupVariationType::STATIC;
  143|  3.26k|        default:
  ------------------
  |  Branch (143:9): [True: 3.26k, False: 2.35k]
  ------------------
  144|  3.26k|            return GroupVariationType::OTHER;
  145|  5.61k|        }
  146|       |
  147|    851|    case (60):
  ------------------
  |  Branch (147:5): [True: 851, False: 119k]
  ------------------
  148|    851|        switch (variation)
  149|    851|        {
  150|    229|        case (1):
  ------------------
  |  Branch (150:9): [True: 229, False: 622]
  ------------------
  151|    229|            return GroupVariationType::STATIC;
  152|    622|        default:
  ------------------
  |  Branch (152:9): [True: 622, False: 229]
  ------------------
  153|    622|            return GroupVariationType::EVENT;
  154|    851|        }
  155|       |
  156|  1.06k|    case (110):
  ------------------
  |  Branch (156:5): [True: 1.06k, False: 119k]
  ------------------
  157|  1.06k|        return GroupVariationType::STATIC;
  158|       |
  159|  1.42k|    case (111):
  ------------------
  |  Branch (159:5): [True: 1.42k, False: 118k]
  ------------------
  160|  1.42k|        return GroupVariationType::EVENT;
  161|       |
  162|      1|    case (121):
  ------------------
  |  Branch (162:5): [True: 1, False: 120k]
  ------------------
  163|      1|        return GroupVariationType::STATIC;
  164|      3|    case (122):
  ------------------
  |  Branch (164:5): [True: 3, False: 120k]
  ------------------
  165|      3|        return GroupVariationType::EVENT;
  166|       |
  167|  12.0k|    default:
  ------------------
  |  Branch (167:5): [True: 12.0k, False: 108k]
  ------------------
  168|  12.0k|        return GroupVariationType::OTHER;
  169|   120k|    }
  170|   120k|}

_ZN8opendnp311EnumAndTypeC2ENS_14GroupVariationENS_18GroupVariationTypeE:
   44|   120k|    EnumAndType(GroupVariation enumeration_, GroupVariationType type_) : enumeration(enumeration_), type(type_) {}
_ZN8opendnp316AllObjectsHeaderC2ERKNS_12HeaderRecordE:
   93|  12.8k|    explicit AllObjectsHeader(const HeaderRecord& record) : HeaderRecord(record) {}
_ZN8opendnp311CountHeaderC2ERKNS_12HeaderRecordEt:
   99|  3.84k|    CountHeader(const HeaderRecord& record, uint16_t count_) : HeaderRecord(record), count(count_) {}
_ZN8opendnp311RangeHeaderC2ERKNS_12HeaderRecordERKNS_5RangeE:
  115|  14.7k|    RangeHeader(const HeaderRecord& record, const Range& range_) : HeaderRecord(record), range(range_) {}
_ZN8opendnp312PrefixHeaderC2ERKNS_12HeaderRecordEt:
  123|  24.0k|    PrefixHeader(const HeaderRecord& record, uint16_t count_) : HeaderRecord(record), count(count_) {}

_ZN8opendnp312HeaderWriterC2EPN7ser4cpp4WSeqImEE:
   29|  6.25k|HeaderWriter::HeaderWriter(ser4cpp::wseq_t* position_) : position(position_) {}
_ZN8opendnp312HeaderWriter11WriteHeaderENS_16GroupVariationIDENS_13QualifierCodeE:
   54|  18.7k|{
   55|  18.7k|    if (position->length() < 3)
  ------------------
  |  Branch (55:9): [True: 0, False: 18.7k]
  ------------------
   56|      0|    {
   57|      0|        return false;
   58|      0|    }
   59|       |
   60|  18.7k|    ser4cpp::UInt8::write_to(*position, id.group);
   61|  18.7k|    ser4cpp::UInt8::write_to(*position, id.variation);
   62|  18.7k|    ser4cpp::UInt8::write_to(*position, QualifierCodeSpec::to_type(qc));
   63|  18.7k|    return true;
   64|  18.7k|}

_ZNK8opendnp38IINField5IsSetENS_6IINBitE:
   26|  37.2k|{
   27|  37.2k|    switch (bit)
   28|  37.2k|    {
   29|      0|    case (IINBit::BROADCAST):
  ------------------
  |  Branch (29:5): [True: 0, False: 37.2k]
  ------------------
   30|      0|        return Get(LSBMask::BROADCAST);
   31|  6.21k|    case (IINBit::CLASS1_EVENTS):
  ------------------
  |  Branch (31:5): [True: 6.21k, False: 31.0k]
  ------------------
   32|  6.21k|        return Get(LSBMask::CLASS1_EVENTS);
   33|  6.21k|    case (IINBit::CLASS2_EVENTS):
  ------------------
  |  Branch (33:5): [True: 6.21k, False: 31.0k]
  ------------------
   34|  6.21k|        return Get(LSBMask::CLASS2_EVENTS);
   35|  6.21k|    case (IINBit::CLASS3_EVENTS):
  ------------------
  |  Branch (35:5): [True: 6.21k, False: 31.0k]
  ------------------
   36|  6.21k|        return Get(LSBMask::CLASS3_EVENTS);
   37|  6.21k|    case (IINBit::NEED_TIME):
  ------------------
  |  Branch (37:5): [True: 6.21k, False: 31.0k]
  ------------------
   38|  6.21k|        return Get(LSBMask::NEED_TIME);
   39|      0|    case (IINBit::LOCAL_CONTROL):
  ------------------
  |  Branch (39:5): [True: 0, False: 37.2k]
  ------------------
   40|      0|        return Get(LSBMask::LOCAL_CONTROL);
   41|      0|    case (IINBit::DEVICE_TROUBLE):
  ------------------
  |  Branch (41:5): [True: 0, False: 37.2k]
  ------------------
   42|      0|        return Get(LSBMask::DEVICE_TROUBLE);
   43|  6.21k|    case (IINBit::DEVICE_RESTART):
  ------------------
  |  Branch (43:5): [True: 6.21k, False: 31.0k]
  ------------------
   44|  6.21k|        return Get(LSBMask::DEVICE_RESTART);
   45|      0|    case (IINBit::FUNC_NOT_SUPPORTED):
  ------------------
  |  Branch (45:5): [True: 0, False: 37.2k]
  ------------------
   46|      0|        return Get(MSBMask::FUNC_NOT_SUPPORTED);
   47|      0|    case (IINBit::OBJECT_UNKNOWN):
  ------------------
  |  Branch (47:5): [True: 0, False: 37.2k]
  ------------------
   48|      0|        return Get(MSBMask::OBJECT_UNKNOWN);
   49|      0|    case (IINBit::PARAM_ERROR):
  ------------------
  |  Branch (49:5): [True: 0, False: 37.2k]
  ------------------
   50|      0|        return Get(MSBMask::PARAM_ERROR);
   51|  6.21k|    case (IINBit::EVENT_BUFFER_OVERFLOW):
  ------------------
  |  Branch (51:5): [True: 6.21k, False: 31.0k]
  ------------------
   52|  6.21k|        return Get(MSBMask::EVENT_BUFFER_OVERFLOW);
   53|      0|    case (IINBit::ALREADY_EXECUTING):
  ------------------
  |  Branch (53:5): [True: 0, False: 37.2k]
  ------------------
   54|      0|        return Get(MSBMask::ALREADY_EXECUTING);
   55|      0|    case (IINBit::CONFIG_CORRUPT):
  ------------------
  |  Branch (55:5): [True: 0, False: 37.2k]
  ------------------
   56|      0|        return Get(MSBMask::CONFIG_CORRUPT);
   57|      0|    case (IINBit::RESERVED1):
  ------------------
  |  Branch (57:5): [True: 0, False: 37.2k]
  ------------------
   58|      0|        return Get(MSBMask::RESERVED1);
   59|      0|    case (IINBit::RESERVED2):
  ------------------
  |  Branch (59:5): [True: 0, False: 37.2k]
  ------------------
   60|      0|        return Get(MSBMask::RESERVED2);
   61|      0|    default:
  ------------------
  |  Branch (61:5): [True: 0, False: 37.2k]
  ------------------
   62|      0|        return false;
   63|  37.2k|    };
   64|      0|}
_ZN8opendnp38IINField6SetBitENS_6IINBitE:
   79|  16.4k|{
   80|  16.4k|    switch (bit)
   81|  16.4k|    {
   82|      0|    case (IINBit::BROADCAST):
  ------------------
  |  Branch (82:5): [True: 0, False: 16.4k]
  ------------------
   83|      0|        Set(LSBMask::BROADCAST);
   84|      0|        break;
   85|      0|    case (IINBit::CLASS1_EVENTS):
  ------------------
  |  Branch (85:5): [True: 0, False: 16.4k]
  ------------------
   86|      0|        Set(LSBMask::CLASS1_EVENTS);
   87|      0|        break;
   88|      0|    case (IINBit::CLASS2_EVENTS):
  ------------------
  |  Branch (88:5): [True: 0, False: 16.4k]
  ------------------
   89|      0|        Set(LSBMask::CLASS2_EVENTS);
   90|      0|        break;
   91|      0|    case (IINBit::CLASS3_EVENTS):
  ------------------
  |  Branch (91:5): [True: 0, False: 16.4k]
  ------------------
   92|      0|        Set(LSBMask::CLASS3_EVENTS);
   93|      0|        break;
   94|      0|    case (IINBit::NEED_TIME):
  ------------------
  |  Branch (94:5): [True: 0, False: 16.4k]
  ------------------
   95|      0|        Set(LSBMask::NEED_TIME);
   96|      0|        break;
   97|      0|    case (IINBit::LOCAL_CONTROL):
  ------------------
  |  Branch (97:5): [True: 0, False: 16.4k]
  ------------------
   98|      0|        Set(LSBMask::LOCAL_CONTROL);
   99|      0|        break;
  100|      0|    case (IINBit::DEVICE_TROUBLE):
  ------------------
  |  Branch (100:5): [True: 0, False: 16.4k]
  ------------------
  101|      0|        Set(LSBMask::DEVICE_TROUBLE);
  102|      0|        break;
  103|      0|    case (IINBit::DEVICE_RESTART):
  ------------------
  |  Branch (103:5): [True: 0, False: 16.4k]
  ------------------
  104|      0|        Set(LSBMask::DEVICE_RESTART);
  105|      0|        break;
  106|  15.7k|    case (IINBit::FUNC_NOT_SUPPORTED):
  ------------------
  |  Branch (106:5): [True: 15.7k, False: 684]
  ------------------
  107|  15.7k|        Set(MSBMask::FUNC_NOT_SUPPORTED);
  108|  15.7k|        break;
  109|      0|    case (IINBit::OBJECT_UNKNOWN):
  ------------------
  |  Branch (109:5): [True: 0, False: 16.4k]
  ------------------
  110|      0|        Set(MSBMask::OBJECT_UNKNOWN);
  111|      0|        break;
  112|    684|    case (IINBit::PARAM_ERROR):
  ------------------
  |  Branch (112:5): [True: 684, False: 15.7k]
  ------------------
  113|    684|        Set(MSBMask::PARAM_ERROR);
  114|    684|        break;
  115|      0|    case (IINBit::EVENT_BUFFER_OVERFLOW):
  ------------------
  |  Branch (115:5): [True: 0, False: 16.4k]
  ------------------
  116|      0|        Set(MSBMask::EVENT_BUFFER_OVERFLOW);
  117|      0|        break;
  118|      0|    case (IINBit::ALREADY_EXECUTING):
  ------------------
  |  Branch (118:5): [True: 0, False: 16.4k]
  ------------------
  119|      0|        Set(MSBMask::ALREADY_EXECUTING);
  120|      0|        break;
  121|      0|    case (IINBit::CONFIG_CORRUPT):
  ------------------
  |  Branch (121:5): [True: 0, False: 16.4k]
  ------------------
  122|      0|        Set(MSBMask::CONFIG_CORRUPT);
  123|      0|        break;
  124|      0|    case (IINBit::RESERVED1):
  ------------------
  |  Branch (124:5): [True: 0, False: 16.4k]
  ------------------
  125|      0|        Set(MSBMask::RESERVED1);
  126|      0|        break;
  127|      0|    case (IINBit::RESERVED2):
  ------------------
  |  Branch (127:5): [True: 0, False: 16.4k]
  ------------------
  128|      0|        Set(MSBMask::RESERVED2);
  129|      0|        break;
  130|      0|    default:
  ------------------
  |  Branch (130:5): [True: 0, False: 16.4k]
  ------------------
  131|      0|        break;
  132|  16.4k|    };
  133|  16.4k|}

_ZN8opendnp313BinaryFactory4FromEh:
   36|  7.05k|    {
   37|  7.05k|        return Binary(Flags(flags));
   38|  7.05k|    }
_ZN8opendnp313BinaryFactory4FromEht:
   41|  2.86k|    {
   42|  2.86k|        return From(flags, DNPTime(time));
   43|  2.86k|    }
_ZN8opendnp313BinaryFactory4FromEhNS_7DNPTimeE:
   46|  4.39k|    {
   47|  4.39k|        return Binary(Flags(flags), time);
   48|  4.39k|    }
_ZN8opendnp322DoubleBitBinaryFactory4FromEh:
   54|  8.02k|    {
   55|  8.02k|        return DoubleBitBinary(Flags(flags));
   56|  8.02k|    }
_ZN8opendnp322DoubleBitBinaryFactory4FromEht:
   59|  1.84k|    {
   60|  1.84k|        return From(flags, DNPTime(time));
   61|  1.84k|    }
_ZN8opendnp322DoubleBitBinaryFactory4FromEhNS_7DNPTimeE:
   64|  2.38k|    {
   65|  2.38k|        return DoubleBitBinary(Flags(flags), time);
   66|  2.38k|    }
_ZN8opendnp313AnalogFactory4FromEi:
   72|  4.39k|    {
   73|  4.39k|        return Analog(count);
   74|  4.39k|    }
_ZN8opendnp313AnalogFactory4FromEhd:
   76|  11.0k|    {
   77|  11.0k|        return Analog(value, Flags(flags));
   78|  11.0k|    }
_ZN8opendnp313AnalogFactory4FromEhdNS_7DNPTimeE:
   80|  4.50k|    {
   81|  4.50k|        return Analog(value, Flags(flags), time);
   82|  4.50k|    }
_ZN8opendnp314CounterFactory4FromEj:
   88|  3.86k|    {
   89|  3.86k|        return Counter(count);
   90|  3.86k|    }
_ZN8opendnp314CounterFactory4FromEhj:
   92|  6.00k|    {
   93|  6.00k|        return Counter(count, Flags(flags));
   94|  6.00k|    }
_ZN8opendnp314CounterFactory4FromEhjNS_7DNPTimeE:
   96|  1.52k|    {
   97|  1.52k|        return Counter(count, Flags(flags), time);
   98|  1.52k|    }
_ZN8opendnp320FrozenCounterFactory4FromEj:
  104|  4.99k|    {
  105|  4.99k|        return FrozenCounter(count);
  106|  4.99k|    }
_ZN8opendnp320FrozenCounterFactory4FromEhj:
  108|  5.07k|    {
  109|  5.07k|        return FrozenCounter(count, Flags(flags));
  110|  5.07k|    }
_ZN8opendnp320FrozenCounterFactory4FromEhjNS_7DNPTimeE:
  112|  3.97k|    {
  113|  3.97k|        return FrozenCounter(count, Flags(flags), time);
  114|  3.97k|    }
_ZN8opendnp322TimeAndIntervalFactory4FromENS_7DNPTimeEjh:
  120|  2.39k|    {
  121|  2.39k|        return TimeAndInterval(time, interval, units);
  122|  2.39k|    }
_ZN8opendnp325BinaryOutputStatusFactory4FromEh:
  137|  7.86k|    {
  138|  7.86k|        return BinaryOutputStatus(Flags(flags));
  139|  7.86k|    }
_ZN8opendnp325BinaryOutputStatusFactory4FromEhNS_7DNPTimeE:
  142|  1.33k|    {
  143|  1.33k|        return BinaryOutputStatus(Flags(flags), time);
  144|  1.33k|    }
_ZN8opendnp325BinaryCommandEventFactory4FromEh:
  150|  13.6k|    {
  151|  13.6k|        return BinaryCommandEvent(Flags(flags));
  152|  13.6k|    }
_ZN8opendnp325BinaryCommandEventFactory4FromEhNS_7DNPTimeE:
  155|  1.58k|    {
  156|  1.58k|        return BinaryCommandEvent(Flags(flags), time);
  157|  1.58k|    }
_ZN8opendnp325AnalogOutputStatusFactory4FromEhd:
  163|  12.6k|    {
  164|  12.6k|        return AnalogOutputStatus(value, Flags(flags));
  165|  12.6k|    }
_ZN8opendnp325AnalogOutputStatusFactory4FromEhdNS_7DNPTimeE:
  168|  4.28k|    {
  169|  4.28k|        return AnalogOutputStatus(value, Flags(flags), time);
  170|  4.28k|    }
_ZN8opendnp325AnalogCommandEventFactory4FromEhd:
  176|  8.34k|    {
  177|  8.34k|        return AnalogCommandEvent(value, CommandStatusSpec::from_type(status));
  178|  8.34k|    }
_ZN8opendnp325AnalogCommandEventFactory4FromEhdNS_7DNPTimeE:
  181|  4.51k|    {
  182|  4.51k|        return AnalogCommandEvent(value, CommandStatusSpec::from_type(status), time);
  183|  4.51k|    }

_ZN8opendnp36BinaryC2Ev:
   31|  80.8k|Binary::Binary() : TypedMeasurement(false, flags::RESTART) {}
_ZN8opendnp36BinaryC2Eb:
   33|  74.1k|Binary::Binary(bool value) : TypedMeasurement(value, flags::GetBinaryFlags(flags::ONLINE, value)) {}
_ZN8opendnp36BinaryC2ENS_5FlagsE:
   35|  7.05k|Binary::Binary(Flags flags) : TypedMeasurement(flags::GetBinaryValue(flags), flags) {}
_ZN8opendnp36BinaryC2ENS_5FlagsENS_7DNPTimeE:
   37|  4.39k|Binary::Binary(Flags flags, DNPTime time) : TypedMeasurement(flags::GetBinaryValue(flags), flags, time) {}
_ZN8opendnp315DoubleBitBinaryC2Ev:
   48|  40.6k|DoubleBitBinary::DoubleBitBinary() : TypedMeasurement(DoubleBit::INDETERMINATE, flags::RESTART) {}
_ZN8opendnp315DoubleBitBinaryC2ENS_9DoubleBitE:
   50|  27.0k|DoubleBitBinary::DoubleBitBinary(DoubleBit value) : TypedMeasurement(value, GetFlags(flags::ONLINE, value)) {}
_ZN8opendnp315DoubleBitBinaryC2ENS_5FlagsE:
   52|  8.02k|DoubleBitBinary::DoubleBitBinary(Flags flags) : TypedMeasurement(GetValue(flags), flags) {}
_ZN8opendnp315DoubleBitBinaryC2ENS_5FlagsENS_7DNPTimeE:
   54|  2.38k|DoubleBitBinary::DoubleBitBinary(Flags flags, DNPTime time) : TypedMeasurement(GetValue(flags), flags, time) {}
_ZN8opendnp315DoubleBitBinary8GetValueENS_5FlagsE:
   64|  10.4k|{
   65|       |    // the value is the top 2 bits, so down-shift 6
   66|  10.4k|    uint8_t value = flags.value >> 6;
   67|  10.4k|    return DoubleBitSpec::from_type(value);
   68|  10.4k|}
_ZN8opendnp315DoubleBitBinary8GetFlagsENS_5FlagsENS_9DoubleBitE:
   71|  27.0k|{
   72|  27.0k|    uint8_t value = DoubleBitSpec::to_type(state) << 6;
   73|  27.0k|    return Flags((QualityMask & flags.value) | value);
   74|  27.0k|}
_ZN8opendnp318BinaryOutputStatusC2Ev:
   78|  24.5k|BinaryOutputStatus::BinaryOutputStatus() : TypedMeasurement(false, flags::RESTART) {}
_ZN8opendnp318BinaryOutputStatusC2Eb:
   81|  12.3k|    : TypedMeasurement(value, flags::GetBinaryFlags(flags::ONLINE, value))
   82|  12.3k|{
   83|  12.3k|}
_ZN8opendnp318BinaryOutputStatusC2ENS_5FlagsE:
   85|  7.86k|BinaryOutputStatus::BinaryOutputStatus(Flags flags) : TypedMeasurement(flags::GetBinaryValue(flags), flags) {}
_ZN8opendnp318BinaryOutputStatusC2ENS_5FlagsENS_7DNPTimeE:
   88|  1.33k|    : TypedMeasurement(flags::GetBinaryValue(flags), flags, time)
   89|  1.33k|{
   90|  1.33k|}
_ZN8opendnp36AnalogC2Ev:
  104|  30.7k|Analog::Analog() : TypedMeasurement(flags::RESTART) {}
_ZN8opendnp36AnalogC2Ed:
  106|  4.39k|Analog::Analog(double value) : TypedMeasurement(value, flags::ONLINE) {}
_ZN8opendnp36AnalogC2EdNS_5FlagsE:
  108|  11.0k|Analog::Analog(double value, Flags flags) : TypedMeasurement(value, flags) {}
_ZN8opendnp36AnalogC2EdNS_5FlagsENS_7DNPTimeE:
  110|  4.50k|Analog::Analog(double value, Flags flags, DNPTime time) : TypedMeasurement<double>(value, flags, time) {}
_ZN8opendnp37CounterC2Ev:
  114|  17.3k|Counter::Counter() : TypedMeasurement(0, flags::RESTART) {}
_ZN8opendnp37CounterC2Ej:
  116|  3.86k|Counter::Counter(uint32_t value) : TypedMeasurement<uint32_t>(value, flags::ONLINE) {}
_ZN8opendnp37CounterC2EjNS_5FlagsE:
  118|  6.00k|Counter::Counter(uint32_t value, Flags flags) : TypedMeasurement<uint32_t>(value, flags) {}
_ZN8opendnp37CounterC2EjNS_5FlagsENS_7DNPTimeE:
  120|  1.52k|Counter::Counter(uint32_t value, Flags flags, DNPTime time) : TypedMeasurement<uint32_t>(value, flags, time) {}
_ZN8opendnp313FrozenCounterC2Ev:
  124|  22.7k|FrozenCounter::FrozenCounter() : TypedMeasurement(0, flags::RESTART) {}
_ZN8opendnp313FrozenCounterC2Ej:
  126|  4.99k|FrozenCounter::FrozenCounter(uint32_t value) : TypedMeasurement<uint32_t>(value, flags::ONLINE) {}
_ZN8opendnp313FrozenCounterC2EjNS_5FlagsE:
  128|  5.07k|FrozenCounter::FrozenCounter(uint32_t value, Flags flags) : TypedMeasurement<uint32_t>(value, flags) {}
_ZN8opendnp313FrozenCounterC2EjNS_5FlagsENS_7DNPTimeE:
  130|  3.97k|FrozenCounter::FrozenCounter(uint32_t value, Flags flags, DNPTime time) : TypedMeasurement<uint32_t>(value, flags, time)
  131|  3.97k|{
  132|  3.97k|}
_ZN8opendnp318AnalogOutputStatusC2Ev:
  136|  24.6k|AnalogOutputStatus::AnalogOutputStatus() : TypedMeasurement<double>(flags::RESTART) {}
_ZN8opendnp318AnalogOutputStatusC2EdNS_5FlagsE:
  140|  12.6k|AnalogOutputStatus::AnalogOutputStatus(double value, Flags flags) : TypedMeasurement<double>(value, flags) {}
_ZN8opendnp318AnalogOutputStatusC2EdNS_5FlagsENS_7DNPTimeE:
  143|  4.28k|    : TypedMeasurement<double>(value, flags, time)
  144|  4.28k|{
  145|  4.28k|}
_ZN8opendnp315TimeAndIntervalC2Ev:
  149|  4.07k|TimeAndInterval::TimeAndInterval() : time(0), interval(0), units(0) {}
_ZN8opendnp315TimeAndIntervalC2ENS_7DNPTimeEjh:
  152|  2.39k|    : time(time_), interval(interval_), units(units_)
  153|  2.39k|{
  154|  2.39k|}

_ZN8opendnp37MessageC2ERKNS_9AddressesERKN7ser4cpp4RSeqImEE:
   34|  12.5k|    Message(const Addresses& addresses, const ser4cpp::rseq_t& payload) : addresses(addresses), payload(payload) {}

_ZN8opendnp39OctetDataC2Ev:
   30|  2.48k|OctetData::OctetData() : size(1) {}
_ZN8opendnp39OctetDataC2ERKNS_6BufferE:
   35|  3.65k|    : size(input.length == 0 ? 1 : ser4cpp::min<uint8_t>(MAX_SIZE, static_cast<uint8_t>(input.length)))
  ------------------
  |  Branch (35:12): [True: 0, False: 3.65k]
  ------------------
   36|  3.65k|{
   37|  3.65k|    ser4cpp::rseq_t input_slice(input.data, input.length);
   38|  3.65k|    if (input_slice.is_not_empty())
  ------------------
  |  Branch (38:9): [True: 3.65k, False: 0]
  ------------------
   39|  3.65k|    {
   40|  3.65k|        ser4cpp::wseq_t dest(buffer.data(), buffer.size());
   41|  3.65k|        dest.copy_from(input_slice.take(size));
   42|  3.65k|    }
   43|  3.65k|}

_ZN8opendnp35flags14GetBinaryValueENS_5FlagsE:
   30|  20.6k|    {
   31|  20.6k|        return (flags.value & static_cast<uint8_t>(BinaryQuality::STATE)) != 0;
   32|  20.6k|    }
_ZN8opendnp35flags14GetBinaryFlagsENS_5FlagsEb:
   35|  86.4k|    {
   36|  86.4k|        return (value) ? Flags(flags.value | static_cast<uint8_t>(BinaryQuality::STATE))
  ------------------
  |  Branch (36:16): [True: 21.8k, False: 64.6k]
  ------------------
   37|  86.4k|                       : Flags(flags.value & (~static_cast<uint8_t>(BinaryQuality::STATE)));
   38|  86.4k|    }

_ZN8opendnp35RangeC2Ev:
   44|  33.2k|    Range() : start(1), stop(0) {}
_ZNK8opendnp35Range5CountEv:
   47|  47.5k|    {
   48|  47.5k|        return IsValid() ? (static_cast<size_t>(stop) - static_cast<size_t>(start) + 1) : 0;
  ------------------
  |  Branch (48:16): [True: 47.5k, False: 0]
  ------------------
   49|  47.5k|    }
_ZNK8opendnp35Range7IsValidEv:
  102|  80.7k|    {
  103|  80.7k|        return start <= stop;
  104|  80.7k|    }

_ZN8opendnp316APDUHeaderParser13ParseResponseERKN7ser4cpp4RSeqImEEPNS_6LoggerE:
   48|  6.25k|{
   49|  6.25k|    if (apdu.length() < APDUHeader::RESPONSE_SIZE)
  ------------------
  |  Branch (49:9): [True: 2, False: 6.25k]
  ------------------
   50|      2|    {
   51|      2|        FORMAT_LOGGER_BLOCK(logger, flags::WARN, "Response fragment  with insufficient size of %zu bytes",
  ------------------
  |  |   62|      2|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 2, False: 0]
  |  |  |  Branch (62:20): [True: 0, False: 2]
  |  |  ------------------
  |  |   63|      2|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
   52|      2|                            apdu.length());
   53|      2|        return Result<APDUResponseHeader>::Error();
   54|      2|    }
   55|       |
   56|  6.25k|    return Result<APDUResponseHeader>::Ok(
   57|  6.25k|        APDUResponseHeader(AppControlField(apdu[0]), FunctionCodeSpec::from_type(apdu[1]), IINField(apdu[2], apdu[3])),
   58|  6.25k|        apdu.skip(APDUHeader::RESPONSE_SIZE));
   59|  6.25k|}

_ZN8opendnp316APDUHeaderParser6ResultINS_18APDUResponseHeaderEE5ErrorEv:
   50|      2|        {
   51|      2|            return Result();
   52|      2|        }
_ZN8opendnp316APDUHeaderParser6ResultINS_18APDUResponseHeaderEEC2Ev:
   57|      2|        Result() : success(false) {}
_ZN8opendnp316APDUHeaderParser6ResultINS_18APDUResponseHeaderEE2OkERKS2_RKN7ser4cpp4RSeqImEE:
   45|  6.25k|        {
   46|  6.25k|            return Result(header, objects);
   47|  6.25k|        }
_ZN8opendnp316APDUHeaderParser6ResultINS_18APDUResponseHeaderEEC2ERKS2_RKN7ser4cpp4RSeqImEE:
   55|  6.25k|        Result(const T& header, const ser4cpp::rseq_t& objects) : success(true), header(header), objects(objects) {}

_ZN8opendnp310APDUParser5ParseERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEPNS_6LoggerENS_14ParserSettingsE:
   48|  6.19k|{
   49|       |    // do two state parsing process with logging and white-listing first but no handling on the first pass
   50|  6.19k|    auto result = ParseSinglePass(buffer, pLogger, nullptr, &handler, settings);
   51|       |    // if the first pass was successful, do a 2nd pass with the handler but no logging or white-list
   52|  6.19k|    return (result == ParseResult::OK) ? ParseSinglePass(buffer, nullptr, &handler, nullptr, settings) : result;
  ------------------
  |  Branch (52:12): [True: 3.61k, False: 2.58k]
  ------------------
   53|  6.19k|}
_ZN8opendnp310APDUParser15ParseSinglePassERKN7ser4cpp4RSeqImEEPNS_6LoggerEPNS_12IAPDUHandlerEPNS_10IWhiteListERKNS_14ParserSettingsE:
   65|  9.81k|{
   66|  9.81k|    uint32_t count = 0;
   67|  9.81k|    ser4cpp::rseq_t copy(buffer);
   68|   127k|    while (copy.length() > 0)
  ------------------
  |  Branch (68:12): [True: 120k, False: 7.23k]
  ------------------
   69|   120k|    {
   70|   120k|        auto result = ParseHeader(copy, pLogger, count, settings, pHandler, pWhiteList);
   71|   120k|        ++count;
   72|   120k|        if (result != ParseResult::OK)
  ------------------
  |  Branch (72:13): [True: 2.58k, False: 117k]
  ------------------
   73|  2.58k|        {
   74|  2.58k|            return result;
   75|  2.58k|        }
   76|   120k|    }
   77|  7.23k|    return ParseResult::OK;
   78|  9.81k|}
_ZN8opendnp310APDUParser11ParseHeaderERN7ser4cpp4RSeqImEEPNS_6LoggerEjRKNS_14ParserSettingsEPNS_12IAPDUHandlerEPNS_10IWhiteListE:
   86|   120k|{
   87|   120k|    ObjectHeader header;
   88|   120k|    auto result = ObjectHeaderParser::ParseObjectHeader(header, buffer, pLogger);
   89|   120k|    if (result != ParseResult::OK)
  ------------------
  |  Branch (89:9): [True: 170, False: 120k]
  ------------------
   90|    170|    {
   91|    170|        return result;
   92|    170|    }
   93|       |
   94|   120k|    const auto GV = GroupVariationRecord::GetRecord(header.group, header.variation);
   95|       |
   96|   120k|    if (GV.enumeration == GroupVariation::UNKNOWN)
  ------------------
  |  Branch (96:9): [True: 925, False: 119k]
  ------------------
   97|    925|    {
   98|    925|        FORMAT_LOGGER_BLOCK(pLogger, flags::WARN, "Unknown object %i / %i", GV.group, GV.variation);
  ------------------
  |  |   62|    925|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 925, False: 0]
  |  |  |  Branch (62:20): [True: 0, False: 925]
  |  |  ------------------
  |  |   63|    925|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
   99|    925|        return ParseResult::UNKNOWN_OBJECT;
  100|    925|    }
  101|       |
  102|       |    // if a white-list is defined and it doesn't validate, exit early
  103|   119k|    if (pWhiteList && !pWhiteList->IsAllowed(count, GV.enumeration, QualifierCodeSpec::from_type(header.qualifier)))
  ------------------
  |  Branch (103:9): [True: 63.8k, False: 55.4k]
  |  Branch (103:23): [True: 0, False: 63.8k]
  ------------------
  104|      0|    {
  105|      0|        FORMAT_LOGGER_BLOCK(pLogger, flags::WARN, "Header (%i) w/ Object (%i,%i) and qualifier (%i) failed whitelist",
  ------------------
  |  |   62|      0|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 0, False: 0]
  |  |  |  Branch (62:20): [True: 0, False: 0]
  |  |  ------------------
  |  |   63|      0|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
  106|      0|                            count, header.group, header.variation, header.qualifier);
  107|       |
  108|      0|        return ParseResult::NOT_ON_WHITELIST;
  109|      0|    }
  110|       |
  111|   119k|    return APDUParser::ParseQualifier(buffer, pLogger, HeaderRecord(GV, header.qualifier, count), settings, pHandler);
  112|   119k|}
_ZN8opendnp310APDUParser14ParseQualifierERN7ser4cpp4RSeqImEEPNS_6LoggerERKNS_12HeaderRecordERKNS_14ParserSettingsEPNS_12IAPDUHandlerE:
  119|   119k|{
  120|   119k|    switch (record.GetQualifierCode())
  121|   119k|    {
  122|  26.4k|    case (QualifierCode::ALL_OBJECTS):
  ------------------
  |  Branch (122:5): [True: 26.4k, False: 92.9k]
  ------------------
  123|  26.4k|        return HandleAllObjectsHeader(pLogger, record, settings, pHandler);
  124|       |
  125|  8.54k|    case (QualifierCode::UINT8_CNT):
  ------------------
  |  Branch (125:5): [True: 8.54k, False: 110k]
  ------------------
  126|  8.54k|        return CountParser::ParseHeader(buffer, NumParser::OneByte(), settings, record, pLogger, pHandler);
  127|       |
  128|    415|    case (QualifierCode::UINT16_CNT):
  ------------------
  |  Branch (128:5): [True: 415, False: 118k]
  ------------------
  129|    415|        return CountParser::ParseHeader(buffer, NumParser::TwoByte(), settings, record, pLogger, pHandler);
  130|       |
  131|  30.9k|    case (QualifierCode::UINT8_START_STOP):
  ------------------
  |  Branch (131:5): [True: 30.9k, False: 88.4k]
  ------------------
  132|  30.9k|        return RangeParser::ParseHeader(buffer, NumParser::OneByte(), settings, record, pLogger, pHandler);
  133|       |
  134|  2.32k|    case (QualifierCode::UINT16_START_STOP):
  ------------------
  |  Branch (134:5): [True: 2.32k, False: 117k]
  ------------------
  135|  2.32k|        return RangeParser::ParseHeader(buffer, NumParser::TwoByte(), settings, record, pLogger, pHandler);
  136|       |
  137|  48.7k|    case (QualifierCode::UINT8_CNT_UINT8_INDEX):
  ------------------
  |  Branch (137:5): [True: 48.7k, False: 70.5k]
  ------------------
  138|  48.7k|        return CountIndexParser::ParseHeader(buffer, NumParser::OneByte(), settings, record, pLogger, pHandler);
  139|       |
  140|  1.71k|    case (QualifierCode::UINT16_CNT_UINT16_INDEX):
  ------------------
  |  Branch (140:5): [True: 1.71k, False: 117k]
  ------------------
  141|  1.71k|        return CountIndexParser::ParseHeader(buffer, NumParser::TwoByte(), settings, record, pLogger, pHandler);
  142|       |
  143|    213|    default:
  ------------------
  |  Branch (143:5): [True: 213, False: 119k]
  ------------------
  144|    213|        FORMAT_LOGGER_BLOCK(pLogger, flags::WARN, "Unknown qualifier %x", record.qualifier);
  ------------------
  |  |   62|    213|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 213, False: 0]
  |  |  |  Branch (62:20): [True: 0, False: 213]
  |  |  ------------------
  |  |   63|    213|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
  145|    213|        return ParseResult::UNKNOWN_QUALIFIER;
  146|   119k|    }
  147|   119k|}
_ZN8opendnp310APDUParser22HandleAllObjectsHeaderEPNS_6LoggerERKNS_12HeaderRecordERKNS_14ParserSettingsEPNS_12IAPDUHandlerE:
  153|  26.4k|{
  154|  26.4k|    FORMAT_LOGGER_BLOCK(pLogger, settings.LoggingLevel(), "%03u,%03u - %s - %s", record.group, record.variation,
  ------------------
  |  |   62|  26.4k|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 13.6k, False: 12.8k]
  |  |  |  Branch (62:9): [True: 0, False: 26.4k]
  |  |  |  Branch (62:20): [True: 0, False: 13.6k]
  |  |  ------------------
  |  |   63|  26.4k|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
  155|  26.4k|                        GroupVariationSpec::to_human_string(record.enumeration),
  156|  26.4k|                        QualifierCodeSpec::to_human_string(QualifierCode::ALL_OBJECTS));
  157|       |
  158|  26.4k|    if (pHandler)
  ------------------
  |  Branch (158:9): [True: 12.8k, False: 13.6k]
  ------------------
  159|  12.8k|    {
  160|  12.8k|        pHandler->OnHeader(AllObjectsHeader(record));
  161|  12.8k|    }
  162|       |
  163|  26.4k|    return ParseResult::OK;
  164|  26.4k|}

_ZN8opendnp314NumBytesInBitsEm:
   28|  4.06k|{
   29|  4.06k|    size_t numBytes = numBits / 8;
   30|  4.06k|    return ((numBits % 8) == 0) ? numBytes : numBytes + 1;
  ------------------
  |  Branch (30:12): [True: 804, False: 3.26k]
  ------------------
   31|  4.06k|}
_ZN8opendnp36GetBitERKN7ser4cpp4RSeqImEEm:
   34|  86.4k|{
   35|  86.4k|    size_t byte = position / 8;
   36|  86.4k|    size_t bit = position % 8;
   37|  86.4k|    assert(byte < buffer.length());
  ------------------
  |  Branch (37:5): [True: 86.4k, False: 0]
  ------------------
   38|  86.4k|    return (buffer[byte] & (1 << bit)) != 0;
   39|  86.4k|}
_ZN8opendnp320NumBytesInDoubleBitsEm:
   42|  1.25k|{
   43|  1.25k|    size_t numBytes = numBits / 4;
   44|  1.25k|    return ((numBits % 4) == 0) ? numBytes : numBytes + 1;
  ------------------
  |  Branch (44:12): [True: 601, False: 656]
  ------------------
   45|  1.25k|}
_ZN8opendnp312GetDoubleBitERKN7ser4cpp4RSeqImEEm:
   48|  27.0k|{
   49|  27.0k|    size_t byteNumber = index / 4;
   50|  27.0k|    assert(byteNumber < buffer.length());
  ------------------
  |  Branch (50:5): [True: 27.0k, False: 0]
  ------------------
   51|  27.0k|    uint8_t byte = buffer[byteNumber];
   52|  27.0k|    size_t bitshift = 2 * (index % 4);
   53|  27.0k|    return DoubleBitSpec::from_type((byte >> bitshift) & 0x03);
   54|  27.0k|}

_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    674|{
   64|    674|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    674|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    674|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    674|    {
   36|    674|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    674|    {
   45|    674|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  3.44k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.76k, False: 674]
  ------------------
   48|  2.76k|        {
   49|  2.76k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.76k|        }
   51|    674|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    647|{
   64|    647|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    647|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    647|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    647|    {
   36|    647|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    647|    {
   45|    647|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.18k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.53k, False: 647]
  ------------------
   48|  1.53k|        {
   49|  1.53k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.53k|        }
   51|    647|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|  1.02k|{
   64|  1.02k|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|  1.02k|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|  1.02k|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|  1.02k|    {
   36|  1.02k|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group2Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    693|    {
   45|    693|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  3.55k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.86k, False: 693]
  ------------------
   48|  2.86k|        {
   49|  2.86k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.86k|        }
   51|    693|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    630|{
   64|    630|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    630|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    630|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    630|    {
   36|    630|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    630|    {
   45|    630|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.77k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.14k, False: 630]
  ------------------
   48|  2.14k|        {
   49|  2.14k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.14k|        }
   51|    630|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    300|{
   64|    300|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    300|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    300|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    300|    {
   36|    300|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    300|    {
   45|    300|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|    836|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 536, False: 300]
  ------------------
   48|    536|        {
   49|    536|            visitor.OnValue(readFunc(copy, pos));
   50|    536|        }
   51|    300|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|  1.25k|{
   64|  1.25k|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|  1.25k|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|  1.25k|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|  1.25k|    {
   36|  1.25k|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_16CountIndexParser13InvokeCountOfINS_10Group4Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    904|    {
   45|    904|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.75k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.84k, False: 904]
  ------------------
   48|  1.84k|        {
   49|  1.84k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.84k|        }
   51|    904|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group11Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    672|{
   64|    672|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    672|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group11Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    672|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    672|    {
   36|    672|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group11Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    672|    {
   45|    672|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  3.33k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.66k, False: 672]
  ------------------
   48|  2.66k|        {
   49|  2.66k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.66k|        }
   51|    672|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group11Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    545|{
   64|    545|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    545|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group11Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    545|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    545|    {
   36|    545|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group11Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    545|    {
   45|    545|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.88k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.33k, False: 545]
  ------------------
   48|  1.33k|        {
   49|  1.33k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.33k|        }
   51|    545|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_23ControlRelayOutputBlockEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group12Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    261|{
   64|    261|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    261|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_23ControlRelayOutputBlockEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group12Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    261|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    261|    {
   36|    261|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18BinaryCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group13Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|  1.00k|{
   64|  1.00k|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|  1.00k|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group13Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|  1.00k|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|  1.00k|    {
   36|  1.00k|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group13Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|  1.00k|    {
   45|  1.00k|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  14.6k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 13.6k, False: 1.00k]
  ------------------
   48|  13.6k|        {
   49|  13.6k|            visitor.OnValue(readFunc(copy, pos));
   50|  13.6k|        }
   51|  1.00k|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18BinaryCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group13Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    530|{
   64|    530|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    530|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group13Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    530|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    530|    {
   36|    530|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group13Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    530|    {
   45|    530|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.11k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.58k, False: 530]
  ------------------
   48|  1.58k|        {
   49|  1.58k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.58k|        }
   51|    530|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    651|{
   64|    651|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    651|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    651|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    651|    {
   36|    651|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    651|    {
   45|    651|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.07k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.42k, False: 651]
  ------------------
   48|  1.42k|        {
   49|  1.42k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.42k|        }
   51|    651|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    568|{
   64|    568|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    568|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    568|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    568|    {
   36|    568|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    568|    {
   45|    568|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.67k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.10k, False: 568]
  ------------------
   48|  2.10k|        {
   49|  2.10k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.10k|        }
   51|    568|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    300|{
   64|    300|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    300|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    300|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    300|    {
   36|    300|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    300|    {
   45|    300|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|    974|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 674, False: 300]
  ------------------
   48|    674|        {
   49|    674|            visitor.OnValue(readFunc(copy, pos));
   50|    674|        }
   51|    300|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    337|{
   64|    337|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    337|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    337|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    337|    {
   36|    337|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group22Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    337|    {
   45|    337|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.19k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 855, False: 337]
  ------------------
   48|    855|        {
   49|    855|            visitor.OnValue(readFunc(copy, pos));
   50|    855|        }
   51|    337|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    756|{
   64|    756|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    756|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    756|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    756|    {
   36|    756|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    756|    {
   45|    756|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.01k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.26k, False: 756]
  ------------------
   48|  1.26k|        {
   49|  1.26k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.26k|        }
   51|    756|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    570|{
   64|    570|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    570|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    570|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    570|    {
   36|    570|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    570|    {
   45|    570|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.69k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.12k, False: 570]
  ------------------
   48|  1.12k|        {
   49|  1.12k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.12k|        }
   51|    570|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    416|{
   64|    416|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    416|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    416|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    416|    {
   36|    416|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    416|    {
   45|    416|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.22k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 813, False: 416]
  ------------------
   48|    813|        {
   49|    813|            visitor.OnValue(readFunc(copy, pos));
   50|    813|        }
   51|    416|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    271|{
   64|    271|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    271|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    271|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    271|    {
   36|    271|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group23Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    271|    {
   45|    271|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|    847|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 576, False: 271]
  ------------------
   48|    576|        {
   49|    576|            visitor.OnValue(readFunc(copy, pos));
   50|    576|        }
   51|    271|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    251|{
   64|    251|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    251|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    251|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    251|    {
   36|    251|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    251|    {
   45|    251|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.00k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 757, False: 251]
  ------------------
   48|    757|        {
   49|    757|            visitor.OnValue(readFunc(copy, pos));
   50|    757|        }
   51|    251|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    369|{
   64|    369|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    369|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    369|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    369|    {
   36|    369|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    369|    {
   45|    369|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.75k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.39k, False: 369]
  ------------------
   48|  1.39k|        {
   49|  1.39k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.39k|        }
   51|    369|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    664|{
   64|    664|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    664|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    664|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    664|    {
   36|    664|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    664|    {
   45|    664|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.13k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.47k, False: 664]
  ------------------
   48|  1.47k|        {
   49|  1.47k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.47k|        }
   51|    664|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    428|{
   64|    428|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    428|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    428|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    428|    {
   36|    428|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    428|    {
   45|    428|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.81k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.38k, False: 428]
  ------------------
   48|  1.38k|        {
   49|  1.38k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.38k|        }
   51|    428|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    381|{
   64|    381|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    381|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    381|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    381|    {
   36|    381|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    381|    {
   45|    381|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.58k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.20k, False: 381]
  ------------------
   48|  1.20k|        {
   49|  1.20k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.20k|        }
   51|    381|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    338|{
   64|    338|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    338|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    338|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    338|    {
   36|    338|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    338|    {
   45|    338|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.26k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 930, False: 338]
  ------------------
   48|    930|        {
   49|    930|            visitor.OnValue(readFunc(copy, pos));
   50|    930|        }
   51|    338|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    423|{
   64|    423|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    423|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    423|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    423|    {
   36|    423|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    423|    {
   45|    423|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.14k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 724, False: 423]
  ------------------
   48|    724|        {
   49|    724|            visitor.OnValue(readFunc(copy, pos));
   50|    724|        }
   51|    423|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    507|{
   64|    507|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    507|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    507|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    507|    {
   36|    507|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group32Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    507|    {
   45|    507|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.43k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 932, False: 507]
  ------------------
   48|    932|        {
   49|    932|            visitor.OnValue(readFunc(copy, pos));
   50|    932|        }
   51|    507|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_17AnalogOutputInt32EEEZNS_16CountIndexParser13InvokeCountOfINS_11Group41Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    137|{
   64|    137|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    137|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_17AnalogOutputInt32EEEZNS_16CountIndexParser13InvokeCountOfINS_11Group41Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    137|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    137|    {
   36|    137|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_17AnalogOutputInt16EEEZNS_16CountIndexParser13InvokeCountOfINS_11Group41Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    281|{
   64|    281|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    281|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_17AnalogOutputInt16EEEZNS_16CountIndexParser13InvokeCountOfINS_11Group41Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    281|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    281|    {
   36|    281|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_19AnalogOutputFloat32EEEZNS_16CountIndexParser13InvokeCountOfINS_11Group41Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    267|{
   64|    267|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    267|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_19AnalogOutputFloat32EEEZNS_16CountIndexParser13InvokeCountOfINS_11Group41Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    267|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    267|    {
   36|    267|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_20AnalogOutputDouble64EEEZNS_16CountIndexParser13InvokeCountOfINS_11Group41Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    389|{
   64|    389|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    389|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_20AnalogOutputDouble64EEEZNS_16CountIndexParser13InvokeCountOfINS_11Group41Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    389|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    389|    {
   36|    389|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    300|{
   64|    300|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    300|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    300|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    300|    {
   36|    300|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    300|    {
   45|    300|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|    878|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 578, False: 300]
  ------------------
   48|    578|        {
   49|    578|            visitor.OnValue(readFunc(copy, pos));
   50|    578|        }
   51|    300|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    687|{
   64|    687|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    687|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    687|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    687|    {
   36|    687|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    687|    {
   45|    687|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.72k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.04k, False: 687]
  ------------------
   48|  2.04k|        {
   49|  2.04k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.04k|        }
   51|    687|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    390|{
   64|    390|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    390|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    390|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    390|    {
   36|    390|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    390|    {
   45|    390|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.80k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.41k, False: 390]
  ------------------
   48|  1.41k|        {
   49|  1.41k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.41k|        }
   51|    390|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    337|{
   64|    337|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    337|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    337|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    337|    {
   36|    337|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    337|    {
   45|    337|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.03k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 699, False: 337]
  ------------------
   48|    699|        {
   49|    699|            visitor.OnValue(readFunc(copy, pos));
   50|    699|        }
   51|    337|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    435|{
   64|    435|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    435|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    435|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    435|    {
   36|    435|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    435|    {
   45|    435|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.85k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.42k, False: 435]
  ------------------
   48|  1.42k|        {
   49|  1.42k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.42k|        }
   51|    435|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    379|{
   64|    379|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    379|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    379|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    379|    {
   36|    379|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    379|    {
   45|    379|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.51k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.13k, False: 379]
  ------------------
   48|  1.13k|        {
   49|  1.13k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.13k|        }
   51|    379|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    479|{
   64|    479|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    479|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    479|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    479|    {
   36|    479|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    479|    {
   45|    479|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.70k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.22k, False: 479]
  ------------------
   48|  1.22k|        {
   49|  1.22k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.22k|        }
   51|    479|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    549|{
   64|    549|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    549|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    549|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    549|    {
   36|    549|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group42Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    549|    {
   45|    549|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.49k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 948, False: 549]
  ------------------
   48|    948|        {
   49|    948|            visitor.OnValue(readFunc(copy, pos));
   50|    948|        }
   51|    549|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    476|{
   64|    476|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    476|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    476|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    476|    {
   36|    476|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    476|    {
   45|    476|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.22k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.74k, False: 476]
  ------------------
   48|  1.74k|        {
   49|  1.74k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.74k|        }
   51|    476|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    419|{
   64|    419|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    419|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    419|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    419|    {
   36|    419|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    419|    {
   45|    419|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.99k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.57k, False: 419]
  ------------------
   48|  2.57k|        {
   49|  2.57k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.57k|        }
   51|    419|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    566|{
   64|    566|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    566|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    566|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    566|    {
   36|    566|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    566|    {
   45|    566|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.59k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.02k, False: 566]
  ------------------
   48|  1.02k|        {
   49|  1.02k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.02k|        }
   51|    566|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    522|{
   64|    522|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    522|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    522|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    522|    {
   36|    522|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    522|    {
   45|    522|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.86k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.33k, False: 522]
  ------------------
   48|  1.33k|        {
   49|  1.33k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.33k|        }
   51|    522|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    412|{
   64|    412|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    412|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    412|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    412|    {
   36|    412|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    412|    {
   45|    412|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  3.49k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 3.08k, False: 412]
  ------------------
   48|  3.08k|        {
   49|  3.08k|            visitor.OnValue(readFunc(copy, pos));
   50|  3.08k|        }
   51|    412|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    362|{
   64|    362|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    362|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    362|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    362|    {
   36|    362|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    362|    {
   45|    362|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.30k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 939, False: 362]
  ------------------
   48|    939|        {
   49|    939|            visitor.OnValue(readFunc(copy, pos));
   50|    939|        }
   51|    362|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    448|{
   64|    448|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    448|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    448|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    448|    {
   36|    448|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    448|    {
   45|    448|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.14k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 694, False: 448]
  ------------------
   48|    694|        {
   49|    694|            visitor.OnValue(readFunc(copy, pos));
   50|    694|        }
   51|    448|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    577|{
   64|    577|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    577|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    577|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    577|    {
   36|    577|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogCommandEventEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group43Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    577|    {
   45|    577|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.02k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.45k, False: 577]
  ------------------
   48|  1.45k|        {
   49|  1.45k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.45k|        }
   51|    577|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_15TimeAndIntervalEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group50Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    281|{
   64|    281|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    281|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_15TimeAndIntervalEEEZNS_16CountIndexParser13InvokeCountOfINS_11Group50Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    281|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    281|    {
   36|    281|    }
CountIndexParser.cpp:_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_11OctetStringEEEZNS_16CountIndexParser27ParseIndexPrefixedOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_9NumParserEjPNS_6LoggerEPNS_12IAPDUHandlerEE3$_0EENS_18BufferedCollectionIT_T0_EERKS7_mRKSM_:
   63|    550|{
   64|    550|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    550|}
CountIndexParser.cpp:_ZN8opendnp318BufferedCollectionINS_7IndexedINS_11OctetStringEEEZNS_16CountIndexParser27ParseIndexPrefixedOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_9NumParserEjPNS_6LoggerEPNS_12IAPDUHandlerEE3$_0EC2ERKS7_mRKSJ_:
   34|    550|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    550|    {
   36|    550|    }
CountIndexParser.cpp:_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_11OctetStringEEEZNS_16CountIndexParser27ParseIndexPrefixedOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_9NumParserEjPNS_6LoggerEPNS_12IAPDUHandlerEE3$_0E7ForeachERNS_8IVisitorIS3_EE:
   44|    550|    {
   45|    550|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.76k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.21k, False: 550]
  ------------------
   48|  1.21k|        {
   49|  1.21k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.21k|        }
   51|    550|    }
_ZN8opendnp324CreateBufferedCollectionINS_11Group50Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EENS_18BufferedCollectionIT_T0_EESB_mRKSI_:
   63|  1.06k|{
   64|  1.06k|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|  1.06k|}
_ZN8opendnp318BufferedCollectionINS_11Group50Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EC2ESB_mRKSF_:
   34|  1.06k|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|  1.06k|    {
   36|  1.06k|    }
_ZNK8opendnp318BufferedCollectionINS_11Group50Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_E7ForeachERNS_8IVisitorIS1_EE:
   44|  1.06k|    {
   45|  1.06k|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  3.93k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.87k, False: 1.06k]
  ------------------
   48|  2.87k|        {
   49|  2.87k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.87k|        }
   51|  1.06k|    }
_ZN8opendnp324CreateBufferedCollectionINS_11Group50Var3EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EENS_18BufferedCollectionIT_T0_EESB_mRKSI_:
   63|    272|{
   64|    272|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    272|}
_ZN8opendnp318BufferedCollectionINS_11Group50Var3EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EC2ESB_mRKSF_:
   34|    272|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    272|    {
   36|    272|    }
_ZN8opendnp324CreateBufferedCollectionINS_11Group51Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EENS_18BufferedCollectionIT_T0_EESB_mRKSI_:
   63|  1.15k|{
   64|  1.15k|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|  1.15k|}
_ZN8opendnp318BufferedCollectionINS_11Group51Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EC2ESB_mRKSF_:
   34|  1.15k|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|  1.15k|    {
   36|  1.15k|    }
_ZNK8opendnp318BufferedCollectionINS_11Group51Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_E5CountEv:
   39|  1.15k|    {
   40|  1.15k|        return COUNT;
   41|  1.15k|    }
_ZNK8opendnp318BufferedCollectionINS_11Group51Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_E7ForeachERNS_8IVisitorIS1_EE:
   44|    901|    {
   45|    901|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.80k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 901, False: 901]
  ------------------
   48|    901|        {
   49|    901|            visitor.OnValue(readFunc(copy, pos));
   50|    901|        }
   51|    901|    }
_ZN8opendnp324CreateBufferedCollectionINS_11Group51Var2EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EENS_18BufferedCollectionIT_T0_EESB_mRKSI_:
   63|    595|{
   64|    595|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    595|}
_ZN8opendnp318BufferedCollectionINS_11Group51Var2EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EC2ESB_mRKSF_:
   34|    595|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    595|    {
   36|    595|    }
_ZNK8opendnp318BufferedCollectionINS_11Group51Var2EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_E5CountEv:
   39|    595|    {
   40|    595|        return COUNT;
   41|    595|    }
_ZNK8opendnp318BufferedCollectionINS_11Group51Var2EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_E7ForeachERNS_8IVisitorIS1_EE:
   44|    479|    {
   45|    479|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|    958|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 479, False: 479]
  ------------------
   48|    479|        {
   49|    479|            visitor.OnValue(readFunc(copy, pos));
   50|    479|        }
   51|    479|    }
_ZN8opendnp324CreateBufferedCollectionINS_11Group52Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EENS_18BufferedCollectionIT_T0_EESB_mRKSI_:
   63|    321|{
   64|    321|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    321|}
_ZN8opendnp318BufferedCollectionINS_11Group52Var1EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EC2ESB_mRKSF_:
   34|    321|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    321|    {
   36|    321|    }
_ZN8opendnp324CreateBufferedCollectionINS_11Group52Var2EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EENS_18BufferedCollectionIT_T0_EESB_mRKSI_:
   63|    438|{
   64|    438|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    438|}
_ZN8opendnp318BufferedCollectionINS_11Group52Var2EZNS_11CountParser13InvokeCountOfIS1_EEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRS9_jE_EC2ESB_mRKSF_:
   34|    438|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    438|    {
   36|    438|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_11RangeParser23InvokeRangeBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_jE_EENS_18BufferedCollectionIT_T0_EESG_mRKSN_:
   63|  1.04k|{
   64|  1.04k|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|  1.04k|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_11RangeParser23InvokeRangeBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_jE_EC2ESG_mRKSK_:
   34|  1.04k|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|  1.04k|    {
   36|  1.04k|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_11RangeParser23InvokeRangeBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|  1.04k|    {
   45|  1.04k|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  75.1k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 74.1k, False: 1.04k]
  ------------------
   48|  74.1k|        {
   49|  74.1k|            visitor.OnValue(readFunc(copy, pos));
   50|  74.1k|        }
   51|  1.04k|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_11RangeParser13InvokeRangeOfINS_10Group1Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    583|{
   64|    583|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    583|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_11RangeParser13InvokeRangeOfINS_10Group1Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    583|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    583|    {
   36|    583|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6BinaryEEEZNS_11RangeParser13InvokeRangeOfINS_10Group1Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    583|    {
   45|    583|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  4.86k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 4.28k, False: 583]
  ------------------
   48|  4.28k|        {
   49|  4.28k|            visitor.OnValue(readFunc(copy, pos));
   50|  4.28k|        }
   51|    583|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_11RangeParser29InvokeRangeDoubleBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_mE_EENS_18BufferedCollectionIT_T0_EESG_mRKSN_:
   63|    463|{
   64|    463|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    463|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_11RangeParser29InvokeRangeDoubleBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_mE_EC2ESG_mRKSK_:
   34|    463|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    463|    {
   36|    463|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_11RangeParser29InvokeRangeDoubleBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_mE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    463|    {
   45|    463|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  27.5k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 27.0k, False: 463]
  ------------------
   48|  27.0k|        {
   49|  27.0k|            visitor.OnValue(readFunc(copy, pos));
   50|  27.0k|        }
   51|    463|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_11RangeParser23InvokeRangeBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_jE_EENS_18BufferedCollectionIT_T0_EESG_mRKSN_:
   63|    535|{
   64|    535|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    535|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_11RangeParser23InvokeRangeBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_jE_EC2ESG_mRKSK_:
   34|    535|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    535|    {
   36|    535|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_11RangeParser23InvokeRangeBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    535|    {
   45|    535|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  12.9k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 12.3k, False: 535]
  ------------------
   48|  12.3k|        {
   49|  12.3k|            visitor.OnValue(readFunc(copy, pos));
   50|  12.3k|        }
   51|    535|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_11RangeParser13InvokeRangeOfINS_10Group3Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    689|{
   64|    689|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    689|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_11RangeParser13InvokeRangeOfINS_10Group3Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    689|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    689|    {
   36|    689|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_15DoubleBitBinaryEEEZNS_11RangeParser13InvokeRangeOfINS_10Group3Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    689|    {
   45|    689|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  6.57k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 5.88k, False: 689]
  ------------------
   48|  5.88k|        {
   49|  5.88k|            visitor.OnValue(readFunc(copy, pos));
   50|  5.88k|        }
   51|    689|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group10Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    494|{
   64|    494|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    494|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group10Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    494|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    494|    {
   36|    494|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18BinaryOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group10Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    494|    {
   45|    494|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  5.69k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 5.19k, False: 494]
  ------------------
   48|  5.19k|        {
   49|  5.19k|            visitor.OnValue(readFunc(copy, pos));
   50|  5.19k|        }
   51|    494|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    341|{
   64|    341|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    341|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    341|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    341|    {
   36|    341|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    341|    {
   45|    341|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.40k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.06k, False: 341]
  ------------------
   48|  1.06k|        {
   49|  1.06k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.06k|        }
   51|    341|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    479|{
   64|    479|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    479|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    479|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    479|    {
   36|    479|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    479|    {
   45|    479|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.88k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.40k, False: 479]
  ------------------
   48|  1.40k|        {
   49|  1.40k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.40k|        }
   51|    479|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    268|{
   64|    268|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    268|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    268|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    268|    {
   36|    268|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    268|    {
   45|    268|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.53k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.26k, False: 268]
  ------------------
   48|  1.26k|        {
   49|  1.26k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.26k|        }
   51|    268|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    612|{
   64|    612|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    612|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    612|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    612|    {
   36|    612|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_7CounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group20Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    612|    {
   45|    612|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  3.21k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.59k, False: 612]
  ------------------
   48|  2.59k|        {
   49|  2.59k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.59k|        }
   51|    612|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    318|{
   64|    318|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    318|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    318|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    318|    {
   36|    318|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    318|    {
   45|    318|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.96k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.64k, False: 318]
  ------------------
   48|  1.64k|        {
   49|  1.64k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.64k|        }
   51|    318|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    304|{
   64|    304|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    304|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    304|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    304|    {
   36|    304|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    304|    {
   45|    304|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.33k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.03k, False: 304]
  ------------------
   48|  1.03k|        {
   49|  1.03k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.03k|        }
   51|    304|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    620|{
   64|    620|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    620|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    620|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    620|    {
   36|    620|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    620|    {
   45|    620|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.08k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.46k, False: 620]
  ------------------
   48|  1.46k|        {
   49|  1.46k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.46k|        }
   51|    620|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    360|{
   64|    360|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    360|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    360|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    360|    {
   36|    360|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    360|    {
   45|    360|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.47k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.11k, False: 360]
  ------------------
   48|  1.11k|        {
   49|  1.11k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.11k|        }
   51|    360|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var9EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    417|{
   64|    417|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    417|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var9EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    417|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    417|    {
   36|    417|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_11Group21Var9EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    417|    {
   45|    417|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.78k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.36k, False: 417]
  ------------------
   48|  2.36k|        {
   49|  2.36k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.36k|        }
   51|    417|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_12Group21Var10EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    360|{
   64|    360|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    360|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_12Group21Var10EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    360|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    360|    {
   36|    360|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_13FrozenCounterEEEZNS_11RangeParser13InvokeRangeOfINS_12Group21Var10EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    360|    {
   45|    360|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.98k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.62k, False: 360]
  ------------------
   48|  2.62k|        {
   49|  2.62k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.62k|        }
   51|    360|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    505|{
   64|    505|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    505|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    505|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    505|    {
   36|    505|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    505|    {
   45|    505|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.26k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.75k, False: 505]
  ------------------
   48|  1.75k|        {
   49|  1.75k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.75k|        }
   51|    505|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    450|{
   64|    450|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    450|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    450|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    450|    {
   36|    450|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    450|    {
   45|    450|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.74k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.29k, False: 450]
  ------------------
   48|  1.29k|        {
   49|  1.29k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.29k|        }
   51|    450|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    477|{
   64|    477|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    477|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    477|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    477|    {
   36|    477|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    477|    {
   45|    477|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.71k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.23k, False: 477]
  ------------------
   48|  1.23k|        {
   49|  1.23k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.23k|        }
   51|    477|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    874|{
   64|    874|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    874|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    874|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    874|    {
   36|    874|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    874|    {
   45|    874|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  4.02k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 3.15k, False: 874]
  ------------------
   48|  3.15k|        {
   49|  3.15k|            visitor.OnValue(readFunc(copy, pos));
   50|  3.15k|        }
   51|    874|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    446|{
   64|    446|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    446|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    446|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    446|    {
   36|    446|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    446|    {
   45|    446|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.58k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.13k, False: 446]
  ------------------
   48|  2.13k|        {
   49|  2.13k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.13k|        }
   51|    446|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    363|{
   64|    363|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    363|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    363|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    363|    {
   36|    363|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_6AnalogEEEZNS_11RangeParser13InvokeRangeOfINS_11Group30Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    363|    {
   45|    363|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  1.95k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.59k, False: 363]
  ------------------
   48|  1.59k|        {
   49|  1.59k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.59k|        }
   51|    363|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    554|{
   64|    554|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    554|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    554|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    554|    {
   36|    554|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    554|    {
   45|    554|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.20k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.65k, False: 554]
  ------------------
   48|  1.65k|        {
   49|  1.65k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.65k|        }
   51|    554|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    552|{
   64|    552|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    552|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    552|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    552|    {
   36|    552|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    552|    {
   45|    552|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.37k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.82k, False: 552]
  ------------------
   48|  1.82k|        {
   49|  1.82k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.82k|        }
   51|    552|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    678|{
   64|    678|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    678|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    678|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    678|    {
   36|    678|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    678|    {
   45|    678|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  3.16k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.48k, False: 678]
  ------------------
   48|  2.48k|        {
   49|  2.48k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.48k|        }
   51|    678|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    604|{
   64|    604|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    604|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    604|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    604|    {
   36|    604|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_18AnalogOutputStatusEEEZNS_11RangeParser13InvokeRangeOfINS_11Group40Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    604|    {
   45|    604|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.14k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 1.53k, False: 604]
  ------------------
   48|  1.53k|        {
   49|  1.53k|            visitor.OnValue(readFunc(copy, pos));
   50|  1.53k|        }
   51|    604|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_15TimeAndIntervalEEEZNS_11RangeParser13InvokeRangeOfINS_11Group50Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EENS_18BufferedCollectionIT_T0_EESH_mRKSO_:
   63|    797|{
   64|    797|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    797|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_15TimeAndIntervalEEEZNS_11RangeParser13InvokeRangeOfINS_11Group50Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_EC2ESH_mRKSL_:
   34|    797|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    797|    {
   36|    797|    }
_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_15TimeAndIntervalEEEZNS_11RangeParser13InvokeRangeOfINS_11Group50Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSF_jE_E7ForeachERNS_8IVisitorIS3_EE:
   44|    797|    {
   45|    797|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  3.19k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.39k, False: 797]
  ------------------
   48|  2.39k|        {
   49|  2.39k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.39k|        }
   51|    797|    }
_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_8IINValueEEEZNS_11RangeParser23InvokeRangeBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_jE_EENS_18BufferedCollectionIT_T0_EESG_mRKSN_:
   63|    270|{
   64|    270|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    270|}
_ZN8opendnp318BufferedCollectionINS_7IndexedINS_8IINValueEEEZNS_11RangeParser23InvokeRangeBitfieldTypeIS2_EEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEEUlRSE_jE_EC2ESG_mRKSK_:
   34|    270|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    270|    {
   36|    270|    }
RangeParser.cpp:_ZN8opendnp324CreateBufferedCollectionINS_7IndexedINS_11OctetStringEEEZNS_11RangeParser21ParseRangeOfOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_5RangeEPNS_6LoggerEPNS_12IAPDUHandlerEE3$_0EENS_18BufferedCollectionIT_T0_EERKS7_mRKSM_:
   63|    344|{
   64|    344|    return BufferedCollection<T, ReadFunc>(buffer, count, readFunc);
   65|    344|}
RangeParser.cpp:_ZN8opendnp318BufferedCollectionINS_7IndexedINS_11OctetStringEEEZNS_11RangeParser21ParseRangeOfOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_5RangeEPNS_6LoggerEPNS_12IAPDUHandlerEE3$_0EC2ERKS7_mRKSJ_:
   34|    344|        : buffer(buffer), COUNT(count), readFunc(readFunc)
   35|    344|    {
   36|    344|    }
RangeParser.cpp:_ZNK8opendnp318BufferedCollectionINS_7IndexedINS_11OctetStringEEEZNS_11RangeParser21ParseRangeOfOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_5RangeEPNS_6LoggerEPNS_12IAPDUHandlerEE3$_0E7ForeachERNS_8IVisitorIS3_EE:
   44|    344|    {
   45|    344|        ser4cpp::rseq_t copy(buffer);
   46|       |
   47|  2.79k|        for (uint32_t pos = 0; pos < COUNT; ++pos)
  ------------------
  |  Branch (47:32): [True: 2.44k, False: 344]
  ------------------
   48|  2.44k|        {
   49|  2.44k|            visitor.OnValue(readFunc(copy, pos));
   50|  2.44k|        }
   51|    344|    }

MeasurementHandler.cpp:_ZN8opendnp33MapINS_11Group50Var1ENS_7DNPTimeEZNS_18MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionIS1_EEE3$_0EENS_21TransformedCollectionIT_T0_T1_EERKNS7_ISD_EESF_:
   79|  1.06k|{
   80|  1.06k|    return TransformedCollection<T, U, Transform>(input, transform);
   81|  1.06k|}
MeasurementHandler.cpp:_ZN8opendnp321TransformedCollectionINS_11Group50Var1ENS_7DNPTimeEZNS_18MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionIS1_EEE3$_0EC2ESA_SB_:
   59|  1.06k|    TransformedCollection(const ICollection<T>& input, Transform transform) : input(&input), transform(transform) {}
MeasurementHandler.cpp:_ZNK8opendnp321TransformedCollectionINS_11Group50Var1ENS_7DNPTimeEZNS_18MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionIS1_EEE3$_0E7ForeachERNS_8IVisitorIS2_EE:
   67|  1.06k|    {
   68|  1.06k|        auto process = [this, &visitor](const T& elem) { visitor.OnValue(transform(elem)); };
   69|  1.06k|        input->ForeachItem(process);
   70|  1.06k|    }
MeasurementHandler.cpp:_ZZNK8opendnp321TransformedCollectionINS_11Group50Var1ENS_7DNPTimeEZNS_18MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionIS1_EEE3$_0E7ForeachERNS_8IVisitorIS2_EEENKUlRKS1_E_clESH_:
   68|  2.87k|        auto process = [this, &visitor](const T& elem) { visitor.OnValue(transform(elem)); };
_ZN8opendnp33MapINS_7IndexedINS_6BinaryEEES3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_EENS_21TransformedCollectionISB_T0_T1_EERKNSA_ISB_EESL_:
   79|    693|{
   80|    693|    return TransformedCollection<T, U, Transform>(input, transform);
   81|    693|}
_ZN8opendnp321TransformedCollectionINS_7IndexedINS_6BinaryEEES3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_EC2ERKNSA_IS3_EESI_:
   59|    693|    TransformedCollection(const ICollection<T>& input, Transform transform) : input(&input), transform(transform) {}
_ZNK8opendnp321TransformedCollectionINS_7IndexedINS_6BinaryEEES3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EE:
   67|    693|    {
   68|    693|        auto process = [this, &visitor](const T& elem) { visitor.OnValue(transform(elem)); };
   69|    693|        input->ForeachItem(process);
   70|    693|    }
_ZZNK8opendnp321TransformedCollectionINS_7IndexedINS_6BinaryEEES3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EEENKUlSH_E_clESH_:
   68|  2.86k|        auto process = [this, &visitor](const T& elem) { visitor.OnValue(transform(elem)); };
_ZN8opendnp33MapINS_7IndexedINS_15DoubleBitBinaryEEES3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_EENS_21TransformedCollectionISB_T0_T1_EERKNSA_ISB_EESL_:
   79|    904|{
   80|    904|    return TransformedCollection<T, U, Transform>(input, transform);
   81|    904|}
_ZN8opendnp321TransformedCollectionINS_7IndexedINS_15DoubleBitBinaryEEES3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_EC2ERKNSA_IS3_EESI_:
   59|    904|    TransformedCollection(const ICollection<T>& input, Transform transform) : input(&input), transform(transform) {}
_ZNK8opendnp321TransformedCollectionINS_7IndexedINS_15DoubleBitBinaryEEES3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EE:
   67|    904|    {
   68|    904|        auto process = [this, &visitor](const T& elem) { visitor.OnValue(transform(elem)); };
   69|    904|        input->ForeachItem(process);
   70|    904|    }
_ZZNK8opendnp321TransformedCollectionINS_7IndexedINS_15DoubleBitBinaryEEES3_ZNS_18MeasurementHandler14ProcessWithCTOIS2_EENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS1_IT_EEEEEUlRKS3_E_E7ForeachERNS_8IVisitorIS3_EEENKUlSH_E_clESH_:
   68|  1.84k|        auto process = [this, &visitor](const T& elem) { visitor.OnValue(transform(elem)); };

_ZN8opendnp316CountIndexParserC2EtmRKNS_9NumParserEPFvRKNS_12HeaderRecordEtS3_RKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEE:
   40|  49.2k|    : count(count), requiredSize(requiredSize), numparser(numparser), handler(handler)
   41|  49.2k|{
   42|  49.2k|}
_ZN8opendnp316CountIndexParser11ParseHeaderERN7ser4cpp4RSeqImEERKNS_9NumParserERKNS_14ParserSettingsERKNS_12HeaderRecordEPNS_6LoggerEPNS_12IAPDUHandlerE:
   50|  50.5k|{
   51|  50.5k|    uint16_t count;
   52|  50.5k|    auto res = numparser.ParseCount(buffer, count, pLogger);
   53|  50.5k|    if (res == ParseResult::OK)
  ------------------
  |  Branch (53:9): [True: 50.4k, False: 16]
  ------------------
   54|  50.4k|    {
   55|  50.4k|        FORMAT_LOGGER_BLOCK(pLogger, settings.LoggingLevel(), "%03u,%03u %s, %s [%u]", record.group, record.variation,
  ------------------
  |  |   62|  50.4k|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 26.4k, False: 24.0k]
  |  |  |  Branch (62:9): [True: 0, False: 50.4k]
  |  |  |  Branch (62:20): [True: 0, False: 26.4k]
  |  |  ------------------
  |  |   63|  50.4k|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
   56|  50.4k|                            GroupVariationSpec::to_human_string(record.enumeration),
   57|  50.4k|                            QualifierCodeSpec::to_human_string(record.GetQualifierCode()), count);
   58|       |
   59|  50.4k|        if (settings.ExpectsContents())
  ------------------
  |  Branch (59:13): [True: 50.4k, False: 0]
  ------------------
   60|  50.4k|        {
   61|  50.4k|            return ParseCountOfObjects(buffer, record, numparser, count, pLogger, pHandler);
   62|  50.4k|        }
   63|      0|        else
   64|      0|        {
   65|      0|            return ParseCountOfIndices(buffer, record, numparser, count, pLogger, pHandler);
   66|      0|        }
   67|  50.4k|    }
   68|       |
   69|     16|    return res;
   70|  50.5k|}
_ZNK8opendnp316CountIndexParser7ProcessERKNS_12HeaderRecordERN7ser4cpp4RSeqImEEPNS_12IAPDUHandlerEPNS_6LoggerE:
   76|  49.2k|{
   77|  49.2k|    if (buffer.length() < requiredSize)
  ------------------
  |  Branch (77:9): [True: 300, False: 48.9k]
  ------------------
   78|    300|    {
   79|    300|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Not enough data for specified objects");
  ------------------
  |  |   48|    300|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 300, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 300]
  |  |  ------------------
  |  |   49|    300|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
   80|    300|        return ParseResult::NOT_ENOUGH_DATA_FOR_OBJECTS;
   81|    300|    }
   82|       |
   83|  48.9k|    if (pHandler)
  ------------------
  |  Branch (83:9): [True: 23.4k, False: 25.4k]
  ------------------
   84|  23.4k|    {
   85|  23.4k|        handler(record, count, numparser, buffer, *pHandler);
   86|  23.4k|    }
   87|  48.9k|    buffer.advance(requiredSize);
   88|  48.9k|    return ParseResult::OK;
   89|  49.2k|}
_ZN8opendnp316CountIndexParser19ParseCountOfObjectsERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_9NumParserEtPNS_6LoggerEPNS_12IAPDUHandlerE:
   97|  50.4k|{
   98|  50.4k|    switch (record.enumeration)
   99|  50.4k|    {
  100|  1.39k|    case (GroupVariation::Group2Var1):
  ------------------
  |  Branch (100:5): [True: 1.39k, False: 49.1k]
  ------------------
  101|  1.39k|        return CountIndexParser::From<Group2Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  102|  1.30k|    case (GroupVariation::Group2Var2):
  ------------------
  |  Branch (102:5): [True: 1.30k, False: 49.1k]
  ------------------
  103|  1.30k|        return CountIndexParser::From<Group2Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  104|  2.10k|    case (GroupVariation::Group2Var3):
  ------------------
  |  Branch (104:5): [True: 2.10k, False: 48.3k]
  ------------------
  105|  2.10k|        return CountIndexParser::From<Group2Var3>(count, numparser).Process(record, buffer, pHandler, pLogger);
  106|       |
  107|  1.29k|    case (GroupVariation::Group4Var1):
  ------------------
  |  Branch (107:5): [True: 1.29k, False: 49.1k]
  ------------------
  108|  1.29k|        return CountIndexParser::From<Group4Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  109|    609|    case (GroupVariation::Group4Var2):
  ------------------
  |  Branch (109:5): [True: 609, False: 49.8k]
  ------------------
  110|    609|        return CountIndexParser::From<Group4Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  111|  2.53k|    case (GroupVariation::Group4Var3):
  ------------------
  |  Branch (111:5): [True: 2.53k, False: 47.9k]
  ------------------
  112|  2.53k|        return CountIndexParser::From<Group4Var3>(count, numparser).Process(record, buffer, pHandler, pLogger);
  113|       |
  114|  1.35k|    case (GroupVariation::Group11Var1):
  ------------------
  |  Branch (114:5): [True: 1.35k, False: 49.1k]
  ------------------
  115|  1.35k|        return CountIndexParser::From<Group11Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  116|  1.11k|    case (GroupVariation::Group11Var2):
  ------------------
  |  Branch (116:5): [True: 1.11k, False: 49.3k]
  ------------------
  117|  1.11k|        return CountIndexParser::From<Group11Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  118|       |
  119|    535|    case (GroupVariation::Group12Var1):
  ------------------
  |  Branch (119:5): [True: 535, False: 49.9k]
  ------------------
  120|    535|        return CountIndexParser::From<Group12Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  121|       |
  122|  2.04k|    case (GroupVariation::Group13Var1):
  ------------------
  |  Branch (122:5): [True: 2.04k, False: 48.4k]
  ------------------
  123|  2.04k|        return CountIndexParser::From<Group13Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  124|  1.16k|    case (GroupVariation::Group13Var2):
  ------------------
  |  Branch (124:5): [True: 1.16k, False: 49.3k]
  ------------------
  125|  1.16k|        return CountIndexParser::From<Group13Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  126|       |
  127|  1.35k|    case (GroupVariation::Group22Var1):
  ------------------
  |  Branch (127:5): [True: 1.35k, False: 49.1k]
  ------------------
  128|  1.35k|        return CountIndexParser::From<Group22Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  129|  1.19k|    case (GroupVariation::Group22Var2):
  ------------------
  |  Branch (129:5): [True: 1.19k, False: 49.2k]
  ------------------
  130|  1.19k|        return CountIndexParser::From<Group22Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  131|    741|    case (GroupVariation::Group22Var5):
  ------------------
  |  Branch (131:5): [True: 741, False: 49.7k]
  ------------------
  132|    741|        return CountIndexParser::From<Group22Var5>(count, numparser).Process(record, buffer, pHandler, pLogger);
  133|    687|    case (GroupVariation::Group22Var6):
  ------------------
  |  Branch (133:5): [True: 687, False: 49.8k]
  ------------------
  134|    687|        return CountIndexParser::From<Group22Var6>(count, numparser).Process(record, buffer, pHandler, pLogger);
  135|       |
  136|  1.58k|    case (GroupVariation::Group23Var1):
  ------------------
  |  Branch (136:5): [True: 1.58k, False: 48.9k]
  ------------------
  137|  1.58k|        return CountIndexParser::From<Group23Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  138|  1.17k|    case (GroupVariation::Group23Var2):
  ------------------
  |  Branch (138:5): [True: 1.17k, False: 49.3k]
  ------------------
  139|  1.17k|        return CountIndexParser::From<Group23Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  140|    845|    case (GroupVariation::Group23Var5):
  ------------------
  |  Branch (140:5): [True: 845, False: 49.6k]
  ------------------
  141|    845|        return CountIndexParser::From<Group23Var5>(count, numparser).Process(record, buffer, pHandler, pLogger);
  142|    548|    case (GroupVariation::Group23Var6):
  ------------------
  |  Branch (142:5): [True: 548, False: 49.9k]
  ------------------
  143|    548|        return CountIndexParser::From<Group23Var6>(count, numparser).Process(record, buffer, pHandler, pLogger);
  144|       |
  145|    513|    case (GroupVariation::Group32Var1):
  ------------------
  |  Branch (145:5): [True: 513, False: 49.9k]
  ------------------
  146|    513|        return CountIndexParser::From<Group32Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  147|    881|    case (GroupVariation::Group32Var2):
  ------------------
  |  Branch (147:5): [True: 881, False: 49.6k]
  ------------------
  148|    881|        return CountIndexParser::From<Group32Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  149|  1.33k|    case (GroupVariation::Group32Var3):
  ------------------
  |  Branch (149:5): [True: 1.33k, False: 49.1k]
  ------------------
  150|  1.33k|        return CountIndexParser::From<Group32Var3>(count, numparser).Process(record, buffer, pHandler, pLogger);
  151|    902|    case (GroupVariation::Group32Var4):
  ------------------
  |  Branch (151:5): [True: 902, False: 49.5k]
  ------------------
  152|    902|        return CountIndexParser::From<Group32Var4>(count, numparser).Process(record, buffer, pHandler, pLogger);
  153|    780|    case (GroupVariation::Group32Var5):
  ------------------
  |  Branch (153:5): [True: 780, False: 49.7k]
  ------------------
  154|    780|        return CountIndexParser::From<Group32Var5>(count, numparser).Process(record, buffer, pHandler, pLogger);
  155|    682|    case (GroupVariation::Group32Var6):
  ------------------
  |  Branch (155:5): [True: 682, False: 49.8k]
  ------------------
  156|    682|        return CountIndexParser::From<Group32Var6>(count, numparser).Process(record, buffer, pHandler, pLogger);
  157|    857|    case (GroupVariation::Group32Var7):
  ------------------
  |  Branch (157:5): [True: 857, False: 49.6k]
  ------------------
  158|    857|        return CountIndexParser::From<Group32Var7>(count, numparser).Process(record, buffer, pHandler, pLogger);
  159|  1.34k|    case (GroupVariation::Group32Var8):
  ------------------
  |  Branch (159:5): [True: 1.34k, False: 49.1k]
  ------------------
  160|  1.34k|        return CountIndexParser::From<Group32Var8>(count, numparser).Process(record, buffer, pHandler, pLogger);
  161|       |
  162|    281|    case (GroupVariation::Group41Var1):
  ------------------
  |  Branch (162:5): [True: 281, False: 50.2k]
  ------------------
  163|    281|        return CountIndexParser::From<Group41Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  164|    572|    case (GroupVariation::Group41Var2):
  ------------------
  |  Branch (164:5): [True: 572, False: 49.9k]
  ------------------
  165|    572|        return CountIndexParser::From<Group41Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  166|    540|    case (GroupVariation::Group41Var3):
  ------------------
  |  Branch (166:5): [True: 540, False: 49.9k]
  ------------------
  167|    540|        return CountIndexParser::From<Group41Var3>(count, numparser).Process(record, buffer, pHandler, pLogger);
  168|    783|    case (GroupVariation::Group41Var4):
  ------------------
  |  Branch (168:5): [True: 783, False: 49.7k]
  ------------------
  169|    783|        return CountIndexParser::From<Group41Var4>(count, numparser).Process(record, buffer, pHandler, pLogger);
  170|       |
  171|    607|    case (GroupVariation::Group42Var1):
  ------------------
  |  Branch (171:5): [True: 607, False: 49.8k]
  ------------------
  172|    607|        return CountIndexParser::From<Group42Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  173|  1.43k|    case (GroupVariation::Group42Var2):
  ------------------
  |  Branch (173:5): [True: 1.43k, False: 49.0k]
  ------------------
  174|  1.43k|        return CountIndexParser::From<Group42Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  175|    896|    case (GroupVariation::Group42Var3):
  ------------------
  |  Branch (175:5): [True: 896, False: 49.5k]
  ------------------
  176|    896|        return CountIndexParser::From<Group42Var3>(count, numparser).Process(record, buffer, pHandler, pLogger);
  177|    752|    case (GroupVariation::Group42Var4):
  ------------------
  |  Branch (177:5): [True: 752, False: 49.7k]
  ------------------
  178|    752|        return CountIndexParser::From<Group42Var4>(count, numparser).Process(record, buffer, pHandler, pLogger);
  179|    964|    case (GroupVariation::Group42Var5):
  ------------------
  |  Branch (179:5): [True: 964, False: 49.5k]
  ------------------
  180|    964|        return CountIndexParser::From<Group42Var5>(count, numparser).Process(record, buffer, pHandler, pLogger);
  181|    839|    case (GroupVariation::Group42Var6):
  ------------------
  |  Branch (181:5): [True: 839, False: 49.6k]
  ------------------
  182|    839|        return CountIndexParser::From<Group42Var6>(count, numparser).Process(record, buffer, pHandler, pLogger);
  183|    970|    case (GroupVariation::Group42Var7):
  ------------------
  |  Branch (183:5): [True: 970, False: 49.5k]
  ------------------
  184|    970|        return CountIndexParser::From<Group42Var7>(count, numparser).Process(record, buffer, pHandler, pLogger);
  185|  1.10k|    case (GroupVariation::Group42Var8):
  ------------------
  |  Branch (185:5): [True: 1.10k, False: 49.3k]
  ------------------
  186|  1.10k|        return CountIndexParser::From<Group42Var8>(count, numparser).Process(record, buffer, pHandler, pLogger);
  187|       |
  188|    959|    case (GroupVariation::Group43Var1):
  ------------------
  |  Branch (188:5): [True: 959, False: 49.5k]
  ------------------
  189|    959|        return CountIndexParser::From<Group43Var1>(count, numparser).Process(record, buffer, pHandler, pLogger);
  190|    855|    case (GroupVariation::Group43Var2):
  ------------------
  |  Branch (190:5): [True: 855, False: 49.6k]
  ------------------
  191|    855|        return CountIndexParser::From<Group43Var2>(count, numparser).Process(record, buffer, pHandler, pLogger);
  192|  1.13k|    case (GroupVariation::Group43Var3):
  ------------------
  |  Branch (192:5): [True: 1.13k, False: 49.3k]
  ------------------
  193|  1.13k|        return CountIndexParser::From<Group43Var3>(count, numparser).Process(record, buffer, pHandler, pLogger);
  194|  1.24k|    case (GroupVariation::Group43Var4):
  ------------------
  |  Branch (194:5): [True: 1.24k, False: 49.2k]
  ------------------
  195|  1.24k|        return CountIndexParser::From<Group43Var4>(count, numparser).Process(record, buffer, pHandler, pLogger);
  196|    923|    case (GroupVariation::Group43Var5):
  ------------------
  |  Branch (196:5): [True: 923, False: 49.5k]
  ------------------
  197|    923|        return CountIndexParser::From<Group43Var5>(count, numparser).Process(record, buffer, pHandler, pLogger);
  198|    735|    case (GroupVariation::Group43Var6):
  ------------------
  |  Branch (198:5): [True: 735, False: 49.7k]
  ------------------
  199|    735|        return CountIndexParser::From<Group43Var6>(count, numparser).Process(record, buffer, pHandler, pLogger);
  200|    934|    case (GroupVariation::Group43Var7):
  ------------------
  |  Branch (200:5): [True: 934, False: 49.5k]
  ------------------
  201|    934|        return CountIndexParser::From<Group43Var7>(count, numparser).Process(record, buffer, pHandler, pLogger);
  202|  1.23k|    case (GroupVariation::Group43Var8):
  ------------------
  |  Branch (202:5): [True: 1.23k, False: 49.2k]
  ------------------
  203|  1.23k|        return CountIndexParser::From<Group43Var8>(count, numparser).Process(record, buffer, pHandler, pLogger);
  204|    624|    case (GroupVariation::Group50Var4):
  ------------------
  |  Branch (204:5): [True: 624, False: 49.8k]
  ------------------
  205|    624|        return CountIndexParser::From<Group50Var4>(count, numparser).Process(record, buffer, pHandler, pLogger);
  206|  1.19k|    case (GroupVariation::Group111Var0):
  ------------------
  |  Branch (206:5): [True: 1.19k, False: 49.2k]
  ------------------
  207|  1.19k|        return ParseIndexPrefixedOctetData(buffer, record, numparser, count, pLogger, pHandler);
  208|       |
  209|     44|    default:
  ------------------
  |  Branch (209:5): [True: 44, False: 50.4k]
  ------------------
  210|       |
  211|     44|        FORMAT_LOGGER_BLOCK(pLogger, flags::WARN, "Unsupported qualifier/object - %s - %i / %i",
  ------------------
  |  |   62|     44|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 44, False: 0]
  |  |  |  Branch (62:20): [True: 0, False: 44]
  |  |  ------------------
  |  |   63|     44|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
  212|     44|                            QualifierCodeSpec::to_human_string(record.GetQualifierCode()), record.group,
  213|     44|                            record.variation);
  214|       |
  215|     44|        return ParseResult::INVALID_OBJECT_QUALIFIER;
  216|  50.4k|    }
  217|  50.4k|}
_ZN8opendnp316CountIndexParser27ParseIndexPrefixedOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_9NumParserEjPNS_6LoggerEPNS_12IAPDUHandlerE:
  254|  1.19k|{
  255|  1.19k|    if (record.variation == 0)
  ------------------
  |  Branch (255:9): [True: 2, False: 1.19k]
  ------------------
  256|      2|    {
  257|      2|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Octet string variation 0 may only be used in requests");
  ------------------
  |  |   48|      2|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 2, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 2]
  |  |  ------------------
  |  |   49|      2|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
  258|      2|        return ParseResult::INVALID_OBJECT;
  259|      2|    }
  260|       |
  261|  1.19k|    const uint32_t TOTAL_SIZE = count * (numparser.NumBytes() + record.variation);
  262|       |
  263|  1.19k|    if (buffer.length() < TOTAL_SIZE)
  ------------------
  |  Branch (263:9): [True: 28, False: 1.16k]
  ------------------
  264|     28|    {
  265|     28|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Not enough data for specified bitfield objects");
  ------------------
  |  |   48|     28|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 28, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 28]
  |  |  ------------------
  |  |   49|     28|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
  266|     28|        return ParseResult::NOT_ENOUGH_DATA_FOR_OBJECTS;
  267|     28|    }
  268|       |
  269|  1.16k|    if (pHandler)
  ------------------
  |  Branch (269:9): [True: 550, False: 619]
  ------------------
  270|    550|    {
  271|    550|        auto read = [&numparser, record](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<OctetString> {
  272|    550|            auto index = numparser.ReadNum(buffer);
  273|    550|            const auto octetStringSlice = buffer.take(record.variation);
  274|    550|            OctetString octets(Buffer(octetStringSlice, octetStringSlice.length()));
  275|    550|            buffer.advance(record.variation);
  276|    550|            return WithIndex(octets, index);
  277|    550|        };
  278|       |
  279|    550|        auto collection = CreateBufferedCollection<Indexed<OctetString>>(buffer, count, read);
  280|    550|        pHandler->OnHeader(PrefixHeader(record, count), collection);
  281|    550|    }
  282|       |
  283|  1.16k|    buffer.advance(TOTAL_SIZE);
  284|  1.16k|    return ParseResult::OK;
  285|  1.19k|}
CountIndexParser.cpp:_ZZN8opendnp316CountIndexParser27ParseIndexPrefixedOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_9NumParserEjPNS_6LoggerEPNS_12IAPDUHandlerEENK3$_0clES4_j:
  271|  1.21k|        auto read = [&numparser, record](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<OctetString> {
  272|  1.21k|            auto index = numparser.ReadNum(buffer);
  273|  1.21k|            const auto octetStringSlice = buffer.take(record.variation);
  274|  1.21k|            OctetString octets(Buffer(octetStringSlice, octetStringSlice.length()));
  275|  1.21k|            buffer.advance(record.variation);
  276|  1.21k|            return WithIndex(octets, index);
  277|  1.21k|        };

_ZN8opendnp316CountIndexParser4FromINS_10Group2Var1EEES0_tRKNS_9NumParserE:
  111|  1.39k|{
  112|  1.39k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.39k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.39k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group2Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    674|{
  129|    674|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    674|    {
  131|    674|        Indexed<typename Descriptor::Target> pair;
  132|    674|        pair.index = numparser.ReadNum(buffer);
  133|    674|        Descriptor::ReadTarget(buffer, pair.value);
  134|    674|        return pair;
  135|    674|    };
  136|       |
  137|    674|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    674|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    674|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group2Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  2.76k|    {
  131|  2.76k|        Indexed<typename Descriptor::Target> pair;
  132|  2.76k|        pair.index = numparser.ReadNum(buffer);
  133|  2.76k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  2.76k|        return pair;
  135|  2.76k|    };
_ZN8opendnp316CountIndexParser4FromINS_10Group2Var2EEES0_tRKNS_9NumParserE:
  111|  1.30k|{
  112|  1.30k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.30k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.30k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group2Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    647|{
  129|    647|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    647|    {
  131|    647|        Indexed<typename Descriptor::Target> pair;
  132|    647|        pair.index = numparser.ReadNum(buffer);
  133|    647|        Descriptor::ReadTarget(buffer, pair.value);
  134|    647|        return pair;
  135|    647|    };
  136|       |
  137|    647|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    647|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    647|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group2Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.53k|    {
  131|  1.53k|        Indexed<typename Descriptor::Target> pair;
  132|  1.53k|        pair.index = numparser.ReadNum(buffer);
  133|  1.53k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.53k|        return pair;
  135|  1.53k|    };
_ZN8opendnp316CountIndexParser4FromINS_10Group2Var3EEES0_tRKNS_9NumParserE:
  111|  2.10k|{
  112|  2.10k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  2.10k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  2.10k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group2Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|  1.02k|{
  129|  1.02k|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|  1.02k|    {
  131|  1.02k|        Indexed<typename Descriptor::Target> pair;
  132|  1.02k|        pair.index = numparser.ReadNum(buffer);
  133|  1.02k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.02k|        return pair;
  135|  1.02k|    };
  136|       |
  137|  1.02k|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|  1.02k|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|  1.02k|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group2Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  2.86k|    {
  131|  2.86k|        Indexed<typename Descriptor::Target> pair;
  132|  2.86k|        pair.index = numparser.ReadNum(buffer);
  133|  2.86k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  2.86k|        return pair;
  135|  2.86k|    };
_ZN8opendnp316CountIndexParser4FromINS_10Group4Var1EEES0_tRKNS_9NumParserE:
  111|  1.29k|{
  112|  1.29k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.29k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.29k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group4Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    630|{
  129|    630|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    630|    {
  131|    630|        Indexed<typename Descriptor::Target> pair;
  132|    630|        pair.index = numparser.ReadNum(buffer);
  133|    630|        Descriptor::ReadTarget(buffer, pair.value);
  134|    630|        return pair;
  135|    630|    };
  136|       |
  137|    630|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    630|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    630|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group4Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  2.14k|    {
  131|  2.14k|        Indexed<typename Descriptor::Target> pair;
  132|  2.14k|        pair.index = numparser.ReadNum(buffer);
  133|  2.14k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  2.14k|        return pair;
  135|  2.14k|    };
_ZN8opendnp316CountIndexParser4FromINS_10Group4Var2EEES0_tRKNS_9NumParserE:
  111|    609|{
  112|    609|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    609|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    609|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group4Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    300|{
  129|    300|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    300|    {
  131|    300|        Indexed<typename Descriptor::Target> pair;
  132|    300|        pair.index = numparser.ReadNum(buffer);
  133|    300|        Descriptor::ReadTarget(buffer, pair.value);
  134|    300|        return pair;
  135|    300|    };
  136|       |
  137|    300|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    300|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    300|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group4Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    536|    {
  131|    536|        Indexed<typename Descriptor::Target> pair;
  132|    536|        pair.index = numparser.ReadNum(buffer);
  133|    536|        Descriptor::ReadTarget(buffer, pair.value);
  134|    536|        return pair;
  135|    536|    };
_ZN8opendnp316CountIndexParser4FromINS_10Group4Var3EEES0_tRKNS_9NumParserE:
  111|  2.53k|{
  112|  2.53k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  2.53k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  2.53k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group4Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|  1.25k|{
  129|  1.25k|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|  1.25k|    {
  131|  1.25k|        Indexed<typename Descriptor::Target> pair;
  132|  1.25k|        pair.index = numparser.ReadNum(buffer);
  133|  1.25k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.25k|        return pair;
  135|  1.25k|    };
  136|       |
  137|  1.25k|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|  1.25k|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|  1.25k|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_10Group4Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.84k|    {
  131|  1.84k|        Indexed<typename Descriptor::Target> pair;
  132|  1.84k|        pair.index = numparser.ReadNum(buffer);
  133|  1.84k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.84k|        return pair;
  135|  1.84k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group11Var1EEES0_tRKNS_9NumParserE:
  111|  1.35k|{
  112|  1.35k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.35k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.35k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group11Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    672|{
  129|    672|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    672|    {
  131|    672|        Indexed<typename Descriptor::Target> pair;
  132|    672|        pair.index = numparser.ReadNum(buffer);
  133|    672|        Descriptor::ReadTarget(buffer, pair.value);
  134|    672|        return pair;
  135|    672|    };
  136|       |
  137|    672|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    672|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    672|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group11Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  2.66k|    {
  131|  2.66k|        Indexed<typename Descriptor::Target> pair;
  132|  2.66k|        pair.index = numparser.ReadNum(buffer);
  133|  2.66k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  2.66k|        return pair;
  135|  2.66k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group11Var2EEES0_tRKNS_9NumParserE:
  111|  1.11k|{
  112|  1.11k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.11k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.11k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group11Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    545|{
  129|    545|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    545|    {
  131|    545|        Indexed<typename Descriptor::Target> pair;
  132|    545|        pair.index = numparser.ReadNum(buffer);
  133|    545|        Descriptor::ReadTarget(buffer, pair.value);
  134|    545|        return pair;
  135|    545|    };
  136|       |
  137|    545|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    545|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    545|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group11Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.33k|    {
  131|  1.33k|        Indexed<typename Descriptor::Target> pair;
  132|  1.33k|        pair.index = numparser.ReadNum(buffer);
  133|  1.33k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.33k|        return pair;
  135|  1.33k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group12Var1EEES0_tRKNS_9NumParserE:
  111|    535|{
  112|    535|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    535|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    535|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group12Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    261|{
  129|    261|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    261|    {
  131|    261|        Indexed<typename Descriptor::Target> pair;
  132|    261|        pair.index = numparser.ReadNum(buffer);
  133|    261|        Descriptor::ReadTarget(buffer, pair.value);
  134|    261|        return pair;
  135|    261|    };
  136|       |
  137|    261|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    261|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    261|}
_ZN8opendnp316CountIndexParser4FromINS_11Group13Var1EEES0_tRKNS_9NumParserE:
  111|  2.04k|{
  112|  2.04k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  2.04k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  2.04k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group13Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|  1.00k|{
  129|  1.00k|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|  1.00k|    {
  131|  1.00k|        Indexed<typename Descriptor::Target> pair;
  132|  1.00k|        pair.index = numparser.ReadNum(buffer);
  133|  1.00k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.00k|        return pair;
  135|  1.00k|    };
  136|       |
  137|  1.00k|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|  1.00k|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|  1.00k|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group13Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  13.6k|    {
  131|  13.6k|        Indexed<typename Descriptor::Target> pair;
  132|  13.6k|        pair.index = numparser.ReadNum(buffer);
  133|  13.6k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  13.6k|        return pair;
  135|  13.6k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group13Var2EEES0_tRKNS_9NumParserE:
  111|  1.16k|{
  112|  1.16k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.16k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.16k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group13Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    530|{
  129|    530|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    530|    {
  131|    530|        Indexed<typename Descriptor::Target> pair;
  132|    530|        pair.index = numparser.ReadNum(buffer);
  133|    530|        Descriptor::ReadTarget(buffer, pair.value);
  134|    530|        return pair;
  135|    530|    };
  136|       |
  137|    530|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    530|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    530|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group13Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.58k|    {
  131|  1.58k|        Indexed<typename Descriptor::Target> pair;
  132|  1.58k|        pair.index = numparser.ReadNum(buffer);
  133|  1.58k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.58k|        return pair;
  135|  1.58k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group22Var1EEES0_tRKNS_9NumParserE:
  111|  1.35k|{
  112|  1.35k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.35k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.35k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group22Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    651|{
  129|    651|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    651|    {
  131|    651|        Indexed<typename Descriptor::Target> pair;
  132|    651|        pair.index = numparser.ReadNum(buffer);
  133|    651|        Descriptor::ReadTarget(buffer, pair.value);
  134|    651|        return pair;
  135|    651|    };
  136|       |
  137|    651|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    651|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    651|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group22Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.42k|    {
  131|  1.42k|        Indexed<typename Descriptor::Target> pair;
  132|  1.42k|        pair.index = numparser.ReadNum(buffer);
  133|  1.42k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.42k|        return pair;
  135|  1.42k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group22Var2EEES0_tRKNS_9NumParserE:
  111|  1.19k|{
  112|  1.19k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.19k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.19k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group22Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    568|{
  129|    568|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    568|    {
  131|    568|        Indexed<typename Descriptor::Target> pair;
  132|    568|        pair.index = numparser.ReadNum(buffer);
  133|    568|        Descriptor::ReadTarget(buffer, pair.value);
  134|    568|        return pair;
  135|    568|    };
  136|       |
  137|    568|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    568|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    568|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group22Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  2.10k|    {
  131|  2.10k|        Indexed<typename Descriptor::Target> pair;
  132|  2.10k|        pair.index = numparser.ReadNum(buffer);
  133|  2.10k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  2.10k|        return pair;
  135|  2.10k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group22Var5EEES0_tRKNS_9NumParserE:
  111|    741|{
  112|    741|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    741|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    741|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group22Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    300|{
  129|    300|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    300|    {
  131|    300|        Indexed<typename Descriptor::Target> pair;
  132|    300|        pair.index = numparser.ReadNum(buffer);
  133|    300|        Descriptor::ReadTarget(buffer, pair.value);
  134|    300|        return pair;
  135|    300|    };
  136|       |
  137|    300|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    300|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    300|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group22Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    674|    {
  131|    674|        Indexed<typename Descriptor::Target> pair;
  132|    674|        pair.index = numparser.ReadNum(buffer);
  133|    674|        Descriptor::ReadTarget(buffer, pair.value);
  134|    674|        return pair;
  135|    674|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group22Var6EEES0_tRKNS_9NumParserE:
  111|    687|{
  112|    687|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    687|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    687|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group22Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    337|{
  129|    337|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    337|    {
  131|    337|        Indexed<typename Descriptor::Target> pair;
  132|    337|        pair.index = numparser.ReadNum(buffer);
  133|    337|        Descriptor::ReadTarget(buffer, pair.value);
  134|    337|        return pair;
  135|    337|    };
  136|       |
  137|    337|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    337|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    337|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group22Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    855|    {
  131|    855|        Indexed<typename Descriptor::Target> pair;
  132|    855|        pair.index = numparser.ReadNum(buffer);
  133|    855|        Descriptor::ReadTarget(buffer, pair.value);
  134|    855|        return pair;
  135|    855|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group23Var1EEES0_tRKNS_9NumParserE:
  111|  1.58k|{
  112|  1.58k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.58k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.58k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group23Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    756|{
  129|    756|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    756|    {
  131|    756|        Indexed<typename Descriptor::Target> pair;
  132|    756|        pair.index = numparser.ReadNum(buffer);
  133|    756|        Descriptor::ReadTarget(buffer, pair.value);
  134|    756|        return pair;
  135|    756|    };
  136|       |
  137|    756|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    756|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    756|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group23Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.26k|    {
  131|  1.26k|        Indexed<typename Descriptor::Target> pair;
  132|  1.26k|        pair.index = numparser.ReadNum(buffer);
  133|  1.26k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.26k|        return pair;
  135|  1.26k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group23Var2EEES0_tRKNS_9NumParserE:
  111|  1.17k|{
  112|  1.17k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.17k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.17k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group23Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    570|{
  129|    570|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    570|    {
  131|    570|        Indexed<typename Descriptor::Target> pair;
  132|    570|        pair.index = numparser.ReadNum(buffer);
  133|    570|        Descriptor::ReadTarget(buffer, pair.value);
  134|    570|        return pair;
  135|    570|    };
  136|       |
  137|    570|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    570|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    570|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group23Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.12k|    {
  131|  1.12k|        Indexed<typename Descriptor::Target> pair;
  132|  1.12k|        pair.index = numparser.ReadNum(buffer);
  133|  1.12k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.12k|        return pair;
  135|  1.12k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group23Var5EEES0_tRKNS_9NumParserE:
  111|    845|{
  112|    845|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    845|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    845|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group23Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    416|{
  129|    416|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    416|    {
  131|    416|        Indexed<typename Descriptor::Target> pair;
  132|    416|        pair.index = numparser.ReadNum(buffer);
  133|    416|        Descriptor::ReadTarget(buffer, pair.value);
  134|    416|        return pair;
  135|    416|    };
  136|       |
  137|    416|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    416|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    416|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group23Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    813|    {
  131|    813|        Indexed<typename Descriptor::Target> pair;
  132|    813|        pair.index = numparser.ReadNum(buffer);
  133|    813|        Descriptor::ReadTarget(buffer, pair.value);
  134|    813|        return pair;
  135|    813|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group23Var6EEES0_tRKNS_9NumParserE:
  111|    548|{
  112|    548|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    548|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    548|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group23Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    271|{
  129|    271|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    271|    {
  131|    271|        Indexed<typename Descriptor::Target> pair;
  132|    271|        pair.index = numparser.ReadNum(buffer);
  133|    271|        Descriptor::ReadTarget(buffer, pair.value);
  134|    271|        return pair;
  135|    271|    };
  136|       |
  137|    271|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    271|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    271|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group23Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    576|    {
  131|    576|        Indexed<typename Descriptor::Target> pair;
  132|    576|        pair.index = numparser.ReadNum(buffer);
  133|    576|        Descriptor::ReadTarget(buffer, pair.value);
  134|    576|        return pair;
  135|    576|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group32Var1EEES0_tRKNS_9NumParserE:
  111|    513|{
  112|    513|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    513|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    513|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    251|{
  129|    251|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    251|    {
  131|    251|        Indexed<typename Descriptor::Target> pair;
  132|    251|        pair.index = numparser.ReadNum(buffer);
  133|    251|        Descriptor::ReadTarget(buffer, pair.value);
  134|    251|        return pair;
  135|    251|    };
  136|       |
  137|    251|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    251|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    251|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    757|    {
  131|    757|        Indexed<typename Descriptor::Target> pair;
  132|    757|        pair.index = numparser.ReadNum(buffer);
  133|    757|        Descriptor::ReadTarget(buffer, pair.value);
  134|    757|        return pair;
  135|    757|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group32Var2EEES0_tRKNS_9NumParserE:
  111|    881|{
  112|    881|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    881|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    881|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    369|{
  129|    369|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    369|    {
  131|    369|        Indexed<typename Descriptor::Target> pair;
  132|    369|        pair.index = numparser.ReadNum(buffer);
  133|    369|        Descriptor::ReadTarget(buffer, pair.value);
  134|    369|        return pair;
  135|    369|    };
  136|       |
  137|    369|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    369|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    369|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.39k|    {
  131|  1.39k|        Indexed<typename Descriptor::Target> pair;
  132|  1.39k|        pair.index = numparser.ReadNum(buffer);
  133|  1.39k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.39k|        return pair;
  135|  1.39k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group32Var3EEES0_tRKNS_9NumParserE:
  111|  1.33k|{
  112|  1.33k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.33k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.33k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    664|{
  129|    664|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    664|    {
  131|    664|        Indexed<typename Descriptor::Target> pair;
  132|    664|        pair.index = numparser.ReadNum(buffer);
  133|    664|        Descriptor::ReadTarget(buffer, pair.value);
  134|    664|        return pair;
  135|    664|    };
  136|       |
  137|    664|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    664|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    664|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.47k|    {
  131|  1.47k|        Indexed<typename Descriptor::Target> pair;
  132|  1.47k|        pair.index = numparser.ReadNum(buffer);
  133|  1.47k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.47k|        return pair;
  135|  1.47k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group32Var4EEES0_tRKNS_9NumParserE:
  111|    902|{
  112|    902|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    902|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    902|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    428|{
  129|    428|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    428|    {
  131|    428|        Indexed<typename Descriptor::Target> pair;
  132|    428|        pair.index = numparser.ReadNum(buffer);
  133|    428|        Descriptor::ReadTarget(buffer, pair.value);
  134|    428|        return pair;
  135|    428|    };
  136|       |
  137|    428|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    428|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    428|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.38k|    {
  131|  1.38k|        Indexed<typename Descriptor::Target> pair;
  132|  1.38k|        pair.index = numparser.ReadNum(buffer);
  133|  1.38k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.38k|        return pair;
  135|  1.38k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group32Var5EEES0_tRKNS_9NumParserE:
  111|    780|{
  112|    780|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    780|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    780|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    381|{
  129|    381|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    381|    {
  131|    381|        Indexed<typename Descriptor::Target> pair;
  132|    381|        pair.index = numparser.ReadNum(buffer);
  133|    381|        Descriptor::ReadTarget(buffer, pair.value);
  134|    381|        return pair;
  135|    381|    };
  136|       |
  137|    381|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    381|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    381|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.20k|    {
  131|  1.20k|        Indexed<typename Descriptor::Target> pair;
  132|  1.20k|        pair.index = numparser.ReadNum(buffer);
  133|  1.20k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.20k|        return pair;
  135|  1.20k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group32Var6EEES0_tRKNS_9NumParserE:
  111|    682|{
  112|    682|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    682|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    682|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    338|{
  129|    338|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    338|    {
  131|    338|        Indexed<typename Descriptor::Target> pair;
  132|    338|        pair.index = numparser.ReadNum(buffer);
  133|    338|        Descriptor::ReadTarget(buffer, pair.value);
  134|    338|        return pair;
  135|    338|    };
  136|       |
  137|    338|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    338|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    338|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    930|    {
  131|    930|        Indexed<typename Descriptor::Target> pair;
  132|    930|        pair.index = numparser.ReadNum(buffer);
  133|    930|        Descriptor::ReadTarget(buffer, pair.value);
  134|    930|        return pair;
  135|    930|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group32Var7EEES0_tRKNS_9NumParserE:
  111|    857|{
  112|    857|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    857|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    857|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    423|{
  129|    423|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    423|    {
  131|    423|        Indexed<typename Descriptor::Target> pair;
  132|    423|        pair.index = numparser.ReadNum(buffer);
  133|    423|        Descriptor::ReadTarget(buffer, pair.value);
  134|    423|        return pair;
  135|    423|    };
  136|       |
  137|    423|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    423|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    423|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    724|    {
  131|    724|        Indexed<typename Descriptor::Target> pair;
  132|    724|        pair.index = numparser.ReadNum(buffer);
  133|    724|        Descriptor::ReadTarget(buffer, pair.value);
  134|    724|        return pair;
  135|    724|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group32Var8EEES0_tRKNS_9NumParserE:
  111|  1.34k|{
  112|  1.34k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.34k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.34k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    507|{
  129|    507|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    507|    {
  131|    507|        Indexed<typename Descriptor::Target> pair;
  132|    507|        pair.index = numparser.ReadNum(buffer);
  133|    507|        Descriptor::ReadTarget(buffer, pair.value);
  134|    507|        return pair;
  135|    507|    };
  136|       |
  137|    507|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    507|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    507|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group32Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    932|    {
  131|    932|        Indexed<typename Descriptor::Target> pair;
  132|    932|        pair.index = numparser.ReadNum(buffer);
  133|    932|        Descriptor::ReadTarget(buffer, pair.value);
  134|    932|        return pair;
  135|    932|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group41Var1EEES0_tRKNS_9NumParserE:
  111|    281|{
  112|    281|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    281|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    281|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group41Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    137|{
  129|    137|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    137|    {
  131|    137|        Indexed<typename Descriptor::Target> pair;
  132|    137|        pair.index = numparser.ReadNum(buffer);
  133|    137|        Descriptor::ReadTarget(buffer, pair.value);
  134|    137|        return pair;
  135|    137|    };
  136|       |
  137|    137|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    137|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    137|}
_ZN8opendnp316CountIndexParser4FromINS_11Group41Var2EEES0_tRKNS_9NumParserE:
  111|    572|{
  112|    572|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    572|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    572|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group41Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    281|{
  129|    281|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    281|    {
  131|    281|        Indexed<typename Descriptor::Target> pair;
  132|    281|        pair.index = numparser.ReadNum(buffer);
  133|    281|        Descriptor::ReadTarget(buffer, pair.value);
  134|    281|        return pair;
  135|    281|    };
  136|       |
  137|    281|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    281|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    281|}
_ZN8opendnp316CountIndexParser4FromINS_11Group41Var3EEES0_tRKNS_9NumParserE:
  111|    540|{
  112|    540|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    540|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    540|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group41Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    267|{
  129|    267|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    267|    {
  131|    267|        Indexed<typename Descriptor::Target> pair;
  132|    267|        pair.index = numparser.ReadNum(buffer);
  133|    267|        Descriptor::ReadTarget(buffer, pair.value);
  134|    267|        return pair;
  135|    267|    };
  136|       |
  137|    267|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    267|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    267|}
_ZN8opendnp316CountIndexParser4FromINS_11Group41Var4EEES0_tRKNS_9NumParserE:
  111|    783|{
  112|    783|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    783|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    783|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group41Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    389|{
  129|    389|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    389|    {
  131|    389|        Indexed<typename Descriptor::Target> pair;
  132|    389|        pair.index = numparser.ReadNum(buffer);
  133|    389|        Descriptor::ReadTarget(buffer, pair.value);
  134|    389|        return pair;
  135|    389|    };
  136|       |
  137|    389|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    389|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    389|}
_ZN8opendnp316CountIndexParser4FromINS_11Group42Var1EEES0_tRKNS_9NumParserE:
  111|    607|{
  112|    607|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    607|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    607|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    300|{
  129|    300|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    300|    {
  131|    300|        Indexed<typename Descriptor::Target> pair;
  132|    300|        pair.index = numparser.ReadNum(buffer);
  133|    300|        Descriptor::ReadTarget(buffer, pair.value);
  134|    300|        return pair;
  135|    300|    };
  136|       |
  137|    300|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    300|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    300|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    578|    {
  131|    578|        Indexed<typename Descriptor::Target> pair;
  132|    578|        pair.index = numparser.ReadNum(buffer);
  133|    578|        Descriptor::ReadTarget(buffer, pair.value);
  134|    578|        return pair;
  135|    578|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group42Var2EEES0_tRKNS_9NumParserE:
  111|  1.43k|{
  112|  1.43k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.43k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.43k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    687|{
  129|    687|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    687|    {
  131|    687|        Indexed<typename Descriptor::Target> pair;
  132|    687|        pair.index = numparser.ReadNum(buffer);
  133|    687|        Descriptor::ReadTarget(buffer, pair.value);
  134|    687|        return pair;
  135|    687|    };
  136|       |
  137|    687|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    687|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    687|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  2.04k|    {
  131|  2.04k|        Indexed<typename Descriptor::Target> pair;
  132|  2.04k|        pair.index = numparser.ReadNum(buffer);
  133|  2.04k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  2.04k|        return pair;
  135|  2.04k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group42Var3EEES0_tRKNS_9NumParserE:
  111|    896|{
  112|    896|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    896|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    896|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    390|{
  129|    390|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    390|    {
  131|    390|        Indexed<typename Descriptor::Target> pair;
  132|    390|        pair.index = numparser.ReadNum(buffer);
  133|    390|        Descriptor::ReadTarget(buffer, pair.value);
  134|    390|        return pair;
  135|    390|    };
  136|       |
  137|    390|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    390|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    390|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.41k|    {
  131|  1.41k|        Indexed<typename Descriptor::Target> pair;
  132|  1.41k|        pair.index = numparser.ReadNum(buffer);
  133|  1.41k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.41k|        return pair;
  135|  1.41k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group42Var4EEES0_tRKNS_9NumParserE:
  111|    752|{
  112|    752|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    752|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    752|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    337|{
  129|    337|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    337|    {
  131|    337|        Indexed<typename Descriptor::Target> pair;
  132|    337|        pair.index = numparser.ReadNum(buffer);
  133|    337|        Descriptor::ReadTarget(buffer, pair.value);
  134|    337|        return pair;
  135|    337|    };
  136|       |
  137|    337|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    337|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    337|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    699|    {
  131|    699|        Indexed<typename Descriptor::Target> pair;
  132|    699|        pair.index = numparser.ReadNum(buffer);
  133|    699|        Descriptor::ReadTarget(buffer, pair.value);
  134|    699|        return pair;
  135|    699|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group42Var5EEES0_tRKNS_9NumParserE:
  111|    964|{
  112|    964|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    964|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    964|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    435|{
  129|    435|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    435|    {
  131|    435|        Indexed<typename Descriptor::Target> pair;
  132|    435|        pair.index = numparser.ReadNum(buffer);
  133|    435|        Descriptor::ReadTarget(buffer, pair.value);
  134|    435|        return pair;
  135|    435|    };
  136|       |
  137|    435|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    435|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    435|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.42k|    {
  131|  1.42k|        Indexed<typename Descriptor::Target> pair;
  132|  1.42k|        pair.index = numparser.ReadNum(buffer);
  133|  1.42k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.42k|        return pair;
  135|  1.42k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group42Var6EEES0_tRKNS_9NumParserE:
  111|    839|{
  112|    839|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    839|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    839|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    379|{
  129|    379|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    379|    {
  131|    379|        Indexed<typename Descriptor::Target> pair;
  132|    379|        pair.index = numparser.ReadNum(buffer);
  133|    379|        Descriptor::ReadTarget(buffer, pair.value);
  134|    379|        return pair;
  135|    379|    };
  136|       |
  137|    379|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    379|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    379|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.13k|    {
  131|  1.13k|        Indexed<typename Descriptor::Target> pair;
  132|  1.13k|        pair.index = numparser.ReadNum(buffer);
  133|  1.13k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.13k|        return pair;
  135|  1.13k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group42Var7EEES0_tRKNS_9NumParserE:
  111|    970|{
  112|    970|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    970|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    970|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    479|{
  129|    479|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    479|    {
  131|    479|        Indexed<typename Descriptor::Target> pair;
  132|    479|        pair.index = numparser.ReadNum(buffer);
  133|    479|        Descriptor::ReadTarget(buffer, pair.value);
  134|    479|        return pair;
  135|    479|    };
  136|       |
  137|    479|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    479|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    479|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.22k|    {
  131|  1.22k|        Indexed<typename Descriptor::Target> pair;
  132|  1.22k|        pair.index = numparser.ReadNum(buffer);
  133|  1.22k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.22k|        return pair;
  135|  1.22k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group42Var8EEES0_tRKNS_9NumParserE:
  111|  1.10k|{
  112|  1.10k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.10k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.10k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    549|{
  129|    549|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    549|    {
  131|    549|        Indexed<typename Descriptor::Target> pair;
  132|    549|        pair.index = numparser.ReadNum(buffer);
  133|    549|        Descriptor::ReadTarget(buffer, pair.value);
  134|    549|        return pair;
  135|    549|    };
  136|       |
  137|    549|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    549|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    549|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group42Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    948|    {
  131|    948|        Indexed<typename Descriptor::Target> pair;
  132|    948|        pair.index = numparser.ReadNum(buffer);
  133|    948|        Descriptor::ReadTarget(buffer, pair.value);
  134|    948|        return pair;
  135|    948|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group43Var1EEES0_tRKNS_9NumParserE:
  111|    959|{
  112|    959|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    959|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    959|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    476|{
  129|    476|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    476|    {
  131|    476|        Indexed<typename Descriptor::Target> pair;
  132|    476|        pair.index = numparser.ReadNum(buffer);
  133|    476|        Descriptor::ReadTarget(buffer, pair.value);
  134|    476|        return pair;
  135|    476|    };
  136|       |
  137|    476|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    476|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    476|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var1EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.74k|    {
  131|  1.74k|        Indexed<typename Descriptor::Target> pair;
  132|  1.74k|        pair.index = numparser.ReadNum(buffer);
  133|  1.74k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.74k|        return pair;
  135|  1.74k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group43Var2EEES0_tRKNS_9NumParserE:
  111|    855|{
  112|    855|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    855|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    855|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    419|{
  129|    419|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    419|    {
  131|    419|        Indexed<typename Descriptor::Target> pair;
  132|    419|        pair.index = numparser.ReadNum(buffer);
  133|    419|        Descriptor::ReadTarget(buffer, pair.value);
  134|    419|        return pair;
  135|    419|    };
  136|       |
  137|    419|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    419|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    419|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var2EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  2.57k|    {
  131|  2.57k|        Indexed<typename Descriptor::Target> pair;
  132|  2.57k|        pair.index = numparser.ReadNum(buffer);
  133|  2.57k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  2.57k|        return pair;
  135|  2.57k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group43Var3EEES0_tRKNS_9NumParserE:
  111|  1.13k|{
  112|  1.13k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.13k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.13k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    566|{
  129|    566|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    566|    {
  131|    566|        Indexed<typename Descriptor::Target> pair;
  132|    566|        pair.index = numparser.ReadNum(buffer);
  133|    566|        Descriptor::ReadTarget(buffer, pair.value);
  134|    566|        return pair;
  135|    566|    };
  136|       |
  137|    566|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    566|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    566|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var3EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.02k|    {
  131|  1.02k|        Indexed<typename Descriptor::Target> pair;
  132|  1.02k|        pair.index = numparser.ReadNum(buffer);
  133|  1.02k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.02k|        return pair;
  135|  1.02k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group43Var4EEES0_tRKNS_9NumParserE:
  111|  1.24k|{
  112|  1.24k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.24k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.24k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    522|{
  129|    522|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    522|    {
  131|    522|        Indexed<typename Descriptor::Target> pair;
  132|    522|        pair.index = numparser.ReadNum(buffer);
  133|    522|        Descriptor::ReadTarget(buffer, pair.value);
  134|    522|        return pair;
  135|    522|    };
  136|       |
  137|    522|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    522|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    522|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.33k|    {
  131|  1.33k|        Indexed<typename Descriptor::Target> pair;
  132|  1.33k|        pair.index = numparser.ReadNum(buffer);
  133|  1.33k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.33k|        return pair;
  135|  1.33k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group43Var5EEES0_tRKNS_9NumParserE:
  111|    923|{
  112|    923|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    923|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    923|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    412|{
  129|    412|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    412|    {
  131|    412|        Indexed<typename Descriptor::Target> pair;
  132|    412|        pair.index = numparser.ReadNum(buffer);
  133|    412|        Descriptor::ReadTarget(buffer, pair.value);
  134|    412|        return pair;
  135|    412|    };
  136|       |
  137|    412|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    412|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    412|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var5EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  3.08k|    {
  131|  3.08k|        Indexed<typename Descriptor::Target> pair;
  132|  3.08k|        pair.index = numparser.ReadNum(buffer);
  133|  3.08k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  3.08k|        return pair;
  135|  3.08k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group43Var6EEES0_tRKNS_9NumParserE:
  111|    735|{
  112|    735|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    735|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    735|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    362|{
  129|    362|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    362|    {
  131|    362|        Indexed<typename Descriptor::Target> pair;
  132|    362|        pair.index = numparser.ReadNum(buffer);
  133|    362|        Descriptor::ReadTarget(buffer, pair.value);
  134|    362|        return pair;
  135|    362|    };
  136|       |
  137|    362|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    362|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    362|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var6EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    939|    {
  131|    939|        Indexed<typename Descriptor::Target> pair;
  132|    939|        pair.index = numparser.ReadNum(buffer);
  133|    939|        Descriptor::ReadTarget(buffer, pair.value);
  134|    939|        return pair;
  135|    939|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group43Var7EEES0_tRKNS_9NumParserE:
  111|    934|{
  112|    934|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    934|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    934|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    448|{
  129|    448|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    448|    {
  131|    448|        Indexed<typename Descriptor::Target> pair;
  132|    448|        pair.index = numparser.ReadNum(buffer);
  133|    448|        Descriptor::ReadTarget(buffer, pair.value);
  134|    448|        return pair;
  135|    448|    };
  136|       |
  137|    448|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    448|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    448|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var7EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|    694|    {
  131|    694|        Indexed<typename Descriptor::Target> pair;
  132|    694|        pair.index = numparser.ReadNum(buffer);
  133|    694|        Descriptor::ReadTarget(buffer, pair.value);
  134|    694|        return pair;
  135|    694|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group43Var8EEES0_tRKNS_9NumParserE:
  111|  1.23k|{
  112|  1.23k|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|  1.23k|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|  1.23k|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    577|{
  129|    577|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    577|    {
  131|    577|        Indexed<typename Descriptor::Target> pair;
  132|    577|        pair.index = numparser.ReadNum(buffer);
  133|    577|        Descriptor::ReadTarget(buffer, pair.value);
  134|    577|        return pair;
  135|    577|    };
  136|       |
  137|    577|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    577|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    577|}
_ZZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group43Var8EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  130|  1.45k|    {
  131|  1.45k|        Indexed<typename Descriptor::Target> pair;
  132|  1.45k|        pair.index = numparser.ReadNum(buffer);
  133|  1.45k|        Descriptor::ReadTarget(buffer, pair.value);
  134|  1.45k|        return pair;
  135|  1.45k|    };
_ZN8opendnp316CountIndexParser4FromINS_11Group50Var4EEES0_tRKNS_9NumParserE:
  111|    624|{
  112|    624|    const size_t SIZE = static_cast<size_t>(count) * (Descriptor::Size() + numparser.NumBytes());
  113|    624|    return CountIndexParser(count, SIZE, numparser, &InvokeCountOf<Descriptor>);
  114|    624|}
_ZN8opendnp316CountIndexParser13InvokeCountOfINS_11Group50Var4EEEvRKNS_12HeaderRecordEtRKNS_9NumParserERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  128|    281|{
  129|    281|    auto read = [&numparser](ser4cpp::rseq_t & buffer, uint32_t) -> Indexed<typename Descriptor::Target>
  130|    281|    {
  131|    281|        Indexed<typename Descriptor::Target> pair;
  132|    281|        pair.index = numparser.ReadNum(buffer);
  133|    281|        Descriptor::ReadTarget(buffer, pair.value);
  134|    281|        return pair;
  135|    281|    };
  136|       |
  137|    281|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, count, read);
  138|    281|    handler.OnHeader(PrefixHeader(record, count), collection);
  139|    281|}

_ZN8opendnp311CountParserC2EtmPFvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEE:
   30|  8.91k|    : count(count), required_size(required_size), handler(handler)
   31|  8.91k|{
   32|  8.91k|}
_ZNK8opendnp311CountParser7ProcessERKNS_12HeaderRecordERN7ser4cpp4RSeqImEEPNS_12IAPDUHandlerEPNS_6LoggerE:
   38|  8.91k|{
   39|  8.91k|    if (buffer.length() < required_size)
  ------------------
  |  Branch (39:9): [True: 87, False: 8.82k]
  ------------------
   40|     87|    {
   41|     87|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Not enough data for specified objects");
  ------------------
  |  |   48|     87|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 87, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 87]
  |  |  ------------------
  |  |   49|     87|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
   42|     87|        return ParseResult::NOT_ENOUGH_DATA_FOR_OBJECTS;
   43|     87|    }
   44|       |
   45|  8.82k|    if (pHandler)
  ------------------
  |  Branch (45:9): [True: 3.84k, False: 4.98k]
  ------------------
   46|  3.84k|    {
   47|  3.84k|        handler(record, count, buffer, *pHandler);
   48|  3.84k|    }
   49|  8.82k|    buffer.advance(required_size);
   50|  8.82k|    return ParseResult::OK;
   51|  8.91k|}
_ZN8opendnp311CountParser11ParseHeaderERN7ser4cpp4RSeqImEERKNS_9NumParserERKNS_14ParserSettingsERKNS_12HeaderRecordEPNS_6LoggerEPNS_12IAPDUHandlerE:
   59|  8.95k|{
   60|  8.95k|    uint16_t count;
   61|  8.95k|    auto result = numParser.ParseCount(buffer, count, pLogger);
   62|  8.95k|    if (result == ParseResult::OK)
  ------------------
  |  Branch (62:9): [True: 8.93k, False: 23]
  ------------------
   63|  8.93k|    {
   64|  8.93k|        FORMAT_LOGGER_BLOCK(pLogger, settings.LoggingLevel(), "%03u,%03u %s, %s [%u]", record.group, record.variation,
  ------------------
  |  |   62|  8.93k|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 5.08k, False: 3.84k]
  |  |  |  Branch (62:9): [True: 0, False: 8.93k]
  |  |  |  Branch (62:20): [True: 0, False: 5.08k]
  |  |  ------------------
  |  |   63|  8.93k|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
   65|  8.93k|                            GroupVariationSpec::to_human_string(record.enumeration),
   66|  8.93k|                            QualifierCodeSpec::to_human_string(record.GetQualifierCode()), count);
   67|       |
   68|  8.93k|        if (settings.ExpectsContents())
  ------------------
  |  Branch (68:13): [True: 8.93k, False: 0]
  ------------------
   69|  8.93k|        {
   70|  8.93k|            return ParseCountOfObjects(buffer, record, count, pLogger, pHandler);
   71|  8.93k|        }
   72|       |
   73|      0|        if (pHandler)
  ------------------
  |  Branch (73:13): [True: 0, False: 0]
  ------------------
   74|      0|        {
   75|      0|            pHandler->OnHeader(CountHeader(record, count));
   76|      0|        }
   77|       |
   78|      0|        return ParseResult::OK;
   79|  8.93k|    }
   80|     23|    else
   81|     23|    {
   82|     23|        return result;
   83|     23|    }
   84|  8.95k|}
_ZN8opendnp311CountParser19ParseCountOfObjectsERN7ser4cpp4RSeqImEERKNS_12HeaderRecordEtPNS_6LoggerEPNS_12IAPDUHandlerE:
   88|  8.93k|{
   89|  8.93k|    switch (record.enumeration)
   90|  8.93k|    {
   91|  2.39k|    case (GroupVariation::Group50Var1):
  ------------------
  |  Branch (91:5): [True: 2.39k, False: 6.53k]
  ------------------
   92|  2.39k|        return CountParser::From<Group50Var1>(count).Process(record, buffer, pHandler, pLogger);
   93|       |
   94|    578|    case (GroupVariation::Group50Var3):
  ------------------
  |  Branch (94:5): [True: 578, False: 8.35k]
  ------------------
   95|    578|        return CountParser::From<Group50Var3>(count).Process(record, buffer, pHandler, pLogger);
   96|       |
   97|  2.41k|    case (GroupVariation::Group51Var1):
  ------------------
  |  Branch (97:5): [True: 2.41k, False: 6.52k]
  ------------------
   98|  2.41k|        return CountParser::From<Group51Var1>(count).Process(record, buffer, pHandler, pLogger);
   99|       |
  100|  1.40k|    case (GroupVariation::Group51Var2):
  ------------------
  |  Branch (100:5): [True: 1.40k, False: 7.53k]
  ------------------
  101|  1.40k|        return CountParser::From<Group51Var2>(count).Process(record, buffer, pHandler, pLogger);
  102|       |
  103|  1.01k|    case (GroupVariation::Group52Var1):
  ------------------
  |  Branch (103:5): [True: 1.01k, False: 7.91k]
  ------------------
  104|  1.01k|        return CountParser::From<Group52Var1>(count).Process(record, buffer, pHandler, pLogger);
  105|       |
  106|  1.10k|    case (GroupVariation::Group52Var2):
  ------------------
  |  Branch (106:5): [True: 1.10k, False: 7.82k]
  ------------------
  107|  1.10k|        return CountParser::From<Group52Var2>(count).Process(record, buffer, pHandler, pLogger);
  108|       |
  109|     21|    default:
  ------------------
  |  Branch (109:5): [True: 21, False: 8.91k]
  ------------------
  110|     21|        FORMAT_LOGGER_BLOCK(pLogger, flags::WARN, "Unsupported qualifier/object - %s - %i / %i",
  ------------------
  |  |   62|     21|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 21, False: 0]
  |  |  |  Branch (62:20): [True: 0, False: 21]
  |  |  ------------------
  |  |   63|     21|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
  111|     21|                            QualifierCodeSpec::to_human_string(record.GetQualifierCode()), record.group,
  112|     21|                            record.variation);
  113|       |
  114|     21|        return ParseResult::INVALID_OBJECT_QUALIFIER;
  115|  8.93k|    }
  116|  8.93k|}

_ZN8opendnp311CountParser4FromINS_11Group50Var1EEES0_t:
   81|  2.39k|{
   82|  2.39k|    const auto size = static_cast<size_t>(count) * Descriptor::Size();
   83|  2.39k|    return CountParser(count, size, &InvokeCountOf<Descriptor>);
   84|  2.39k|}
_ZN8opendnp311CountParser13InvokeCountOfINS_11Group50Var1EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
   91|  1.06k|{
   92|  1.06k|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|  1.06k|        T value;
   94|  1.06k|        T::Read(buffer, value);
   95|  1.06k|        return value;
   96|  1.06k|    };
   97|       |
   98|  1.06k|    auto collection = CreateBufferedCollection<T>(buffer, count, read);
   99|  1.06k|    handler.OnHeader(CountHeader(record, count), collection);
  100|  1.06k|}
_ZZN8opendnp311CountParser13InvokeCountOfINS_11Group50Var1EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRS8_jE_clESD_j:
   92|  2.87k|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|  2.87k|        T value;
   94|  2.87k|        T::Read(buffer, value);
   95|  2.87k|        return value;
   96|  2.87k|    };
_ZN8opendnp311CountParser4FromINS_11Group50Var3EEES0_t:
   81|    578|{
   82|    578|    const auto size = static_cast<size_t>(count) * Descriptor::Size();
   83|    578|    return CountParser(count, size, &InvokeCountOf<Descriptor>);
   84|    578|}
_ZN8opendnp311CountParser13InvokeCountOfINS_11Group50Var3EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
   91|    272|{
   92|    272|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|    272|        T value;
   94|    272|        T::Read(buffer, value);
   95|    272|        return value;
   96|    272|    };
   97|       |
   98|    272|    auto collection = CreateBufferedCollection<T>(buffer, count, read);
   99|    272|    handler.OnHeader(CountHeader(record, count), collection);
  100|    272|}
_ZN8opendnp311CountParser4FromINS_11Group51Var1EEES0_t:
   81|  2.41k|{
   82|  2.41k|    const auto size = static_cast<size_t>(count) * Descriptor::Size();
   83|  2.41k|    return CountParser(count, size, &InvokeCountOf<Descriptor>);
   84|  2.41k|}
_ZN8opendnp311CountParser13InvokeCountOfINS_11Group51Var1EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
   91|  1.15k|{
   92|  1.15k|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|  1.15k|        T value;
   94|  1.15k|        T::Read(buffer, value);
   95|  1.15k|        return value;
   96|  1.15k|    };
   97|       |
   98|  1.15k|    auto collection = CreateBufferedCollection<T>(buffer, count, read);
   99|  1.15k|    handler.OnHeader(CountHeader(record, count), collection);
  100|  1.15k|}
_ZZN8opendnp311CountParser13InvokeCountOfINS_11Group51Var1EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRS8_jE_clESD_j:
   92|    901|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|    901|        T value;
   94|    901|        T::Read(buffer, value);
   95|    901|        return value;
   96|    901|    };
_ZN8opendnp311CountParser4FromINS_11Group51Var2EEES0_t:
   81|  1.40k|{
   82|  1.40k|    const auto size = static_cast<size_t>(count) * Descriptor::Size();
   83|  1.40k|    return CountParser(count, size, &InvokeCountOf<Descriptor>);
   84|  1.40k|}
_ZN8opendnp311CountParser13InvokeCountOfINS_11Group51Var2EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
   91|    595|{
   92|    595|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|    595|        T value;
   94|    595|        T::Read(buffer, value);
   95|    595|        return value;
   96|    595|    };
   97|       |
   98|    595|    auto collection = CreateBufferedCollection<T>(buffer, count, read);
   99|    595|    handler.OnHeader(CountHeader(record, count), collection);
  100|    595|}
_ZZN8opendnp311CountParser13InvokeCountOfINS_11Group51Var2EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRS8_jE_clESD_j:
   92|    479|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|    479|        T value;
   94|    479|        T::Read(buffer, value);
   95|    479|        return value;
   96|    479|    };
_ZN8opendnp311CountParser4FromINS_11Group52Var1EEES0_t:
   81|  1.01k|{
   82|  1.01k|    const auto size = static_cast<size_t>(count) * Descriptor::Size();
   83|  1.01k|    return CountParser(count, size, &InvokeCountOf<Descriptor>);
   84|  1.01k|}
_ZN8opendnp311CountParser13InvokeCountOfINS_11Group52Var1EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
   91|    321|{
   92|    321|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|    321|        T value;
   94|    321|        T::Read(buffer, value);
   95|    321|        return value;
   96|    321|    };
   97|       |
   98|    321|    auto collection = CreateBufferedCollection<T>(buffer, count, read);
   99|    321|    handler.OnHeader(CountHeader(record, count), collection);
  100|    321|}
_ZN8opendnp311CountParser4FromINS_11Group52Var2EEES0_t:
   81|  1.10k|{
   82|  1.10k|    const auto size = static_cast<size_t>(count) * Descriptor::Size();
   83|  1.10k|    return CountParser(count, size, &InvokeCountOf<Descriptor>);
   84|  1.10k|}
_ZN8opendnp311CountParser13InvokeCountOfINS_11Group52Var2EEEvRKNS_12HeaderRecordEtRKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
   91|    438|{
   92|    438|    auto read = [](ser4cpp::rseq_t& buffer, uint32_t) -> T {
   93|    438|        T value;
   94|    438|        T::Read(buffer, value);
   95|    438|        return value;
   96|    438|    };
   97|       |
   98|    438|    auto collection = CreateBufferedCollection<T>(buffer, count, read);
   99|    438|    handler.OnHeader(CountHeader(record, count), collection);
  100|    438|}

_ZN7ser4cpp11serializers8read_oneIN8opendnp37DNPTimeEEEbRNS_4RSeqImEERT_:
   39|  30.4k|    {
   40|  30.4k|        UInt48Type temp;
   41|  30.4k|        bool result = UInt48::read_from(input, temp);
   42|  30.4k|        out.value = temp.Get();
   43|  30.4k|        return result;
   44|  30.4k|    }

_ZN8opendnp312IAPDUHandlerC2Ev:
   25|  6.19k|IAPDUHandler::IAPDUHandler() : numTotalHeaders(0), numIgnoredHeaders(0) {}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_16AllObjectsHeaderE:
   40|  12.8k|{
   41|  12.8k|    Record(header, this->ProcessHeader(header));
   42|  12.8k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group50Var1EEE:
   55|  1.06k|{
   56|  1.06k|    Record(header, this->ProcessHeader(header, values));
   57|  1.06k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group50Var3EEE:
   60|    272|{
   61|    272|    Record(header, this->ProcessHeader(header, values));
   62|    272|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group51Var1EEE:
   65|  1.15k|{
   66|  1.15k|    Record(header, this->ProcessHeader(header, values));
   67|  1.15k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group51Var2EEE:
   70|    595|{
   71|    595|    Record(header, this->ProcessHeader(header, values));
   72|    595|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group52Var1EEE:
   75|    321|{
   76|    321|    Record(header, this->ProcessHeader(header, values));
   77|    321|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group52Var2EEE:
   80|    438|{
   81|    438|    Record(header, this->ProcessHeader(header, values));
   82|    438|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_8IINValueEEEEE:
   85|    270|{
   86|    270|    Record(header, this->ProcessHeader(header, values));
   87|    270|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_6BinaryEEEEE:
   90|  1.62k|{
   91|  1.62k|    Record(header, this->ProcessHeader(header, values));
   92|  1.62k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_15DoubleBitBinaryEEEEE:
   95|  1.15k|{
   96|  1.15k|    Record(header, this->ProcessHeader(header, values));
   97|  1.15k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_18BinaryOutputStatusEEEEE:
  100|  1.02k|{
  101|  1.02k|    Record(header, this->ProcessHeader(header, values));
  102|  1.02k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_7CounterEEEEE:
  105|  1.70k|{
  106|  1.70k|    Record(header, this->ProcessHeader(header, values));
  107|  1.70k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_13FrozenCounterEEEEE:
  110|  2.37k|{
  111|  2.37k|    Record(header, this->ProcessHeader(header, values));
  112|  2.37k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_6AnalogEEEEE:
  115|  3.11k|{
  116|  3.11k|    Record(header, this->ProcessHeader(header, values));
  117|  3.11k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_18AnalogOutputStatusEEEEE:
  120|  2.38k|{
  121|  2.38k|    Record(header, this->ProcessHeader(header, values));
  122|  2.38k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_11OctetStringEEEEE:
  125|    344|{
  126|    344|    Record(header, this->ProcessHeader(header, values));
  127|    344|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_15TimeAndIntervalEEEEE:
  130|    797|{
  131|    797|    Record(header, this->ProcessHeader(header, values));
  132|    797|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_6BinaryEEEEE:
  137|  2.34k|{
  138|  2.34k|    Record(header, this->ProcessHeader(header, values));
  139|  2.34k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_18BinaryOutputStatusEEEEE:
  142|  1.21k|{
  143|  1.21k|    Record(header, this->ProcessHeader(header, values));
  144|  1.21k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_15DoubleBitBinaryEEEEE:
  147|  2.18k|{
  148|  2.18k|    Record(header, this->ProcessHeader(header, values));
  149|  2.18k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_7CounterEEEEE:
  152|  1.85k|{
  153|  1.85k|    Record(header, this->ProcessHeader(header, values));
  154|  1.85k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_13FrozenCounterEEEEE:
  157|  2.01k|{
  158|  2.01k|    Record(header, this->ProcessHeader(header, values));
  159|  2.01k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_6AnalogEEEEE:
  162|  3.36k|{
  163|  3.36k|    Record(header, this->ProcessHeader(header, values));
  164|  3.36k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_18AnalogOutputStatusEEEEE:
  167|  3.55k|{
  168|  3.55k|    Record(header, this->ProcessHeader(header, values));
  169|  3.55k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_11OctetStringEEEEE:
  172|    550|{
  173|    550|    Record(header, this->ProcessHeader(header, values));
  174|    550|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_15TimeAndIntervalEEEEE:
  177|    281|{
  178|    281|    Record(header, this->ProcessHeader(header, values));
  179|    281|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_18BinaryCommandEventEEEEE:
  182|  1.53k|{
  183|  1.53k|    Record(header, this->ProcessHeader(header, values));
  184|  1.53k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_18AnalogCommandEventEEEEE:
  187|  3.78k|{
  188|  3.78k|    Record(header, this->ProcessHeader(header, values));
  189|  3.78k|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_23ControlRelayOutputBlockEEEEE:
  199|    261|{
  200|    261|    Record(header, this->ProcessHeader(header, values));
  201|    261|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_17AnalogOutputInt16EEEEE:
  204|    281|{
  205|    281|    Record(header, this->ProcessHeader(header, values));
  206|    281|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_17AnalogOutputInt32EEEEE:
  209|    137|{
  210|    137|    Record(header, this->ProcessHeader(header, values));
  211|    137|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_19AnalogOutputFloat32EEEEE:
  214|    267|{
  215|    267|    Record(header, this->ProcessHeader(header, values));
  216|    267|}
_ZN8opendnp312IAPDUHandler8OnHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_20AnalogOutputDouble64EEEEE:
  219|    389|{
  220|    389|    Record(header, this->ProcessHeader(header, values));
  221|    389|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_16AllObjectsHeaderE:
  224|  12.8k|{
  225|  12.8k|    return ProcessUnsupportedHeader();
  226|  12.8k|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group50Var3EEE:
  246|    272|{
  247|    272|    return ProcessUnsupportedHeader();
  248|    272|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group52Var1EEE:
  261|    321|{
  262|    321|    return ProcessUnsupportedHeader();
  263|    321|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group52Var2EEE:
  266|    438|{
  267|    438|    return ProcessUnsupportedHeader();
  268|    438|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_8IINValueEEEEE:
  273|    270|{
  274|    270|    return ProcessUnsupportedHeader();
  275|    270|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_15TimeAndIntervalEEEEE:
  376|    281|{
  377|    281|    return ProcessUnsupportedHeader();
  378|    281|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_23ControlRelayOutputBlockEEEEE:
  401|    261|{
  402|    261|    return ProcessUnsupportedHeader();
  403|    261|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_17AnalogOutputInt16EEEEE:
  407|    281|{
  408|    281|    return ProcessUnsupportedHeader();
  409|    281|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_17AnalogOutputInt32EEEEE:
  413|    137|{
  414|    137|    return ProcessUnsupportedHeader();
  415|    137|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_19AnalogOutputFloat32EEEEE:
  419|    267|{
  420|    267|    return ProcessUnsupportedHeader();
  421|    267|}
_ZN8opendnp312IAPDUHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_20AnalogOutputDouble64EEEEE:
  425|    389|{
  426|    389|    return ProcessUnsupportedHeader();
  427|    389|}

_ZN8opendnp312IAPDUHandler14OnHeaderResultERKNS_12HeaderRecordERKNS_8IINFieldE:
  168|  55.4k|    virtual void OnHeaderResult(const HeaderRecord& record, const IINField& result) {}
_ZN8opendnp312IAPDUHandler6RecordERKNS_12HeaderRecordERKNS_8IINFieldE:
  172|  55.4k|    {
  173|  55.4k|        errors |= result;
  174|  55.4k|        ++numTotalHeaders;
  175|  55.4k|        this->OnHeaderResult(record, result);
  176|  55.4k|    }
_ZN8opendnp312IAPDUHandler24ProcessUnsupportedHeaderEv:
  179|  15.7k|    {
  180|  15.7k|        ++numIgnoredHeaders;
  181|  15.7k|        return IINField(IINBit::FUNC_NOT_SUPPORTED);
  182|  15.7k|    }

_ZN8opendnp39NumParserC2EPFtRN7ser4cpp4RSeqImEEEh:
   31|  92.7k|NumParser::NumParser(ReadFun pReadFun, uint8_t size) : pReadFun(pReadFun), size(size) {}
_ZNK8opendnp39NumParser8NumBytesEv:
   34|  50.4k|{
   35|  50.4k|    return size;
   36|  50.4k|}
_ZNK8opendnp39NumParser10ParseCountERN7ser4cpp4RSeqImEERtPNS_6LoggerE:
   39|  59.4k|{
   40|  59.4k|    if (this->Read(count, buffer))
  ------------------
  |  Branch (40:9): [True: 59.4k, False: 36]
  ------------------
   41|  59.4k|    {
   42|  59.4k|        if (count == 0)
  ------------------
  |  Branch (42:13): [True: 3, False: 59.4k]
  ------------------
   43|      3|        {
   44|      3|            SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "count of 0");
  ------------------
  |  |   48|      3|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 3, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 3]
  |  |  ------------------
  |  |   49|      3|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
   45|      3|            return ParseResult::COUNT_OF_ZERO;
   46|      3|        }
   47|       |
   48|  59.4k|        return ParseResult::OK;
   49|  59.4k|    }
   50|     36|    else
   51|     36|    {
   52|     36|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Not enough data for count");
  ------------------
  |  |   48|     36|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 36, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 36]
  |  |  ------------------
  |  |   49|     36|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
   53|     36|        return ParseResult::NOT_ENOUGH_DATA_FOR_RANGE;
   54|     36|    }
   55|  59.4k|}
_ZNK8opendnp39NumParser10ParseRangeERN7ser4cpp4RSeqImEERNS_5RangeEPNS_6LoggerE:
   58|  33.2k|{
   59|  33.2k|    if (buffer.length() < (2 * static_cast<size_t>(size)))
  ------------------
  |  Branch (59:9): [True: 50, False: 33.1k]
  ------------------
   60|     50|    {
   61|     50|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Not enough data for start / stop");
  ------------------
  |  |   48|     50|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 50, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 50]
  |  |  ------------------
  |  |   49|     50|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
   62|     50|        return ParseResult::NOT_ENOUGH_DATA_FOR_RANGE;
   63|     50|    }
   64|       |
   65|  33.1k|    range.start = this->ReadNum(buffer);
   66|  33.1k|    range.stop = this->ReadNum(buffer);
   67|       |
   68|  33.1k|    if (range.IsValid())
  ------------------
  |  Branch (68:9): [True: 33.1k, False: 35]
  ------------------
   69|  33.1k|    {
   70|  33.1k|        return ParseResult::OK;
   71|  33.1k|    }
   72|       |
   73|     35|    FORMAT_LOGGER_BLOCK(pLogger, flags::WARN, "start (%u) > stop (%u)", range.start, range.stop);
  ------------------
  |  |   62|     35|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 35, False: 0]
  |  |  |  Branch (62:20): [True: 0, False: 35]
  |  |  ------------------
  |  |   63|     35|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
   74|     35|    return ParseResult::BAD_START_STOP;
   75|  33.1k|}
_ZNK8opendnp39NumParser7ReadNumERN7ser4cpp4RSeqImEE:
   78|   138k|{
   79|   138k|    return pReadFun(buffer);
   80|   138k|}
_ZNK8opendnp39NumParser4ReadERtRN7ser4cpp4RSeqImEE:
   83|  59.4k|{
   84|  59.4k|    if (buffer.length() < size)
  ------------------
  |  Branch (84:9): [True: 36, False: 59.4k]
  ------------------
   85|     36|    {
   86|     36|        return false;
   87|     36|    }
   88|       |
   89|  59.4k|    num = pReadFun(buffer);
   90|  59.4k|    return true;
   91|  59.4k|}
_ZN8opendnp39NumParser11ReadOneByteERN7ser4cpp4RSeqImEE:
   94|   182k|{
   95|   182k|    uint8_t result = 0;
   96|   182k|    ser4cpp::UInt8::read_from(buffer, result);
   97|   182k|    return result;
   98|   182k|}
_ZN8opendnp39NumParser12ReadTwoBytesERN7ser4cpp4RSeqImEE:
  101|  15.8k|{
  102|  15.8k|    uint16_t result = 0;
  103|  15.8k|    ser4cpp::UInt16::read_from(buffer, result);
  104|  15.8k|    return result;
  105|  15.8k|}
_ZN8opendnp39NumParser7OneByteEv:
  108|  88.2k|{
  109|  88.2k|    return NumParser(&ReadOneByte, 1);
  110|  88.2k|}
_ZN8opendnp39NumParser7TwoByteEv:
  113|  4.44k|{
  114|  4.44k|    return NumParser(&ReadTwoBytes, 2);
  115|  4.44k|}

_ZN8opendnp312ObjectHeaderC2Ev:
   32|   120k|ObjectHeader::ObjectHeader() : group(0), variation(0), qualifier(0) {}
_ZN8opendnp318ObjectHeaderParser17ParseObjectHeaderERNS_12ObjectHeaderERN7ser4cpp4RSeqImEEPNS_6LoggerE:
   35|   120k|{
   36|   120k|    if (buffer.length() < 3)
  ------------------
  |  Branch (36:9): [True: 170, False: 120k]
  ------------------
   37|    170|    {
   38|    170|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Not enough data for header");
  ------------------
  |  |   48|    170|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 170, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 170]
  |  |  ------------------
  |  |   49|    170|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
   39|    170|        return ParseResult::NOT_ENOUGH_DATA_FOR_HEADER;
   40|    170|    }
   41|       |
   42|   120k|    ser4cpp::UInt8::read_from(buffer, header.group);
   43|   120k|    ser4cpp::UInt8::read_from(buffer, header.variation);
   44|   120k|    ser4cpp::UInt8::read_from(buffer, header.qualifier);
   45|   120k|    return ParseResult::OK;
   46|   120k|}

_ZN8opendnp314ParserSettings7DefaultENS_8LogLevelE:
   37|  6.19k|    {
   38|  6.19k|        return ParserSettings(true, logLevel);
   39|  6.19k|    }
_ZN8opendnp314ParserSettingsC2EbNS_8LogLevelE:
   58|  6.19k|        : expectContents(expectContents_), logLevel(logLevel_)
   59|  6.19k|    {
   60|  6.19k|    }
_ZNK8opendnp314ParserSettings15ExpectsContentsEv:
   47|  92.5k|    {
   48|  92.5k|        return expectContents;
   49|  92.5k|    }
_ZNK8opendnp314ParserSettings12LoggingLevelEv:
   52|  63.5k|    {
   53|  63.5k|        return logLevel;
   54|  63.5k|    }

_ZN8opendnp311RangeParserC2ERKNS_5RangeEmPFvRKNS_12HeaderRecordES3_RKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEE:
   37|  32.2k|    : range(range), requiredSize(requiredSize), handler(handler)
   38|  32.2k|{
   39|  32.2k|}
_ZN8opendnp311RangeParser11ParseHeaderERN7ser4cpp4RSeqImEERKNS_9NumParserERKNS_14ParserSettingsERKNS_12HeaderRecordEPNS_6LoggerEPNS_12IAPDUHandlerE:
   47|  33.2k|{
   48|  33.2k|    Range range;
   49|  33.2k|    auto res = numparser.ParseRange(buffer, range, pLogger);
   50|  33.2k|    if (res != ParseResult::OK)
  ------------------
  |  Branch (50:9): [True: 85, False: 33.1k]
  ------------------
   51|     85|    {
   52|     85|        return res;
   53|     85|    }
   54|       |
   55|  33.1k|    FORMAT_LOGGER_BLOCK(pLogger, settings.LoggingLevel(), "%03u,%03u %s, %s [%u, %u]", record.group, record.variation,
  ------------------
  |  |   62|  33.1k|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 18.3k, False: 14.7k]
  |  |  |  Branch (62:9): [True: 0, False: 33.1k]
  |  |  |  Branch (62:20): [True: 0, False: 18.3k]
  |  |  ------------------
  |  |   63|  33.1k|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
   56|  33.1k|                        GroupVariationSpec::to_human_string(record.enumeration),
   57|  33.1k|                        QualifierCodeSpec::to_human_string(record.GetQualifierCode()), range.start, range.stop);
   58|       |
   59|  33.1k|    if (settings.ExpectsContents())
  ------------------
  |  Branch (59:9): [True: 33.1k, False: 0]
  ------------------
   60|  33.1k|    {
   61|  33.1k|        return ParseRangeOfObjects(buffer, record, range, pLogger, pHandler);
   62|  33.1k|    }
   63|       |
   64|      0|    if (pHandler)
  ------------------
  |  Branch (64:9): [True: 0, False: 0]
  ------------------
   65|      0|    {
   66|      0|        pHandler->OnHeader(RangeHeader(record, range));
   67|      0|    }
   68|      0|    return ParseResult::OK;
   69|  33.1k|}
_ZNK8opendnp311RangeParser7ProcessERKNS_12HeaderRecordERN7ser4cpp4RSeqImEEPNS_12IAPDUHandlerEPNS_6LoggerE:
   75|  32.2k|{
   76|  32.2k|    if (buffer.length() < requiredSize)
  ------------------
  |  Branch (76:9): [True: 574, False: 31.7k]
  ------------------
   77|    574|    {
   78|    574|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Not enough data for specified objects");
  ------------------
  |  |   48|    574|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 574, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 574]
  |  |  ------------------
  |  |   49|    574|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
   79|    574|        return ParseResult::NOT_ENOUGH_DATA_FOR_OBJECTS;
   80|    574|    }
   81|       |
   82|  31.7k|    if (pHandler)
  ------------------
  |  Branch (82:9): [True: 14.4k, False: 17.2k]
  ------------------
   83|  14.4k|    {
   84|  14.4k|        handler(record, range, buffer, *pHandler);
   85|  14.4k|    }
   86|  31.7k|    buffer.advance(requiredSize);
   87|  31.7k|    return ParseResult::OK;
   88|  32.2k|}
_ZN8opendnp311RangeParser19ParseRangeOfObjectsERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_5RangeEPNS_6LoggerEPNS_12IAPDUHandlerE:
   96|  33.1k|{
   97|  33.1k|    switch (record.enumeration)
   98|  33.1k|    {
   99|  2.19k|    case (GroupVariation::Group1Var1):
  ------------------
  |  Branch (99:5): [True: 2.19k, False: 30.9k]
  ------------------
  100|  2.19k|        return RangeParser::FromBitfieldType<Binary>(range).Process(record, buffer, pHandler, pLogger);
  101|       |
  102|  1.29k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group1Var2);
  ------------------
  |  |   91|  1.29k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.29k, False: 31.8k]
  |  |  ------------------
  |  |   92|  1.29k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  103|       |
  104|  1.25k|    case (GroupVariation::Group3Var1):
  ------------------
  |  Branch (104:5): [True: 1.25k, False: 31.9k]
  ------------------
  105|  1.25k|        return RangeParser::FromDoubleBitfieldType<DoubleBitBinary>(range).Process(record, buffer, pHandler, pLogger);
  106|  1.18k|    case (GroupVariation::Group10Var1):
  ------------------
  |  Branch (106:5): [True: 1.18k, False: 31.9k]
  ------------------
  107|  1.18k|        return RangeParser::FromBitfieldType<BinaryOutputStatus>(range).Process(record, buffer, pHandler, pLogger);
  108|       |
  109|  1.59k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group3Var2);
  ------------------
  |  |   91|  1.59k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.59k, False: 31.5k]
  |  |  ------------------
  |  |   92|  1.59k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  110|  1.08k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group10Var2);
  ------------------
  |  |   91|  1.08k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.08k, False: 32.0k]
  |  |  ------------------
  |  |   92|  1.08k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  111|       |
  112|    732|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group20Var1);
  ------------------
  |  |   91|    732|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 732, False: 32.4k]
  |  |  ------------------
  |  |   92|    732|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  113|  1.13k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group20Var2);
  ------------------
  |  |   91|  1.13k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.13k, False: 32.0k]
  |  |  ------------------
  |  |   92|  1.13k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  114|    651|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group20Var5);
  ------------------
  |  |   91|    651|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 651, False: 32.5k]
  |  |  ------------------
  |  |   92|    651|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  115|  1.33k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group20Var6);
  ------------------
  |  |   91|  1.33k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.33k, False: 31.8k]
  |  |  ------------------
  |  |   92|  1.33k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  116|       |
  117|    718|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group21Var1);
  ------------------
  |  |   91|    718|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 718, False: 32.4k]
  |  |  ------------------
  |  |   92|    718|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  118|    701|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group21Var2);
  ------------------
  |  |   91|    701|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 701, False: 32.4k]
  |  |  ------------------
  |  |   92|    701|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  119|  1.32k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group21Var5);
  ------------------
  |  |   91|  1.32k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.32k, False: 31.8k]
  |  |  ------------------
  |  |   92|  1.32k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  120|    783|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group21Var6);
  ------------------
  |  |   91|    783|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 783, False: 32.3k]
  |  |  ------------------
  |  |   92|    783|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  121|    934|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group21Var9);
  ------------------
  |  |   91|    934|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 934, False: 32.2k]
  |  |  ------------------
  |  |   92|    934|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  122|    766|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group21Var10);
  ------------------
  |  |   91|    766|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 766, False: 32.3k]
  |  |  ------------------
  |  |   92|    766|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  123|       |
  124|  1.16k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group30Var1);
  ------------------
  |  |   91|  1.16k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.16k, False: 31.9k]
  |  |  ------------------
  |  |   92|  1.16k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  125|  1.00k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group30Var2);
  ------------------
  |  |   91|  1.00k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.00k, False: 32.1k]
  |  |  ------------------
  |  |   92|  1.00k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  126|  1.02k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group30Var3);
  ------------------
  |  |   91|  1.02k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.02k, False: 32.1k]
  |  |  ------------------
  |  |   92|  1.02k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  127|  2.03k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group30Var4);
  ------------------
  |  |   91|  2.03k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 2.03k, False: 31.1k]
  |  |  ------------------
  |  |   92|  2.03k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  128|    966|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group30Var5);
  ------------------
  |  |   91|    966|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 966, False: 32.1k]
  |  |  ------------------
  |  |   92|    966|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  129|    765|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group30Var6);
  ------------------
  |  |   91|    765|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 765, False: 32.3k]
  |  |  ------------------
  |  |   92|    765|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  130|       |
  131|  1.21k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group40Var1);
  ------------------
  |  |   91|  1.21k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.21k, False: 31.9k]
  |  |  ------------------
  |  |   92|  1.21k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  132|  1.13k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group40Var2);
  ------------------
  |  |   91|  1.13k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.13k, False: 32.0k]
  |  |  ------------------
  |  |   92|  1.13k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  133|  1.67k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group40Var3);
  ------------------
  |  |   91|  1.67k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.67k, False: 31.4k]
  |  |  ------------------
  |  |   92|  1.67k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  134|  1.24k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group40Var4);
  ------------------
  |  |   91|  1.24k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.24k, False: 31.9k]
  |  |  ------------------
  |  |   92|  1.24k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  135|       |
  136|  1.67k|        MACRO_PARSE_OBJECTS_WITH_RANGE(Group50Var4);
  ------------------
  |  |   91|  1.67k|    case (GroupVariation::descriptor):                                                                                 \
  |  |  ------------------
  |  |  |  Branch (91:5): [True: 1.67k, False: 31.4k]
  |  |  ------------------
  |  |   92|  1.67k|        return RangeParser::FromFixedSize<descriptor>(range).Process(record, buffer, pHandler, pLogger);
  ------------------
  137|       |
  138|    681|    case (GroupVariation::Group80Var1):
  ------------------
  |  Branch (138:5): [True: 681, False: 32.4k]
  ------------------
  139|    681|        return RangeParser::FromBitfieldType<IINValue>(range).Process(record, buffer, pHandler, pLogger);
  140|       |
  141|    828|    case (GroupVariation::Group110Var0):
  ------------------
  |  Branch (141:5): [True: 828, False: 32.3k]
  ------------------
  142|    828|        return ParseRangeOfOctetData(buffer, record, range, pLogger, pHandler);
  143|       |
  144|     59|    default:
  ------------------
  |  Branch (144:5): [True: 59, False: 33.1k]
  ------------------
  145|     59|        FORMAT_LOGGER_BLOCK(pLogger, flags::WARN, "Unsupported qualifier/object - %s - %i / %i",
  ------------------
  |  |   62|     59|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (62:9): [True: 59, False: 0]
  |  |  |  Branch (62:20): [True: 0, False: 59]
  |  |  ------------------
  |  |   63|     59|    {                                                                                                                  \
  |  |   64|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   65|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   66|      0|        pLogger->log(levels, LOCATION, message_buffer_some_name_no_conflict);                                          \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   67|      0|    }
  ------------------
  146|     59|                            QualifierCodeSpec::to_human_string(record.GetQualifierCode()), record.group,
  147|     59|                            record.variation);
  148|       |
  149|     59|        return ParseResult::INVALID_OBJECT_QUALIFIER;
  150|  33.1k|    }
  151|  33.1k|}
_ZN8opendnp311RangeParser21ParseRangeOfOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_5RangeEPNS_6LoggerEPNS_12IAPDUHandlerE:
  155|    828|{
  156|    828|    if (record.variation > 0)
  ------------------
  |  Branch (156:9): [True: 827, False: 1]
  ------------------
  157|    827|    {
  158|    827|        const auto COUNT = range.Count();
  159|    827|        auto size = record.variation * COUNT;
  160|    827|        if (buffer.length() < size)
  ------------------
  |  Branch (160:13): [True: 32, False: 795]
  ------------------
  161|     32|        {
  162|     32|            SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Not enough data for specified octet objects");
  ------------------
  |  |   48|     32|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 32, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 32]
  |  |  ------------------
  |  |   49|     32|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
  163|     32|            return ParseResult::NOT_ENOUGH_DATA_FOR_OBJECTS;
  164|     32|        }
  165|       |
  166|    795|        if (pHandler)
  ------------------
  |  Branch (166:13): [True: 344, False: 451]
  ------------------
  167|    344|        {
  168|    344|            auto read = [range, record](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<OctetString> {
  169|    344|                const auto octetData = buffer.take(record.variation);
  170|    344|                OctetString octets(Buffer(octetData, octetData.length()));
  171|    344|                buffer.advance(record.variation);
  172|    344|                return WithIndex(octets, range.start + pos);
  173|    344|            };
  174|       |
  175|    344|            auto collection = CreateBufferedCollection<Indexed<OctetString>>(buffer, COUNT, read);
  176|       |
  177|    344|            pHandler->OnHeader(RangeHeader(record, range), collection);
  178|    344|        }
  179|       |
  180|    795|        buffer.advance(size);
  181|    795|        return ParseResult::OK;
  182|    827|    }
  183|      1|    else
  184|      1|    {
  185|      1|        SIMPLE_LOGGER_BLOCK(pLogger, flags::WARN, "Octet string variation 0 may only be used in requests");
  ------------------
  |  |   48|      1|    if (pLogger && pLogger->is_enabled(levels))                                                                        \
  |  |  ------------------
  |  |  |  Branch (48:9): [True: 1, False: 0]
  |  |  |  Branch (48:20): [True: 0, False: 1]
  |  |  ------------------
  |  |   49|      1|    {                                                                                                                  \
  |  |   50|      0|        pLogger->log(levels, LOCATION, message);                                                                       \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   51|      0|    }
  ------------------
  186|      1|        return ParseResult::INVALID_OBJECT;
  187|      1|    }
  188|    828|}
RangeParser.cpp:_ZZN8opendnp311RangeParser21ParseRangeOfOctetDataERN7ser4cpp4RSeqImEERKNS_12HeaderRecordERKNS_5RangeEPNS_6LoggerEPNS_12IAPDUHandlerEENK3$_0clES4_j:
  168|  2.44k|            auto read = [range, record](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<OctetString> {
  169|  2.44k|                const auto octetData = buffer.take(record.variation);
  170|  2.44k|                OctetString octets(Buffer(octetData, octetData.length()));
  171|  2.44k|                buffer.advance(record.variation);
  172|  2.44k|                return WithIndex(octets, range.start + pos);
  173|  2.44k|            };

_ZN8opendnp311RangeParser16FromBitfieldTypeINS_6BinaryEEES0_RKNS_5RangeE:
  166|  2.19k|{
  167|  2.19k|    const auto SIZE = NumBytesInBits(range.Count());
  168|  2.19k|    return RangeParser(range, SIZE, &InvokeRangeBitfieldType<Type>);
  169|  2.19k|}
_ZN8opendnp311RangeParser23InvokeRangeBitfieldTypeINS_6BinaryEEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  176|  1.04k|{
  177|  1.04k|    const auto COUNT = range.Count();
  178|       |
  179|  1.04k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<Type> {
  180|  1.04k|        Type value(GetBit(buffer, pos));
  181|  1.04k|        return WithIndex(value, range.start + pos);
  182|  1.04k|    };
  183|       |
  184|  1.04k|    auto collection = CreateBufferedCollection<Indexed<Type>>(buffer, COUNT, read);
  185|       |
  186|  1.04k|    handler.OnHeader(RangeHeader(record, range), collection);
  187|  1.04k|}
_ZZN8opendnp311RangeParser23InvokeRangeBitfieldTypeINS_6BinaryEEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  179|  74.1k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<Type> {
  180|  74.1k|        Type value(GetBit(buffer, pos));
  181|  74.1k|        return WithIndex(value, range.start + pos);
  182|  74.1k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_10Group1Var2EEES0_RKNS_5RangeE:
  116|  1.29k|{
  117|  1.29k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.29k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.29k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_10Group1Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    583|{
  133|    583|    const auto COUNT = range.Count();
  134|       |
  135|    583|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    583|        typename Descriptor::Target target;
  137|    583|        Descriptor::ReadTarget(buffer, target);
  138|    583|        return WithIndex(target, range.start + pos);
  139|    583|    };
  140|       |
  141|    583|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    583|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    583|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_10Group1Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  4.28k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  4.28k|        typename Descriptor::Target target;
  137|  4.28k|        Descriptor::ReadTarget(buffer, target);
  138|  4.28k|        return WithIndex(target, range.start + pos);
  139|  4.28k|    };
_ZN8opendnp311RangeParser22FromDoubleBitfieldTypeINS_15DoubleBitBinaryEEES0_RKNS_5RangeE:
  190|  1.25k|{
  191|  1.25k|    const auto size = NumBytesInDoubleBits(range.Count());
  192|  1.25k|    return RangeParser(range, size, &InvokeRangeDoubleBitfieldType<Type>);
  193|  1.25k|}
_ZN8opendnp311RangeParser29InvokeRangeDoubleBitfieldTypeINS_15DoubleBitBinaryEEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  200|    463|{
  201|    463|    const auto COUNT = range.Count();
  202|       |
  203|    463|    auto read = [range](ser4cpp::rseq_t& buffer, size_t pos) -> Indexed<Type> {
  204|    463|        Type value(GetDoubleBit(buffer, pos));
  205|    463|        return WithIndex(value, static_cast<uint16_t>(range.start + pos));
  206|    463|    };
  207|       |
  208|    463|    auto collection = CreateBufferedCollection<Indexed<Type>>(buffer, COUNT, read);
  209|       |
  210|    463|    handler.OnHeader(RangeHeader(record, range), collection);
  211|    463|}
_ZZN8opendnp311RangeParser29InvokeRangeDoubleBitfieldTypeINS_15DoubleBitBinaryEEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_mE_clESG_m:
  203|  27.0k|    auto read = [range](ser4cpp::rseq_t& buffer, size_t pos) -> Indexed<Type> {
  204|  27.0k|        Type value(GetDoubleBit(buffer, pos));
  205|  27.0k|        return WithIndex(value, static_cast<uint16_t>(range.start + pos));
  206|  27.0k|    };
_ZN8opendnp311RangeParser16FromBitfieldTypeINS_18BinaryOutputStatusEEES0_RKNS_5RangeE:
  166|  1.18k|{
  167|  1.18k|    const auto SIZE = NumBytesInBits(range.Count());
  168|  1.18k|    return RangeParser(range, SIZE, &InvokeRangeBitfieldType<Type>);
  169|  1.18k|}
_ZN8opendnp311RangeParser23InvokeRangeBitfieldTypeINS_18BinaryOutputStatusEEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  176|    535|{
  177|    535|    const auto COUNT = range.Count();
  178|       |
  179|    535|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<Type> {
  180|    535|        Type value(GetBit(buffer, pos));
  181|    535|        return WithIndex(value, range.start + pos);
  182|    535|    };
  183|       |
  184|    535|    auto collection = CreateBufferedCollection<Indexed<Type>>(buffer, COUNT, read);
  185|       |
  186|    535|    handler.OnHeader(RangeHeader(record, range), collection);
  187|    535|}
_ZZN8opendnp311RangeParser23InvokeRangeBitfieldTypeINS_18BinaryOutputStatusEEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  179|  12.3k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<Type> {
  180|  12.3k|        Type value(GetBit(buffer, pos));
  181|  12.3k|        return WithIndex(value, range.start + pos);
  182|  12.3k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_10Group3Var2EEES0_RKNS_5RangeE:
  116|  1.59k|{
  117|  1.59k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.59k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.59k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_10Group3Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    689|{
  133|    689|    const auto COUNT = range.Count();
  134|       |
  135|    689|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    689|        typename Descriptor::Target target;
  137|    689|        Descriptor::ReadTarget(buffer, target);
  138|    689|        return WithIndex(target, range.start + pos);
  139|    689|    };
  140|       |
  141|    689|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    689|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    689|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_10Group3Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  5.88k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  5.88k|        typename Descriptor::Target target;
  137|  5.88k|        Descriptor::ReadTarget(buffer, target);
  138|  5.88k|        return WithIndex(target, range.start + pos);
  139|  5.88k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group10Var2EEES0_RKNS_5RangeE:
  116|  1.08k|{
  117|  1.08k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.08k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.08k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group10Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    494|{
  133|    494|    const auto COUNT = range.Count();
  134|       |
  135|    494|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    494|        typename Descriptor::Target target;
  137|    494|        Descriptor::ReadTarget(buffer, target);
  138|    494|        return WithIndex(target, range.start + pos);
  139|    494|    };
  140|       |
  141|    494|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    494|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    494|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group10Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  5.19k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  5.19k|        typename Descriptor::Target target;
  137|  5.19k|        Descriptor::ReadTarget(buffer, target);
  138|  5.19k|        return WithIndex(target, range.start + pos);
  139|  5.19k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group20Var1EEES0_RKNS_5RangeE:
  116|    732|{
  117|    732|    const auto size = range.Count() * Descriptor::Size();
  118|    732|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    732|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group20Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    341|{
  133|    341|    const auto COUNT = range.Count();
  134|       |
  135|    341|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    341|        typename Descriptor::Target target;
  137|    341|        Descriptor::ReadTarget(buffer, target);
  138|    341|        return WithIndex(target, range.start + pos);
  139|    341|    };
  140|       |
  141|    341|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    341|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    341|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group20Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.06k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.06k|        typename Descriptor::Target target;
  137|  1.06k|        Descriptor::ReadTarget(buffer, target);
  138|  1.06k|        return WithIndex(target, range.start + pos);
  139|  1.06k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group20Var2EEES0_RKNS_5RangeE:
  116|  1.13k|{
  117|  1.13k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.13k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.13k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group20Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    479|{
  133|    479|    const auto COUNT = range.Count();
  134|       |
  135|    479|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    479|        typename Descriptor::Target target;
  137|    479|        Descriptor::ReadTarget(buffer, target);
  138|    479|        return WithIndex(target, range.start + pos);
  139|    479|    };
  140|       |
  141|    479|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    479|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    479|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group20Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.40k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.40k|        typename Descriptor::Target target;
  137|  1.40k|        Descriptor::ReadTarget(buffer, target);
  138|  1.40k|        return WithIndex(target, range.start + pos);
  139|  1.40k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group20Var5EEES0_RKNS_5RangeE:
  116|    651|{
  117|    651|    const auto size = range.Count() * Descriptor::Size();
  118|    651|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    651|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group20Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    268|{
  133|    268|    const auto COUNT = range.Count();
  134|       |
  135|    268|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    268|        typename Descriptor::Target target;
  137|    268|        Descriptor::ReadTarget(buffer, target);
  138|    268|        return WithIndex(target, range.start + pos);
  139|    268|    };
  140|       |
  141|    268|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    268|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    268|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group20Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.26k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.26k|        typename Descriptor::Target target;
  137|  1.26k|        Descriptor::ReadTarget(buffer, target);
  138|  1.26k|        return WithIndex(target, range.start + pos);
  139|  1.26k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group20Var6EEES0_RKNS_5RangeE:
  116|  1.33k|{
  117|  1.33k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.33k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.33k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group20Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    612|{
  133|    612|    const auto COUNT = range.Count();
  134|       |
  135|    612|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    612|        typename Descriptor::Target target;
  137|    612|        Descriptor::ReadTarget(buffer, target);
  138|    612|        return WithIndex(target, range.start + pos);
  139|    612|    };
  140|       |
  141|    612|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    612|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    612|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group20Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  2.59k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  2.59k|        typename Descriptor::Target target;
  137|  2.59k|        Descriptor::ReadTarget(buffer, target);
  138|  2.59k|        return WithIndex(target, range.start + pos);
  139|  2.59k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group21Var1EEES0_RKNS_5RangeE:
  116|    718|{
  117|    718|    const auto size = range.Count() * Descriptor::Size();
  118|    718|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    718|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    318|{
  133|    318|    const auto COUNT = range.Count();
  134|       |
  135|    318|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    318|        typename Descriptor::Target target;
  137|    318|        Descriptor::ReadTarget(buffer, target);
  138|    318|        return WithIndex(target, range.start + pos);
  139|    318|    };
  140|       |
  141|    318|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    318|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    318|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.64k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.64k|        typename Descriptor::Target target;
  137|  1.64k|        Descriptor::ReadTarget(buffer, target);
  138|  1.64k|        return WithIndex(target, range.start + pos);
  139|  1.64k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group21Var2EEES0_RKNS_5RangeE:
  116|    701|{
  117|    701|    const auto size = range.Count() * Descriptor::Size();
  118|    701|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    701|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    304|{
  133|    304|    const auto COUNT = range.Count();
  134|       |
  135|    304|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    304|        typename Descriptor::Target target;
  137|    304|        Descriptor::ReadTarget(buffer, target);
  138|    304|        return WithIndex(target, range.start + pos);
  139|    304|    };
  140|       |
  141|    304|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    304|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    304|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.03k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.03k|        typename Descriptor::Target target;
  137|  1.03k|        Descriptor::ReadTarget(buffer, target);
  138|  1.03k|        return WithIndex(target, range.start + pos);
  139|  1.03k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group21Var5EEES0_RKNS_5RangeE:
  116|  1.32k|{
  117|  1.32k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.32k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.32k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    620|{
  133|    620|    const auto COUNT = range.Count();
  134|       |
  135|    620|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    620|        typename Descriptor::Target target;
  137|    620|        Descriptor::ReadTarget(buffer, target);
  138|    620|        return WithIndex(target, range.start + pos);
  139|    620|    };
  140|       |
  141|    620|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    620|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    620|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.46k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.46k|        typename Descriptor::Target target;
  137|  1.46k|        Descriptor::ReadTarget(buffer, target);
  138|  1.46k|        return WithIndex(target, range.start + pos);
  139|  1.46k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group21Var6EEES0_RKNS_5RangeE:
  116|    783|{
  117|    783|    const auto size = range.Count() * Descriptor::Size();
  118|    783|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    783|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    360|{
  133|    360|    const auto COUNT = range.Count();
  134|       |
  135|    360|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    360|        typename Descriptor::Target target;
  137|    360|        Descriptor::ReadTarget(buffer, target);
  138|    360|        return WithIndex(target, range.start + pos);
  139|    360|    };
  140|       |
  141|    360|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    360|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    360|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.11k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.11k|        typename Descriptor::Target target;
  137|  1.11k|        Descriptor::ReadTarget(buffer, target);
  138|  1.11k|        return WithIndex(target, range.start + pos);
  139|  1.11k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group21Var9EEES0_RKNS_5RangeE:
  116|    934|{
  117|    934|    const auto size = range.Count() * Descriptor::Size();
  118|    934|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    934|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var9EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    417|{
  133|    417|    const auto COUNT = range.Count();
  134|       |
  135|    417|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    417|        typename Descriptor::Target target;
  137|    417|        Descriptor::ReadTarget(buffer, target);
  138|    417|        return WithIndex(target, range.start + pos);
  139|    417|    };
  140|       |
  141|    417|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    417|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    417|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group21Var9EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  2.36k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  2.36k|        typename Descriptor::Target target;
  137|  2.36k|        Descriptor::ReadTarget(buffer, target);
  138|  2.36k|        return WithIndex(target, range.start + pos);
  139|  2.36k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_12Group21Var10EEES0_RKNS_5RangeE:
  116|    766|{
  117|    766|    const auto size = range.Count() * Descriptor::Size();
  118|    766|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    766|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_12Group21Var10EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    360|{
  133|    360|    const auto COUNT = range.Count();
  134|       |
  135|    360|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    360|        typename Descriptor::Target target;
  137|    360|        Descriptor::ReadTarget(buffer, target);
  138|    360|        return WithIndex(target, range.start + pos);
  139|    360|    };
  140|       |
  141|    360|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    360|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    360|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_12Group21Var10EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  2.62k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  2.62k|        typename Descriptor::Target target;
  137|  2.62k|        Descriptor::ReadTarget(buffer, target);
  138|  2.62k|        return WithIndex(target, range.start + pos);
  139|  2.62k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group30Var1EEES0_RKNS_5RangeE:
  116|  1.16k|{
  117|  1.16k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.16k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.16k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    505|{
  133|    505|    const auto COUNT = range.Count();
  134|       |
  135|    505|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    505|        typename Descriptor::Target target;
  137|    505|        Descriptor::ReadTarget(buffer, target);
  138|    505|        return WithIndex(target, range.start + pos);
  139|    505|    };
  140|       |
  141|    505|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    505|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    505|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.75k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.75k|        typename Descriptor::Target target;
  137|  1.75k|        Descriptor::ReadTarget(buffer, target);
  138|  1.75k|        return WithIndex(target, range.start + pos);
  139|  1.75k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group30Var2EEES0_RKNS_5RangeE:
  116|  1.00k|{
  117|  1.00k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.00k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.00k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    450|{
  133|    450|    const auto COUNT = range.Count();
  134|       |
  135|    450|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    450|        typename Descriptor::Target target;
  137|    450|        Descriptor::ReadTarget(buffer, target);
  138|    450|        return WithIndex(target, range.start + pos);
  139|    450|    };
  140|       |
  141|    450|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    450|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    450|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.29k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.29k|        typename Descriptor::Target target;
  137|  1.29k|        Descriptor::ReadTarget(buffer, target);
  138|  1.29k|        return WithIndex(target, range.start + pos);
  139|  1.29k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group30Var3EEES0_RKNS_5RangeE:
  116|  1.02k|{
  117|  1.02k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.02k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.02k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    477|{
  133|    477|    const auto COUNT = range.Count();
  134|       |
  135|    477|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    477|        typename Descriptor::Target target;
  137|    477|        Descriptor::ReadTarget(buffer, target);
  138|    477|        return WithIndex(target, range.start + pos);
  139|    477|    };
  140|       |
  141|    477|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    477|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    477|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.23k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.23k|        typename Descriptor::Target target;
  137|  1.23k|        Descriptor::ReadTarget(buffer, target);
  138|  1.23k|        return WithIndex(target, range.start + pos);
  139|  1.23k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group30Var4EEES0_RKNS_5RangeE:
  116|  2.03k|{
  117|  2.03k|    const auto size = range.Count() * Descriptor::Size();
  118|  2.03k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  2.03k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    874|{
  133|    874|    const auto COUNT = range.Count();
  134|       |
  135|    874|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    874|        typename Descriptor::Target target;
  137|    874|        Descriptor::ReadTarget(buffer, target);
  138|    874|        return WithIndex(target, range.start + pos);
  139|    874|    };
  140|       |
  141|    874|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    874|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    874|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  3.15k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  3.15k|        typename Descriptor::Target target;
  137|  3.15k|        Descriptor::ReadTarget(buffer, target);
  138|  3.15k|        return WithIndex(target, range.start + pos);
  139|  3.15k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group30Var5EEES0_RKNS_5RangeE:
  116|    966|{
  117|    966|    const auto size = range.Count() * Descriptor::Size();
  118|    966|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    966|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    446|{
  133|    446|    const auto COUNT = range.Count();
  134|       |
  135|    446|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    446|        typename Descriptor::Target target;
  137|    446|        Descriptor::ReadTarget(buffer, target);
  138|    446|        return WithIndex(target, range.start + pos);
  139|    446|    };
  140|       |
  141|    446|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    446|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    446|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var5EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  2.13k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  2.13k|        typename Descriptor::Target target;
  137|  2.13k|        Descriptor::ReadTarget(buffer, target);
  138|  2.13k|        return WithIndex(target, range.start + pos);
  139|  2.13k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group30Var6EEES0_RKNS_5RangeE:
  116|    765|{
  117|    765|    const auto size = range.Count() * Descriptor::Size();
  118|    765|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|    765|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    363|{
  133|    363|    const auto COUNT = range.Count();
  134|       |
  135|    363|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    363|        typename Descriptor::Target target;
  137|    363|        Descriptor::ReadTarget(buffer, target);
  138|    363|        return WithIndex(target, range.start + pos);
  139|    363|    };
  140|       |
  141|    363|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    363|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    363|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group30Var6EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.59k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.59k|        typename Descriptor::Target target;
  137|  1.59k|        Descriptor::ReadTarget(buffer, target);
  138|  1.59k|        return WithIndex(target, range.start + pos);
  139|  1.59k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group40Var1EEES0_RKNS_5RangeE:
  116|  1.21k|{
  117|  1.21k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.21k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.21k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group40Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    554|{
  133|    554|    const auto COUNT = range.Count();
  134|       |
  135|    554|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    554|        typename Descriptor::Target target;
  137|    554|        Descriptor::ReadTarget(buffer, target);
  138|    554|        return WithIndex(target, range.start + pos);
  139|    554|    };
  140|       |
  141|    554|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    554|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    554|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group40Var1EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.65k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.65k|        typename Descriptor::Target target;
  137|  1.65k|        Descriptor::ReadTarget(buffer, target);
  138|  1.65k|        return WithIndex(target, range.start + pos);
  139|  1.65k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group40Var2EEES0_RKNS_5RangeE:
  116|  1.13k|{
  117|  1.13k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.13k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.13k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group40Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    552|{
  133|    552|    const auto COUNT = range.Count();
  134|       |
  135|    552|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    552|        typename Descriptor::Target target;
  137|    552|        Descriptor::ReadTarget(buffer, target);
  138|    552|        return WithIndex(target, range.start + pos);
  139|    552|    };
  140|       |
  141|    552|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    552|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    552|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group40Var2EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.82k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.82k|        typename Descriptor::Target target;
  137|  1.82k|        Descriptor::ReadTarget(buffer, target);
  138|  1.82k|        return WithIndex(target, range.start + pos);
  139|  1.82k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group40Var3EEES0_RKNS_5RangeE:
  116|  1.67k|{
  117|  1.67k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.67k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.67k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group40Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    678|{
  133|    678|    const auto COUNT = range.Count();
  134|       |
  135|    678|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    678|        typename Descriptor::Target target;
  137|    678|        Descriptor::ReadTarget(buffer, target);
  138|    678|        return WithIndex(target, range.start + pos);
  139|    678|    };
  140|       |
  141|    678|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    678|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    678|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group40Var3EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  2.48k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  2.48k|        typename Descriptor::Target target;
  137|  2.48k|        Descriptor::ReadTarget(buffer, target);
  138|  2.48k|        return WithIndex(target, range.start + pos);
  139|  2.48k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group40Var4EEES0_RKNS_5RangeE:
  116|  1.24k|{
  117|  1.24k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.24k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.24k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group40Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    604|{
  133|    604|    const auto COUNT = range.Count();
  134|       |
  135|    604|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    604|        typename Descriptor::Target target;
  137|    604|        Descriptor::ReadTarget(buffer, target);
  138|    604|        return WithIndex(target, range.start + pos);
  139|    604|    };
  140|       |
  141|    604|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    604|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    604|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group40Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  1.53k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  1.53k|        typename Descriptor::Target target;
  137|  1.53k|        Descriptor::ReadTarget(buffer, target);
  138|  1.53k|        return WithIndex(target, range.start + pos);
  139|  1.53k|    };
_ZN8opendnp311RangeParser13FromFixedSizeINS_11Group50Var4EEES0_RKNS_5RangeE:
  116|  1.67k|{
  117|  1.67k|    const auto size = range.Count() * Descriptor::Size();
  118|  1.67k|    return RangeParser(range, size, &InvokeRangeOf<Descriptor>);
  119|  1.67k|}
_ZN8opendnp311RangeParser13InvokeRangeOfINS_11Group50Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  132|    797|{
  133|    797|    const auto COUNT = range.Count();
  134|       |
  135|    797|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|    797|        typename Descriptor::Target target;
  137|    797|        Descriptor::ReadTarget(buffer, target);
  138|    797|        return WithIndex(target, range.start + pos);
  139|    797|    };
  140|       |
  141|    797|    auto collection = CreateBufferedCollection<Indexed<typename Descriptor::Target>>(buffer, COUNT, read);
  142|       |
  143|    797|    handler.OnHeader(RangeHeader(record, range), collection);
  144|    797|}
_ZZN8opendnp311RangeParser13InvokeRangeOfINS_11Group50Var4EEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerEENKUlRSB_jE_clESG_j:
  135|  2.39k|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) {
  136|  2.39k|        typename Descriptor::Target target;
  137|  2.39k|        Descriptor::ReadTarget(buffer, target);
  138|  2.39k|        return WithIndex(target, range.start + pos);
  139|  2.39k|    };
_ZN8opendnp311RangeParser16FromBitfieldTypeINS_8IINValueEEES0_RKNS_5RangeE:
  166|    681|{
  167|    681|    const auto SIZE = NumBytesInBits(range.Count());
  168|    681|    return RangeParser(range, SIZE, &InvokeRangeBitfieldType<Type>);
  169|    681|}
_ZN8opendnp311RangeParser23InvokeRangeBitfieldTypeINS_8IINValueEEEvRKNS_12HeaderRecordERKNS_5RangeERKN7ser4cpp4RSeqImEERNS_12IAPDUHandlerE:
  176|    270|{
  177|    270|    const auto COUNT = range.Count();
  178|       |
  179|    270|    auto read = [range](ser4cpp::rseq_t& buffer, uint32_t pos) -> Indexed<Type> {
  180|    270|        Type value(GetBit(buffer, pos));
  181|    270|        return WithIndex(value, range.start + pos);
  182|    270|    };
  183|       |
  184|    270|    auto collection = CreateBufferedCollection<Indexed<Type>>(buffer, COUNT, read);
  185|       |
  186|    270|    handler.OnHeader(RangeHeader(record, range), collection);
  187|    270|}

_ZN8opendnp315HasAbsoluteTimeENS_14GroupVariationE:
   37|  34.6k|{
   38|  34.6k|  switch(gv)
   39|  34.6k|  {
   40|    647|    case(GroupVariation::Group2Var2):
  ------------------
  |  Branch (40:5): [True: 647, False: 33.9k]
  ------------------
   41|    647|        return true;
   42|    300|    case(GroupVariation::Group4Var2):
  ------------------
  |  Branch (42:5): [True: 300, False: 34.3k]
  ------------------
   43|    300|        return true;
   44|    545|    case(GroupVariation::Group11Var2):
  ------------------
  |  Branch (44:5): [True: 545, False: 34.0k]
  ------------------
   45|    545|        return true;
   46|    530|    case(GroupVariation::Group13Var2):
  ------------------
  |  Branch (46:5): [True: 530, False: 34.1k]
  ------------------
   47|    530|        return true;
   48|    620|    case(GroupVariation::Group21Var5):
  ------------------
  |  Branch (48:5): [True: 620, False: 34.0k]
  ------------------
   49|    620|        return true;
   50|    360|    case(GroupVariation::Group21Var6):
  ------------------
  |  Branch (50:5): [True: 360, False: 34.2k]
  ------------------
   51|    360|        return true;
   52|    300|    case(GroupVariation::Group22Var5):
  ------------------
  |  Branch (52:5): [True: 300, False: 34.3k]
  ------------------
   53|    300|        return true;
   54|    337|    case(GroupVariation::Group22Var6):
  ------------------
  |  Branch (54:5): [True: 337, False: 34.3k]
  ------------------
   55|    337|        return true;
   56|    416|    case(GroupVariation::Group23Var5):
  ------------------
  |  Branch (56:5): [True: 416, False: 34.2k]
  ------------------
   57|    416|        return true;
   58|    271|    case(GroupVariation::Group23Var6):
  ------------------
  |  Branch (58:5): [True: 271, False: 34.3k]
  ------------------
   59|    271|        return true;
   60|    664|    case(GroupVariation::Group32Var3):
  ------------------
  |  Branch (60:5): [True: 664, False: 33.9k]
  ------------------
   61|    664|        return true;
   62|    428|    case(GroupVariation::Group32Var4):
  ------------------
  |  Branch (62:5): [True: 428, False: 34.2k]
  ------------------
   63|    428|        return true;
   64|    423|    case(GroupVariation::Group32Var7):
  ------------------
  |  Branch (64:5): [True: 423, False: 34.2k]
  ------------------
   65|    423|        return true;
   66|    507|    case(GroupVariation::Group32Var8):
  ------------------
  |  Branch (66:5): [True: 507, False: 34.1k]
  ------------------
   67|    507|        return true;
   68|    390|    case(GroupVariation::Group42Var3):
  ------------------
  |  Branch (68:5): [True: 390, False: 34.2k]
  ------------------
   69|    390|        return true;
   70|    337|    case(GroupVariation::Group42Var4):
  ------------------
  |  Branch (70:5): [True: 337, False: 34.3k]
  ------------------
   71|    337|        return true;
   72|    479|    case(GroupVariation::Group42Var7):
  ------------------
  |  Branch (72:5): [True: 479, False: 34.1k]
  ------------------
   73|    479|        return true;
   74|    549|    case(GroupVariation::Group42Var8):
  ------------------
  |  Branch (74:5): [True: 549, False: 34.0k]
  ------------------
   75|    549|        return true;
   76|    566|    case(GroupVariation::Group43Var3):
  ------------------
  |  Branch (76:5): [True: 566, False: 34.0k]
  ------------------
   77|    566|        return true;
   78|    522|    case(GroupVariation::Group43Var4):
  ------------------
  |  Branch (78:5): [True: 522, False: 34.1k]
  ------------------
   79|    522|        return true;
   80|    448|    case(GroupVariation::Group43Var7):
  ------------------
  |  Branch (80:5): [True: 448, False: 34.1k]
  ------------------
   81|    448|        return true;
   82|    577|    case(GroupVariation::Group43Var8):
  ------------------
  |  Branch (82:5): [True: 577, False: 34.0k]
  ------------------
   83|    577|        return true;
   84|      0|    case(GroupVariation::Group50Var1):
  ------------------
  |  Branch (84:5): [True: 0, False: 34.6k]
  ------------------
   85|      0|        return true;
   86|      0|    case(GroupVariation::Group50Var3):
  ------------------
  |  Branch (86:5): [True: 0, False: 34.6k]
  ------------------
   87|      0|        return true;
   88|    797|    case(GroupVariation::Group50Var4):
  ------------------
  |  Branch (88:5): [True: 797, False: 33.8k]
  ------------------
   89|    797|        return true;
   90|      0|    case(GroupVariation::Group51Var1):
  ------------------
  |  Branch (90:5): [True: 0, False: 34.6k]
  ------------------
   91|      0|        return true;
   92|      0|    case(GroupVariation::Group51Var2):
  ------------------
  |  Branch (92:5): [True: 0, False: 34.6k]
  ------------------
   93|      0|        return true;
   94|  23.6k|    default:
  ------------------
  |  Branch (94:5): [True: 23.6k, False: 11.0k]
  ------------------
   95|  23.6k|      return false;
   96|  34.6k|  }
   97|  34.6k|}
_ZN8opendnp38HasFlagsENS_14GroupVariationE:
  115|  37.3k|{
  116|  37.3k|  switch(gv)
  117|  37.3k|  {
  118|    583|    case(GroupVariation::Group1Var2):
  ------------------
  |  Branch (118:5): [True: 583, False: 36.7k]
  ------------------
  119|    583|        return true;
  120|    674|    case(GroupVariation::Group2Var1):
  ------------------
  |  Branch (120:5): [True: 674, False: 36.6k]
  ------------------
  121|    674|        return true;
  122|    647|    case(GroupVariation::Group2Var2):
  ------------------
  |  Branch (122:5): [True: 647, False: 36.6k]
  ------------------
  123|    647|        return true;
  124|    693|    case(GroupVariation::Group2Var3):
  ------------------
  |  Branch (124:5): [True: 693, False: 36.6k]
  ------------------
  125|    693|        return true;
  126|    689|    case(GroupVariation::Group3Var2):
  ------------------
  |  Branch (126:5): [True: 689, False: 36.6k]
  ------------------
  127|    689|        return true;
  128|    630|    case(GroupVariation::Group4Var1):
  ------------------
  |  Branch (128:5): [True: 630, False: 36.6k]
  ------------------
  129|    630|        return true;
  130|    300|    case(GroupVariation::Group4Var2):
  ------------------
  |  Branch (130:5): [True: 300, False: 37.0k]
  ------------------
  131|    300|        return true;
  132|    904|    case(GroupVariation::Group4Var3):
  ------------------
  |  Branch (132:5): [True: 904, False: 36.4k]
  ------------------
  133|    904|        return true;
  134|    494|    case(GroupVariation::Group10Var2):
  ------------------
  |  Branch (134:5): [True: 494, False: 36.8k]
  ------------------
  135|    494|        return true;
  136|    672|    case(GroupVariation::Group11Var1):
  ------------------
  |  Branch (136:5): [True: 672, False: 36.6k]
  ------------------
  137|    672|        return true;
  138|    545|    case(GroupVariation::Group11Var2):
  ------------------
  |  Branch (138:5): [True: 545, False: 36.7k]
  ------------------
  139|    545|        return true;
  140|  1.00k|    case(GroupVariation::Group13Var1):
  ------------------
  |  Branch (140:5): [True: 1.00k, False: 36.3k]
  ------------------
  141|  1.00k|        return true;
  142|    530|    case(GroupVariation::Group13Var2):
  ------------------
  |  Branch (142:5): [True: 530, False: 36.7k]
  ------------------
  143|    530|        return true;
  144|    341|    case(GroupVariation::Group20Var1):
  ------------------
  |  Branch (144:5): [True: 341, False: 36.9k]
  ------------------
  145|    341|        return true;
  146|    479|    case(GroupVariation::Group20Var2):
  ------------------
  |  Branch (146:5): [True: 479, False: 36.8k]
  ------------------
  147|    479|        return true;
  148|    318|    case(GroupVariation::Group21Var1):
  ------------------
  |  Branch (148:5): [True: 318, False: 36.9k]
  ------------------
  149|    318|        return true;
  150|    304|    case(GroupVariation::Group21Var2):
  ------------------
  |  Branch (150:5): [True: 304, False: 37.0k]
  ------------------
  151|    304|        return true;
  152|    620|    case(GroupVariation::Group21Var5):
  ------------------
  |  Branch (152:5): [True: 620, False: 36.6k]
  ------------------
  153|    620|        return true;
  154|    360|    case(GroupVariation::Group21Var6):
  ------------------
  |  Branch (154:5): [True: 360, False: 36.9k]
  ------------------
  155|    360|        return true;
  156|    651|    case(GroupVariation::Group22Var1):
  ------------------
  |  Branch (156:5): [True: 651, False: 36.6k]
  ------------------
  157|    651|        return true;
  158|    568|    case(GroupVariation::Group22Var2):
  ------------------
  |  Branch (158:5): [True: 568, False: 36.7k]
  ------------------
  159|    568|        return true;
  160|    300|    case(GroupVariation::Group22Var5):
  ------------------
  |  Branch (160:5): [True: 300, False: 37.0k]
  ------------------
  161|    300|        return true;
  162|    337|    case(GroupVariation::Group22Var6):
  ------------------
  |  Branch (162:5): [True: 337, False: 36.9k]
  ------------------
  163|    337|        return true;
  164|    756|    case(GroupVariation::Group23Var1):
  ------------------
  |  Branch (164:5): [True: 756, False: 36.5k]
  ------------------
  165|    756|        return true;
  166|    570|    case(GroupVariation::Group23Var2):
  ------------------
  |  Branch (166:5): [True: 570, False: 36.7k]
  ------------------
  167|    570|        return true;
  168|    416|    case(GroupVariation::Group23Var5):
  ------------------
  |  Branch (168:5): [True: 416, False: 36.8k]
  ------------------
  169|    416|        return true;
  170|    271|    case(GroupVariation::Group23Var6):
  ------------------
  |  Branch (170:5): [True: 271, False: 37.0k]
  ------------------
  171|    271|        return true;
  172|    505|    case(GroupVariation::Group30Var1):
  ------------------
  |  Branch (172:5): [True: 505, False: 36.8k]
  ------------------
  173|    505|        return true;
  174|    450|    case(GroupVariation::Group30Var2):
  ------------------
  |  Branch (174:5): [True: 450, False: 36.8k]
  ------------------
  175|    450|        return true;
  176|    446|    case(GroupVariation::Group30Var5):
  ------------------
  |  Branch (176:5): [True: 446, False: 36.8k]
  ------------------
  177|    446|        return true;
  178|    363|    case(GroupVariation::Group30Var6):
  ------------------
  |  Branch (178:5): [True: 363, False: 36.9k]
  ------------------
  179|    363|        return true;
  180|    251|    case(GroupVariation::Group32Var1):
  ------------------
  |  Branch (180:5): [True: 251, False: 37.0k]
  ------------------
  181|    251|        return true;
  182|    369|    case(GroupVariation::Group32Var2):
  ------------------
  |  Branch (182:5): [True: 369, False: 36.9k]
  ------------------
  183|    369|        return true;
  184|    664|    case(GroupVariation::Group32Var3):
  ------------------
  |  Branch (184:5): [True: 664, False: 36.6k]
  ------------------
  185|    664|        return true;
  186|    428|    case(GroupVariation::Group32Var4):
  ------------------
  |  Branch (186:5): [True: 428, False: 36.8k]
  ------------------
  187|    428|        return true;
  188|    381|    case(GroupVariation::Group32Var5):
  ------------------
  |  Branch (188:5): [True: 381, False: 36.9k]
  ------------------
  189|    381|        return true;
  190|    338|    case(GroupVariation::Group32Var6):
  ------------------
  |  Branch (190:5): [True: 338, False: 36.9k]
  ------------------
  191|    338|        return true;
  192|    423|    case(GroupVariation::Group32Var7):
  ------------------
  |  Branch (192:5): [True: 423, False: 36.8k]
  ------------------
  193|    423|        return true;
  194|    507|    case(GroupVariation::Group32Var8):
  ------------------
  |  Branch (194:5): [True: 507, False: 36.7k]
  ------------------
  195|    507|        return true;
  196|    554|    case(GroupVariation::Group40Var1):
  ------------------
  |  Branch (196:5): [True: 554, False: 36.7k]
  ------------------
  197|    554|        return true;
  198|    552|    case(GroupVariation::Group40Var2):
  ------------------
  |  Branch (198:5): [True: 552, False: 36.7k]
  ------------------
  199|    552|        return true;
  200|    678|    case(GroupVariation::Group40Var3):
  ------------------
  |  Branch (200:5): [True: 678, False: 36.6k]
  ------------------
  201|    678|        return true;
  202|    604|    case(GroupVariation::Group40Var4):
  ------------------
  |  Branch (202:5): [True: 604, False: 36.7k]
  ------------------
  203|    604|        return true;
  204|    300|    case(GroupVariation::Group42Var1):
  ------------------
  |  Branch (204:5): [True: 300, False: 37.0k]
  ------------------
  205|    300|        return true;
  206|    687|    case(GroupVariation::Group42Var2):
  ------------------
  |  Branch (206:5): [True: 687, False: 36.6k]
  ------------------
  207|    687|        return true;
  208|    390|    case(GroupVariation::Group42Var3):
  ------------------
  |  Branch (208:5): [True: 390, False: 36.9k]
  ------------------
  209|    390|        return true;
  210|    337|    case(GroupVariation::Group42Var4):
  ------------------
  |  Branch (210:5): [True: 337, False: 36.9k]
  ------------------
  211|    337|        return true;
  212|    435|    case(GroupVariation::Group42Var5):
  ------------------
  |  Branch (212:5): [True: 435, False: 36.8k]
  ------------------
  213|    435|        return true;
  214|    379|    case(GroupVariation::Group42Var6):
  ------------------
  |  Branch (214:5): [True: 379, False: 36.9k]
  ------------------
  215|    379|        return true;
  216|    479|    case(GroupVariation::Group42Var7):
  ------------------
  |  Branch (216:5): [True: 479, False: 36.8k]
  ------------------
  217|    479|        return true;
  218|    549|    case(GroupVariation::Group42Var8):
  ------------------
  |  Branch (218:5): [True: 549, False: 36.7k]
  ------------------
  219|    549|        return true;
  220|  11.5k|    default:
  ------------------
  |  Branch (220:5): [True: 11.5k, False: 25.7k]
  ------------------
  221|  11.5k|      return false;
  222|  37.3k|  }
  223|  37.3k|}
_ZN8opendnp37IsEventENS_14GroupVariationE:
  225|  37.3k|{
  226|  37.3k|  switch(gv)
  227|  37.3k|  {
  228|    674|    case(GroupVariation::Group2Var1):
  ------------------
  |  Branch (228:5): [True: 674, False: 36.6k]
  ------------------
  229|    674|        return true;
  230|    647|    case(GroupVariation::Group2Var2):
  ------------------
  |  Branch (230:5): [True: 647, False: 36.6k]
  ------------------
  231|    647|        return true;
  232|    693|    case(GroupVariation::Group2Var3):
  ------------------
  |  Branch (232:5): [True: 693, False: 36.6k]
  ------------------
  233|    693|        return true;
  234|    630|    case(GroupVariation::Group4Var1):
  ------------------
  |  Branch (234:5): [True: 630, False: 36.6k]
  ------------------
  235|    630|        return true;
  236|    300|    case(GroupVariation::Group4Var2):
  ------------------
  |  Branch (236:5): [True: 300, False: 37.0k]
  ------------------
  237|    300|        return true;
  238|    904|    case(GroupVariation::Group4Var3):
  ------------------
  |  Branch (238:5): [True: 904, False: 36.4k]
  ------------------
  239|    904|        return true;
  240|    672|    case(GroupVariation::Group11Var1):
  ------------------
  |  Branch (240:5): [True: 672, False: 36.6k]
  ------------------
  241|    672|        return true;
  242|    545|    case(GroupVariation::Group11Var2):
  ------------------
  |  Branch (242:5): [True: 545, False: 36.7k]
  ------------------
  243|    545|        return true;
  244|  1.00k|    case(GroupVariation::Group13Var1):
  ------------------
  |  Branch (244:5): [True: 1.00k, False: 36.3k]
  ------------------
  245|  1.00k|        return true;
  246|    530|    case(GroupVariation::Group13Var2):
  ------------------
  |  Branch (246:5): [True: 530, False: 36.7k]
  ------------------
  247|    530|        return true;
  248|    651|    case(GroupVariation::Group22Var1):
  ------------------
  |  Branch (248:5): [True: 651, False: 36.6k]
  ------------------
  249|    651|        return true;
  250|    568|    case(GroupVariation::Group22Var2):
  ------------------
  |  Branch (250:5): [True: 568, False: 36.7k]
  ------------------
  251|    568|        return true;
  252|    300|    case(GroupVariation::Group22Var5):
  ------------------
  |  Branch (252:5): [True: 300, False: 37.0k]
  ------------------
  253|    300|        return true;
  254|    337|    case(GroupVariation::Group22Var6):
  ------------------
  |  Branch (254:5): [True: 337, False: 36.9k]
  ------------------
  255|    337|        return true;
  256|    756|    case(GroupVariation::Group23Var1):
  ------------------
  |  Branch (256:5): [True: 756, False: 36.5k]
  ------------------
  257|    756|        return true;
  258|    570|    case(GroupVariation::Group23Var2):
  ------------------
  |  Branch (258:5): [True: 570, False: 36.7k]
  ------------------
  259|    570|        return true;
  260|    416|    case(GroupVariation::Group23Var5):
  ------------------
  |  Branch (260:5): [True: 416, False: 36.8k]
  ------------------
  261|    416|        return true;
  262|    271|    case(GroupVariation::Group23Var6):
  ------------------
  |  Branch (262:5): [True: 271, False: 37.0k]
  ------------------
  263|    271|        return true;
  264|    251|    case(GroupVariation::Group32Var1):
  ------------------
  |  Branch (264:5): [True: 251, False: 37.0k]
  ------------------
  265|    251|        return true;
  266|    369|    case(GroupVariation::Group32Var2):
  ------------------
  |  Branch (266:5): [True: 369, False: 36.9k]
  ------------------
  267|    369|        return true;
  268|    664|    case(GroupVariation::Group32Var3):
  ------------------
  |  Branch (268:5): [True: 664, False: 36.6k]
  ------------------
  269|    664|        return true;
  270|    428|    case(GroupVariation::Group32Var4):
  ------------------
  |  Branch (270:5): [True: 428, False: 36.8k]
  ------------------
  271|    428|        return true;
  272|    381|    case(GroupVariation::Group32Var5):
  ------------------
  |  Branch (272:5): [True: 381, False: 36.9k]
  ------------------
  273|    381|        return true;
  274|    338|    case(GroupVariation::Group32Var6):
  ------------------
  |  Branch (274:5): [True: 338, False: 36.9k]
  ------------------
  275|    338|        return true;
  276|    423|    case(GroupVariation::Group32Var7):
  ------------------
  |  Branch (276:5): [True: 423, False: 36.8k]
  ------------------
  277|    423|        return true;
  278|    507|    case(GroupVariation::Group32Var8):
  ------------------
  |  Branch (278:5): [True: 507, False: 36.7k]
  ------------------
  279|    507|        return true;
  280|    300|    case(GroupVariation::Group42Var1):
  ------------------
  |  Branch (280:5): [True: 300, False: 37.0k]
  ------------------
  281|    300|        return true;
  282|    687|    case(GroupVariation::Group42Var2):
  ------------------
  |  Branch (282:5): [True: 687, False: 36.6k]
  ------------------
  283|    687|        return true;
  284|    390|    case(GroupVariation::Group42Var3):
  ------------------
  |  Branch (284:5): [True: 390, False: 36.9k]
  ------------------
  285|    390|        return true;
  286|    337|    case(GroupVariation::Group42Var4):
  ------------------
  |  Branch (286:5): [True: 337, False: 36.9k]
  ------------------
  287|    337|        return true;
  288|    435|    case(GroupVariation::Group42Var5):
  ------------------
  |  Branch (288:5): [True: 435, False: 36.8k]
  ------------------
  289|    435|        return true;
  290|    379|    case(GroupVariation::Group42Var6):
  ------------------
  |  Branch (290:5): [True: 379, False: 36.9k]
  ------------------
  291|    379|        return true;
  292|    479|    case(GroupVariation::Group42Var7):
  ------------------
  |  Branch (292:5): [True: 479, False: 36.8k]
  ------------------
  293|    479|        return true;
  294|    549|    case(GroupVariation::Group42Var8):
  ------------------
  |  Branch (294:5): [True: 549, False: 36.7k]
  ------------------
  295|    549|        return true;
  296|    476|    case(GroupVariation::Group43Var1):
  ------------------
  |  Branch (296:5): [True: 476, False: 36.8k]
  ------------------
  297|    476|        return true;
  298|    419|    case(GroupVariation::Group43Var2):
  ------------------
  |  Branch (298:5): [True: 419, False: 36.8k]
  ------------------
  299|    419|        return true;
  300|    566|    case(GroupVariation::Group43Var3):
  ------------------
  |  Branch (300:5): [True: 566, False: 36.7k]
  ------------------
  301|    566|        return true;
  302|    522|    case(GroupVariation::Group43Var4):
  ------------------
  |  Branch (302:5): [True: 522, False: 36.7k]
  ------------------
  303|    522|        return true;
  304|    412|    case(GroupVariation::Group43Var5):
  ------------------
  |  Branch (304:5): [True: 412, False: 36.8k]
  ------------------
  305|    412|        return true;
  306|    362|    case(GroupVariation::Group43Var6):
  ------------------
  |  Branch (306:5): [True: 362, False: 36.9k]
  ------------------
  307|    362|        return true;
  308|    448|    case(GroupVariation::Group43Var7):
  ------------------
  |  Branch (308:5): [True: 448, False: 36.8k]
  ------------------
  309|    448|        return true;
  310|    577|    case(GroupVariation::Group43Var8):
  ------------------
  |  Branch (310:5): [True: 577, False: 36.7k]
  ------------------
  311|    577|        return true;
  312|  16.1k|    default:
  ------------------
  |  Branch (312:5): [True: 16.1k, False: 21.1k]
  ------------------
  313|  16.1k|      return false;
  314|  37.3k|  }
  315|  37.3k|}

_ZN8opendnp317CommandStatusSpec9from_typeEh:
   43|  28.0k|{
   44|  28.0k|  switch(arg)
   45|  28.0k|  {
   46|  2.85k|    case(0):
  ------------------
  |  Branch (46:5): [True: 2.85k, False: 25.2k]
  ------------------
   47|  2.85k|      return CommandStatus::SUCCESS;
   48|  2.14k|    case(1):
  ------------------
  |  Branch (48:5): [True: 2.14k, False: 25.9k]
  ------------------
   49|  2.14k|      return CommandStatus::TIMEOUT;
   50|  1.58k|    case(2):
  ------------------
  |  Branch (50:5): [True: 1.58k, False: 26.4k]
  ------------------
   51|  1.58k|      return CommandStatus::NO_SELECT;
   52|    853|    case(3):
  ------------------
  |  Branch (52:5): [True: 853, False: 27.2k]
  ------------------
   53|    853|      return CommandStatus::FORMAT_ERROR;
   54|    920|    case(4):
  ------------------
  |  Branch (54:5): [True: 920, False: 27.1k]
  ------------------
   55|    920|      return CommandStatus::NOT_SUPPORTED;
   56|  1.01k|    case(5):
  ------------------
  |  Branch (56:5): [True: 1.01k, False: 27.0k]
  ------------------
   57|  1.01k|      return CommandStatus::ALREADY_ACTIVE;
   58|  1.15k|    case(6):
  ------------------
  |  Branch (58:5): [True: 1.15k, False: 26.9k]
  ------------------
   59|  1.15k|      return CommandStatus::HARDWARE_ERROR;
   60|    944|    case(7):
  ------------------
  |  Branch (60:5): [True: 944, False: 27.1k]
  ------------------
   61|    944|      return CommandStatus::LOCAL;
   62|    665|    case(8):
  ------------------
  |  Branch (62:5): [True: 665, False: 27.4k]
  ------------------
   63|    665|      return CommandStatus::TOO_MANY_OPS;
   64|    348|    case(9):
  ------------------
  |  Branch (64:5): [True: 348, False: 27.7k]
  ------------------
   65|    348|      return CommandStatus::NOT_AUTHORIZED;
   66|    395|    case(10):
  ------------------
  |  Branch (66:5): [True: 395, False: 27.6k]
  ------------------
   67|    395|      return CommandStatus::AUTOMATION_INHIBIT;
   68|    503|    case(11):
  ------------------
  |  Branch (68:5): [True: 503, False: 27.5k]
  ------------------
   69|    503|      return CommandStatus::PROCESSING_LIMITED;
   70|    336|    case(12):
  ------------------
  |  Branch (70:5): [True: 336, False: 27.7k]
  ------------------
   71|    336|      return CommandStatus::OUT_OF_RANGE;
   72|    512|    case(13):
  ------------------
  |  Branch (72:5): [True: 512, False: 27.5k]
  ------------------
   73|    512|      return CommandStatus::DOWNSTREAM_LOCAL;
   74|    338|    case(14):
  ------------------
  |  Branch (74:5): [True: 338, False: 27.7k]
  ------------------
   75|    338|      return CommandStatus::ALREADY_COMPLETE;
   76|    349|    case(15):
  ------------------
  |  Branch (76:5): [True: 349, False: 27.7k]
  ------------------
   77|    349|      return CommandStatus::BLOCKED;
   78|    319|    case(16):
  ------------------
  |  Branch (78:5): [True: 319, False: 27.7k]
  ------------------
   79|    319|      return CommandStatus::CANCELLED;
   80|    285|    case(17):
  ------------------
  |  Branch (80:5): [True: 285, False: 27.8k]
  ------------------
   81|    285|      return CommandStatus::BLOCKED_OTHER_MASTER;
   82|    654|    case(18):
  ------------------
  |  Branch (82:5): [True: 654, False: 27.4k]
  ------------------
   83|    654|      return CommandStatus::DOWNSTREAM_FAIL;
   84|    503|    case(126):
  ------------------
  |  Branch (84:5): [True: 503, False: 27.5k]
  ------------------
   85|    503|      return CommandStatus::NON_PARTICIPATING;
   86|  11.4k|    default:
  ------------------
  |  Branch (86:5): [True: 11.4k, False: 16.6k]
  ------------------
   87|  11.4k|      return CommandStatus::UNDEFINED;
   88|  28.0k|  }
   89|  28.0k|}

_ZN8opendnp313DoubleBitSpec7to_typeENS_9DoubleBitE:
   38|  27.0k|{
   39|  27.0k|  return static_cast<uint8_t>(arg);
   40|  27.0k|}
_ZN8opendnp313DoubleBitSpec9from_typeEh:
   43|  37.5k|{
   44|  37.5k|  switch(arg)
   45|  37.5k|  {
   46|  20.9k|    case(0x0):
  ------------------
  |  Branch (46:5): [True: 20.9k, False: 16.5k]
  ------------------
   47|  20.9k|      return DoubleBit::INTERMEDIATE;
   48|  6.80k|    case(0x1):
  ------------------
  |  Branch (48:5): [True: 6.80k, False: 30.7k]
  ------------------
   49|  6.80k|      return DoubleBit::DETERMINED_OFF;
   50|  3.37k|    case(0x2):
  ------------------
  |  Branch (50:5): [True: 3.37k, False: 34.1k]
  ------------------
   51|  3.37k|      return DoubleBit::DETERMINED_ON;
   52|  6.35k|    default:
  ------------------
  |  Branch (52:5): [True: 6.35k, False: 31.1k]
  ------------------
   53|  6.35k|      return DoubleBit::INDETERMINATE;
   54|  37.5k|  }
   55|  37.5k|}

_ZN8opendnp316FunctionCodeSpec7to_typeENS_12FunctionCodeE:
   38|  6.25k|{
   39|  6.25k|  return static_cast<uint8_t>(arg);
   40|  6.25k|}
_ZN8opendnp316FunctionCodeSpec9from_typeEh:
   43|  6.25k|{
   44|  6.25k|  switch(arg)
   45|  6.25k|  {
   46|      1|    case(0x0):
  ------------------
  |  Branch (46:5): [True: 1, False: 6.25k]
  ------------------
   47|      1|      return FunctionCode::CONFIRM;
   48|      1|    case(0x1):
  ------------------
  |  Branch (48:5): [True: 1, False: 6.25k]
  ------------------
   49|      1|      return FunctionCode::READ;
   50|      1|    case(0x2):
  ------------------
  |  Branch (50:5): [True: 1, False: 6.25k]
  ------------------
   51|      1|      return FunctionCode::WRITE;
   52|      1|    case(0x3):
  ------------------
  |  Branch (52:5): [True: 1, False: 6.25k]
  ------------------
   53|      1|      return FunctionCode::SELECT;
   54|      1|    case(0x4):
  ------------------
  |  Branch (54:5): [True: 1, False: 6.25k]
  ------------------
   55|      1|      return FunctionCode::OPERATE;
   56|      1|    case(0x5):
  ------------------
  |  Branch (56:5): [True: 1, False: 6.25k]
  ------------------
   57|      1|      return FunctionCode::DIRECT_OPERATE;
   58|      1|    case(0x6):
  ------------------
  |  Branch (58:5): [True: 1, False: 6.25k]
  ------------------
   59|      1|      return FunctionCode::DIRECT_OPERATE_NR;
   60|      1|    case(0x7):
  ------------------
  |  Branch (60:5): [True: 1, False: 6.25k]
  ------------------
   61|      1|      return FunctionCode::IMMED_FREEZE;
   62|      1|    case(0x8):
  ------------------
  |  Branch (62:5): [True: 1, False: 6.25k]
  ------------------
   63|      1|      return FunctionCode::IMMED_FREEZE_NR;
   64|      1|    case(0x9):
  ------------------
  |  Branch (64:5): [True: 1, False: 6.25k]
  ------------------
   65|      1|      return FunctionCode::FREEZE_CLEAR;
   66|      1|    case(0xA):
  ------------------
  |  Branch (66:5): [True: 1, False: 6.25k]
  ------------------
   67|      1|      return FunctionCode::FREEZE_CLEAR_NR;
   68|      1|    case(0xB):
  ------------------
  |  Branch (68:5): [True: 1, False: 6.25k]
  ------------------
   69|      1|      return FunctionCode::FREEZE_AT_TIME;
   70|      1|    case(0xC):
  ------------------
  |  Branch (70:5): [True: 1, False: 6.25k]
  ------------------
   71|      1|      return FunctionCode::FREEZE_AT_TIME_NR;
   72|      1|    case(0xD):
  ------------------
  |  Branch (72:5): [True: 1, False: 6.25k]
  ------------------
   73|      1|      return FunctionCode::COLD_RESTART;
   74|      1|    case(0xE):
  ------------------
  |  Branch (74:5): [True: 1, False: 6.25k]
  ------------------
   75|      1|      return FunctionCode::WARM_RESTART;
   76|      1|    case(0xF):
  ------------------
  |  Branch (76:5): [True: 1, False: 6.25k]
  ------------------
   77|      1|      return FunctionCode::INITIALIZE_DATA;
   78|      1|    case(0x10):
  ------------------
  |  Branch (78:5): [True: 1, False: 6.25k]
  ------------------
   79|      1|      return FunctionCode::INITIALIZE_APPLICATION;
   80|      1|    case(0x11):
  ------------------
  |  Branch (80:5): [True: 1, False: 6.25k]
  ------------------
   81|      1|      return FunctionCode::START_APPLICATION;
   82|      1|    case(0x12):
  ------------------
  |  Branch (82:5): [True: 1, False: 6.25k]
  ------------------
   83|      1|      return FunctionCode::STOP_APPLICATION;
   84|      1|    case(0x13):
  ------------------
  |  Branch (84:5): [True: 1, False: 6.25k]
  ------------------
   85|      1|      return FunctionCode::SAVE_CONFIGURATION;
   86|      1|    case(0x14):
  ------------------
  |  Branch (86:5): [True: 1, False: 6.25k]
  ------------------
   87|      1|      return FunctionCode::ENABLE_UNSOLICITED;
   88|      1|    case(0x15):
  ------------------
  |  Branch (88:5): [True: 1, False: 6.25k]
  ------------------
   89|      1|      return FunctionCode::DISABLE_UNSOLICITED;
   90|      1|    case(0x16):
  ------------------
  |  Branch (90:5): [True: 1, False: 6.25k]
  ------------------
   91|      1|      return FunctionCode::ASSIGN_CLASS;
   92|      1|    case(0x17):
  ------------------
  |  Branch (92:5): [True: 1, False: 6.25k]
  ------------------
   93|      1|      return FunctionCode::DELAY_MEASURE;
   94|      1|    case(0x18):
  ------------------
  |  Branch (94:5): [True: 1, False: 6.25k]
  ------------------
   95|      1|      return FunctionCode::RECORD_CURRENT_TIME;
   96|      1|    case(0x19):
  ------------------
  |  Branch (96:5): [True: 1, False: 6.25k]
  ------------------
   97|      1|      return FunctionCode::OPEN_FILE;
   98|      1|    case(0x1A):
  ------------------
  |  Branch (98:5): [True: 1, False: 6.25k]
  ------------------
   99|      1|      return FunctionCode::CLOSE_FILE;
  100|      1|    case(0x1B):
  ------------------
  |  Branch (100:5): [True: 1, False: 6.25k]
  ------------------
  101|      1|      return FunctionCode::DELETE_FILE;
  102|      1|    case(0x1C):
  ------------------
  |  Branch (102:5): [True: 1, False: 6.25k]
  ------------------
  103|      1|      return FunctionCode::GET_FILE_INFO;
  104|      1|    case(0x1D):
  ------------------
  |  Branch (104:5): [True: 1, False: 6.25k]
  ------------------
  105|      1|      return FunctionCode::AUTHENTICATE_FILE;
  106|      1|    case(0x1E):
  ------------------
  |  Branch (106:5): [True: 1, False: 6.25k]
  ------------------
  107|      1|      return FunctionCode::ABORT_FILE;
  108|      1|    case(0x20):
  ------------------
  |  Branch (108:5): [True: 1, False: 6.25k]
  ------------------
  109|      1|      return FunctionCode::AUTH_REQUEST;
  110|      1|    case(0x21):
  ------------------
  |  Branch (110:5): [True: 1, False: 6.25k]
  ------------------
  111|      1|      return FunctionCode::AUTH_REQUEST_NO_ACK;
  112|     15|    case(0x81):
  ------------------
  |  Branch (112:5): [True: 15, False: 6.23k]
  ------------------
  113|     15|      return FunctionCode::RESPONSE;
  114|  6.20k|    case(0x82):
  ------------------
  |  Branch (114:5): [True: 6.20k, False: 51]
  ------------------
  115|  6.20k|      return FunctionCode::UNSOLICITED_RESPONSE;
  116|      1|    case(0x83):
  ------------------
  |  Branch (116:5): [True: 1, False: 6.25k]
  ------------------
  117|      1|      return FunctionCode::AUTH_RESPONSE;
  118|      2|    default:
  ------------------
  |  Branch (118:5): [True: 2, False: 6.24k]
  ------------------
  119|      2|      return FunctionCode::UNKNOWN;
  120|  6.25k|  }
  121|  6.25k|}

_ZN8opendnp318GroupVariationSpec9from_typeEt:
   43|   120k|{
   44|   120k|  switch(arg)
   45|   120k|  {
   46|  1.00k|    case(0x100):
  ------------------
  |  Branch (46:5): [True: 1.00k, False: 119k]
  ------------------
   47|  1.00k|      return GroupVariation::Group1Var0;
   48|  2.37k|    case(0x101):
  ------------------
  |  Branch (48:5): [True: 2.37k, False: 117k]
  ------------------
   49|  2.37k|      return GroupVariation::Group1Var1;
   50|  1.56k|    case(0x102):
  ------------------
  |  Branch (50:5): [True: 1.56k, False: 118k]
  ------------------
   51|  1.56k|      return GroupVariation::Group1Var2;
   52|    289|    case(0x200):
  ------------------
  |  Branch (52:5): [True: 289, False: 120k]
  ------------------
   53|    289|      return GroupVariation::Group2Var0;
   54|  1.60k|    case(0x201):
  ------------------
  |  Branch (54:5): [True: 1.60k, False: 118k]
  ------------------
   55|  1.60k|      return GroupVariation::Group2Var1;
   56|  1.62k|    case(0x202):
  ------------------
  |  Branch (56:5): [True: 1.62k, False: 118k]
  ------------------
   57|  1.62k|      return GroupVariation::Group2Var2;
   58|  2.21k|    case(0x203):
  ------------------
  |  Branch (58:5): [True: 2.21k, False: 118k]
  ------------------
   59|  2.21k|      return GroupVariation::Group2Var3;
   60|    912|    case(0x300):
  ------------------
  |  Branch (60:5): [True: 912, False: 119k]
  ------------------
   61|    912|      return GroupVariation::Group3Var0;
   62|  1.60k|    case(0x301):
  ------------------
  |  Branch (62:5): [True: 1.60k, False: 118k]
  ------------------
   63|  1.60k|      return GroupVariation::Group3Var1;
   64|  1.90k|    case(0x302):
  ------------------
  |  Branch (64:5): [True: 1.90k, False: 118k]
  ------------------
   65|  1.90k|      return GroupVariation::Group3Var2;
   66|    225|    case(0x400):
  ------------------
  |  Branch (66:5): [True: 225, False: 120k]
  ------------------
   67|    225|      return GroupVariation::Group4Var0;
   68|  1.49k|    case(0x401):
  ------------------
  |  Branch (68:5): [True: 1.49k, False: 118k]
  ------------------
   69|  1.49k|      return GroupVariation::Group4Var1;
   70|    678|    case(0x402):
  ------------------
  |  Branch (70:5): [True: 678, False: 119k]
  ------------------
   71|    678|      return GroupVariation::Group4Var2;
   72|  2.55k|    case(0x403):
  ------------------
  |  Branch (72:5): [True: 2.55k, False: 117k]
  ------------------
   73|  2.55k|      return GroupVariation::Group4Var3;
   74|    561|    case(0xA00):
  ------------------
  |  Branch (74:5): [True: 561, False: 119k]
  ------------------
   75|    561|      return GroupVariation::Group10Var0;
   76|  1.25k|    case(0xA01):
  ------------------
  |  Branch (76:5): [True: 1.25k, False: 119k]
  ------------------
   77|  1.25k|      return GroupVariation::Group10Var1;
   78|  1.10k|    case(0xA02):
  ------------------
  |  Branch (78:5): [True: 1.10k, False: 119k]
  ------------------
   79|  1.10k|      return GroupVariation::Group10Var2;
   80|    547|    case(0xB00):
  ------------------
  |  Branch (80:5): [True: 547, False: 119k]
  ------------------
   81|    547|      return GroupVariation::Group11Var0;
   82|  1.42k|    case(0xB01):
  ------------------
  |  Branch (82:5): [True: 1.42k, False: 118k]
  ------------------
   83|  1.42k|      return GroupVariation::Group11Var1;
   84|  1.32k|    case(0xB02):
  ------------------
  |  Branch (84:5): [True: 1.32k, False: 118k]
  ------------------
   85|  1.32k|      return GroupVariation::Group11Var2;
   86|    205|    case(0xC00):
  ------------------
  |  Branch (86:5): [True: 205, False: 120k]
  ------------------
   87|    205|      return GroupVariation::Group12Var0;
   88|    751|    case(0xC01):
  ------------------
  |  Branch (88:5): [True: 751, False: 119k]
  ------------------
   89|    751|      return GroupVariation::Group12Var1;
   90|  2.06k|    case(0xD01):
  ------------------
  |  Branch (90:5): [True: 2.06k, False: 118k]
  ------------------
   91|  2.06k|      return GroupVariation::Group13Var1;
   92|  1.35k|    case(0xD02):
  ------------------
  |  Branch (92:5): [True: 1.35k, False: 118k]
  ------------------
   93|  1.35k|      return GroupVariation::Group13Var2;
   94|    241|    case(0x1400):
  ------------------
  |  Branch (94:5): [True: 241, False: 120k]
  ------------------
   95|    241|      return GroupVariation::Group20Var0;
   96|    931|    case(0x1401):
  ------------------
  |  Branch (96:5): [True: 931, False: 119k]
  ------------------
   97|    931|      return GroupVariation::Group20Var1;
   98|  1.35k|    case(0x1402):
  ------------------
  |  Branch (98:5): [True: 1.35k, False: 118k]
  ------------------
   99|  1.35k|      return GroupVariation::Group20Var2;
  100|    847|    case(0x1405):
  ------------------
  |  Branch (100:5): [True: 847, False: 119k]
  ------------------
  101|    847|      return GroupVariation::Group20Var5;
  102|  1.53k|    case(0x1406):
  ------------------
  |  Branch (102:5): [True: 1.53k, False: 118k]
  ------------------
  103|  1.53k|      return GroupVariation::Group20Var6;
  104|    235|    case(0x1500):
  ------------------
  |  Branch (104:5): [True: 235, False: 120k]
  ------------------
  105|    235|      return GroupVariation::Group21Var0;
  106|    914|    case(0x1501):
  ------------------
  |  Branch (106:5): [True: 914, False: 119k]
  ------------------
  107|    914|      return GroupVariation::Group21Var1;
  108|    899|    case(0x1502):
  ------------------
  |  Branch (108:5): [True: 899, False: 119k]
  ------------------
  109|    899|      return GroupVariation::Group21Var2;
  110|  1.53k|    case(0x1505):
  ------------------
  |  Branch (110:5): [True: 1.53k, False: 118k]
  ------------------
  111|  1.53k|      return GroupVariation::Group21Var5;
  112|    982|    case(0x1506):
  ------------------
  |  Branch (112:5): [True: 982, False: 119k]
  ------------------
  113|    982|      return GroupVariation::Group21Var6;
  114|    943|    case(0x1509):
  ------------------
  |  Branch (114:5): [True: 943, False: 119k]
  ------------------
  115|    943|      return GroupVariation::Group21Var9;
  116|    968|    case(0x150A):
  ------------------
  |  Branch (116:5): [True: 968, False: 119k]
  ------------------
  117|    968|      return GroupVariation::Group21Var10;
  118|    343|    case(0x1600):
  ------------------
  |  Branch (118:5): [True: 343, False: 119k]
  ------------------
  119|    343|      return GroupVariation::Group22Var0;
  120|  1.68k|    case(0x1601):
  ------------------
  |  Branch (120:5): [True: 1.68k, False: 118k]
  ------------------
  121|  1.68k|      return GroupVariation::Group22Var1;
  122|  1.39k|    case(0x1602):
  ------------------
  |  Branch (122:5): [True: 1.39k, False: 118k]
  ------------------
  123|  1.39k|      return GroupVariation::Group22Var2;
  124|    756|    case(0x1605):
  ------------------
  |  Branch (124:5): [True: 756, False: 119k]
  ------------------
  125|    756|      return GroupVariation::Group22Var5;
  126|    980|    case(0x1606):
  ------------------
  |  Branch (126:5): [True: 980, False: 119k]
  ------------------
  127|    980|      return GroupVariation::Group22Var6;
  128|    294|    case(0x1700):
  ------------------
  |  Branch (128:5): [True: 294, False: 120k]
  ------------------
  129|    294|      return GroupVariation::Group23Var0;
  130|  1.90k|    case(0x1701):
  ------------------
  |  Branch (130:5): [True: 1.90k, False: 118k]
  ------------------
  131|  1.90k|      return GroupVariation::Group23Var1;
  132|  1.21k|    case(0x1702):
  ------------------
  |  Branch (132:5): [True: 1.21k, False: 119k]
  ------------------
  133|  1.21k|      return GroupVariation::Group23Var2;
  134|  1.05k|    case(0x1705):
  ------------------
  |  Branch (134:5): [True: 1.05k, False: 119k]
  ------------------
  135|  1.05k|      return GroupVariation::Group23Var5;
  136|    745|    case(0x1706):
  ------------------
  |  Branch (136:5): [True: 745, False: 119k]
  ------------------
  137|    745|      return GroupVariation::Group23Var6;
  138|    209|    case(0x1E00):
  ------------------
  |  Branch (138:5): [True: 209, False: 120k]
  ------------------
  139|    209|      return GroupVariation::Group30Var0;
  140|  1.56k|    case(0x1E01):
  ------------------
  |  Branch (140:5): [True: 1.56k, False: 118k]
  ------------------
  141|  1.56k|      return GroupVariation::Group30Var1;
  142|  1.21k|    case(0x1E02):
  ------------------
  |  Branch (142:5): [True: 1.21k, False: 119k]
  ------------------
  143|  1.21k|      return GroupVariation::Group30Var2;
  144|  1.26k|    case(0x1E03):
  ------------------
  |  Branch (144:5): [True: 1.26k, False: 119k]
  ------------------
  145|  1.26k|      return GroupVariation::Group30Var3;
  146|  2.19k|    case(0x1E04):
  ------------------
  |  Branch (146:5): [True: 2.19k, False: 118k]
  ------------------
  147|  2.19k|      return GroupVariation::Group30Var4;
  148|  1.20k|    case(0x1E05):
  ------------------
  |  Branch (148:5): [True: 1.20k, False: 119k]
  ------------------
  149|  1.20k|      return GroupVariation::Group30Var5;
  150|  1.09k|    case(0x1E06):
  ------------------
  |  Branch (150:5): [True: 1.09k, False: 119k]
  ------------------
  151|  1.09k|      return GroupVariation::Group30Var6;
  152|    216|    case(0x2000):
  ------------------
  |  Branch (152:5): [True: 216, False: 120k]
  ------------------
  153|    216|      return GroupVariation::Group32Var0;
  154|    703|    case(0x2001):
  ------------------
  |  Branch (154:5): [True: 703, False: 119k]
  ------------------
  155|    703|      return GroupVariation::Group32Var1;
  156|    930|    case(0x2002):
  ------------------
  |  Branch (156:5): [True: 930, False: 119k]
  ------------------
  157|    930|      return GroupVariation::Group32Var2;
  158|  1.39k|    case(0x2003):
  ------------------
  |  Branch (158:5): [True: 1.39k, False: 118k]
  ------------------
  159|  1.39k|      return GroupVariation::Group32Var3;
  160|  1.19k|    case(0x2004):
  ------------------
  |  Branch (160:5): [True: 1.19k, False: 119k]
  ------------------
  161|  1.19k|      return GroupVariation::Group32Var4;
  162|    895|    case(0x2005):
  ------------------
  |  Branch (162:5): [True: 895, False: 119k]
  ------------------
  163|    895|      return GroupVariation::Group32Var5;
  164|    888|    case(0x2006):
  ------------------
  |  Branch (164:5): [True: 888, False: 119k]
  ------------------
  165|    888|      return GroupVariation::Group32Var6;
  166|  1.08k|    case(0x2007):
  ------------------
  |  Branch (166:5): [True: 1.08k, False: 119k]
  ------------------
  167|  1.08k|      return GroupVariation::Group32Var7;
  168|  1.55k|    case(0x2008):
  ------------------
  |  Branch (168:5): [True: 1.55k, False: 118k]
  ------------------
  169|  1.55k|      return GroupVariation::Group32Var8;
  170|    239|    case(0x2800):
  ------------------
  |  Branch (170:5): [True: 239, False: 120k]
  ------------------
  171|    239|      return GroupVariation::Group40Var0;
  172|  1.42k|    case(0x2801):
  ------------------
  |  Branch (172:5): [True: 1.42k, False: 118k]
  ------------------
  173|  1.42k|      return GroupVariation::Group40Var1;
  174|  1.20k|    case(0x2802):
  ------------------
  |  Branch (174:5): [True: 1.20k, False: 119k]
  ------------------
  175|  1.20k|      return GroupVariation::Group40Var2;
  176|  1.93k|    case(0x2803):
  ------------------
  |  Branch (176:5): [True: 1.93k, False: 118k]
  ------------------
  177|  1.93k|      return GroupVariation::Group40Var3;
  178|  1.46k|    case(0x2804):
  ------------------
  |  Branch (178:5): [True: 1.46k, False: 118k]
  ------------------
  179|  1.46k|      return GroupVariation::Group40Var4;
  180|    200|    case(0x2900):
  ------------------
  |  Branch (180:5): [True: 200, False: 120k]
  ------------------
  181|    200|      return GroupVariation::Group41Var0;
  182|    349|    case(0x2901):
  ------------------
  |  Branch (182:5): [True: 349, False: 119k]
  ------------------
  183|    349|      return GroupVariation::Group41Var1;
  184|    795|    case(0x2902):
  ------------------
  |  Branch (184:5): [True: 795, False: 119k]
  ------------------
  185|    795|      return GroupVariation::Group41Var2;
  186|    737|    case(0x2903):
  ------------------
  |  Branch (186:5): [True: 737, False: 119k]
  ------------------
  187|    737|      return GroupVariation::Group41Var3;
  188|    989|    case(0x2904):
  ------------------
  |  Branch (188:5): [True: 989, False: 119k]
  ------------------
  189|    989|      return GroupVariation::Group41Var4;
  190|    298|    case(0x2A00):
  ------------------
  |  Branch (190:5): [True: 298, False: 119k]
  ------------------
  191|    298|      return GroupVariation::Group42Var0;
  192|    918|    case(0x2A01):
  ------------------
  |  Branch (192:5): [True: 918, False: 119k]
  ------------------
  193|    918|      return GroupVariation::Group42Var1;
  194|  2.31k|    case(0x2A02):
  ------------------
  |  Branch (194:5): [True: 2.31k, False: 117k]
  ------------------
  195|  2.31k|      return GroupVariation::Group42Var2;
  196|  1.10k|    case(0x2A03):
  ------------------
  |  Branch (196:5): [True: 1.10k, False: 119k]
  ------------------
  197|  1.10k|      return GroupVariation::Group42Var3;
  198|  1.02k|    case(0x2A04):
  ------------------
  |  Branch (198:5): [True: 1.02k, False: 119k]
  ------------------
  199|  1.02k|      return GroupVariation::Group42Var4;
  200|  1.15k|    case(0x2A05):
  ------------------
  |  Branch (200:5): [True: 1.15k, False: 119k]
  ------------------
  201|  1.15k|      return GroupVariation::Group42Var5;
  202|  1.37k|    case(0x2A06):
  ------------------
  |  Branch (202:5): [True: 1.37k, False: 118k]
  ------------------
  203|  1.37k|      return GroupVariation::Group42Var6;
  204|  1.23k|    case(0x2A07):
  ------------------
  |  Branch (204:5): [True: 1.23k, False: 119k]
  ------------------
  205|  1.23k|      return GroupVariation::Group42Var7;
  206|  1.30k|    case(0x2A08):
  ------------------
  |  Branch (206:5): [True: 1.30k, False: 118k]
  ------------------
  207|  1.30k|      return GroupVariation::Group42Var8;
  208|  1.22k|    case(0x2B01):
  ------------------
  |  Branch (208:5): [True: 1.22k, False: 119k]
  ------------------
  209|  1.22k|      return GroupVariation::Group43Var1;
  210|  1.07k|    case(0x2B02):
  ------------------
  |  Branch (210:5): [True: 1.07k, False: 119k]
  ------------------
  211|  1.07k|      return GroupVariation::Group43Var2;
  212|  1.33k|    case(0x2B03):
  ------------------
  |  Branch (212:5): [True: 1.33k, False: 118k]
  ------------------
  213|  1.33k|      return GroupVariation::Group43Var3;
  214|  1.46k|    case(0x2B04):
  ------------------
  |  Branch (214:5): [True: 1.46k, False: 118k]
  ------------------
  215|  1.46k|      return GroupVariation::Group43Var4;
  216|  1.09k|    case(0x2B05):
  ------------------
  |  Branch (216:5): [True: 1.09k, False: 119k]
  ------------------
  217|  1.09k|      return GroupVariation::Group43Var5;
  218|  1.17k|    case(0x2B06):
  ------------------
  |  Branch (218:5): [True: 1.17k, False: 119k]
  ------------------
  219|  1.17k|      return GroupVariation::Group43Var6;
  220|  1.12k|    case(0x2B07):
  ------------------
  |  Branch (220:5): [True: 1.12k, False: 119k]
  ------------------
  221|  1.12k|      return GroupVariation::Group43Var7;
  222|  1.42k|    case(0x2B08):
  ------------------
  |  Branch (222:5): [True: 1.42k, False: 118k]
  ------------------
  223|  1.42k|      return GroupVariation::Group43Var8;
  224|  2.47k|    case(0x3201):
  ------------------
  |  Branch (224:5): [True: 2.47k, False: 117k]
  ------------------
  225|  2.47k|      return GroupVariation::Group50Var1;
  226|    770|    case(0x3203):
  ------------------
  |  Branch (226:5): [True: 770, False: 119k]
  ------------------
  227|    770|      return GroupVariation::Group50Var3;
  228|  2.35k|    case(0x3204):
  ------------------
  |  Branch (228:5): [True: 2.35k, False: 117k]
  ------------------
  229|  2.35k|      return GroupVariation::Group50Var4;
  230|  2.62k|    case(0x3301):
  ------------------
  |  Branch (230:5): [True: 2.62k, False: 117k]
  ------------------
  231|  2.62k|      return GroupVariation::Group51Var1;
  232|  1.60k|    case(0x3302):
  ------------------
  |  Branch (232:5): [True: 1.60k, False: 118k]
  ------------------
  233|  1.60k|      return GroupVariation::Group51Var2;
  234|  1.10k|    case(0x3401):
  ------------------
  |  Branch (234:5): [True: 1.10k, False: 119k]
  ------------------
  235|  1.10k|      return GroupVariation::Group52Var1;
  236|  1.30k|    case(0x3402):
  ------------------
  |  Branch (236:5): [True: 1.30k, False: 118k]
  ------------------
  237|  1.30k|      return GroupVariation::Group52Var2;
  238|    229|    case(0x3C01):
  ------------------
  |  Branch (238:5): [True: 229, False: 120k]
  ------------------
  239|    229|      return GroupVariation::Group60Var1;
  240|    199|    case(0x3C02):
  ------------------
  |  Branch (240:5): [True: 199, False: 120k]
  ------------------
  241|    199|      return GroupVariation::Group60Var2;
  242|    208|    case(0x3C03):
  ------------------
  |  Branch (242:5): [True: 208, False: 120k]
  ------------------
  243|    208|      return GroupVariation::Group60Var3;
  244|    202|    case(0x3C04):
  ------------------
  |  Branch (244:5): [True: 202, False: 120k]
  ------------------
  245|    202|      return GroupVariation::Group60Var4;
  246|    196|    case(0x4601):
  ------------------
  |  Branch (246:5): [True: 196, False: 120k]
  ------------------
  247|    196|      return GroupVariation::Group70Var1;
  248|    240|    case(0x4602):
  ------------------
  |  Branch (248:5): [True: 240, False: 120k]
  ------------------
  249|    240|      return GroupVariation::Group70Var2;
  250|    200|    case(0x4603):
  ------------------
  |  Branch (250:5): [True: 200, False: 120k]
  ------------------
  251|    200|      return GroupVariation::Group70Var3;
  252|    197|    case(0x4604):
  ------------------
  |  Branch (252:5): [True: 197, False: 120k]
  ------------------
  253|    197|      return GroupVariation::Group70Var4;
  254|    292|    case(0x4605):
  ------------------
  |  Branch (254:5): [True: 292, False: 120k]
  ------------------
  255|    292|      return GroupVariation::Group70Var5;
  256|    264|    case(0x4606):
  ------------------
  |  Branch (256:5): [True: 264, False: 120k]
  ------------------
  257|    264|      return GroupVariation::Group70Var6;
  258|    292|    case(0x4607):
  ------------------
  |  Branch (258:5): [True: 292, False: 120k]
  ------------------
  259|    292|      return GroupVariation::Group70Var7;
  260|    205|    case(0x4608):
  ------------------
  |  Branch (260:5): [True: 205, False: 120k]
  ------------------
  261|    205|      return GroupVariation::Group70Var8;
  262|    880|    case(0x5001):
  ------------------
  |  Branch (262:5): [True: 880, False: 119k]
  ------------------
  263|    880|      return GroupVariation::Group80Var1;
  264|    197|    case(0x6E00):
  ------------------
  |  Branch (264:5): [True: 197, False: 120k]
  ------------------
  265|    197|      return GroupVariation::Group110Var0;
  266|    200|    case(0x6F00):
  ------------------
  |  Branch (266:5): [True: 200, False: 120k]
  ------------------
  267|    200|      return GroupVariation::Group111Var0;
  268|    373|    case(0x7000):
  ------------------
  |  Branch (268:5): [True: 373, False: 119k]
  ------------------
  269|    373|      return GroupVariation::Group112Var0;
  270|    234|    case(0x7100):
  ------------------
  |  Branch (270:5): [True: 234, False: 120k]
  ------------------
  271|    234|      return GroupVariation::Group113Var0;
  272|  3.48k|    default:
  ------------------
  |  Branch (272:5): [True: 3.48k, False: 116k]
  ------------------
  273|  3.48k|      return GroupVariation::UNKNOWN;
  274|   120k|  }
  275|   120k|}

_ZN8opendnp317QualifierCodeSpec7to_typeENS_13QualifierCodeE:
   38|  18.7k|{
   39|  18.7k|  return static_cast<uint8_t>(arg);
   40|  18.7k|}
_ZN8opendnp317QualifierCodeSpec9from_typeEh:
   43|   220k|{
   44|   220k|  switch(arg)
   45|   220k|  {
   46|  61.5k|    case(0x0):
  ------------------
  |  Branch (46:5): [True: 61.5k, False: 158k]
  ------------------
   47|  61.5k|      return QualifierCode::UINT8_START_STOP;
   48|  4.64k|    case(0x1):
  ------------------
  |  Branch (48:5): [True: 4.64k, False: 215k]
  ------------------
   49|  4.64k|      return QualifierCode::UINT16_START_STOP;
   50|  40.0k|    case(0x6):
  ------------------
  |  Branch (50:5): [True: 40.0k, False: 180k]
  ------------------
   51|  40.0k|      return QualifierCode::ALL_OBJECTS;
   52|  14.4k|    case(0x7):
  ------------------
  |  Branch (52:5): [True: 14.4k, False: 206k]
  ------------------
   53|  14.4k|      return QualifierCode::UINT8_CNT;
   54|    672|    case(0x8):
  ------------------
  |  Branch (54:5): [True: 672, False: 219k]
  ------------------
   55|    672|      return QualifierCode::UINT16_CNT;
   56|  95.3k|    case(0x17):
  ------------------
  |  Branch (56:5): [True: 95.3k, False: 125k]
  ------------------
   57|  95.3k|      return QualifierCode::UINT8_CNT_UINT8_INDEX;
   58|  3.38k|    case(0x28):
  ------------------
  |  Branch (58:5): [True: 3.38k, False: 217k]
  ------------------
   59|  3.38k|      return QualifierCode::UINT16_CNT_UINT16_INDEX;
   60|    426|    default:
  ------------------
  |  Branch (60:5): [True: 426, False: 220k]
  ------------------
   61|    426|      return QualifierCode::UNDEFINED;
   62|   220k|  }
   63|   220k|}

_ZN8opendnp310Group1Var2C2Ev:
   45|  4.28k|Group1Var2::Group1Var2() : flags(0)
   46|  4.28k|{}
_ZN8opendnp310Group1Var24ReadERN7ser4cpp4RSeqImEERS0_:
   49|  4.28k|{
   50|  4.28k|  return LittleEndian::read(buffer, output.flags);
   51|  4.28k|}
_ZN8opendnp310Group1Var210ReadTargetERN7ser4cpp4RSeqImEERNS_6BinaryE:
   59|  4.28k|{
   60|  4.28k|  Group1Var2 value;
   61|  4.28k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 4.28k, False: 0]
  ------------------
   62|  4.28k|  {
   63|  4.28k|    output = BinaryFactory::From(value.flags);
   64|  4.28k|    return true;
   65|  4.28k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  4.28k|}

_ZN8opendnp310Group1Var24SizeEv:
   63|  1.29k|  static size_t Size() { return 1; }

_ZN8opendnp311Group10Var2C2Ev:
   45|  5.19k|Group10Var2::Group10Var2() : flags(0)
   46|  5.19k|{}
_ZN8opendnp311Group10Var24ReadERN7ser4cpp4RSeqImEERS0_:
   49|  5.19k|{
   50|  5.19k|  return LittleEndian::read(buffer, output.flags);
   51|  5.19k|}
_ZN8opendnp311Group10Var210ReadTargetERN7ser4cpp4RSeqImEERNS_18BinaryOutputStatusE:
   59|  5.19k|{
   60|  5.19k|  Group10Var2 value;
   61|  5.19k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 5.19k, False: 0]
  ------------------
   62|  5.19k|  {
   63|  5.19k|    output = BinaryOutputStatusFactory::From(value.flags);
   64|  5.19k|    return true;
   65|  5.19k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  5.19k|}

_ZN8opendnp311Group10Var24SizeEv:
   62|  1.08k|  static size_t Size() { return 1; }

_ZN8opendnp311Group11Var1C2Ev:
   45|  2.66k|Group11Var1::Group11Var1() : flags(0)
   46|  2.66k|{}
_ZN8opendnp311Group11Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  2.66k|{
   50|  2.66k|  return LittleEndian::read(buffer, output.flags);
   51|  2.66k|}
_ZN8opendnp311Group11Var110ReadTargetERN7ser4cpp4RSeqImEERNS_18BinaryOutputStatusE:
   59|  2.66k|{
   60|  2.66k|  Group11Var1 value;
   61|  2.66k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 2.66k, False: 0]
  ------------------
   62|  2.66k|  {
   63|  2.66k|    output = BinaryOutputStatusFactory::From(value.flags);
   64|  2.66k|    return true;
   65|  2.66k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  2.66k|}
_ZN8opendnp311Group11Var2C2Ev:
   79|  1.33k|Group11Var2::Group11Var2() : flags(0), time(0)
   80|  1.33k|{}
_ZN8opendnp311Group11Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.33k|{
   84|  1.33k|  return LittleEndian::read(buffer, output.flags, output.time);
   85|  1.33k|}
_ZN8opendnp311Group11Var210ReadTargetERN7ser4cpp4RSeqImEERNS_18BinaryOutputStatusE:
   93|  1.33k|{
   94|  1.33k|  Group11Var2 value;
   95|  1.33k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.33k, False: 0]
  ------------------
   96|  1.33k|  {
   97|  1.33k|    output = BinaryOutputStatusFactory::From(value.flags, value.time);
   98|  1.33k|    return true;
   99|  1.33k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.33k|}

_ZN8opendnp311Group11Var14SizeEv:
   56|  1.35k|  static size_t Size() { return 1; }
_ZN8opendnp311Group11Var24SizeEv:
   76|  1.11k|  static size_t Size() { return 7; }

_ZN8opendnp311Group12Var14SizeEv:
   56|    535|  static size_t Size() { return 11; }

_ZN8opendnp311Group13Var1C2Ev:
   45|  13.6k|Group13Var1::Group13Var1() : flags(0)
   46|  13.6k|{}
_ZN8opendnp311Group13Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  13.6k|{
   50|  13.6k|  return LittleEndian::read(buffer, output.flags);
   51|  13.6k|}
_ZN8opendnp311Group13Var110ReadTargetERN7ser4cpp4RSeqImEERNS_18BinaryCommandEventE:
   59|  13.6k|{
   60|  13.6k|  Group13Var1 value;
   61|  13.6k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 13.6k, False: 0]
  ------------------
   62|  13.6k|  {
   63|  13.6k|    output = BinaryCommandEventFactory::From(value.flags);
   64|  13.6k|    return true;
   65|  13.6k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  13.6k|}
_ZN8opendnp311Group13Var2C2Ev:
   79|  1.58k|Group13Var2::Group13Var2() : flags(0), time(0)
   80|  1.58k|{}
_ZN8opendnp311Group13Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.58k|{
   84|  1.58k|  return LittleEndian::read(buffer, output.flags, output.time);
   85|  1.58k|}
_ZN8opendnp311Group13Var210ReadTargetERN7ser4cpp4RSeqImEERNS_18BinaryCommandEventE:
   93|  1.58k|{
   94|  1.58k|  Group13Var2 value;
   95|  1.58k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.58k, False: 0]
  ------------------
   96|  1.58k|  {
   97|  1.58k|    output = BinaryCommandEventFactory::From(value.flags, value.time);
   98|  1.58k|    return true;
   99|  1.58k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.58k|}

_ZN8opendnp311Group13Var14SizeEv:
   50|  2.04k|  static size_t Size() { return 1; }
_ZN8opendnp311Group13Var24SizeEv:
   69|  1.16k|  static size_t Size() { return 7; }

_ZN8opendnp310Group2Var1C2Ev:
   45|  2.76k|Group2Var1::Group2Var1() : flags(0)
   46|  2.76k|{}
_ZN8opendnp310Group2Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  2.76k|{
   50|  2.76k|  return LittleEndian::read(buffer, output.flags);
   51|  2.76k|}
_ZN8opendnp310Group2Var110ReadTargetERN7ser4cpp4RSeqImEERNS_6BinaryE:
   59|  2.76k|{
   60|  2.76k|  Group2Var1 value;
   61|  2.76k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 2.76k, False: 0]
  ------------------
   62|  2.76k|  {
   63|  2.76k|    output = BinaryFactory::From(value.flags);
   64|  2.76k|    return true;
   65|  2.76k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  2.76k|}
_ZN8opendnp310Group2Var2C2Ev:
   79|  1.53k|Group2Var2::Group2Var2() : flags(0), time(0)
   80|  1.53k|{}
_ZN8opendnp310Group2Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.53k|{
   84|  1.53k|  return LittleEndian::read(buffer, output.flags, output.time);
   85|  1.53k|}
_ZN8opendnp310Group2Var210ReadTargetERN7ser4cpp4RSeqImEERNS_6BinaryE:
   93|  1.53k|{
   94|  1.53k|  Group2Var2 value;
   95|  1.53k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.53k, False: 0]
  ------------------
   96|  1.53k|  {
   97|  1.53k|    output = BinaryFactory::From(value.flags, value.time);
   98|  1.53k|    return true;
   99|  1.53k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.53k|}
_ZN8opendnp310Group2Var3C2Ev:
  113|  2.86k|Group2Var3::Group2Var3() : flags(0), time(0)
  114|  2.86k|{}
_ZN8opendnp310Group2Var34ReadERN7ser4cpp4RSeqImEERS0_:
  117|  2.86k|{
  118|  2.86k|  return LittleEndian::read(buffer, output.flags, output.time);
  119|  2.86k|}
_ZN8opendnp310Group2Var310ReadTargetERN7ser4cpp4RSeqImEERNS_6BinaryE:
  127|  2.86k|{
  128|  2.86k|  Group2Var3 value;
  129|  2.86k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 2.86k, False: 0]
  ------------------
  130|  2.86k|  {
  131|  2.86k|    output = BinaryFactory::From(value.flags, value.time);
  132|  2.86k|    return true;
  133|  2.86k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  2.86k|}

_ZN8opendnp310Group2Var14SizeEv:
   56|  1.39k|  static size_t Size() { return 1; }
_ZN8opendnp310Group2Var24SizeEv:
   76|  1.30k|  static size_t Size() { return 7; }
_ZN8opendnp310Group2Var34SizeEv:
   97|  2.10k|  static size_t Size() { return 3; }

_ZN8opendnp311Group20Var1C2Ev:
   45|  1.06k|Group20Var1::Group20Var1() : flags(0), value(0)
   46|  1.06k|{}
_ZN8opendnp311Group20Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  1.06k|{
   50|  1.06k|  return LittleEndian::read(buffer, output.flags, output.value);
   51|  1.06k|}
_ZN8opendnp311Group20Var110ReadTargetERN7ser4cpp4RSeqImEERNS_7CounterE:
   59|  1.06k|{
   60|  1.06k|  Group20Var1 value;
   61|  1.06k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 1.06k, False: 0]
  ------------------
   62|  1.06k|  {
   63|  1.06k|    output = CounterFactory::From(value.flags, value.value);
   64|  1.06k|    return true;
   65|  1.06k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  1.06k|}
_ZN8opendnp311Group20Var2C2Ev:
   79|  1.40k|Group20Var2::Group20Var2() : flags(0), value(0)
   80|  1.40k|{}
_ZN8opendnp311Group20Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.40k|{
   84|  1.40k|  return LittleEndian::read(buffer, output.flags, output.value);
   85|  1.40k|}
_ZN8opendnp311Group20Var210ReadTargetERN7ser4cpp4RSeqImEERNS_7CounterE:
   93|  1.40k|{
   94|  1.40k|  Group20Var2 value;
   95|  1.40k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.40k, False: 0]
  ------------------
   96|  1.40k|  {
   97|  1.40k|    output = CounterFactory::From(value.flags, value.value);
   98|  1.40k|    return true;
   99|  1.40k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.40k|}
_ZN8opendnp311Group20Var5C2Ev:
  113|  1.26k|Group20Var5::Group20Var5() : value(0)
  114|  1.26k|{}
_ZN8opendnp311Group20Var54ReadERN7ser4cpp4RSeqImEERS0_:
  117|  1.26k|{
  118|  1.26k|  return LittleEndian::read(buffer, output.value);
  119|  1.26k|}
_ZN8opendnp311Group20Var510ReadTargetERN7ser4cpp4RSeqImEERNS_7CounterE:
  127|  1.26k|{
  128|  1.26k|  Group20Var5 value;
  129|  1.26k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 1.26k, False: 0]
  ------------------
  130|  1.26k|  {
  131|  1.26k|    output = CounterFactory::From(value.value);
  132|  1.26k|    return true;
  133|  1.26k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  1.26k|}
_ZN8opendnp311Group20Var6C2Ev:
  147|  2.59k|Group20Var6::Group20Var6() : value(0)
  148|  2.59k|{}
_ZN8opendnp311Group20Var64ReadERN7ser4cpp4RSeqImEERS0_:
  151|  2.59k|{
  152|  2.59k|  return LittleEndian::read(buffer, output.value);
  153|  2.59k|}
_ZN8opendnp311Group20Var610ReadTargetERN7ser4cpp4RSeqImEERNS_7CounterE:
  161|  2.59k|{
  162|  2.59k|  Group20Var6 value;
  163|  2.59k|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 2.59k, False: 0]
  ------------------
  164|  2.59k|  {
  165|  2.59k|    output = CounterFactory::From(value.value);
  166|  2.59k|    return true;
  167|  2.59k|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|  2.59k|}

_ZN8opendnp311Group20Var14SizeEv:
   56|    732|  static size_t Size() { return 5; }
_ZN8opendnp311Group20Var24SizeEv:
   79|  1.13k|  static size_t Size() { return 3; }
_ZN8opendnp311Group20Var54SizeEv:
  102|    651|  static size_t Size() { return 4; }
_ZN8opendnp311Group20Var64SizeEv:
  124|  1.33k|  static size_t Size() { return 2; }

_ZN8opendnp311Group21Var1C2Ev:
   45|  1.64k|Group21Var1::Group21Var1() : flags(0), value(0)
   46|  1.64k|{}
_ZN8opendnp311Group21Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  1.64k|{
   50|  1.64k|  return LittleEndian::read(buffer, output.flags, output.value);
   51|  1.64k|}
_ZN8opendnp311Group21Var110ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
   59|  1.64k|{
   60|  1.64k|  Group21Var1 value;
   61|  1.64k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 1.64k, False: 0]
  ------------------
   62|  1.64k|  {
   63|  1.64k|    output = FrozenCounterFactory::From(value.flags, value.value);
   64|  1.64k|    return true;
   65|  1.64k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  1.64k|}
_ZN8opendnp311Group21Var2C2Ev:
   79|  1.03k|Group21Var2::Group21Var2() : flags(0), value(0)
   80|  1.03k|{}
_ZN8opendnp311Group21Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.03k|{
   84|  1.03k|  return LittleEndian::read(buffer, output.flags, output.value);
   85|  1.03k|}
_ZN8opendnp311Group21Var210ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
   93|  1.03k|{
   94|  1.03k|  Group21Var2 value;
   95|  1.03k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.03k, False: 0]
  ------------------
   96|  1.03k|  {
   97|  1.03k|    output = FrozenCounterFactory::From(value.flags, value.value);
   98|  1.03k|    return true;
   99|  1.03k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.03k|}
_ZN8opendnp311Group21Var5C2Ev:
  113|  1.46k|Group21Var5::Group21Var5() : flags(0), value(0), time(0)
  114|  1.46k|{}
_ZN8opendnp311Group21Var54ReadERN7ser4cpp4RSeqImEERS0_:
  117|  1.46k|{
  118|  1.46k|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  119|  1.46k|}
_ZN8opendnp311Group21Var510ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
  127|  1.46k|{
  128|  1.46k|  Group21Var5 value;
  129|  1.46k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 1.46k, False: 0]
  ------------------
  130|  1.46k|  {
  131|  1.46k|    output = FrozenCounterFactory::From(value.flags, value.value, value.time);
  132|  1.46k|    return true;
  133|  1.46k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  1.46k|}
_ZN8opendnp311Group21Var6C2Ev:
  147|  1.11k|Group21Var6::Group21Var6() : flags(0), value(0), time(0)
  148|  1.11k|{}
_ZN8opendnp311Group21Var64ReadERN7ser4cpp4RSeqImEERS0_:
  151|  1.11k|{
  152|  1.11k|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  153|  1.11k|}
_ZN8opendnp311Group21Var610ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
  161|  1.11k|{
  162|  1.11k|  Group21Var6 value;
  163|  1.11k|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 1.11k, False: 0]
  ------------------
  164|  1.11k|  {
  165|  1.11k|    output = FrozenCounterFactory::From(value.flags, value.value, value.time);
  166|  1.11k|    return true;
  167|  1.11k|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|  1.11k|}
_ZN8opendnp311Group21Var9C2Ev:
  181|  2.36k|Group21Var9::Group21Var9() : value(0)
  182|  2.36k|{}
_ZN8opendnp311Group21Var94ReadERN7ser4cpp4RSeqImEERS0_:
  185|  2.36k|{
  186|  2.36k|  return LittleEndian::read(buffer, output.value);
  187|  2.36k|}
_ZN8opendnp311Group21Var910ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
  195|  2.36k|{
  196|  2.36k|  Group21Var9 value;
  197|  2.36k|  if(Read(buff, value))
  ------------------
  |  Branch (197:6): [True: 2.36k, False: 0]
  ------------------
  198|  2.36k|  {
  199|  2.36k|    output = FrozenCounterFactory::From(value.value);
  200|  2.36k|    return true;
  201|  2.36k|  }
  202|      0|  else
  203|      0|  {
  204|      0|    return false;
  205|      0|  }
  206|  2.36k|}
_ZN8opendnp312Group21Var10C2Ev:
  215|  2.62k|Group21Var10::Group21Var10() : value(0)
  216|  2.62k|{}
_ZN8opendnp312Group21Var104ReadERN7ser4cpp4RSeqImEERS0_:
  219|  2.62k|{
  220|  2.62k|  return LittleEndian::read(buffer, output.value);
  221|  2.62k|}
_ZN8opendnp312Group21Var1010ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
  229|  2.62k|{
  230|  2.62k|  Group21Var10 value;
  231|  2.62k|  if(Read(buff, value))
  ------------------
  |  Branch (231:6): [True: 2.62k, False: 0]
  ------------------
  232|  2.62k|  {
  233|  2.62k|    output = FrozenCounterFactory::From(value.value);
  234|  2.62k|    return true;
  235|  2.62k|  }
  236|      0|  else
  237|      0|  {
  238|      0|    return false;
  239|      0|  }
  240|  2.62k|}

_ZN8opendnp311Group21Var14SizeEv:
   56|    718|  static size_t Size() { return 5; }
_ZN8opendnp311Group21Var24SizeEv:
   79|    701|  static size_t Size() { return 3; }
_ZN8opendnp311Group21Var54SizeEv:
  102|  1.32k|  static size_t Size() { return 11; }
_ZN8opendnp311Group21Var64SizeEv:
  126|    783|  static size_t Size() { return 9; }
_ZN8opendnp311Group21Var94SizeEv:
  150|    934|  static size_t Size() { return 4; }
_ZN8opendnp312Group21Var104SizeEv:
  172|    766|  static size_t Size() { return 2; }

_ZN8opendnp311Group22Var1C2Ev:
   45|  1.42k|Group22Var1::Group22Var1() : flags(0), value(0)
   46|  1.42k|{}
_ZN8opendnp311Group22Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  1.42k|{
   50|  1.42k|  return LittleEndian::read(buffer, output.flags, output.value);
   51|  1.42k|}
_ZN8opendnp311Group22Var110ReadTargetERN7ser4cpp4RSeqImEERNS_7CounterE:
   59|  1.42k|{
   60|  1.42k|  Group22Var1 value;
   61|  1.42k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 1.42k, False: 0]
  ------------------
   62|  1.42k|  {
   63|  1.42k|    output = CounterFactory::From(value.flags, value.value);
   64|  1.42k|    return true;
   65|  1.42k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  1.42k|}
_ZN8opendnp311Group22Var2C2Ev:
   79|  2.10k|Group22Var2::Group22Var2() : flags(0), value(0)
   80|  2.10k|{}
_ZN8opendnp311Group22Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  2.10k|{
   84|  2.10k|  return LittleEndian::read(buffer, output.flags, output.value);
   85|  2.10k|}
_ZN8opendnp311Group22Var210ReadTargetERN7ser4cpp4RSeqImEERNS_7CounterE:
   93|  2.10k|{
   94|  2.10k|  Group22Var2 value;
   95|  2.10k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 2.10k, False: 0]
  ------------------
   96|  2.10k|  {
   97|  2.10k|    output = CounterFactory::From(value.flags, value.value);
   98|  2.10k|    return true;
   99|  2.10k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  2.10k|}
_ZN8opendnp311Group22Var5C2Ev:
  113|    674|Group22Var5::Group22Var5() : flags(0), value(0), time(0)
  114|    674|{}
_ZN8opendnp311Group22Var54ReadERN7ser4cpp4RSeqImEERS0_:
  117|    674|{
  118|    674|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  119|    674|}
_ZN8opendnp311Group22Var510ReadTargetERN7ser4cpp4RSeqImEERNS_7CounterE:
  127|    674|{
  128|    674|  Group22Var5 value;
  129|    674|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 674, False: 0]
  ------------------
  130|    674|  {
  131|    674|    output = CounterFactory::From(value.flags, value.value, value.time);
  132|    674|    return true;
  133|    674|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|    674|}
_ZN8opendnp311Group22Var6C2Ev:
  147|    855|Group22Var6::Group22Var6() : flags(0), value(0), time(0)
  148|    855|{}
_ZN8opendnp311Group22Var64ReadERN7ser4cpp4RSeqImEERS0_:
  151|    855|{
  152|    855|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  153|    855|}
_ZN8opendnp311Group22Var610ReadTargetERN7ser4cpp4RSeqImEERNS_7CounterE:
  161|    855|{
  162|    855|  Group22Var6 value;
  163|    855|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 855, False: 0]
  ------------------
  164|    855|  {
  165|    855|    output = CounterFactory::From(value.flags, value.value, value.time);
  166|    855|    return true;
  167|    855|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|    855|}

_ZN8opendnp311Group22Var14SizeEv:
   56|  1.35k|  static size_t Size() { return 5; }
_ZN8opendnp311Group22Var24SizeEv:
   78|  1.19k|  static size_t Size() { return 3; }
_ZN8opendnp311Group22Var54SizeEv:
  100|    741|  static size_t Size() { return 11; }
_ZN8opendnp311Group22Var64SizeEv:
  123|    687|  static size_t Size() { return 9; }

_ZN8opendnp311Group23Var1C2Ev:
   45|  1.26k|Group23Var1::Group23Var1() : flags(0), value(0)
   46|  1.26k|{}
_ZN8opendnp311Group23Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  1.26k|{
   50|  1.26k|  return LittleEndian::read(buffer, output.flags, output.value);
   51|  1.26k|}
_ZN8opendnp311Group23Var110ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
   59|  1.26k|{
   60|  1.26k|  Group23Var1 value;
   61|  1.26k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 1.26k, False: 0]
  ------------------
   62|  1.26k|  {
   63|  1.26k|    output = FrozenCounterFactory::From(value.flags, value.value);
   64|  1.26k|    return true;
   65|  1.26k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  1.26k|}
_ZN8opendnp311Group23Var2C2Ev:
   79|  1.12k|Group23Var2::Group23Var2() : flags(0), value(0)
   80|  1.12k|{}
_ZN8opendnp311Group23Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.12k|{
   84|  1.12k|  return LittleEndian::read(buffer, output.flags, output.value);
   85|  1.12k|}
_ZN8opendnp311Group23Var210ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
   93|  1.12k|{
   94|  1.12k|  Group23Var2 value;
   95|  1.12k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.12k, False: 0]
  ------------------
   96|  1.12k|  {
   97|  1.12k|    output = FrozenCounterFactory::From(value.flags, value.value);
   98|  1.12k|    return true;
   99|  1.12k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.12k|}
_ZN8opendnp311Group23Var5C2Ev:
  113|    813|Group23Var5::Group23Var5() : flags(0), value(0), time(0)
  114|    813|{}
_ZN8opendnp311Group23Var54ReadERN7ser4cpp4RSeqImEERS0_:
  117|    813|{
  118|    813|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  119|    813|}
_ZN8opendnp311Group23Var510ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
  127|    813|{
  128|    813|  Group23Var5 value;
  129|    813|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 813, False: 0]
  ------------------
  130|    813|  {
  131|    813|    output = FrozenCounterFactory::From(value.flags, value.value, value.time);
  132|    813|    return true;
  133|    813|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|    813|}
_ZN8opendnp311Group23Var6C2Ev:
  147|    576|Group23Var6::Group23Var6() : flags(0), value(0), time(0)
  148|    576|{}
_ZN8opendnp311Group23Var64ReadERN7ser4cpp4RSeqImEERS0_:
  151|    576|{
  152|    576|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  153|    576|}
_ZN8opendnp311Group23Var610ReadTargetERN7ser4cpp4RSeqImEERNS_13FrozenCounterE:
  161|    576|{
  162|    576|  Group23Var6 value;
  163|    576|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 576, False: 0]
  ------------------
  164|    576|  {
  165|    576|    output = FrozenCounterFactory::From(value.flags, value.value, value.time);
  166|    576|    return true;
  167|    576|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|    576|}

_ZN8opendnp311Group23Var14SizeEv:
   56|  1.58k|  static size_t Size() { return 5; }
_ZN8opendnp311Group23Var24SizeEv:
   78|  1.17k|  static size_t Size() { return 3; }
_ZN8opendnp311Group23Var54SizeEv:
  100|    845|  static size_t Size() { return 11; }
_ZN8opendnp311Group23Var64SizeEv:
  123|    548|  static size_t Size() { return 9; }

_ZN8opendnp310Group3Var2C2Ev:
   45|  5.88k|Group3Var2::Group3Var2() : flags(0)
   46|  5.88k|{}
_ZN8opendnp310Group3Var24ReadERN7ser4cpp4RSeqImEERS0_:
   49|  5.88k|{
   50|  5.88k|  return LittleEndian::read(buffer, output.flags);
   51|  5.88k|}
_ZN8opendnp310Group3Var210ReadTargetERN7ser4cpp4RSeqImEERNS_15DoubleBitBinaryE:
   59|  5.88k|{
   60|  5.88k|  Group3Var2 value;
   61|  5.88k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 5.88k, False: 0]
  ------------------
   62|  5.88k|  {
   63|  5.88k|    output = DoubleBitBinaryFactory::From(value.flags);
   64|  5.88k|    return true;
   65|  5.88k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  5.88k|}

_ZN8opendnp310Group3Var24SizeEv:
   62|  1.59k|  static size_t Size() { return 1; }

_ZN8opendnp311Group30Var1C2Ev:
   45|  1.75k|Group30Var1::Group30Var1() : flags(0), value(0)
   46|  1.75k|{}
_ZN8opendnp311Group30Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  1.75k|{
   50|  1.75k|  return LittleEndian::read(buffer, output.flags, output.value);
   51|  1.75k|}
_ZN8opendnp311Group30Var110ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
   59|  1.75k|{
   60|  1.75k|  Group30Var1 value;
   61|  1.75k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 1.75k, False: 0]
  ------------------
   62|  1.75k|  {
   63|  1.75k|    output = AnalogFactory::From(value.flags, value.value);
   64|  1.75k|    return true;
   65|  1.75k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  1.75k|}
_ZN8opendnp311Group30Var2C2Ev:
   79|  1.29k|Group30Var2::Group30Var2() : flags(0), value(0)
   80|  1.29k|{}
_ZN8opendnp311Group30Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.29k|{
   84|  1.29k|  return LittleEndian::read(buffer, output.flags, output.value);
   85|  1.29k|}
_ZN8opendnp311Group30Var210ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
   93|  1.29k|{
   94|  1.29k|  Group30Var2 value;
   95|  1.29k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.29k, False: 0]
  ------------------
   96|  1.29k|  {
   97|  1.29k|    output = AnalogFactory::From(value.flags, value.value);
   98|  1.29k|    return true;
   99|  1.29k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.29k|}
_ZN8opendnp311Group30Var3C2Ev:
  113|  1.23k|Group30Var3::Group30Var3() : value(0)
  114|  1.23k|{}
_ZN8opendnp311Group30Var34ReadERN7ser4cpp4RSeqImEERS0_:
  117|  1.23k|{
  118|  1.23k|  return LittleEndian::read(buffer, output.value);
  119|  1.23k|}
_ZN8opendnp311Group30Var310ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  127|  1.23k|{
  128|  1.23k|  Group30Var3 value;
  129|  1.23k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 1.23k, False: 0]
  ------------------
  130|  1.23k|  {
  131|  1.23k|    output = AnalogFactory::From(value.value);
  132|  1.23k|    return true;
  133|  1.23k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  1.23k|}
_ZN8opendnp311Group30Var4C2Ev:
  147|  3.15k|Group30Var4::Group30Var4() : value(0)
  148|  3.15k|{}
_ZN8opendnp311Group30Var44ReadERN7ser4cpp4RSeqImEERS0_:
  151|  3.15k|{
  152|  3.15k|  return LittleEndian::read(buffer, output.value);
  153|  3.15k|}
_ZN8opendnp311Group30Var410ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  161|  3.15k|{
  162|  3.15k|  Group30Var4 value;
  163|  3.15k|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 3.15k, False: 0]
  ------------------
  164|  3.15k|  {
  165|  3.15k|    output = AnalogFactory::From(value.value);
  166|  3.15k|    return true;
  167|  3.15k|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|  3.15k|}
_ZN8opendnp311Group30Var5C2Ev:
  181|  2.13k|Group30Var5::Group30Var5() : flags(0), value(0.0)
  182|  2.13k|{}
_ZN8opendnp311Group30Var54ReadERN7ser4cpp4RSeqImEERS0_:
  185|  2.13k|{
  186|  2.13k|  return LittleEndian::read(buffer, output.flags, output.value);
  187|  2.13k|}
_ZN8opendnp311Group30Var510ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  195|  2.13k|{
  196|  2.13k|  Group30Var5 value;
  197|  2.13k|  if(Read(buff, value))
  ------------------
  |  Branch (197:6): [True: 2.13k, False: 0]
  ------------------
  198|  2.13k|  {
  199|  2.13k|    output = AnalogFactory::From(value.flags, value.value);
  200|  2.13k|    return true;
  201|  2.13k|  }
  202|      0|  else
  203|      0|  {
  204|      0|    return false;
  205|      0|  }
  206|  2.13k|}
_ZN8opendnp311Group30Var6C2Ev:
  215|  1.59k|Group30Var6::Group30Var6() : flags(0), value(0.0)
  216|  1.59k|{}
_ZN8opendnp311Group30Var64ReadERN7ser4cpp4RSeqImEERS0_:
  219|  1.59k|{
  220|  1.59k|  return LittleEndian::read(buffer, output.flags, output.value);
  221|  1.59k|}
_ZN8opendnp311Group30Var610ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  229|  1.59k|{
  230|  1.59k|  Group30Var6 value;
  231|  1.59k|  if(Read(buff, value))
  ------------------
  |  Branch (231:6): [True: 1.59k, False: 0]
  ------------------
  232|  1.59k|  {
  233|  1.59k|    output = AnalogFactory::From(value.flags, value.value);
  234|  1.59k|    return true;
  235|  1.59k|  }
  236|      0|  else
  237|      0|  {
  238|      0|    return false;
  239|      0|  }
  240|  1.59k|}

_ZN8opendnp311Group30Var14SizeEv:
   56|  1.16k|  static size_t Size() { return 5; }
_ZN8opendnp311Group30Var24SizeEv:
   79|  1.00k|  static size_t Size() { return 3; }
_ZN8opendnp311Group30Var34SizeEv:
  102|  1.02k|  static size_t Size() { return 4; }
_ZN8opendnp311Group30Var44SizeEv:
  124|  2.03k|  static size_t Size() { return 2; }
_ZN8opendnp311Group30Var54SizeEv:
  146|    966|  static size_t Size() { return 5; }
_ZN8opendnp311Group30Var64SizeEv:
  169|    765|  static size_t Size() { return 9; }

_ZN8opendnp311Group32Var1C2Ev:
   45|    757|Group32Var1::Group32Var1() : flags(0), value(0)
   46|    757|{}
_ZN8opendnp311Group32Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|    757|{
   50|    757|  return LittleEndian::read(buffer, output.flags, output.value);
   51|    757|}
_ZN8opendnp311Group32Var110ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
   59|    757|{
   60|    757|  Group32Var1 value;
   61|    757|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 757, False: 0]
  ------------------
   62|    757|  {
   63|    757|    output = AnalogFactory::From(value.flags, value.value);
   64|    757|    return true;
   65|    757|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|    757|}
_ZN8opendnp311Group32Var2C2Ev:
   79|  1.39k|Group32Var2::Group32Var2() : flags(0), value(0)
   80|  1.39k|{}
_ZN8opendnp311Group32Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.39k|{
   84|  1.39k|  return LittleEndian::read(buffer, output.flags, output.value);
   85|  1.39k|}
_ZN8opendnp311Group32Var210ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
   93|  1.39k|{
   94|  1.39k|  Group32Var2 value;
   95|  1.39k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.39k, False: 0]
  ------------------
   96|  1.39k|  {
   97|  1.39k|    output = AnalogFactory::From(value.flags, value.value);
   98|  1.39k|    return true;
   99|  1.39k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.39k|}
_ZN8opendnp311Group32Var3C2Ev:
  113|  1.47k|Group32Var3::Group32Var3() : flags(0), value(0), time(0)
  114|  1.47k|{}
_ZN8opendnp311Group32Var34ReadERN7ser4cpp4RSeqImEERS0_:
  117|  1.47k|{
  118|  1.47k|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  119|  1.47k|}
_ZN8opendnp311Group32Var310ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  127|  1.47k|{
  128|  1.47k|  Group32Var3 value;
  129|  1.47k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 1.47k, False: 0]
  ------------------
  130|  1.47k|  {
  131|  1.47k|    output = AnalogFactory::From(value.flags, value.value, value.time);
  132|  1.47k|    return true;
  133|  1.47k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  1.47k|}
_ZN8opendnp311Group32Var4C2Ev:
  147|  1.38k|Group32Var4::Group32Var4() : flags(0), value(0), time(0)
  148|  1.38k|{}
_ZN8opendnp311Group32Var44ReadERN7ser4cpp4RSeqImEERS0_:
  151|  1.38k|{
  152|  1.38k|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  153|  1.38k|}
_ZN8opendnp311Group32Var410ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  161|  1.38k|{
  162|  1.38k|  Group32Var4 value;
  163|  1.38k|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 1.38k, False: 0]
  ------------------
  164|  1.38k|  {
  165|  1.38k|    output = AnalogFactory::From(value.flags, value.value, value.time);
  166|  1.38k|    return true;
  167|  1.38k|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|  1.38k|}
_ZN8opendnp311Group32Var5C2Ev:
  181|  1.20k|Group32Var5::Group32Var5() : flags(0), value(0.0)
  182|  1.20k|{}
_ZN8opendnp311Group32Var54ReadERN7ser4cpp4RSeqImEERS0_:
  185|  1.20k|{
  186|  1.20k|  return LittleEndian::read(buffer, output.flags, output.value);
  187|  1.20k|}
_ZN8opendnp311Group32Var510ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  195|  1.20k|{
  196|  1.20k|  Group32Var5 value;
  197|  1.20k|  if(Read(buff, value))
  ------------------
  |  Branch (197:6): [True: 1.20k, False: 0]
  ------------------
  198|  1.20k|  {
  199|  1.20k|    output = AnalogFactory::From(value.flags, value.value);
  200|  1.20k|    return true;
  201|  1.20k|  }
  202|      0|  else
  203|      0|  {
  204|      0|    return false;
  205|      0|  }
  206|  1.20k|}
_ZN8opendnp311Group32Var6C2Ev:
  215|    930|Group32Var6::Group32Var6() : flags(0), value(0.0)
  216|    930|{}
_ZN8opendnp311Group32Var64ReadERN7ser4cpp4RSeqImEERS0_:
  219|    930|{
  220|    930|  return LittleEndian::read(buffer, output.flags, output.value);
  221|    930|}
_ZN8opendnp311Group32Var610ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  229|    930|{
  230|    930|  Group32Var6 value;
  231|    930|  if(Read(buff, value))
  ------------------
  |  Branch (231:6): [True: 930, False: 0]
  ------------------
  232|    930|  {
  233|    930|    output = AnalogFactory::From(value.flags, value.value);
  234|    930|    return true;
  235|    930|  }
  236|      0|  else
  237|      0|  {
  238|      0|    return false;
  239|      0|  }
  240|    930|}
_ZN8opendnp311Group32Var7C2Ev:
  249|    724|Group32Var7::Group32Var7() : flags(0), value(0.0), time(0)
  250|    724|{}
_ZN8opendnp311Group32Var74ReadERN7ser4cpp4RSeqImEERS0_:
  253|    724|{
  254|    724|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  255|    724|}
_ZN8opendnp311Group32Var710ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  263|    724|{
  264|    724|  Group32Var7 value;
  265|    724|  if(Read(buff, value))
  ------------------
  |  Branch (265:6): [True: 724, False: 0]
  ------------------
  266|    724|  {
  267|    724|    output = AnalogFactory::From(value.flags, value.value, value.time);
  268|    724|    return true;
  269|    724|  }
  270|      0|  else
  271|      0|  {
  272|      0|    return false;
  273|      0|  }
  274|    724|}
_ZN8opendnp311Group32Var8C2Ev:
  283|    932|Group32Var8::Group32Var8() : flags(0), value(0.0), time(0)
  284|    932|{}
_ZN8opendnp311Group32Var84ReadERN7ser4cpp4RSeqImEERS0_:
  287|    932|{
  288|    932|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  289|    932|}
_ZN8opendnp311Group32Var810ReadTargetERN7ser4cpp4RSeqImEERNS_6AnalogE:
  297|    932|{
  298|    932|  Group32Var8 value;
  299|    932|  if(Read(buff, value))
  ------------------
  |  Branch (299:6): [True: 932, False: 0]
  ------------------
  300|    932|  {
  301|    932|    output = AnalogFactory::From(value.flags, value.value, value.time);
  302|    932|    return true;
  303|    932|  }
  304|      0|  else
  305|      0|  {
  306|      0|    return false;
  307|      0|  }
  308|    932|}

_ZN8opendnp311Group32Var14SizeEv:
   56|    513|  static size_t Size() { return 5; }
_ZN8opendnp311Group32Var24SizeEv:
   78|    881|  static size_t Size() { return 3; }
_ZN8opendnp311Group32Var34SizeEv:
  100|  1.33k|  static size_t Size() { return 11; }
_ZN8opendnp311Group32Var44SizeEv:
  123|    902|  static size_t Size() { return 9; }
_ZN8opendnp311Group32Var54SizeEv:
  146|    780|  static size_t Size() { return 5; }
_ZN8opendnp311Group32Var64SizeEv:
  168|    682|  static size_t Size() { return 9; }
_ZN8opendnp311Group32Var74SizeEv:
  190|    857|  static size_t Size() { return 11; }
_ZN8opendnp311Group32Var84SizeEv:
  213|  1.34k|  static size_t Size() { return 15; }

_ZN8opendnp310Group4Var1C2Ev:
   45|  2.14k|Group4Var1::Group4Var1() : flags(0)
   46|  2.14k|{}
_ZN8opendnp310Group4Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  2.14k|{
   50|  2.14k|  return LittleEndian::read(buffer, output.flags);
   51|  2.14k|}
_ZN8opendnp310Group4Var110ReadTargetERN7ser4cpp4RSeqImEERNS_15DoubleBitBinaryE:
   59|  2.14k|{
   60|  2.14k|  Group4Var1 value;
   61|  2.14k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 2.14k, False: 0]
  ------------------
   62|  2.14k|  {
   63|  2.14k|    output = DoubleBitBinaryFactory::From(value.flags);
   64|  2.14k|    return true;
   65|  2.14k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  2.14k|}
_ZN8opendnp310Group4Var2C2Ev:
   79|    536|Group4Var2::Group4Var2() : flags(0), time(0)
   80|    536|{}
_ZN8opendnp310Group4Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|    536|{
   84|    536|  return LittleEndian::read(buffer, output.flags, output.time);
   85|    536|}
_ZN8opendnp310Group4Var210ReadTargetERN7ser4cpp4RSeqImEERNS_15DoubleBitBinaryE:
   93|    536|{
   94|    536|  Group4Var2 value;
   95|    536|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 536, False: 0]
  ------------------
   96|    536|  {
   97|    536|    output = DoubleBitBinaryFactory::From(value.flags, value.time);
   98|    536|    return true;
   99|    536|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|    536|}
_ZN8opendnp310Group4Var3C2Ev:
  113|  1.84k|Group4Var3::Group4Var3() : flags(0), time(0)
  114|  1.84k|{}
_ZN8opendnp310Group4Var34ReadERN7ser4cpp4RSeqImEERS0_:
  117|  1.84k|{
  118|  1.84k|  return LittleEndian::read(buffer, output.flags, output.time);
  119|  1.84k|}
_ZN8opendnp310Group4Var310ReadTargetERN7ser4cpp4RSeqImEERNS_15DoubleBitBinaryE:
  127|  1.84k|{
  128|  1.84k|  Group4Var3 value;
  129|  1.84k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 1.84k, False: 0]
  ------------------
  130|  1.84k|  {
  131|  1.84k|    output = DoubleBitBinaryFactory::From(value.flags, value.time);
  132|  1.84k|    return true;
  133|  1.84k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  1.84k|}

_ZN8opendnp310Group4Var14SizeEv:
   56|  1.29k|  static size_t Size() { return 1; }
_ZN8opendnp310Group4Var24SizeEv:
   76|    609|  static size_t Size() { return 7; }
_ZN8opendnp310Group4Var34SizeEv:
   97|  2.53k|  static size_t Size() { return 3; }

_ZN8opendnp311Group40Var1C2Ev:
   45|  1.65k|Group40Var1::Group40Var1() : flags(0), value(0)
   46|  1.65k|{}
_ZN8opendnp311Group40Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  1.65k|{
   50|  1.65k|  return LittleEndian::read(buffer, output.flags, output.value);
   51|  1.65k|}
_ZN8opendnp311Group40Var110ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
   59|  1.65k|{
   60|  1.65k|  Group40Var1 value;
   61|  1.65k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 1.65k, False: 0]
  ------------------
   62|  1.65k|  {
   63|  1.65k|    output = AnalogOutputStatusFactory::From(value.flags, value.value);
   64|  1.65k|    return true;
   65|  1.65k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  1.65k|}
_ZN8opendnp311Group40Var2C2Ev:
   79|  1.82k|Group40Var2::Group40Var2() : flags(0), value(0)
   80|  1.82k|{}
_ZN8opendnp311Group40Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  1.82k|{
   84|  1.82k|  return LittleEndian::read(buffer, output.flags, output.value);
   85|  1.82k|}
_ZN8opendnp311Group40Var210ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
   93|  1.82k|{
   94|  1.82k|  Group40Var2 value;
   95|  1.82k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 1.82k, False: 0]
  ------------------
   96|  1.82k|  {
   97|  1.82k|    output = AnalogOutputStatusFactory::From(value.flags, value.value);
   98|  1.82k|    return true;
   99|  1.82k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  1.82k|}
_ZN8opendnp311Group40Var3C2Ev:
  113|  2.48k|Group40Var3::Group40Var3() : flags(0), value(0.0)
  114|  2.48k|{}
_ZN8opendnp311Group40Var34ReadERN7ser4cpp4RSeqImEERS0_:
  117|  2.48k|{
  118|  2.48k|  return LittleEndian::read(buffer, output.flags, output.value);
  119|  2.48k|}
_ZN8opendnp311Group40Var310ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
  127|  2.48k|{
  128|  2.48k|  Group40Var3 value;
  129|  2.48k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 2.48k, False: 0]
  ------------------
  130|  2.48k|  {
  131|  2.48k|    output = AnalogOutputStatusFactory::From(value.flags, value.value);
  132|  2.48k|    return true;
  133|  2.48k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  2.48k|}
_ZN8opendnp311Group40Var4C2Ev:
  147|  1.53k|Group40Var4::Group40Var4() : flags(0), value(0.0)
  148|  1.53k|{}
_ZN8opendnp311Group40Var44ReadERN7ser4cpp4RSeqImEERS0_:
  151|  1.53k|{
  152|  1.53k|  return LittleEndian::read(buffer, output.flags, output.value);
  153|  1.53k|}
_ZN8opendnp311Group40Var410ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
  161|  1.53k|{
  162|  1.53k|  Group40Var4 value;
  163|  1.53k|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 1.53k, False: 0]
  ------------------
  164|  1.53k|  {
  165|  1.53k|    output = AnalogOutputStatusFactory::From(value.flags, value.value);
  166|  1.53k|    return true;
  167|  1.53k|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|  1.53k|}

_ZN8opendnp311Group40Var14SizeEv:
   56|  1.21k|  static size_t Size() { return 5; }
_ZN8opendnp311Group40Var24SizeEv:
   79|  1.13k|  static size_t Size() { return 3; }
_ZN8opendnp311Group40Var34SizeEv:
  102|  1.67k|  static size_t Size() { return 5; }
_ZN8opendnp311Group40Var44SizeEv:
  125|  1.24k|  static size_t Size() { return 9; }

_ZN8opendnp311Group41Var14SizeEv:
   56|    281|  static size_t Size() { return 5; }
_ZN8opendnp311Group41Var24SizeEv:
   77|    572|  static size_t Size() { return 3; }
_ZN8opendnp311Group41Var34SizeEv:
   98|    540|  static size_t Size() { return 5; }
_ZN8opendnp311Group41Var44SizeEv:
  119|    783|  static size_t Size() { return 9; }

_ZN8opendnp311Group42Var1C2Ev:
   45|    578|Group42Var1::Group42Var1() : flags(0), value(0)
   46|    578|{}
_ZN8opendnp311Group42Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|    578|{
   50|    578|  return LittleEndian::read(buffer, output.flags, output.value);
   51|    578|}
_ZN8opendnp311Group42Var110ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
   59|    578|{
   60|    578|  Group42Var1 value;
   61|    578|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 578, False: 0]
  ------------------
   62|    578|  {
   63|    578|    output = AnalogOutputStatusFactory::From(value.flags, value.value);
   64|    578|    return true;
   65|    578|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|    578|}
_ZN8opendnp311Group42Var2C2Ev:
   79|  2.04k|Group42Var2::Group42Var2() : flags(0), value(0)
   80|  2.04k|{}
_ZN8opendnp311Group42Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  2.04k|{
   84|  2.04k|  return LittleEndian::read(buffer, output.flags, output.value);
   85|  2.04k|}
_ZN8opendnp311Group42Var210ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
   93|  2.04k|{
   94|  2.04k|  Group42Var2 value;
   95|  2.04k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 2.04k, False: 0]
  ------------------
   96|  2.04k|  {
   97|  2.04k|    output = AnalogOutputStatusFactory::From(value.flags, value.value);
   98|  2.04k|    return true;
   99|  2.04k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  2.04k|}
_ZN8opendnp311Group42Var3C2Ev:
  113|  1.41k|Group42Var3::Group42Var3() : flags(0), value(0), time(0)
  114|  1.41k|{}
_ZN8opendnp311Group42Var34ReadERN7ser4cpp4RSeqImEERS0_:
  117|  1.41k|{
  118|  1.41k|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  119|  1.41k|}
_ZN8opendnp311Group42Var310ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
  127|  1.41k|{
  128|  1.41k|  Group42Var3 value;
  129|  1.41k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 1.41k, False: 0]
  ------------------
  130|  1.41k|  {
  131|  1.41k|    output = AnalogOutputStatusFactory::From(value.flags, value.value, value.time);
  132|  1.41k|    return true;
  133|  1.41k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  1.41k|}
_ZN8opendnp311Group42Var4C2Ev:
  147|    699|Group42Var4::Group42Var4() : flags(0), value(0), time(0)
  148|    699|{}
_ZN8opendnp311Group42Var44ReadERN7ser4cpp4RSeqImEERS0_:
  151|    699|{
  152|    699|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  153|    699|}
_ZN8opendnp311Group42Var410ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
  161|    699|{
  162|    699|  Group42Var4 value;
  163|    699|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 699, False: 0]
  ------------------
  164|    699|  {
  165|    699|    output = AnalogOutputStatusFactory::From(value.flags, value.value, value.time);
  166|    699|    return true;
  167|    699|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|    699|}
_ZN8opendnp311Group42Var5C2Ev:
  181|  1.42k|Group42Var5::Group42Var5() : flags(0), value(0.0)
  182|  1.42k|{}
_ZN8opendnp311Group42Var54ReadERN7ser4cpp4RSeqImEERS0_:
  185|  1.42k|{
  186|  1.42k|  return LittleEndian::read(buffer, output.flags, output.value);
  187|  1.42k|}
_ZN8opendnp311Group42Var510ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
  195|  1.42k|{
  196|  1.42k|  Group42Var5 value;
  197|  1.42k|  if(Read(buff, value))
  ------------------
  |  Branch (197:6): [True: 1.42k, False: 0]
  ------------------
  198|  1.42k|  {
  199|  1.42k|    output = AnalogOutputStatusFactory::From(value.flags, value.value);
  200|  1.42k|    return true;
  201|  1.42k|  }
  202|      0|  else
  203|      0|  {
  204|      0|    return false;
  205|      0|  }
  206|  1.42k|}
_ZN8opendnp311Group42Var6C2Ev:
  215|  1.13k|Group42Var6::Group42Var6() : flags(0), value(0.0)
  216|  1.13k|{}
_ZN8opendnp311Group42Var64ReadERN7ser4cpp4RSeqImEERS0_:
  219|  1.13k|{
  220|  1.13k|  return LittleEndian::read(buffer, output.flags, output.value);
  221|  1.13k|}
_ZN8opendnp311Group42Var610ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
  229|  1.13k|{
  230|  1.13k|  Group42Var6 value;
  231|  1.13k|  if(Read(buff, value))
  ------------------
  |  Branch (231:6): [True: 1.13k, False: 0]
  ------------------
  232|  1.13k|  {
  233|  1.13k|    output = AnalogOutputStatusFactory::From(value.flags, value.value);
  234|  1.13k|    return true;
  235|  1.13k|  }
  236|      0|  else
  237|      0|  {
  238|      0|    return false;
  239|      0|  }
  240|  1.13k|}
_ZN8opendnp311Group42Var7C2Ev:
  249|  1.22k|Group42Var7::Group42Var7() : flags(0), value(0.0), time(0)
  250|  1.22k|{}
_ZN8opendnp311Group42Var74ReadERN7ser4cpp4RSeqImEERS0_:
  253|  1.22k|{
  254|  1.22k|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  255|  1.22k|}
_ZN8opendnp311Group42Var710ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
  263|  1.22k|{
  264|  1.22k|  Group42Var7 value;
  265|  1.22k|  if(Read(buff, value))
  ------------------
  |  Branch (265:6): [True: 1.22k, False: 0]
  ------------------
  266|  1.22k|  {
  267|  1.22k|    output = AnalogOutputStatusFactory::From(value.flags, value.value, value.time);
  268|  1.22k|    return true;
  269|  1.22k|  }
  270|      0|  else
  271|      0|  {
  272|      0|    return false;
  273|      0|  }
  274|  1.22k|}
_ZN8opendnp311Group42Var8C2Ev:
  283|    948|Group42Var8::Group42Var8() : flags(0), value(0.0), time(0)
  284|    948|{}
_ZN8opendnp311Group42Var84ReadERN7ser4cpp4RSeqImEERS0_:
  287|    948|{
  288|    948|  return LittleEndian::read(buffer, output.flags, output.value, output.time);
  289|    948|}
_ZN8opendnp311Group42Var810ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogOutputStatusE:
  297|    948|{
  298|    948|  Group42Var8 value;
  299|    948|  if(Read(buff, value))
  ------------------
  |  Branch (299:6): [True: 948, False: 0]
  ------------------
  300|    948|  {
  301|    948|    output = AnalogOutputStatusFactory::From(value.flags, value.value, value.time);
  302|    948|    return true;
  303|    948|  }
  304|      0|  else
  305|      0|  {
  306|      0|    return false;
  307|      0|  }
  308|    948|}

_ZN8opendnp311Group42Var14SizeEv:
   56|    607|  static size_t Size() { return 5; }
_ZN8opendnp311Group42Var24SizeEv:
   78|  1.43k|  static size_t Size() { return 3; }
_ZN8opendnp311Group42Var34SizeEv:
  100|    896|  static size_t Size() { return 11; }
_ZN8opendnp311Group42Var44SizeEv:
  123|    752|  static size_t Size() { return 9; }
_ZN8opendnp311Group42Var54SizeEv:
  146|    964|  static size_t Size() { return 5; }
_ZN8opendnp311Group42Var64SizeEv:
  168|    839|  static size_t Size() { return 9; }
_ZN8opendnp311Group42Var74SizeEv:
  190|    970|  static size_t Size() { return 11; }
_ZN8opendnp311Group42Var84SizeEv:
  213|  1.10k|  static size_t Size() { return 15; }

_ZN8opendnp311Group43Var1C2Ev:
   45|  1.74k|Group43Var1::Group43Var1() : status(0), value(0)
   46|  1.74k|{}
_ZN8opendnp311Group43Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  1.74k|{
   50|  1.74k|  return LittleEndian::read(buffer, output.status, output.value);
   51|  1.74k|}
_ZN8opendnp311Group43Var110ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogCommandEventE:
   59|  1.74k|{
   60|  1.74k|  Group43Var1 value;
   61|  1.74k|  if(Read(buff, value))
  ------------------
  |  Branch (61:6): [True: 1.74k, False: 0]
  ------------------
   62|  1.74k|  {
   63|  1.74k|    output = AnalogCommandEventFactory::From(value.status, value.value);
   64|  1.74k|    return true;
   65|  1.74k|  }
   66|      0|  else
   67|      0|  {
   68|      0|    return false;
   69|      0|  }
   70|  1.74k|}
_ZN8opendnp311Group43Var2C2Ev:
   79|  2.57k|Group43Var2::Group43Var2() : status(0), value(0)
   80|  2.57k|{}
_ZN8opendnp311Group43Var24ReadERN7ser4cpp4RSeqImEERS0_:
   83|  2.57k|{
   84|  2.57k|  return LittleEndian::read(buffer, output.status, output.value);
   85|  2.57k|}
_ZN8opendnp311Group43Var210ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogCommandEventE:
   93|  2.57k|{
   94|  2.57k|  Group43Var2 value;
   95|  2.57k|  if(Read(buff, value))
  ------------------
  |  Branch (95:6): [True: 2.57k, False: 0]
  ------------------
   96|  2.57k|  {
   97|  2.57k|    output = AnalogCommandEventFactory::From(value.status, value.value);
   98|  2.57k|    return true;
   99|  2.57k|  }
  100|      0|  else
  101|      0|  {
  102|      0|    return false;
  103|      0|  }
  104|  2.57k|}
_ZN8opendnp311Group43Var3C2Ev:
  113|  1.02k|Group43Var3::Group43Var3() : status(0), value(0), time(0)
  114|  1.02k|{}
_ZN8opendnp311Group43Var34ReadERN7ser4cpp4RSeqImEERS0_:
  117|  1.02k|{
  118|  1.02k|  return LittleEndian::read(buffer, output.status, output.value, output.time);
  119|  1.02k|}
_ZN8opendnp311Group43Var310ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogCommandEventE:
  127|  1.02k|{
  128|  1.02k|  Group43Var3 value;
  129|  1.02k|  if(Read(buff, value))
  ------------------
  |  Branch (129:6): [True: 1.02k, False: 0]
  ------------------
  130|  1.02k|  {
  131|  1.02k|    output = AnalogCommandEventFactory::From(value.status, value.value, value.time);
  132|  1.02k|    return true;
  133|  1.02k|  }
  134|      0|  else
  135|      0|  {
  136|      0|    return false;
  137|      0|  }
  138|  1.02k|}
_ZN8opendnp311Group43Var4C2Ev:
  147|  1.33k|Group43Var4::Group43Var4() : status(0), value(0), time(0)
  148|  1.33k|{}
_ZN8opendnp311Group43Var44ReadERN7ser4cpp4RSeqImEERS0_:
  151|  1.33k|{
  152|  1.33k|  return LittleEndian::read(buffer, output.status, output.value, output.time);
  153|  1.33k|}
_ZN8opendnp311Group43Var410ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogCommandEventE:
  161|  1.33k|{
  162|  1.33k|  Group43Var4 value;
  163|  1.33k|  if(Read(buff, value))
  ------------------
  |  Branch (163:6): [True: 1.33k, False: 0]
  ------------------
  164|  1.33k|  {
  165|  1.33k|    output = AnalogCommandEventFactory::From(value.status, value.value, value.time);
  166|  1.33k|    return true;
  167|  1.33k|  }
  168|      0|  else
  169|      0|  {
  170|      0|    return false;
  171|      0|  }
  172|  1.33k|}
_ZN8opendnp311Group43Var5C2Ev:
  181|  3.08k|Group43Var5::Group43Var5() : status(0), value(0.0)
  182|  3.08k|{}
_ZN8opendnp311Group43Var54ReadERN7ser4cpp4RSeqImEERS0_:
  185|  3.08k|{
  186|  3.08k|  return LittleEndian::read(buffer, output.status, output.value);
  187|  3.08k|}
_ZN8opendnp311Group43Var510ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogCommandEventE:
  195|  3.08k|{
  196|  3.08k|  Group43Var5 value;
  197|  3.08k|  if(Read(buff, value))
  ------------------
  |  Branch (197:6): [True: 3.08k, False: 0]
  ------------------
  198|  3.08k|  {
  199|  3.08k|    output = AnalogCommandEventFactory::From(value.status, value.value);
  200|  3.08k|    return true;
  201|  3.08k|  }
  202|      0|  else
  203|      0|  {
  204|      0|    return false;
  205|      0|  }
  206|  3.08k|}
_ZN8opendnp311Group43Var6C2Ev:
  215|    939|Group43Var6::Group43Var6() : status(0), value(0.0)
  216|    939|{}
_ZN8opendnp311Group43Var64ReadERN7ser4cpp4RSeqImEERS0_:
  219|    939|{
  220|    939|  return LittleEndian::read(buffer, output.status, output.value);
  221|    939|}
_ZN8opendnp311Group43Var610ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogCommandEventE:
  229|    939|{
  230|    939|  Group43Var6 value;
  231|    939|  if(Read(buff, value))
  ------------------
  |  Branch (231:6): [True: 939, False: 0]
  ------------------
  232|    939|  {
  233|    939|    output = AnalogCommandEventFactory::From(value.status, value.value);
  234|    939|    return true;
  235|    939|  }
  236|      0|  else
  237|      0|  {
  238|      0|    return false;
  239|      0|  }
  240|    939|}
_ZN8opendnp311Group43Var7C2Ev:
  249|    694|Group43Var7::Group43Var7() : status(0), value(0.0), time(0)
  250|    694|{}
_ZN8opendnp311Group43Var74ReadERN7ser4cpp4RSeqImEERS0_:
  253|    694|{
  254|    694|  return LittleEndian::read(buffer, output.status, output.value, output.time);
  255|    694|}
_ZN8opendnp311Group43Var710ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogCommandEventE:
  263|    694|{
  264|    694|  Group43Var7 value;
  265|    694|  if(Read(buff, value))
  ------------------
  |  Branch (265:6): [True: 694, False: 0]
  ------------------
  266|    694|  {
  267|    694|    output = AnalogCommandEventFactory::From(value.status, value.value, value.time);
  268|    694|    return true;
  269|    694|  }
  270|      0|  else
  271|      0|  {
  272|      0|    return false;
  273|      0|  }
  274|    694|}
_ZN8opendnp311Group43Var8C2Ev:
  283|  1.45k|Group43Var8::Group43Var8() : status(0), value(0.0), time(0)
  284|  1.45k|{}
_ZN8opendnp311Group43Var84ReadERN7ser4cpp4RSeqImEERS0_:
  287|  1.45k|{
  288|  1.45k|  return LittleEndian::read(buffer, output.status, output.value, output.time);
  289|  1.45k|}
_ZN8opendnp311Group43Var810ReadTargetERN7ser4cpp4RSeqImEERNS_18AnalogCommandEventE:
  297|  1.45k|{
  298|  1.45k|  Group43Var8 value;
  299|  1.45k|  if(Read(buff, value))
  ------------------
  |  Branch (299:6): [True: 1.45k, False: 0]
  ------------------
  300|  1.45k|  {
  301|  1.45k|    output = AnalogCommandEventFactory::From(value.status, value.value, value.time);
  302|  1.45k|    return true;
  303|  1.45k|  }
  304|      0|  else
  305|      0|  {
  306|      0|    return false;
  307|      0|  }
  308|  1.45k|}

_ZN8opendnp311Group43Var14SizeEv:
   50|    959|  static size_t Size() { return 5; }
_ZN8opendnp311Group43Var24SizeEv:
   71|    855|  static size_t Size() { return 3; }
_ZN8opendnp311Group43Var34SizeEv:
   92|  1.13k|  static size_t Size() { return 11; }
_ZN8opendnp311Group43Var44SizeEv:
  114|  1.24k|  static size_t Size() { return 9; }
_ZN8opendnp311Group43Var54SizeEv:
  136|    923|  static size_t Size() { return 5; }
_ZN8opendnp311Group43Var64SizeEv:
  157|    735|  static size_t Size() { return 9; }
_ZN8opendnp311Group43Var74SizeEv:
  178|    934|  static size_t Size() { return 11; }
_ZN8opendnp311Group43Var84SizeEv:
  200|  1.23k|  static size_t Size() { return 15; }

_ZN8opendnp311Group50Var1C2Ev:
   45|  2.87k|Group50Var1::Group50Var1() : time(0)
   46|  2.87k|{}
_ZN8opendnp311Group50Var14ReadERN7ser4cpp4RSeqImEERS0_:
   49|  2.87k|{
   50|  2.87k|  return LittleEndian::read(buffer, output.time);
   51|  2.87k|}
_ZN8opendnp311Group50Var4C2Ev:
   75|  2.39k|Group50Var4::Group50Var4() : time(0), interval(0), units(0)
   76|  2.39k|{}
_ZN8opendnp311Group50Var44ReadERN7ser4cpp4RSeqImEERS0_:
   79|  2.39k|{
   80|  2.39k|  return LittleEndian::read(buffer, output.time, output.interval, output.units);
   81|  2.39k|}
_ZN8opendnp311Group50Var410ReadTargetERN7ser4cpp4RSeqImEERNS_15TimeAndIntervalE:
   89|  2.39k|{
   90|  2.39k|  Group50Var4 value;
   91|  2.39k|  if(Read(buff, value))
  ------------------
  |  Branch (91:6): [True: 2.39k, False: 0]
  ------------------
   92|  2.39k|  {
   93|  2.39k|    output = TimeAndIntervalFactory::From(value.time, value.interval, value.units);
   94|  2.39k|    return true;
   95|  2.39k|  }
   96|      0|  else
   97|      0|  {
   98|      0|    return false;
   99|      0|  }
  100|  2.39k|}

_ZN8opendnp311Group50Var44SizeEv:
   78|  2.29k|  static size_t Size() { return 11; }
_ZN8opendnp311Group50Var14SizeEv:
   50|  2.39k|  static size_t Size() { return 6; }
_ZN8opendnp311Group50Var34SizeEv:
   64|    578|  static size_t Size() { return 6; }

_ZN8opendnp311Group51Var1C2Ev:
   43|  2.05k|Group51Var1::Group51Var1() : time(0)
   44|  2.05k|{}
_ZN8opendnp311Group51Var14ReadERN7ser4cpp4RSeqImEERS0_:
   47|    901|{
   48|    901|  return LittleEndian::read(buffer, output.time);
   49|    901|}
_ZN8opendnp311Group51Var2C2Ev:
   58|  1.07k|Group51Var2::Group51Var2() : time(0)
   59|  1.07k|{}
_ZN8opendnp311Group51Var24ReadERN7ser4cpp4RSeqImEERS0_:
   62|    479|{
   63|    479|  return LittleEndian::read(buffer, output.time);
   64|    479|}

_ZN8opendnp311Group51Var14SizeEv:
   48|  2.41k|  static size_t Size() { return 6; }
_ZN8opendnp311Group51Var24SizeEv:
   62|  1.40k|  static size_t Size() { return 6; }

_ZN8opendnp311Group52Var14SizeEv:
   48|  1.01k|  static size_t Size() { return 2; }
_ZN8opendnp311Group52Var24SizeEv:
   62|  1.10k|  static size_t Size() { return 2; }

_ZN8opendnp311Group60Var22IDEv:
   48|  6.25k|  static GroupVariationID ID() { return GroupVariationID(60,2); }
_ZN8opendnp311Group60Var32IDEv:
   54|  6.25k|  static GroupVariationID ID() { return GroupVariationID(60,3); }
_ZN8opendnp311Group60Var42IDEv:
   60|  6.25k|  static GroupVariationID ID() { return GroupVariationID(60,4); }

_ZN8opendnp315AssignClassTaskC2ERKNSt3__110shared_ptrINS_11TaskContextEEERNS_18IMasterApplicationERKNS_12TaskBehaviorERKNS_6LoggerE:
   33|  6.25k|    : IMasterTask(context, application, behavior, logger, TaskConfig::Default())
   34|  6.25k|{
   35|  6.25k|}
_ZNK8opendnp315AssignClassTask9IsEnabledEv:
   51|  18.7k|{
   52|  18.7k|    return this->application->AssignClassDuringStartup();
   53|  18.7k|}

_ZNK8opendnp315AssignClassTask11IsRecurringEv:
   44|  9.47k|    {
   45|  9.47k|        return true;
   46|  9.47k|    }
_ZNK8opendnp315AssignClassTask8PriorityEv:
   51|  6.25k|    {
   52|  6.25k|        return priority::ASSIGN_CLASS;
   53|  6.25k|    }

_ZN8opendnp316ClearRestartTaskC2ERKNSt3__110shared_ptrINS_11TaskContextEEERNS_18IMasterApplicationERKNS_6LoggerE:
   34|  6.25k|    : IMasterTask(context, application, TaskBehavior::ReactsToIINOnly(), logger, TaskConfig::Default())
   35|  6.25k|{
   36|  6.25k|}

_ZNK8opendnp316ClearRestartTask11IsRecurringEv:
   46|  9.47k|    {
   47|  9.47k|        return true;
   48|  9.47k|    }
_ZNK8opendnp316ClearRestartTask8PriorityEv:
   51|  6.26k|    {
   52|  6.26k|        return priority::CLEAR_RESTART;
   53|  6.26k|    }
_ZNK8opendnp316ClearRestartTask11GetTaskTypeEv:
   64|      4|    {
   65|      4|        return MasterTaskType::CLEAR_RESTART;
   66|      4|    }
_ZNK8opendnp316ClearRestartTask9IsEnabledEv:
   69|  25.0k|    {
   70|  25.0k|        return true;
   71|  25.0k|    }

_ZN8opendnp322DisableUnsolicitedTaskC2ERKNSt3__110shared_ptrINS_11TaskContextEEERNS_18IMasterApplicationERKNS_12TaskBehaviorERKNS_6LoggerE:
   32|  6.25k|    : IMasterTask(context, application, behavior, logger, TaskConfig::Default())
   33|  6.25k|{
   34|  6.25k|}
_ZN8opendnp322DisableUnsolicitedTask12BuildRequestERNS_11APDURequestEh:
   37|  6.25k|{
   38|  6.25k|    build::DisableUnsolicited(request, seq);
   39|  6.25k|    return true;
   40|  6.25k|}
_ZN8opendnp322DisableUnsolicitedTask15ProcessResponseERKNS_18APDUResponseHeaderERKN7ser4cpp4RSeqImEE:
   44|     10|{
   45|     10|    return ValidateNullResponse(header, objects) ? ResponseResult::OK_FINAL : ResponseResult::ERROR_BAD_RESPONSE;
  ------------------
  |  Branch (45:12): [True: 2, False: 8]
  ------------------
   46|     10|}

_ZNK8opendnp322DisableUnsolicitedTask11IsRecurringEv:
   44|  6.27k|    {
   45|  6.27k|        return true;
   46|  6.27k|    }
_ZNK8opendnp322DisableUnsolicitedTask8PriorityEv:
   51|  12.5k|    {
   52|  12.5k|        return priority::DISABLE_UNSOLICITED;
   53|  12.5k|    }
_ZNK8opendnp322DisableUnsolicitedTask19BlocksLowerPriorityEv:
   56|      8|    {
   57|      8|        return true;
   58|      8|    }
_ZNK8opendnp322DisableUnsolicitedTask11GetTaskTypeEv:
   62|  6.26k|    {
   63|  6.26k|        return MasterTaskType::DISABLE_UNSOLICITED;
   64|  6.26k|    }

_ZN8opendnp321EnableUnsolicitedTaskC2ERKNSt3__110shared_ptrINS_11TaskContextEEERNS_18IMasterApplicationERKNS_12TaskBehaviorENS_10ClassFieldERKNS_6LoggerE:
   35|  6.25k|    : IMasterTask(context, app, behavior, logger, TaskConfig::Default()), enabledClasses(enabledClasses)
   36|  6.25k|{
   37|  6.25k|}
_ZNK8opendnp321EnableUnsolicitedTask9IsEnabledEv:
   46|  12.5k|{
   47|  12.5k|    return enabledClasses.HasEventClass();
   48|  12.5k|}

_ZNK8opendnp321EnableUnsolicitedTask11IsRecurringEv:
   46|  9.47k|    {
   47|  9.47k|        return true;
   48|  9.47k|    }
_ZNK8opendnp321EnableUnsolicitedTask8PriorityEv:
   58|  6.26k|    {
   59|  6.26k|        return priority::ENABLE_UNSOLICITED;
   60|  6.26k|    }

_ZN8opendnp313EventScanTaskC2ERKNSt3__110shared_ptrINS_11TaskContextEEERNS_18IMasterApplicationENS2_INS_11ISOEHandlerEEENS_10ClassFieldERKNS_6LoggerE:
   39|  6.25k|    : PollTaskBase(
   40|  6.25k|          context, application, std::move(soeHandler), TaskBehavior::ReactsToIINOnly(), logger, TaskConfig::Default()),
   41|  6.25k|      classes(classes.OnlyEventClasses())
   42|  6.25k|{
   43|  6.25k|}
_ZNK8opendnp313EventScanTask9IsEnabledEv:
   52|  6.26k|{
   53|  6.26k|    return classes.HasEventClass();
   54|  6.26k|}

_ZNK8opendnp313EventScanTask11IsRecurringEv:
   46|  9.47k|    {
   47|  9.47k|        return true;
   48|  9.47k|    }

_ZN8opendnp316IMasterSchedulerD2Ev:
   36|     10|    virtual ~IMasterScheduler() {}

_ZN8opendnp311IMasterTaskC2ENSt3__110shared_ptrINS_11TaskContextEEERNS_18IMasterApplicationENS_12TaskBehaviorERKNS_6LoggerENS_10TaskConfigE:
   36|  37.5k|    : context(std::move(context)), application(&app), logger(logger), config(config), behavior(std::move(behavior))
   37|  37.5k|{
   38|  37.5k|}
_ZN8opendnp311IMasterTaskD2Ev:
   41|     60|{
   42|     60|    context->RemoveBlock(*this);
   43|       |
   44|     60|    if (config.pCallback)
  ------------------
  |  Branch (44:9): [True: 0, False: 60]
  ------------------
   45|      0|    {
   46|      0|        config.pCallback->OnDestroyed();
   47|      0|    }
   48|     60|}
_ZNK8opendnp311IMasterTask14ExpirationTimeEv:
   51|   118k|{
   52|   118k|    return this->IsEnabled() ? this->behavior.GetExpiration() : Timestamp::Max();
  ------------------
  |  Branch (52:12): [True: 93.9k, False: 25.0k]
  ------------------
   53|   118k|}
_ZN8opendnp311IMasterTask10OnResponseERKNS_18APDUResponseHeaderERKN7ser4cpp4RSeqImEENS_9TimestampE:
   63|     10|{
   64|     10|    auto result = this->ProcessResponse(response, objects);
   65|       |
   66|     10|    switch (result)
   67|     10|    {
   68|      8|    case (ResponseResult::ERROR_BAD_RESPONSE):
  ------------------
  |  Branch (68:5): [True: 8, False: 2]
  ------------------
   69|      8|        this->CompleteTask(TaskCompletion::FAILURE_BAD_RESPONSE, now);
   70|      8|        break;
   71|      2|    case (ResponseResult::OK_FINAL):
  ------------------
  |  Branch (71:5): [True: 2, False: 8]
  ------------------
   72|      2|        this->CompleteTask(TaskCompletion::SUCCESS, now);
   73|      2|        break;
   74|      0|    default:
  ------------------
  |  Branch (74:5): [True: 0, False: 10]
  ------------------
   75|      0|        break;
   76|     10|    }
   77|       |
   78|     10|    return result;
   79|     10|}
_ZN8opendnp311IMasterTask12CompleteTaskENS_14TaskCompletionENS_9TimestampE:
   82|     10|{
   83|     10|    switch (result)
   84|     10|    {
   85|       |
   86|       |    // retry immediately when the comms come back online
   87|      0|    case (TaskCompletion::FAILURE_NO_COMMS):
  ------------------
  |  Branch (87:5): [True: 0, False: 10]
  ------------------
   88|      0|        this->behavior.Reset();
   89|      0|        break;
   90|       |
   91|       |    // back-off exponentially using the task retry
   92|      0|    case (TaskCompletion::FAILURE_RESPONSE_TIMEOUT):
  ------------------
  |  Branch (92:5): [True: 0, False: 10]
  ------------------
   93|      0|    {
   94|      0|        this->behavior.OnResponseTimeout(now);
   95|      0|        if (this->BlocksLowerPriority())
  ------------------
  |  Branch (95:13): [True: 0, False: 0]
  ------------------
   96|      0|            this->context->AddBlock(*this);
   97|      0|        break;
   98|      0|    }
   99|       |
  100|      2|    case (TaskCompletion::SUCCESS):
  ------------------
  |  Branch (100:5): [True: 2, False: 8]
  ------------------
  101|      2|        this->behavior.OnSuccess(now);
  102|      2|        this->context->RemoveBlock(*this);
  103|      2|        break;
  104|       |
  105|       |    /**
  106|       |    FAILURE_BAD_RESPONSE
  107|       |    FAILURE_START_TIMEOUT
  108|       |    FAILURE_MESSAGE_FORMAT_ERROR
  109|       |    */
  110|      8|    default:
  ------------------
  |  Branch (110:5): [True: 8, False: 2]
  ------------------
  111|      8|    {
  112|      8|        this->behavior.Disable();
  113|      8|        if (this->BlocksLowerPriority())
  ------------------
  |  Branch (113:13): [True: 8, False: 0]
  ------------------
  114|      8|            this->context->AddBlock(*this);
  115|      8|    }
  116|     10|    }
  117|       |
  118|     10|    if (config.pCallback)
  ------------------
  |  Branch (118:9): [True: 0, False: 10]
  ------------------
  119|      0|    {
  120|      0|        config.pCallback->OnComplete(result);
  121|      0|    }
  122|       |
  123|       |    // notify the application
  124|     10|    this->application->OnTaskComplete(TaskInfo(this->GetTaskType(), result, config.taskId));
  125|       |
  126|       |    // notify any super class implementations
  127|     10|    this->OnTaskComplete(result, now);
  128|     10|}
_ZN8opendnp311IMasterTask7OnStartEv:
  151|  6.26k|{
  152|  6.26k|    if (config.pCallback)
  ------------------
  |  Branch (152:9): [True: 0, False: 6.26k]
  ------------------
  153|      0|    {
  154|      0|        config.pCallback->OnStart();
  155|      0|    }
  156|       |
  157|  6.26k|    this->application->OnTaskStart(this->GetTaskType(), config.taskId);
  158|       |
  159|  6.26k|    this->Initialize();
  160|  6.26k|}
_ZN8opendnp311IMasterTask16SetMinExpirationEv:
  163|  8.54k|{
  164|  8.54k|    this->behavior.Reset();
  165|  8.54k|}
_ZN8opendnp311IMasterTask22ValidateSingleResponseERKNS_18APDUResponseHeaderE:
  168|     10|{
  169|     10|    if (header.control.FIR && header.control.FIN)
  ------------------
  |  Branch (169:9): [True: 8, False: 2]
  |  Branch (169:31): [True: 7, False: 1]
  ------------------
  170|      7|    {
  171|      7|        return true;
  172|      7|    }
  173|       |
  174|      3|    SIMPLE_LOG_BLOCK(logger, flags::WARN, "Ignoring unexpected response FIR/FIN not set");
  ------------------
  |  |   42|      3|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (42:9): [True: 0, False: 3]
  |  |  ------------------
  |  |   43|      3|    {                                                                                                                  \
  |  |   44|      0|        logger.log(levels, LOCATION, message);                                                                         \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   45|      0|    }
  ------------------
  175|      3|    return false;
  176|     10|}
_ZN8opendnp311IMasterTask20ValidateNullResponseERKNS_18APDUResponseHeaderERKN7ser4cpp4RSeqImEE:
  179|     10|{
  180|     10|    return ValidateSingleResponse(header) && ValidateNoObjects(objects) && ValidateInternalIndications(header);
  ------------------
  |  Branch (180:12): [True: 7, False: 3]
  |  Branch (180:46): [True: 5, False: 2]
  |  Branch (180:76): [True: 2, False: 3]
  ------------------
  181|     10|}
_ZN8opendnp311IMasterTask27ValidateInternalIndicationsERKNS_18APDUResponseHeaderE:
  184|      5|{
  185|      5|    if (header.IIN.HasRequestError())
  ------------------
  |  Branch (185:9): [True: 3, False: 2]
  ------------------
  186|      3|    {
  187|      3|        FORMAT_LOG_BLOCK(logger, flags::WARN, "Task was explicitly rejected via response with error IIN bit(s): %s",
  ------------------
  |  |   54|      3|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 3]
  |  |  ------------------
  |  |   55|      3|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  188|      3|                         this->Name());
  189|      3|        return false;
  190|      3|    }
  191|       |
  192|      2|    return true;
  193|      5|}
_ZN8opendnp311IMasterTask17ValidateNoObjectsERKN7ser4cpp4RSeqImEE:
  196|      7|{
  197|      7|    if (objects.is_empty())
  ------------------
  |  Branch (197:9): [True: 5, False: 2]
  ------------------
  198|      5|    {
  199|      5|        return true;
  200|      5|    }
  201|       |
  202|      2|    FORMAT_LOG_BLOCK(logger, flags::WARN, "Received unexpected response object headers for task: %s", this->Name());
  ------------------
  |  |   54|      2|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 2]
  |  |  ------------------
  |  |   55|      2|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  203|      2|    return false;
  204|      7|}

_ZNK8opendnp311IMasterTask9IsExpiredERKNS_9TimestampE:
   95|  37.5k|    {
   96|  37.5k|        return now >= this->ExpirationTime();
   97|  37.5k|    }
_ZNK8opendnp311IMasterTask9IsBlockedEv:
  150|  37.5k|    {
  151|  37.5k|        return this->context->IsBlocked(*this);
  152|  37.5k|    }
_ZN8opendnp311IMasterTask10InitializeEv:
  156|  6.25k|    virtual void Initialize() {}
_ZN8opendnp311IMasterTask14OnTaskCompleteENS_14TaskCompletionENS_9TimestampE:
  162|     10|    virtual void OnTaskComplete(TaskCompletion result, Timestamp now) {}
_ZNK8opendnp311IMasterTask9IsEnabledEv:
  165|  18.7k|    {
  166|  18.7k|        return true;
  167|  18.7k|    }

_ZN8opendnp38MContextC2ERKNS_9AddressesERKNS_6LoggerERKNSt3__110shared_ptrIN7exe4cpp9IExecutorEEENS8_INS_11ILowerLayerEEERKNS8_INS_11ISOEHandlerEEERKNS8_INS_18IMasterApplicationEEENS8_INS_16IMasterSchedulerEEERKNS_12MasterParamsE:
   48|  6.25k|    : logger(logger),
   49|  6.25k|      executor(executor),
   50|  6.25k|      lower(std::move(lower)),
   51|  6.25k|      addresses(addresses),
   52|  6.25k|      params(params),
   53|  6.25k|      SOEHandler(SOEHandler),
   54|  6.25k|      application(application),
   55|  6.25k|      scheduler(std::move(scheduler)),
   56|  6.25k|      tasks(params, logger, *application, SOEHandler),
   57|  6.25k|      txBuffer(params.maxTxFragSize),
   58|  6.25k|      tstate(TaskState::IDLE)
   59|  6.25k|{
   60|  6.25k|}
_ZN8opendnp38MContext6CreateERKNS_9AddressesERKNS_6LoggerERKNSt3__110shared_ptrIN7exe4cpp9IExecutorEEENS8_INS_11ILowerLayerEEERKNS8_INS_11ISOEHandlerEEERKNS8_INS_18IMasterApplicationEEENS8_INS_16IMasterSchedulerEEERKNS_12MasterParamsE:
   71|  6.25k|{
   72|  6.25k|    return std::shared_ptr<MContext>(new MContext(addresses, logger, executor, lower, SOEHandler, application, scheduler, params));
   73|  6.25k|}
_ZN8opendnp38MContext14OnLowerLayerUpEv:
   76|  6.25k|{
   77|  6.25k|    if (isOnline)
  ------------------
  |  Branch (77:9): [True: 0, False: 6.25k]
  ------------------
   78|      0|    {
   79|      0|        return false;
   80|      0|    }
   81|       |
   82|  6.25k|    isOnline = true;
   83|       |
   84|  6.25k|    tasks.Initialize(*this->scheduler, *this);
   85|       |
   86|  6.25k|    this->application->OnOpen();
   87|       |
   88|  6.25k|    return true;
   89|  6.25k|}
_ZN8opendnp38MContext9OnReceiveERKNS_7MessageE:
  111|  6.25k|{
  112|  6.25k|    if (!this->isOnline)
  ------------------
  |  Branch (112:9): [True: 0, False: 6.25k]
  ------------------
  113|      0|    {
  114|      0|        SIMPLE_LOG_BLOCK(this->logger, flags::ERR, "Ignorning rx data while offline");
  ------------------
  |  |   42|      0|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (42:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   43|      0|    {                                                                                                                  \
  |  |   44|      0|        logger.log(levels, LOCATION, message);                                                                         \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   45|      0|    }
  ------------------
  115|      0|        return false;
  116|      0|    }
  117|       |
  118|  6.25k|    if (message.addresses.destination != this->addresses.source)
  ------------------
  |  Branch (118:9): [True: 0, False: 6.25k]
  ------------------
  119|      0|    {
  120|      0|        FORMAT_LOG_BLOCK(this->logger, flags::WARN, "Unknown destination address: %u", message.addresses.destination);
  ------------------
  |  |   54|      0|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  121|      0|        return false;
  122|      0|    }
  123|       |
  124|  6.25k|    if (message.addresses.source != this->addresses.destination)
  ------------------
  |  Branch (124:9): [True: 0, False: 6.25k]
  ------------------
  125|      0|    {
  126|      0|        FORMAT_LOG_BLOCK(this->logger, flags::WARN, "Unexpected message source: %u", message.addresses.source);
  ------------------
  |  |   54|      0|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  127|      0|        return false;
  128|      0|    }
  129|       |
  130|  6.25k|    const auto result = APDUHeaderParser::ParseResponse(message.payload, &this->logger);
  131|  6.25k|    if (!result.success)
  ------------------
  |  Branch (131:9): [True: 2, False: 6.25k]
  ------------------
  132|      2|    {
  133|      2|        return true;
  134|      2|    }
  135|       |
  136|  6.25k|    logging::LogHeader(this->logger, flags::APP_HEADER_RX, result.header);
  137|       |
  138|  6.25k|    this->OnParsedHeader(message.payload, result.header, result.objects);
  139|       |
  140|  6.25k|    return true;
  141|  6.25k|}
_ZN8opendnp38MContext18CompleteActiveTaskEv:
  167|     10|{
  168|     10|    if (this->activeTask)
  ------------------
  |  Branch (168:9): [True: 10, False: 0]
  ------------------
  169|     10|    {
  170|     10|        this->activeTask.reset();
  171|     10|        this->scheduler->CompleteCurrentFor(*this);
  172|     10|    }
  173|     10|}
_ZN8opendnp38MContext14OnParsedHeaderERKN7ser4cpp4RSeqImEERKNS_18APDUResponseHeaderES5_:
  178|  6.25k|{
  179|       |    // Note: this looks silly, but OnParsedHeader() is virtual and can be overriden to do SA
  180|  6.25k|    this->ProcessAPDU(header, objects);
  181|  6.25k|}
_ZN8opendnp38MContext11ProcessAPDUERKNS_18APDUResponseHeaderERKN7ser4cpp4RSeqImEE:
  202|  6.25k|{
  203|  6.25k|    switch (header.function)
  204|  6.25k|    {
  205|  6.20k|    case (FunctionCode::UNSOLICITED_RESPONSE):
  ------------------
  |  Branch (205:5): [True: 6.20k, False: 51]
  ------------------
  206|  6.20k|        this->ProcessUnsolicitedResponse(header, objects);
  207|  6.20k|        break;
  208|     15|    case (FunctionCode::RESPONSE):
  ------------------
  |  Branch (208:5): [True: 15, False: 6.23k]
  ------------------
  209|     15|        this->ProcessResponse(header, objects);
  210|     15|        break;
  211|     36|    default:
  ------------------
  |  Branch (211:5): [True: 36, False: 6.21k]
  ------------------
  212|     36|        FORMAT_LOG_BLOCK(this->logger, flags::WARN, "Ignoring unsupported function code: %s",
  ------------------
  |  |   54|     36|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 36]
  |  |  ------------------
  |  |   55|     36|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  213|     36|                         FunctionCodeSpec::to_human_string(header.function));
  214|     36|        break;
  215|  6.25k|    }
  216|  6.25k|}
_ZN8opendnp38MContext10ProcessIINERKNS_8IINFieldE:
  219|  6.21k|{
  220|  6.21k|    if (iin.IsSet(IINBit::DEVICE_RESTART) && !this->params.ignoreRestartIIN)
  ------------------
  |  Branch (220:9): [True: 1.52k, False: 4.69k]
  |  Branch (220:46): [True: 1.52k, False: 0]
  ------------------
  221|  1.52k|    {
  222|  1.52k|        this->tasks.OnRestartDetected();
  223|  1.52k|        this->scheduler->Evaluate();
  224|  1.52k|    }
  225|       |
  226|  6.21k|    if (iin.IsSet(IINBit::EVENT_BUFFER_OVERFLOW) && this->params.integrityOnEventOverflowIIN)
  ------------------
  |  Branch (226:9): [True: 2.46k, False: 3.75k]
  |  Branch (226:53): [True: 2.46k, False: 0]
  ------------------
  227|  2.46k|    {
  228|  2.46k|        if (this->tasks.DemandIntegrity())
  ------------------
  |  Branch (228:13): [True: 2.46k, False: 0]
  ------------------
  229|  2.46k|            this->scheduler->Evaluate();
  230|  2.46k|    }
  231|       |
  232|  6.21k|    if (iin.IsSet(IINBit::NEED_TIME))
  ------------------
  |  Branch (232:9): [True: 1.84k, False: 4.37k]
  ------------------
  233|  1.84k|    {
  234|  1.84k|        if (this->tasks.DemandTimeSync())
  ------------------
  |  Branch (234:13): [True: 0, False: 1.84k]
  ------------------
  235|      0|            this->scheduler->Evaluate();
  236|  1.84k|    }
  237|       |
  238|  6.21k|    if ((iin.IsSet(IINBit::CLASS1_EVENTS) && this->params.eventScanOnEventsAvailableClassMask.HasClass1())
  ------------------
  |  Branch (238:10): [True: 2.86k, False: 3.34k]
  |  Branch (238:46): [True: 0, False: 2.86k]
  ------------------
  239|  6.21k|        || (iin.IsSet(IINBit::CLASS2_EVENTS) && this->params.eventScanOnEventsAvailableClassMask.HasClass2())
  ------------------
  |  Branch (239:13): [True: 2.53k, False: 3.68k]
  |  Branch (239:49): [True: 0, False: 2.53k]
  ------------------
  240|  6.21k|        || (iin.IsSet(IINBit::CLASS3_EVENTS) && this->params.eventScanOnEventsAvailableClassMask.HasClass3()))
  ------------------
  |  Branch (240:13): [True: 2.39k, False: 3.82k]
  |  Branch (240:49): [True: 0, False: 2.39k]
  ------------------
  241|      0|    {
  242|      0|        if (this->tasks.DemandEventScan())
  ------------------
  |  Branch (242:13): [True: 0, False: 0]
  ------------------
  243|      0|            this->scheduler->Evaluate();
  244|      0|    }
  245|       |
  246|  6.21k|    this->application->OnReceiveIIN(iin);
  247|  6.21k|}
_ZN8opendnp38MContext26ProcessUnsolicitedResponseERKNS_18APDUResponseHeaderERKN7ser4cpp4RSeqImEE:
  250|  6.20k|{
  251|  6.20k|    if (!header.control.UNS)
  ------------------
  |  Branch (251:9): [True: 1, False: 6.19k]
  ------------------
  252|      1|    {
  253|      1|        SIMPLE_LOG_BLOCK(logger, flags::WARN, "Ignoring unsolicited response without UNS bit set");
  ------------------
  |  |   42|      1|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (42:9): [True: 0, False: 1]
  |  |  ------------------
  |  |   43|      1|    {                                                                                                                  \
  |  |   44|      0|        logger.log(levels, LOCATION, message);                                                                         \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   45|      0|    }
  ------------------
  254|      1|        return;
  255|      1|    }
  256|       |
  257|  6.19k|    auto result = MeasurementHandler::ProcessMeasurements(header.as_response_info(), objects, logger, SOEHandler.get());
  258|       |
  259|  6.19k|    if ((result == ParseResult::OK) && header.control.CON)
  ------------------
  |  Branch (259:9): [True: 3.61k, False: 2.58k]
  |  Branch (259:40): [True: 1.38k, False: 2.23k]
  ------------------
  260|  1.38k|    {
  261|  1.38k|        this->QueueConfirm(APDUHeader::UnsolicitedConfirm(header.control.SEQ));
  262|  1.38k|    }
  263|       |
  264|  6.19k|    this->ProcessIIN(header.IIN);
  265|  6.19k|}
_ZN8opendnp38MContext15ProcessResponseERKNS_18APDUResponseHeaderERKN7ser4cpp4RSeqImEE:
  268|     15|{
  269|     15|    this->tstate = this->OnResponseEvent(header, objects);
  270|     15|    this->ProcessIIN(header.IIN); // TODO - should we process IIN bits for unexpected responses?
  271|     15|}
_ZN8opendnp38MContext12QueueConfirmERKNS_10APDUHeaderE:
  274|  1.39k|{
  275|  1.39k|    this->confirmQueue.push_back(header);
  276|  1.39k|    this->CheckConfirmTransmit();
  277|  1.39k|}
_ZN8opendnp38MContext20CheckConfirmTransmitEv:
  280|  1.39k|{
  281|  1.39k|    if (this->isSending || this->confirmQueue.empty())
  ------------------
  |  Branch (281:9): [True: 1.39k, False: 0]
  |  Branch (281:28): [True: 0, False: 0]
  ------------------
  282|  1.39k|    {
  283|  1.39k|        return false;
  284|  1.39k|    }
  285|       |
  286|      0|    auto confirm = this->confirmQueue.front();
  287|      0|    APDUWrapper wrapper(this->txBuffer.as_wslice());
  288|      0|    wrapper.SetFunction(confirm.function);
  289|      0|    wrapper.SetControl(confirm.control);
  290|      0|    this->Transmit(wrapper.ToRSeq());
  291|      0|    this->confirmQueue.pop_front();
  292|      0|    return true;
  293|  1.39k|}
_ZN8opendnp38MContext8TransmitERKN7ser4cpp4RSeqImEE:
  296|  6.25k|{
  297|  6.25k|    logging::ParseAndLogRequestTx(this->logger, data);
  298|  6.25k|    assert(!this->isSending);
  ------------------
  |  Branch (298:5): [True: 6.25k, False: 0]
  ------------------
  299|  6.25k|    this->isSending = true;
  300|  6.25k|    this->lower->BeginTransmit(Message(this->addresses, data));
  301|  6.25k|}
_ZN8opendnp38MContext18StartResponseTimerEv:
  304|  6.25k|{
  305|  6.25k|    auto timeout = [self = shared_from_this()]() { self->OnResponseTimeout(); };
  306|  6.25k|    this->responseTimer = this->executor->start(this->params.responseTimeout.value, timeout);
  307|  6.25k|}
_ZN8opendnp38MContext3RunERKNSt3__110shared_ptrINS_11IMasterTaskEEE:
  419|  6.26k|{
  420|  6.26k|    if (this->activeTask || this->tstate != TaskState::IDLE)
  ------------------
  |  Branch (420:9): [True: 0, False: 6.26k]
  |  Branch (420:29): [True: 0, False: 6.26k]
  ------------------
  421|      0|        return false;
  422|       |
  423|  6.26k|    this->tstate = TaskState::TASK_READY;
  424|  6.26k|    this->activeTask = task;
  425|  6.26k|    this->activeTask->OnStart();
  426|  6.26k|    FORMAT_LOG_BLOCK(logger, flags::INFO, "Begining task: %s", this->activeTask->Name());
  ------------------
  |  |   54|  6.26k|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 6.26k]
  |  |  ------------------
  |  |   55|  6.26k|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  427|       |
  428|  6.26k|    if (!this->isSending)
  ------------------
  |  Branch (428:9): [True: 6.25k, False: 10]
  ------------------
  429|  6.25k|    {
  430|  6.25k|        this->tstate = this->ResumeActiveTask();
  431|  6.25k|    }
  432|       |
  433|  6.26k|    return true;
  434|  6.26k|}
_ZN8opendnp38MContext16ResumeActiveTaskEv:
  462|  6.25k|{
  463|  6.25k|    APDURequest request(this->txBuffer.as_wslice());
  464|       |
  465|       |    /// try to build a requst for the task
  466|  6.25k|    if (!this->activeTask->BuildRequest(request, this->solSeq))
  ------------------
  |  Branch (466:9): [True: 0, False: 6.25k]
  ------------------
  467|      0|    {
  468|      0|        activeTask->OnMessageFormatError(Timestamp(executor->get_time()));
  469|      0|        this->CompleteActiveTask();
  470|      0|        return TaskState::IDLE;
  471|      0|    }
  472|       |
  473|  6.25k|    this->StartResponseTimer();
  474|  6.25k|    auto apdu = request.ToRSeq();
  475|  6.25k|    this->RecordLastRequest(apdu);
  476|  6.25k|    this->Transmit(apdu);
  477|       |
  478|  6.25k|    return TaskState::WAIT_FOR_RESPONSE;
  479|  6.25k|}
_ZN8opendnp38MContext15OnResponseEventERKNS_18APDUResponseHeaderERKN7ser4cpp4RSeqImEE:
  495|     15|{
  496|     15|    switch (tstate)
  497|     15|    {
  498|     15|    case (TaskState::WAIT_FOR_RESPONSE):
  ------------------
  |  Branch (498:5): [True: 15, False: 0]
  ------------------
  499|     15|        return OnResponse_WaitForResponse(header, objects);
  500|      0|    default:
  ------------------
  |  Branch (500:5): [True: 0, False: 15]
  ------------------
  501|      0|        FORMAT_LOG_BLOCK(logger, flags::WARN, "Not expecting a response, sequence: %u", header.control.SEQ);
  ------------------
  |  |   54|      0|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   55|      0|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  502|      0|        return tstate;
  503|     15|    }
  504|     15|}
_ZN8opendnp38MContext26OnResponse_WaitForResponseERKNS_18APDUResponseHeaderERKN7ser4cpp4RSeqImEE:
  532|     15|{
  533|     15|    if (header.control.SEQ != this->solSeq)
  ------------------
  |  Branch (533:9): [True: 5, False: 10]
  ------------------
  534|      5|    {
  535|      5|        FORMAT_LOG_BLOCK(this->logger, flags::WARN, "Response with bad sequence: %u", header.control.SEQ);
  ------------------
  |  |   54|      5|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 5]
  |  |  ------------------
  |  |   55|      5|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  536|      5|        return TaskState::WAIT_FOR_RESPONSE;
  537|      5|    }
  538|       |
  539|     10|    this->responseTimer.cancel();
  540|       |
  541|     10|    this->solSeq.Increment();
  542|       |
  543|     10|    auto now = Timestamp(this->executor->get_time());
  544|       |
  545|     10|    auto result = this->activeTask->OnResponse(header, objects, now);
  546|       |
  547|     10|    if (header.control.CON)
  ------------------
  |  Branch (547:9): [True: 7, False: 3]
  ------------------
  548|      7|    {
  549|      7|        this->QueueConfirm(APDUHeader::SolicitedConfirm(header.control.SEQ));
  550|      7|    }
  551|       |
  552|     10|    switch (result)
  553|     10|    {
  554|      0|    case (IMasterTask::ResponseResult::OK_CONTINUE):
  ------------------
  |  Branch (554:5): [True: 0, False: 10]
  ------------------
  555|      0|        this->StartResponseTimer();
  556|      0|        return TaskState::WAIT_FOR_RESPONSE;
  557|      0|    case (IMasterTask::ResponseResult::OK_REPEAT):
  ------------------
  |  Branch (557:5): [True: 0, False: 10]
  ------------------
  558|      0|        return StartTask_TaskReady();
  559|     10|    default:
  ------------------
  |  Branch (559:5): [True: 10, False: 0]
  ------------------
  560|       |        // task completed or failed, either way go back to idle
  561|     10|        this->CompleteActiveTask();
  562|     10|        return TaskState::IDLE;
  563|     10|    }
  564|     10|}

_ZN8opendnp38MContext17RecordLastRequestERKN7ser4cpp4RSeqImEE:
  121|  6.25k|    virtual void RecordLastRequest(const ser4cpp::rseq_t& apdu) {}

_ZN8opendnp322MasterSchedulerBackendC2ERKNSt3__110shared_ptrIN7exe4cpp9IExecutorEEE:
   27|  6.25k|MasterSchedulerBackend::MasterSchedulerBackend(const std::shared_ptr<exe4cpp::IExecutor>& executor) : executor(executor)
   28|  6.25k|{
   29|  6.25k|}
_ZN8opendnp322MasterSchedulerBackend8ShutdownEv:
   32|  6.25k|{
   33|  6.25k|    this->isShutdown = true;
   34|  6.25k|    this->tasks.clear();
   35|  6.25k|    this->current.Clear();
   36|  6.25k|    this->taskTimer.cancel();
   37|  6.25k|    this->taskStartTimeout.cancel();
   38|  6.25k|    this->executor.reset();
   39|  6.25k|}
_ZN8opendnp322MasterSchedulerBackend3AddERKNSt3__110shared_ptrINS_11IMasterTaskEEERNS_17IMasterTaskRunnerE:
   42|  37.5k|{
   43|  37.5k|    if (this->isShutdown)
  ------------------
  |  Branch (43:9): [True: 0, False: 37.5k]
  ------------------
   44|      0|        return;
   45|       |
   46|  37.5k|    this->tasks.emplace_back(task, runner);
   47|  37.5k|    this->PostCheckForTaskRun();
   48|  37.5k|}
_ZN8opendnp322MasterSchedulerBackend18CompleteCurrentForERKNS_17IMasterTaskRunnerE:
   81|     10|{
   82|       |    // no active task
   83|     10|    if (!this->current)
  ------------------
  |  Branch (83:9): [True: 0, False: 10]
  ------------------
   84|      0|        return false;
   85|       |
   86|       |    // active task not for this runner
   87|     10|    if (!this->current.BelongsTo(runner))
  ------------------
  |  Branch (87:9): [True: 0, False: 10]
  ------------------
   88|      0|        return false;
   89|       |
   90|     10|    if (this->current.task->IsRecurring())
  ------------------
  |  Branch (90:9): [True: 10, False: 0]
  ------------------
   91|     10|    {
   92|     10|        this->Add(this->current.task, *this->current.runner);
   93|     10|    }
   94|       |
   95|     10|    this->current.Clear();
   96|       |
   97|     10|    this->PostCheckForTaskRun();
   98|       |
   99|     10|    return true;
  100|     10|}
_ZN8opendnp322MasterSchedulerBackend8EvaluateEv:
  113|  3.98k|{
  114|  3.98k|    this->PostCheckForTaskRun();
  115|  3.98k|}
_ZN8opendnp322MasterSchedulerBackend19PostCheckForTaskRunEv:
  118|  41.5k|{
  119|  41.5k|    if (!this->taskCheckPending)
  ------------------
  |  Branch (119:9): [True: 9.47k, False: 32.0k]
  ------------------
  120|  9.47k|    {
  121|  9.47k|        this->taskCheckPending = true;
  122|  9.47k|        this->executor->post([this, self = shared_from_this()]() { this->CheckForTaskRun(); });
  123|  9.47k|    }
  124|  41.5k|}
_ZN8opendnp322MasterSchedulerBackend15CheckForTaskRunEv:
  127|  9.47k|{
  128|  9.47k|    if (this->isShutdown)
  ------------------
  |  Branch (128:9): [True: 0, False: 9.47k]
  ------------------
  129|      0|        return false;
  130|       |
  131|  9.47k|    this->taskCheckPending = false;
  132|       |
  133|  9.47k|    this->RestartTimeoutTimer();
  134|       |
  135|  9.47k|    if (this->current)
  ------------------
  |  Branch (135:9): [True: 3.20k, False: 6.26k]
  ------------------
  136|  3.20k|        return false;
  137|       |
  138|  6.26k|    const auto now = Timestamp(this->executor->get_time());
  139|       |
  140|       |    // try to find a task that can run
  141|  6.26k|    auto current = this->tasks.begin();
  142|  6.26k|    auto best_task = current;
  143|  6.26k|    if (current == this->tasks.end())
  ------------------
  |  Branch (143:9): [True: 0, False: 6.26k]
  ------------------
  144|      0|        return false;
  145|  6.26k|    ++current;
  146|       |
  147|  37.5k|    while (current != this->tasks.end())
  ------------------
  |  Branch (147:12): [True: 31.3k, False: 6.26k]
  ------------------
  148|  31.3k|    {
  149|  31.3k|        if (GetBestTaskToRun(now, *best_task, *current) == Comparison::RIGHT)
  ------------------
  |  Branch (149:13): [True: 12.5k, False: 18.8k]
  ------------------
  150|  12.5k|        {
  151|  12.5k|            best_task = current;
  152|  12.5k|        }
  153|       |
  154|  31.3k|        ++current;
  155|  31.3k|    }
  156|       |
  157|       |    // is the task runnable now?
  158|  6.26k|    const auto is_expired = now >= best_task->task->ExpirationTime();
  159|  6.26k|    if (is_expired)
  ------------------
  |  Branch (159:9): [True: 6.26k, False: 0]
  ------------------
  160|  6.26k|    {
  161|  6.26k|        this->current = *best_task;
  162|  6.26k|        this->tasks.erase(best_task);
  163|  6.26k|        this->current.runner->Run(this->current.task);
  164|       |
  165|  6.26k|        return true;
  166|  6.26k|    }
  167|       |
  168|      0|    auto callback = [this, self = shared_from_this()]() { this->CheckForTaskRun(); };
  169|       |
  170|      0|    this->taskTimer.cancel();
  171|      0|    this->taskTimer = this->executor->start(best_task->task->ExpirationTime().value, callback);
  172|       |
  173|      0|    return false;
  174|  6.26k|}
_ZN8opendnp322MasterSchedulerBackend19RestartTimeoutTimerEv:
  177|  9.47k|{
  178|  9.47k|    if (this->isShutdown)
  ------------------
  |  Branch (178:9): [True: 0, False: 9.47k]
  ------------------
  179|      0|        return;
  180|       |
  181|  9.47k|    auto min = Timestamp::Max();
  182|       |
  183|  9.47k|    for (auto& record : this->tasks)
  ------------------
  |  Branch (183:23): [True: 53.6k, False: 9.47k]
  ------------------
  184|  53.6k|    {
  185|  53.6k|        if (!record.task->IsRecurring() && (record.task->StartExpirationTime() < min))
  ------------------
  |  Branch (185:13): [True: 0, False: 53.6k]
  |  Branch (185:13): [True: 0, False: 53.6k]
  |  Branch (185:44): [True: 0, False: 0]
  ------------------
  186|      0|        {
  187|      0|            min = record.task->StartExpirationTime();
  188|      0|        }
  189|  53.6k|    }
  190|       |
  191|  9.47k|    this->taskStartTimeout.cancel();
  192|  9.47k|    if (min != Timestamp::Max())
  ------------------
  |  Branch (192:9): [True: 0, False: 9.47k]
  ------------------
  193|      0|    {
  194|      0|        this->taskStartTimeout.cancel();
  195|      0|        this->taskStartTimeout
  196|      0|            = this->executor->start(min.value, [this, self = shared_from_this()]() { this->TimeoutTasks(); });
  197|      0|    }
  198|  9.47k|}
_ZN8opendnp322MasterSchedulerBackend16GetBestTaskToRunERKNS_9TimestampERKNS0_6RecordES6_:
  226|  31.3k|{
  227|  31.3k|    const auto BEST_ENABLED_STATUS = CompareEnabledStatus(left, right);
  228|       |
  229|  31.3k|    if (BEST_ENABLED_STATUS != Comparison::SAME)
  ------------------
  |  Branch (229:9): [True: 12.5k, False: 18.7k]
  ------------------
  230|  12.5k|    {
  231|       |        // if one task is disabled, return the other task
  232|  12.5k|        return BEST_ENABLED_STATUS;
  233|  12.5k|    }
  234|       |
  235|  18.7k|    const auto BEST_BLOCKED_STATUS = CompareBlockedStatus(left, right);
  236|       |
  237|  18.7k|    if (BEST_BLOCKED_STATUS != Comparison::SAME)
  ------------------
  |  Branch (237:9): [True: 11, False: 18.7k]
  ------------------
  238|     11|    {
  239|       |        // if one task is blocked and the other isn't, return the unblocked task
  240|     11|        return BEST_BLOCKED_STATUS;
  241|     11|    }
  242|       |
  243|  18.7k|    const auto EARLIEST_EXPIRATION = CompareTime(now, left, right);
  244|  18.7k|    const auto BEST_PRIORITY = ComparePriority(left, right);
  245|       |
  246|       |    // if the expiration times are the same, break based on priority, otherwise go with the expiration time
  247|  18.7k|    return (EARLIEST_EXPIRATION == Comparison::SAME) ? BEST_PRIORITY : EARLIEST_EXPIRATION;
  ------------------
  |  Branch (247:12): [True: 18.7k, False: 0]
  ------------------
  248|  18.7k|}
_ZN8opendnp322MasterSchedulerBackend11CompareTimeERKNS_9TimestampERKNS0_6RecordES6_:
  253|  18.7k|{
  254|       |    // if tasks are already expired, the effective expiration time is NOW
  255|  18.7k|    const auto leftTime = left.task->IsExpired(now) ? now : left.task->ExpirationTime();
  ------------------
  |  Branch (255:27): [True: 12.5k, False: 6.25k]
  ------------------
  256|  18.7k|    const auto rightTime = right.task->IsExpired(now) ? now : right.task->ExpirationTime();
  ------------------
  |  Branch (256:28): [True: 12.5k, False: 6.25k]
  ------------------
  257|       |
  258|  18.7k|    if (leftTime < rightTime)
  ------------------
  |  Branch (258:9): [True: 0, False: 18.7k]
  ------------------
  259|      0|    {
  260|      0|        return Comparison::LEFT;
  261|      0|    }
  262|  18.7k|    if (rightTime < leftTime)
  ------------------
  |  Branch (262:9): [True: 0, False: 18.7k]
  ------------------
  263|      0|    {
  264|      0|        return Comparison::RIGHT;
  265|      0|    }
  266|  18.7k|    else
  267|  18.7k|    {
  268|  18.7k|        return Comparison::SAME;
  269|  18.7k|    }
  270|  18.7k|}
_ZN8opendnp322MasterSchedulerBackend20CompareEnabledStatusERKNS0_6RecordES3_:
  273|  31.3k|{
  274|  31.3k|    if (left.task->ExpirationTime() == Timestamp::Max()) // left is disabled, check the right
  ------------------
  |  Branch (274:9): [True: 12.5k, False: 18.7k]
  ------------------
  275|  12.5k|    {
  276|  12.5k|        return right.task->ExpirationTime() == Timestamp::Max() ? Comparison::SAME : Comparison::RIGHT;
  ------------------
  |  Branch (276:16): [True: 6.25k, False: 6.25k]
  ------------------
  277|  12.5k|    }
  278|  18.7k|    if (right.task->ExpirationTime() == Timestamp::Max()) // left is enabled, right is disabled
  ------------------
  |  Branch (278:9): [True: 6.27k, False: 12.5k]
  ------------------
  279|  6.27k|    {
  280|  6.27k|        return Comparison::LEFT;
  281|  6.27k|    }
  282|  12.5k|    else
  283|  12.5k|    {
  284|       |        // both tasks are enabled
  285|  12.5k|        return Comparison::SAME;
  286|  12.5k|    }
  287|  18.7k|}
_ZN8opendnp322MasterSchedulerBackend20CompareBlockedStatusERKNS0_6RecordES3_:
  290|  18.7k|{
  291|  18.7k|    if (left.task->IsBlocked())
  ------------------
  |  Branch (291:9): [True: 5, False: 18.7k]
  ------------------
  292|      5|    {
  293|      5|        return right.task->IsBlocked() ? Comparison::SAME : Comparison::RIGHT;
  ------------------
  |  Branch (293:16): [True: 5, False: 0]
  ------------------
  294|      5|    }
  295|       |
  296|  18.7k|    return right.task->IsBlocked() ? Comparison::LEFT : Comparison::SAME;
  ------------------
  |  Branch (296:12): [True: 11, False: 18.7k]
  ------------------
  297|  18.7k|}
_ZN8opendnp322MasterSchedulerBackend15ComparePriorityERKNS0_6RecordES3_:
  300|  18.7k|{
  301|  18.7k|    if (left.task->Priority() < right.task->Priority())
  ------------------
  |  Branch (301:9): [True: 12.5k, False: 6.25k]
  ------------------
  302|  12.5k|    {
  303|  12.5k|        return Comparison::LEFT;
  304|  12.5k|    }
  305|  6.25k|    if (right.task->Priority() < left.task->Priority())
  ------------------
  |  Branch (305:9): [True: 6.25k, False: 0]
  ------------------
  306|  6.25k|    {
  307|  6.25k|        return Comparison::RIGHT;
  308|  6.25k|    }
  309|      0|    else
  310|      0|    {
  311|      0|        return Comparison::SAME;
  312|      0|    }
  313|  6.25k|}
MasterSchedulerBackend.cpp:_ZZN8opendnp322MasterSchedulerBackend19PostCheckForTaskRunEvENK3$_0clEv:
  122|  9.47k|        this->executor->post([this, self = shared_from_this()]() { this->CheckForTaskRun(); });

_ZN8opendnp322MasterSchedulerBackend6RecordC2ERKNSt3__110shared_ptrINS_11IMasterTaskEEERNS_17IMasterTaskRunnerE:
   43|  37.5k|        Record(const std::shared_ptr<IMasterTask>& task, IMasterTaskRunner& runner) : task(task), runner(&runner) {}
_ZN8opendnp322MasterSchedulerBackend6RecordcvbEv:
   46|  9.48k|        {
   47|  9.48k|            return task && runner;
  ------------------
  |  Branch (47:20): [True: 3.21k, False: 6.26k]
  |  Branch (47:28): [True: 3.21k, False: 0]
  ------------------
   48|  9.48k|        }
_ZN8opendnp322MasterSchedulerBackend6Record5ClearEv:
   51|  6.26k|        {
   52|  6.26k|            this->task.reset();
   53|  6.26k|            this->runner = nullptr;
   54|  6.26k|        }
_ZNK8opendnp322MasterSchedulerBackend6Record9BelongsToERKNS_17IMasterTaskRunnerE:
   57|     10|        {
   58|     10|            return this->runner == &runner;
   59|     10|        }
_ZN8opendnp322MasterSchedulerBackend6RecordC2Ev:
   41|  6.25k|        Record() = default;

_ZN8opendnp311MasterTasksC2ERKNS_12MasterParamsERKNS_6LoggerERNS_18IMasterApplicationENSt3__110shared_ptrINS_11ISOEHandlerEEE:
   38|  6.25k|    : context(std::make_shared<TaskContext>()),
   39|  6.25k|      clearRestart(std::make_shared<ClearRestartTask>(context, app, logger)),
   40|  6.25k|      assignClass(std::make_shared<AssignClassTask>(context, app, RetryBehavior(params), logger)),
   41|  6.25k|      startupIntegrity(std::make_shared<StartupIntegrityPoll>(
   42|  6.25k|          context, app, SOEHandler, params.startupIntegrityClassMask, RetryBehavior(params), logger)),
   43|  6.25k|      eventScan(std::make_shared<EventScanTask>(
   44|  6.25k|          context, app, SOEHandler, params.eventScanOnEventsAvailableClassMask, logger)),
   45|       |      // optional tasks
   46|  6.25k|      disableUnsol(GetDisableUnsolTask(context, params, logger, app)),
   47|  6.25k|      enableUnsol(GetEnableUnsolTask(context, params, logger, app)),
   48|  6.25k|      timeSynchronization(GetTimeSyncTask(context, params.timeSyncMode, logger, app))
   49|  6.25k|{
   50|  6.25k|}
_ZN8opendnp311MasterTasks10InitializeERNS_16IMasterSchedulerERNS_17IMasterTaskRunnerE:
   53|  6.25k|{
   54|  6.25k|    for (auto& task :
  ------------------
  |  Branch (54:21): [True: 43.7k, False: 6.25k]
  ------------------
   55|  6.25k|         {clearRestart, assignClass, startupIntegrity, eventScan, enableUnsol, disableUnsol, timeSynchronization})
   56|  43.7k|    {
   57|  43.7k|        if (task)
  ------------------
  |  Branch (57:13): [True: 37.5k, False: 6.25k]
  ------------------
   58|  37.5k|            scheduler.Add(task, runner);
   59|  43.7k|    }
   60|       |
   61|  6.25k|    for (auto& task : boundTasks)
  ------------------
  |  Branch (61:21): [True: 0, False: 6.25k]
  ------------------
   62|      0|    {
   63|      0|        scheduler.Add(task, runner);
   64|      0|    }
   65|  6.25k|}
_ZN8opendnp311MasterTasks14DemandTimeSyncEv:
   73|  1.84k|{
   74|  1.84k|    return this->Demand(this->timeSynchronization);
   75|  1.84k|}
_ZN8opendnp311MasterTasks15DemandIntegrityEv:
   83|  2.46k|{
   84|  2.46k|    return this->Demand(this->startupIntegrity);
   85|  2.46k|}
_ZN8opendnp311MasterTasks17OnRestartDetectedEv:
   88|  1.52k|{
   89|  1.52k|    this->Demand(this->clearRestart);
   90|  1.52k|    this->Demand(this->assignClass);
   91|  1.52k|    this->Demand(this->startupIntegrity);
   92|  1.52k|    this->Demand(this->enableUnsol);
   93|  1.52k|}
_ZN8opendnp311MasterTasks15GetTimeSyncTaskERKNSt3__110shared_ptrINS_11TaskContextEEENS_12TimeSyncModeERKNS_6LoggerERNS_18IMasterApplicationE:
   99|  6.25k|{
  100|  6.25k|    switch (mode)
  101|  6.25k|    {
  102|      0|    case (TimeSyncMode::NonLAN):
  ------------------
  |  Branch (102:5): [True: 0, False: 6.25k]
  ------------------
  103|      0|        return std::make_shared<SerialTimeSyncTask>(context, application, logger);
  104|      0|    case (TimeSyncMode::LAN):
  ------------------
  |  Branch (104:5): [True: 0, False: 6.25k]
  ------------------
  105|      0|        return std::make_shared<LANTimeSyncTask>(context, application, logger);
  106|  6.25k|    default:
  ------------------
  |  Branch (106:5): [True: 6.25k, False: 0]
  ------------------
  107|  6.25k|        return nullptr;
  108|  6.25k|    }
  109|  6.25k|}
_ZN8opendnp311MasterTasks18GetEnableUnsolTaskERKNSt3__110shared_ptrINS_11TaskContextEEERKNS_12MasterParamsERKNS_6LoggerERNS_18IMasterApplicationE:
  115|  6.25k|{
  116|  6.25k|    return params.unsolClassMask.HasEventClass()
  ------------------
  |  Branch (116:12): [True: 6.25k, False: 0]
  ------------------
  117|  6.25k|        ? std::make_shared<EnableUnsolicitedTask>(context, application, RetryBehavior(params), params.unsolClassMask,
  118|  6.25k|                                                  logger)
  119|  6.25k|        : nullptr;
  120|  6.25k|}
_ZN8opendnp311MasterTasks19GetDisableUnsolTaskERKNSt3__110shared_ptrINS_11TaskContextEEERKNS_12MasterParamsERKNS_6LoggerERNS_18IMasterApplicationE:
  126|  6.25k|{
  127|  6.25k|    return params.disableUnsolOnStartup
  ------------------
  |  Branch (127:12): [True: 6.25k, False: 0]
  ------------------
  128|  6.25k|        ? std::make_shared<DisableUnsolicitedTask>(
  129|  6.25k|              context, application,
  130|  6.25k|              TaskBehavior::SingleImmediateExecutionWithRetry(params.taskRetryPeriod, params.maxTaskRetryPeriod),
  131|  6.25k|              logger)
  132|  6.25k|        : nullptr;
  133|  6.25k|}

_ZN8opendnp311MasterTasks6DemandERKNSt3__110shared_ptrINS_11IMasterTaskEEE:
   57|  10.3k|    {
   58|  10.3k|        if (task)
  ------------------
  |  Branch (58:13): [True: 8.54k, False: 1.84k]
  ------------------
   59|  8.54k|        {
   60|  8.54k|            task->SetMinExpiration();
   61|  8.54k|            return true;
   62|  8.54k|        }
   63|  1.84k|        else
   64|  1.84k|        {
   65|  1.84k|            return false;
   66|  1.84k|        }
   67|  10.3k|    }
_ZN8opendnp311MasterTasks13RetryBehaviorERKNS_12MasterParamsE:
   70|  18.7k|    {
   71|  18.7k|        return TaskBehavior::SingleImmediateExecutionWithRetry(params.taskRetryPeriod, params.maxTaskRetryPeriod);
   72|  18.7k|    }

_ZN8opendnp318MeasurementHandler19ProcessMeasurementsENS_12ResponseInfoERKN7ser4cpp4RSeqImEERNS_6LoggerEPNS_11ISOEHandlerE:
   32|  6.19k|{
   33|  6.19k|    MeasurementHandler handler(info, logger, pHandler);
   34|  6.19k|    return APDUParser::Parse(objects, handler, &logger);
   35|  6.19k|}
_ZN8opendnp318MeasurementHandlerC2ENS_12ResponseInfoERKNS_6LoggerEPNS_11ISOEHandlerE:
   38|  6.19k|    : info(info),
   39|  6.19k|      logger(logger),
   40|  6.19k|      txInitiated(false),
   41|  6.19k|      pSOEHandler(pSOEHandler),
   42|  6.19k|      commonTimeOccurence(0, TimestampQuality::INVALID)
   43|  6.19k|{
   44|  6.19k|}
_ZN8opendnp318MeasurementHandlerD2Ev:
   47|  6.19k|{
   48|  6.19k|    if (txInitiated && pSOEHandler)
  ------------------
  |  Branch (48:9): [True: 2.86k, False: 3.33k]
  |  Branch (48:24): [True: 2.86k, False: 0]
  ------------------
   49|  2.86k|    {
   50|  2.86k|        this->pSOEHandler->EndFragment(this->info);
   51|  2.86k|    }
   52|  6.19k|}
_ZN8opendnp318MeasurementHandler12ModeFromTypeENS_14GroupVariationE:
   55|  34.6k|{
   56|  34.6k|    return HasAbsoluteTime(gv) ? TimestampQuality::SYNCHRONIZED : TimestampQuality::INVALID;
  ------------------
  |  Branch (56:12): [True: 11.0k, False: 23.6k]
  ------------------
   57|  34.6k|}
_ZN8opendnp318MeasurementHandler15CheckForTxStartEv:
   60|  37.3k|{
   61|  37.3k|    if (!txInitiated && pSOEHandler)
  ------------------
  |  Branch (61:9): [True: 2.86k, False: 34.4k]
  |  Branch (61:25): [True: 2.86k, False: 0]
  ------------------
   62|  2.86k|    {
   63|  2.86k|        txInitiated = true;
   64|  2.86k|        this->pSOEHandler->BeginFragment(this->info);
   65|  2.86k|    }
   66|  37.3k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group50Var1EEE:
   69|  1.06k|{
   70|  1.06k|    this->CheckForTxStart();
   71|       |
   72|  1.06k|    auto transform = [](const Group50Var1& input) -> DNPTime { return input.time; };
   73|       |
   74|  1.06k|    auto collection = Map<Group50Var1, DNPTime>(values, transform);
   75|       |
   76|  1.06k|    HeaderInfo info(header.enumeration, header.GetQualifierCode(), TimestampQuality::INVALID, header.headerIndex);
   77|  1.06k|    this->pSOEHandler->Process(info, collection);
   78|       |
   79|  1.06k|    return IINField();
   80|  1.06k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group51Var1EEE:
   83|  1.15k|{
   84|  1.15k|    Group51Var1 cto;
   85|  1.15k|    if (values.ReadOnlyValue(cto))
  ------------------
  |  Branch (85:9): [True: 901, False: 254]
  ------------------
   86|    901|    {
   87|    901|        cto.time.quality = TimestampQuality::SYNCHRONIZED;
   88|    901|        commonTimeOccurence = cto.time;
   89|    901|    }
   90|  1.15k|    return IINField::Empty();
   91|  1.15k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group51Var2EEE:
   94|    595|{
   95|    595|    Group51Var2 cto;
   96|    595|    if (values.ReadOnlyValue(cto))
  ------------------
  |  Branch (96:9): [True: 479, False: 116]
  ------------------
   97|    479|    {
   98|    479|        cto.time.quality = TimestampQuality::UNSYNCHRONIZED;
   99|    479|        commonTimeOccurence = cto.time;
  100|    479|    }
  101|       |
  102|    595|    return IINField::Empty();
  103|    595|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_6BinaryEEEEE:
  106|  1.62k|{
  107|  1.62k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  108|  1.62k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_15DoubleBitBinaryEEEEE:
  112|  1.15k|{
  113|  1.15k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  114|  1.15k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_18BinaryOutputStatusEEEEE:
  118|  1.02k|{
  119|  1.02k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  120|  1.02k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_7CounterEEEEE:
  123|  1.70k|{
  124|  1.70k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  125|  1.70k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_13FrozenCounterEEEEE:
  128|  2.37k|{
  129|  2.37k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  130|  2.37k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_6AnalogEEEEE:
  133|  3.11k|{
  134|  3.11k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  135|  3.11k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_18AnalogOutputStatusEEEEE:
  139|  2.38k|{
  140|  2.38k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  141|  2.38k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_11OctetStringEEEEE:
  144|    344|{
  145|    344|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  146|    344|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11RangeHeaderERKNS_11ICollectionINS_7IndexedINS_15TimeAndIntervalEEEEE:
  150|    797|{
  151|    797|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  152|    797|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_6BinaryEEEEE:
  155|  2.34k|{
  156|  2.34k|    if (header.enumeration == GroupVariation::Group2Var3)
  ------------------
  |  Branch (156:9): [True: 1.02k, False: 1.32k]
  ------------------
  157|  1.02k|    {
  158|  1.02k|        return this->ProcessWithCTO(header, values);
  159|  1.02k|    }
  160|       |
  161|  1.32k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  162|  2.34k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_18BinaryOutputStatusEEEEE:
  166|  1.21k|{
  167|  1.21k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  168|  1.21k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_15DoubleBitBinaryEEEEE:
  172|  2.18k|{
  173|  2.18k|    if (header.enumeration == GroupVariation::Group4Var3)
  ------------------
  |  Branch (173:9): [True: 1.25k, False: 930]
  ------------------
  174|  1.25k|    {
  175|  1.25k|        return this->ProcessWithCTO(header, values);
  176|  1.25k|    }
  177|       |
  178|    930|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  179|  2.18k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_7CounterEEEEE:
  182|  1.85k|{
  183|  1.85k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  184|  1.85k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_13FrozenCounterEEEEE:
  188|  2.01k|{
  189|  2.01k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  190|  2.01k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_6AnalogEEEEE:
  193|  3.36k|{
  194|  3.36k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  195|  3.36k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_18AnalogOutputStatusEEEEE:
  199|  3.55k|{
  200|  3.55k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  201|  3.55k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_11OctetStringEEEEE:
  204|    550|{
  205|    550|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  206|    550|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_18BinaryCommandEventEEEEE:
  210|  1.53k|{
  211|  1.53k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  212|  1.53k|}
_ZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_12PrefixHeaderERKNS_11ICollectionINS_7IndexedINS_18AnalogCommandEventEEEEE:
  216|  3.78k|{
  217|  3.78k|    return this->LoadValues(header, ModeFromType(header.enumeration), values);
  218|  3.78k|}
MeasurementHandler.cpp:_ZZN8opendnp318MeasurementHandler13ProcessHeaderERKNS_11CountHeaderERKNS_11ICollectionINS_11Group50Var1EEEENK3$_0clERKS5_:
   72|  2.87k|    auto transform = [](const Group50Var1& input) -> DNPTime { return input.time; };

_ZN8opendnp318MeasurementHandler9IsAllowedEjNS_14GroupVariationENS_13QualifierCodeE:
   54|  63.8k|    {
   55|  63.8k|        return true;
   56|  63.8k|    };
_ZN8opendnp318MeasurementHandler10LoadValuesINS_6BinaryEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  3.63k|    {
  113|  3.63k|        this->CheckForTxStart();
  114|  3.63k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  3.63k|        this->pSOEHandler->Process(info, values);
  116|  3.63k|        return IINField();
  117|  3.63k|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_15DoubleBitBinaryEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  2.98k|    {
  113|  2.98k|        this->CheckForTxStart();
  114|  2.98k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  2.98k|        this->pSOEHandler->Process(info, values);
  116|  2.98k|        return IINField();
  117|  2.98k|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_18BinaryOutputStatusEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  2.24k|    {
  113|  2.24k|        this->CheckForTxStart();
  114|  2.24k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  2.24k|        this->pSOEHandler->Process(info, values);
  116|  2.24k|        return IINField();
  117|  2.24k|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_7CounterEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  3.55k|    {
  113|  3.55k|        this->CheckForTxStart();
  114|  3.55k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  3.55k|        this->pSOEHandler->Process(info, values);
  116|  3.55k|        return IINField();
  117|  3.55k|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_13FrozenCounterEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  4.39k|    {
  113|  4.39k|        this->CheckForTxStart();
  114|  4.39k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  4.39k|        this->pSOEHandler->Process(info, values);
  116|  4.39k|        return IINField();
  117|  4.39k|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_6AnalogEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  6.47k|    {
  113|  6.47k|        this->CheckForTxStart();
  114|  6.47k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  6.47k|        this->pSOEHandler->Process(info, values);
  116|  6.47k|        return IINField();
  117|  6.47k|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_18AnalogOutputStatusEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  5.94k|    {
  113|  5.94k|        this->CheckForTxStart();
  114|  5.94k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  5.94k|        this->pSOEHandler->Process(info, values);
  116|  5.94k|        return IINField();
  117|  5.94k|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_11OctetStringEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|    894|    {
  113|    894|        this->CheckForTxStart();
  114|    894|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|    894|        this->pSOEHandler->Process(info, values);
  116|    894|        return IINField();
  117|    894|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_15TimeAndIntervalEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|    797|    {
  113|    797|        this->CheckForTxStart();
  114|    797|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|    797|        this->pSOEHandler->Process(info, values);
  116|    797|        return IINField();
  117|    797|    }
_ZN8opendnp318MeasurementHandler14ProcessWithCTOINS_6BinaryEEENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS_7IndexedIT_EEEE:
  136|  1.02k|{
  137|  1.02k|    if (this->commonTimeOccurence.quality == TimestampQuality::INVALID)
  ------------------
  |  Branch (137:9): [True: 334, False: 693]
  ------------------
  138|    334|    {
  139|    334|        FORMAT_LOG_BLOCK(logger, flags::WARN, "No prior CTO objects for %s",
  ------------------
  |  |   54|    334|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 334]
  |  |  ------------------
  |  |   55|    334|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  140|    334|                         GroupVariationSpec::to_string(record.enumeration));
  141|    334|        return IINField(IINBit::PARAM_ERROR);
  142|    334|    }
  143|       |
  144|    693|    const auto cto = this->commonTimeOccurence;
  145|       |
  146|    693|    auto transform = [cto](const Indexed<T>& input) -> Indexed<T> {
  147|    693|        Indexed<T> copy(input);
  148|    693|        copy.value.time = DNPTime(input.value.time.value + cto.value, cto.quality);
  149|    693|        return copy;
  150|    693|    };
  151|       |
  152|    693|    auto adjusted = Map<Indexed<T>, Indexed<T>>(values, transform);
  153|       |
  154|    693|    return this->LoadValues(record, cto.quality, adjusted);
  155|  1.02k|}
_ZZN8opendnp318MeasurementHandler14ProcessWithCTOINS_6BinaryEEENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS_7IndexedIT_EEEEENKUlRKNS8_IS2_EEE_clESG_:
  146|  2.86k|    auto transform = [cto](const Indexed<T>& input) -> Indexed<T> {
  147|  2.86k|        Indexed<T> copy(input);
  148|  2.86k|        copy.value.time = DNPTime(input.value.time.value + cto.value, cto.quality);
  149|  2.86k|        return copy;
  150|  2.86k|    };
_ZN8opendnp318MeasurementHandler14ProcessWithCTOINS_15DoubleBitBinaryEEENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS_7IndexedIT_EEEE:
  136|  1.25k|{
  137|  1.25k|    if (this->commonTimeOccurence.quality == TimestampQuality::INVALID)
  ------------------
  |  Branch (137:9): [True: 350, False: 904]
  ------------------
  138|    350|    {
  139|    350|        FORMAT_LOG_BLOCK(logger, flags::WARN, "No prior CTO objects for %s",
  ------------------
  |  |   54|    350|    if (logger.is_enabled(levels))                                                                                     \
  |  |  ------------------
  |  |  |  Branch (54:9): [True: 0, False: 350]
  |  |  ------------------
  |  |   55|    350|    {                                                                                                                  \
  |  |   56|      0|        char message_buffer_some_name_no_conflict[opendnp3::max_log_entry_size];                                       \
  |  |   57|      0|        SAFE_STRING_FORMAT(message_buffer_some_name_no_conflict, opendnp3::max_log_entry_size, format, ##__VA_ARGS__); \
  |  |  ------------------
  |  |  |  |   31|      0|#define SAFE_STRING_FORMAT(dest, size, format, ...) snprintf(dest, size, format, ##__VA_ARGS__)
  |  |  ------------------
  |  |   58|      0|        logger.log(levels, LOCATION, message_buffer_some_name_no_conflict);                                            \
  |  |  ------------------
  |  |  |  |   27|       |#define LOCATION __FILE__ "(" TOSTRING(__LINE__) ")"
  |  |  ------------------
  |  |   59|      0|    }
  ------------------
  140|    350|                         GroupVariationSpec::to_string(record.enumeration));
  141|    350|        return IINField(IINBit::PARAM_ERROR);
  142|    350|    }
  143|       |
  144|    904|    const auto cto = this->commonTimeOccurence;
  145|       |
  146|    904|    auto transform = [cto](const Indexed<T>& input) -> Indexed<T> {
  147|    904|        Indexed<T> copy(input);
  148|    904|        copy.value.time = DNPTime(input.value.time.value + cto.value, cto.quality);
  149|    904|        return copy;
  150|    904|    };
  151|       |
  152|    904|    auto adjusted = Map<Indexed<T>, Indexed<T>>(values, transform);
  153|       |
  154|    904|    return this->LoadValues(record, cto.quality, adjusted);
  155|  1.25k|}
_ZZN8opendnp318MeasurementHandler14ProcessWithCTOINS_15DoubleBitBinaryEEENS_8IINFieldERKNS_12HeaderRecordERKNS_11ICollectionINS_7IndexedIT_EEEEENKUlRKNS8_IS2_EEE_clESG_:
  146|  1.84k|    auto transform = [cto](const Indexed<T>& input) -> Indexed<T> {
  147|  1.84k|        Indexed<T> copy(input);
  148|  1.84k|        copy.value.time = DNPTime(input.value.time.value + cto.value, cto.quality);
  149|  1.84k|        return copy;
  150|  1.84k|    };
_ZN8opendnp318MeasurementHandler10LoadValuesINS_18BinaryCommandEventEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  1.53k|    {
  113|  1.53k|        this->CheckForTxStart();
  114|  1.53k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  1.53k|        this->pSOEHandler->Process(info, values);
  116|  1.53k|        return IINField();
  117|  1.53k|    }
_ZN8opendnp318MeasurementHandler10LoadValuesINS_18AnalogCommandEventEEENS_8IINFieldERKNS_12HeaderRecordENS_16TimestampQualityERKNS_11ICollectionINS_7IndexedIT_EEEE:
  112|  3.78k|    {
  113|  3.78k|        this->CheckForTxStart();
  114|  3.78k|        HeaderInfo info(record.enumeration, record.GetQualifierCode(), tsquality, record.headerIndex);
  115|  3.78k|        this->pSOEHandler->Process(info, values);
  116|  3.78k|        return IINField();
  117|  3.78k|    }

_ZN8opendnp312PollTaskBaseC2ERKNSt3__110shared_ptrINS_11TaskContextEEERNS_18IMasterApplicationENS2_INS_11ISOEHandlerEEERKNS_12TaskBehaviorERKNS_6LoggerENS_10TaskConfigE:
   36|  12.5k|    : IMasterTask(context, application, behavior, logger, config), handler(std::move(handler))
   37|  12.5k|{
   38|  12.5k|}
_ZN8opendnp312PollTaskBase10InitializeEv:
   41|      6|{
   42|      6|    this->rxCount = 0;
   43|      6|}

_ZN8opendnp320StartupIntegrityPollC2ERKNSt3__110shared_ptrINS_11TaskContextEEERNS_18IMasterApplicationENS2_INS_11ISOEHandlerEEENS_10ClassFieldERKNS_12TaskBehaviorERKNS_6LoggerE:
   39|  6.25k|    : PollTaskBase(context, app, std::move(soeHandler), behavior, logger, TaskConfig::Default()), classes(classes)
   40|  6.25k|{
   41|  6.25k|}
_ZNK8opendnp320StartupIntegrityPoll9IsEnabledEv:
   52|  37.5k|{
   53|  37.5k|    return classes.HasAnyClass();
   54|  37.5k|}

_ZNK8opendnp320StartupIntegrityPoll11IsRecurringEv:
   48|  9.47k|    {
   49|  9.47k|        return true;
   50|  9.47k|    }
_ZNK8opendnp320StartupIntegrityPoll8PriorityEv:
   60|  18.7k|    {
   61|  18.7k|        return priority::INTEGRITY_POLL;
   62|  18.7k|    }
_ZNK8opendnp320StartupIntegrityPoll11GetTaskTypeEv:
   75|      6|    {
   76|      6|        return MasterTaskType::STARTUP_INTEGRITY_POLL;
   77|      6|    }

_ZN8opendnp312TaskBehavior33SingleImmediateExecutionWithRetryERKNS_12TimeDurationES3_:
   53|  25.0k|{
   54|  25.0k|    return TaskBehavior(TimeDuration::Min(), // not periodic
   55|  25.0k|                        Timestamp::Min(),    // run immediatey
   56|  25.0k|                        minRetryDelay, maxRetryDelay, Timestamp::Max());
   57|  25.0k|}
_ZN8opendnp312TaskBehavior15ReactsToIINOnlyEv:
   60|  12.5k|{
   61|  12.5k|    return TaskBehavior(TimeDuration::Min(), // not periodic
   62|  12.5k|                        Timestamp::Max(),    // only run when needed
   63|  12.5k|                        TimeDuration::Max(), // never retry
   64|  12.5k|                        TimeDuration::Max(), Timestamp::Max());
   65|  12.5k|}
_ZN8opendnp312TaskBehaviorC2ERKNS_12TimeDurationERKNS_9TimestampES3_S3_S6_:
   72|  37.5k|    : period(period),
   73|  37.5k|      minRetryDelay(minRetryDelay),
   74|  37.5k|      maxRetryDelay(maxRetryDelay),
   75|  37.5k|      startExpiration(startExpiration),
   76|  37.5k|      expiration(expiration),
   77|  37.5k|      currentRetryDelay(minRetryDelay)
   78|  37.5k|{
   79|  37.5k|}
_ZN8opendnp312TaskBehavior9OnSuccessERKNS_9TimestampE:
   82|      2|{
   83|      2|    this->currentRetryDelay = this->minRetryDelay;
   84|      2|    this->expiration = this->period.IsNegative() ? Timestamp::Max() : now + this->period;
  ------------------
  |  Branch (84:24): [True: 2, False: 0]
  ------------------
   85|      2|}
_ZN8opendnp312TaskBehavior5ResetEv:
   94|  8.54k|{
   95|  8.54k|    this->disabled = false;
   96|  8.54k|    this->expiration = Timestamp::Min();
   97|  8.54k|    this->currentRetryDelay = this->minRetryDelay;
   98|  8.54k|}
_ZN8opendnp312TaskBehavior7DisableEv:
  101|      8|{
  102|      8|    this->disabled = true;
  103|      8|    this->expiration = Timestamp::Max();
  104|      8|}

_ZNK8opendnp312TaskBehavior13GetExpirationEv:
   64|  93.9k|    {
   65|  93.9k|        return expiration;
   66|  93.9k|    }

_ZN8opendnp311TaskContext8AddBlockERKNS_11IMasterTaskE:
   29|      8|{
   30|      8|    this->blocking_tasks.insert(&task);
   31|      8|}
_ZN8opendnp311TaskContext11RemoveBlockERKNS_11IMasterTaskE:
   34|     62|{
   35|     62|    this->blocking_tasks.erase(&task);
   36|     62|}
_ZNK8opendnp311TaskContext9IsBlockedERKNS_11IMasterTaskE:
   39|  37.5k|{
   40|  37.5k|    for (auto& blocking : this->blocking_tasks)
  ------------------
  |  Branch (40:25): [True: 32, False: 37.5k]
  ------------------
   41|     32|    {
   42|       |        // is there a block with better priority that's not the same task?
   43|     32|        if (blocking->Priority() < task.Priority() && (blocking != &task))
  ------------------
  |  Branch (43:13): [True: 21, False: 11]
  |  Branch (43:55): [True: 21, False: 0]
  ------------------
   44|     21|            return true;
   45|     32|    }
   46|       |
   47|  37.5k|    return false;
   48|  37.5k|}

_ZN8opendnp312TimeDuration3MinEv:
   28|  37.5k|{
   29|  37.5k|    return TimeDuration(exe4cpp::duration_t::min());
   30|  37.5k|}
_ZN8opendnp312TimeDuration3MaxEv:
   33|  25.0k|{
   34|  25.0k|    return TimeDuration(exe4cpp::duration_t::max());
   35|  25.0k|}
_ZN8opendnp312TimeDuration4ZeroEv:
   38|      2|{
   39|      2|    return TimeDuration(std::chrono::milliseconds(0));
   40|      2|}
_ZN8opendnp312TimeDuration7SecondsEl:
   68|  18.7k|{
   69|  18.7k|    return FromValue<std::chrono::seconds>(seconds);
   70|  18.7k|}
_ZN8opendnp312TimeDuration7MinutesEl:
   73|  6.25k|{
   74|  6.25k|    return FromValue<std::chrono::minutes>(minutes);
   75|  6.25k|}
_ZN8opendnp312TimeDurationC2Ev:
   78|  6.25k|TimeDuration::TimeDuration() : value(std::chrono::milliseconds(0)) {}
_ZNK8opendnp312TimeDuration10IsNegativeEv:
   88|      2|{
   89|      2|    return *this < TimeDuration::Zero();
   90|      2|}
_ZNK8opendnp312TimeDurationltERKS0_:
  105|      2|{
  106|      2|    return this->value < other.value;
  107|      2|}
_ZN8opendnp312TimeDurationC2ENSt3__16chrono8durationIxNS1_5ratioILl1ELl1000000000EEEEE:
  124|  87.5k|TimeDuration::TimeDuration(exe4cpp::duration_t value) : value(value) {}
_ZN8opendnp312TimeDuration9FromValueINSt3__16chrono8durationIxNS2_5ratioILl1ELl1EEEEEEES0_l:
   43|  18.7k|{
   44|       |    // > this will overflow when converting to nanos
   45|  18.7k|    const auto MAX = std::chrono::duration_cast<T>(std::chrono::steady_clock::duration::max()).count();
   46|  18.7k|    const auto MIN = std::chrono::duration_cast<T>(std::chrono::steady_clock::duration::min()).count();
   47|       |
   48|  18.7k|    if (value > MAX)
  ------------------
  |  Branch (48:9): [True: 0, False: 18.7k]
  ------------------
   49|      0|    {
   50|      0|        return TimeDuration(std::chrono::steady_clock::duration::max());
   51|      0|    }
   52|       |
   53|  18.7k|    if (value < MIN)
  ------------------
  |  Branch (53:9): [True: 0, False: 18.7k]
  ------------------
   54|      0|    {
   55|      0|        return TimeDuration(std::chrono::steady_clock::duration::min());
   56|      0|    }
   57|       |
   58|  18.7k|    return TimeDuration(T(value));
   59|  18.7k|}
_ZN8opendnp312TimeDuration9FromValueINSt3__16chrono8durationIlNS2_5ratioILl60ELl1EEEEEEES0_l:
   43|  6.25k|{
   44|       |    // > this will overflow when converting to nanos
   45|  6.25k|    const auto MAX = std::chrono::duration_cast<T>(std::chrono::steady_clock::duration::max()).count();
   46|  6.25k|    const auto MIN = std::chrono::duration_cast<T>(std::chrono::steady_clock::duration::min()).count();
   47|       |
   48|  6.25k|    if (value > MAX)
  ------------------
  |  Branch (48:9): [True: 0, False: 6.25k]
  ------------------
   49|      0|    {
   50|      0|        return TimeDuration(std::chrono::steady_clock::duration::max());
   51|      0|    }
   52|       |
   53|  6.25k|    if (value < MIN)
  ------------------
  |  Branch (53:9): [True: 0, False: 6.25k]
  ------------------
   54|      0|    {
   55|      0|        return TimeDuration(std::chrono::steady_clock::duration::min());
   56|      0|    }
   57|       |
   58|  6.25k|    return TimeDuration(T(value));
   59|  6.25k|}

_ZN8opendnp39Timestamp3MaxEv:
   28|   156k|{
   29|   156k|    return Timestamp(exe4cpp::steady_time_t::max());
   30|   156k|}
_ZN8opendnp39Timestamp3MinEv:
   33|  33.5k|{
   34|  33.5k|    return Timestamp(exe4cpp::steady_time_t::min());
   35|  33.5k|}
_ZN8opendnp39TimestampC2ENSt3__16chrono10time_pointINS2_12steady_clockENS2_8durationIxNS1_5ratioILl1ELl1000000000EEEEEEE:
   49|   196k|Timestamp::Timestamp(exe4cpp::steady_time_t value) : value(value) {}
_ZNK8opendnp39TimestampeqERKS0_:
   85|  62.6k|{
   86|  62.6k|    return this->value == other.value;
   87|  62.6k|}
_ZNK8opendnp39TimestampneERKS0_:
   90|  9.47k|{
   91|  9.47k|    return this->value != other.value;
   92|  9.47k|}
_ZNK8opendnp39TimestampltERKS0_:
   95|  37.5k|{
   96|  37.5k|    return this->value < other.value;
   97|  37.5k|}
_ZNK8opendnp39TimestampgeERKS0_:
  110|  43.7k|{
  111|  43.7k|    return this->value >= other.value;
  112|  43.7k|}

_ZN21MockMasterApplicationC2Ev:
   39|  6.25k|    MockMasterApplication() : time(0) {}
_ZN21MockMasterApplication12OnReceiveIINERKN8opendnp38IINFieldE:
   47|  6.21k|    {
   48|  6.21k|        rxIIN.push_back(iin);
   49|  6.21k|    }
_ZN21MockMasterApplication11OnTaskStartEN8opendnp314MasterTaskTypeENS0_6TaskIdE:
   52|  6.26k|    {
   53|  6.26k|        taskStartEvents.push_back(type);
   54|  6.26k|    }
_ZN21MockMasterApplication14OnTaskCompleteERKN8opendnp38TaskInfoE:
   57|     10|    {
   58|     10|        taskCompletionEvents.push_back(info);
   59|     10|    }
_ZN21MockMasterApplication6OnOpenEv:
   62|  6.25k|    {
   63|  6.25k|        this->stateChanges.push_back(State::OPEN);
   64|  6.25k|    }
_ZN21MockMasterApplication24AssignClassDuringStartupEv:
   72|  18.7k|    {
   73|  18.7k|        return !assignClassHeaders.empty();
   74|  18.7k|    }

_ZN14MockSOEHandlerC2Ev:
   47|  6.25k|    MockSOEHandler() : soeCount(0) {}
_ZN14MockSOEHandler13BeginFragmentERKN8opendnp312ResponseInfoE:
   49|  2.86k|    void BeginFragment(const opendnp3::ResponseInfo& info) override {}
_ZN14MockSOEHandler11EndFragmentERKN8opendnp312ResponseInfoE:
   51|  2.86k|    void EndFragment(const opendnp3::ResponseInfo& info) override {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_6BinaryEEEEE:
   60|  3.63k|    {
   61|  3.63k|        this->RecordAny(info, values, this->binarySOE);
   62|  3.63k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp36BinaryEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  3.63k|    {
  171|  3.63k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  3.63k|            Record<T> record(pair.value, info, soeCount);
  173|  3.63k|            records[pair.index] = record;
  174|  3.63k|            ++this->soeCount;
  175|  3.63k|        };
  176|       |
  177|  3.63k|        values.ForeachItem(process);
  178|  3.63k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp36BinaryEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  85.5k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  85.5k|            Record<T> record(pair.value, info, soeCount);
  173|  85.5k|            records[pair.index] = record;
  174|  85.5k|            ++this->soeCount;
  175|  85.5k|        };
_ZN14MockSOEHandler6RecordIN8opendnp36BinaryEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  85.5k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  85.5k|        {
   40|  85.5k|        }
_ZN14MockSOEHandler6RecordIN8opendnp36BinaryEEC2Ev:
   35|  69.4k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_15DoubleBitBinaryEEEEE:
   66|  2.98k|    {
   67|  2.98k|        this->RecordAny(info, values, this->doubleBinarySOE);
   68|  2.98k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp315DoubleBitBinaryEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  2.98k|    {
  171|  2.98k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  2.98k|            Record<T> record(pair.value, info, soeCount);
  173|  2.98k|            records[pair.index] = record;
  174|  2.98k|            ++this->soeCount;
  175|  2.98k|        };
  176|       |
  177|  2.98k|        values.ForeachItem(process);
  178|  2.98k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp315DoubleBitBinaryEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  37.5k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  37.5k|            Record<T> record(pair.value, info, soeCount);
  173|  37.5k|            records[pair.index] = record;
  174|  37.5k|            ++this->soeCount;
  175|  37.5k|        };
_ZN14MockSOEHandler6RecordIN8opendnp315DoubleBitBinaryEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  37.5k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  37.5k|        {
   40|  37.5k|        }
_ZN14MockSOEHandler6RecordIN8opendnp315DoubleBitBinaryEEC2Ev:
   35|  30.2k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_6AnalogEEEEE:
   72|  6.47k|    {
   73|  6.47k|        this->RecordAny(info, values, this->analogSOE);
   74|  6.47k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp36AnalogEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  6.47k|    {
  171|  6.47k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  6.47k|            Record<T> record(pair.value, info, soeCount);
  173|  6.47k|            records[pair.index] = record;
  174|  6.47k|            ++this->soeCount;
  175|  6.47k|        };
  176|       |
  177|  6.47k|        values.ForeachItem(process);
  178|  6.47k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp36AnalogEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  19.9k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  19.9k|            Record<T> record(pair.value, info, soeCount);
  173|  19.9k|            records[pair.index] = record;
  174|  19.9k|            ++this->soeCount;
  175|  19.9k|        };
_ZN14MockSOEHandler6RecordIN8opendnp36AnalogEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  19.9k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  19.9k|        {
   40|  19.9k|        }
_ZN14MockSOEHandler6RecordIN8opendnp36AnalogEEC2Ev:
   35|  10.8k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_7CounterEEEEE:
   78|  3.55k|    {
   79|  3.55k|        this->RecordAny(info, values, this->counterSOE);
   80|  3.55k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp37CounterEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  3.55k|    {
  171|  3.55k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  3.55k|            Record<T> record(pair.value, info, soeCount);
  173|  3.55k|            records[pair.index] = record;
  174|  3.55k|            ++this->soeCount;
  175|  3.55k|        };
  176|       |
  177|  3.55k|        values.ForeachItem(process);
  178|  3.55k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp37CounterEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  11.3k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  11.3k|            Record<T> record(pair.value, info, soeCount);
  173|  11.3k|            records[pair.index] = record;
  174|  11.3k|            ++this->soeCount;
  175|  11.3k|        };
_ZN14MockSOEHandler6RecordIN8opendnp37CounterEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  11.3k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  11.3k|        {
   40|  11.3k|        }
_ZN14MockSOEHandler6RecordIN8opendnp37CounterEEC2Ev:
   35|  5.91k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_13FrozenCounterEEEEE:
   84|  4.39k|    {
   85|  4.39k|        this->RecordAny(info, values, this->frozenCounterSOE);
   86|  4.39k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp313FrozenCounterEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  4.39k|    {
  171|  4.39k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  4.39k|            Record<T> record(pair.value, info, soeCount);
  173|  4.39k|            records[pair.index] = record;
  174|  4.39k|            ++this->soeCount;
  175|  4.39k|        };
  176|       |
  177|  4.39k|        values.ForeachItem(process);
  178|  4.39k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp313FrozenCounterEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  14.0k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  14.0k|            Record<T> record(pair.value, info, soeCount);
  173|  14.0k|            records[pair.index] = record;
  174|  14.0k|            ++this->soeCount;
  175|  14.0k|        };
_ZN14MockSOEHandler6RecordIN8opendnp313FrozenCounterEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  14.0k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  14.0k|        {
   40|  14.0k|        }
_ZN14MockSOEHandler6RecordIN8opendnp313FrozenCounterEEC2Ev:
   35|  8.71k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_18BinaryOutputStatusEEEEE:
   90|  2.24k|    {
   91|  2.24k|        this->RecordAny(info, values, this->binaryOutputStatusSOE);
   92|  2.24k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp318BinaryOutputStatusEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  2.24k|    {
  171|  2.24k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  2.24k|            Record<T> record(pair.value, info, soeCount);
  173|  2.24k|            records[pair.index] = record;
  174|  2.24k|            ++this->soeCount;
  175|  2.24k|        };
  176|       |
  177|  2.24k|        values.ForeachItem(process);
  178|  2.24k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp318BinaryOutputStatusEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  21.5k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  21.5k|            Record<T> record(pair.value, info, soeCount);
  173|  21.5k|            records[pair.index] = record;
  174|  21.5k|            ++this->soeCount;
  175|  21.5k|        };
_ZN14MockSOEHandler6RecordIN8opendnp318BinaryOutputStatusEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  21.5k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  21.5k|        {
   40|  21.5k|        }
_ZN14MockSOEHandler6RecordIN8opendnp318BinaryOutputStatusEEC2Ev:
   35|  15.4k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_18AnalogOutputStatusEEEEE:
   96|  5.94k|    {
   97|  5.94k|        this->RecordAny(info, values, this->analogOutputStatusSOE);
   98|  5.94k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp318AnalogOutputStatusEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  5.94k|    {
  171|  5.94k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  5.94k|            Record<T> record(pair.value, info, soeCount);
  173|  5.94k|            records[pair.index] = record;
  174|  5.94k|            ++this->soeCount;
  175|  5.94k|        };
  176|       |
  177|  5.94k|        values.ForeachItem(process);
  178|  5.94k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp318AnalogOutputStatusEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  16.9k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  16.9k|            Record<T> record(pair.value, info, soeCount);
  173|  16.9k|            records[pair.index] = record;
  174|  16.9k|            ++this->soeCount;
  175|  16.9k|        };
_ZN14MockSOEHandler6RecordIN8opendnp318AnalogOutputStatusEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  16.9k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  16.9k|        {
   40|  16.9k|        }
_ZN14MockSOEHandler6RecordIN8opendnp318AnalogOutputStatusEEC2Ev:
   35|  7.64k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_11OctetStringEEEEE:
  102|    894|    {
  103|    894|        this->RecordAny(info, values, this->octetStringSOE);
  104|    894|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp311OctetStringEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|    894|    {
  171|    894|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|    894|            Record<T> record(pair.value, info, soeCount);
  173|    894|            records[pair.index] = record;
  174|    894|            ++this->soeCount;
  175|    894|        };
  176|       |
  177|    894|        values.ForeachItem(process);
  178|    894|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp311OctetStringEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  3.65k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  3.65k|            Record<T> record(pair.value, info, soeCount);
  173|  3.65k|            records[pair.index] = record;
  174|  3.65k|            ++this->soeCount;
  175|  3.65k|        };
_ZN14MockSOEHandler6RecordIN8opendnp311OctetStringEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  3.65k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  3.65k|        {
   40|  3.65k|        }
_ZN14MockSOEHandler6RecordIN8opendnp311OctetStringEEC2Ev:
   35|  2.48k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_15TimeAndIntervalEEEEE:
  108|    797|    {
  109|    797|        this->RecordAny(info, values, this->timeAndIntervalSOE);
  110|    797|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp315TimeAndIntervalEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|    797|    {
  171|    797|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|    797|            Record<T> record(pair.value, info, soeCount);
  173|    797|            records[pair.index] = record;
  174|    797|            ++this->soeCount;
  175|    797|        };
  176|       |
  177|    797|        values.ForeachItem(process);
  178|    797|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp315TimeAndIntervalEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  2.39k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  2.39k|            Record<T> record(pair.value, info, soeCount);
  173|  2.39k|            records[pair.index] = record;
  174|  2.39k|            ++this->soeCount;
  175|  2.39k|        };
_ZN14MockSOEHandler6RecordIN8opendnp315TimeAndIntervalEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  2.39k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  2.39k|        {
   40|  2.39k|        }
_ZN14MockSOEHandler6RecordIN8opendnp315TimeAndIntervalEEC2Ev:
   35|  1.67k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_18BinaryCommandEventEEEEE:
  114|  1.53k|    {
  115|  1.53k|        this->RecordAny(info, values, this->binaryCommandEventSOE);
  116|  1.53k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp318BinaryCommandEventEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  1.53k|    {
  171|  1.53k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  1.53k|            Record<T> record(pair.value, info, soeCount);
  173|  1.53k|            records[pair.index] = record;
  174|  1.53k|            ++this->soeCount;
  175|  1.53k|        };
  176|       |
  177|  1.53k|        values.ForeachItem(process);
  178|  1.53k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp318BinaryCommandEventEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  15.2k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  15.2k|            Record<T> record(pair.value, info, soeCount);
  173|  15.2k|            records[pair.index] = record;
  174|  15.2k|            ++this->soeCount;
  175|  15.2k|        };
_ZN14MockSOEHandler6RecordIN8opendnp318BinaryCommandEventEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  15.2k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  15.2k|        {
   40|  15.2k|        }
_ZN14MockSOEHandler6RecordIN8opendnp318BinaryCommandEventEEC2Ev:
   35|  5.48k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7IndexedINS0_18AnalogCommandEventEEEEE:
  120|  3.78k|    {
  121|  3.78k|        this->RecordAny(info, values, this->analogCommandEventSOE);
  122|  3.78k|    }
_ZN14MockSOEHandler9RecordAnyIN8opendnp318AnalogCommandEventEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEE:
  170|  3.78k|    {
  171|  3.78k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  3.78k|            Record<T> record(pair.value, info, soeCount);
  173|  3.78k|            records[pair.index] = record;
  174|  3.78k|            ++this->soeCount;
  175|  3.78k|        };
  176|       |
  177|  3.78k|        values.ForeachItem(process);
  178|  3.78k|    }
_ZZN14MockSOEHandler9RecordAnyIN8opendnp318AnalogCommandEventEEEvRKNS1_10HeaderInfoERKNS1_11ICollectionINS1_7IndexedIT_EEEERNSt3__13mapItNS_6RecordIS8_EENSD_4lessItEENSD_9allocatorINSD_4pairIKtSG_EEEEEEENKUlRKNS7_IS2_EEE_clESS_:
  171|  12.8k|        auto process = [this, info, &records](const opendnp3::Indexed<T>& pair) {
  172|  12.8k|            Record<T> record(pair.value, info, soeCount);
  173|  12.8k|            records[pair.index] = record;
  174|  12.8k|            ++this->soeCount;
  175|  12.8k|        };
_ZN14MockSOEHandler6RecordIN8opendnp318AnalogCommandEventEEC2ERKS2_RKNS1_10HeaderInfoEj:
   38|  12.8k|            : meas(meas_), info(info_), sequence(sequence_)
   39|  12.8k|        {
   40|  12.8k|        }
_ZN14MockSOEHandler6RecordIN8opendnp318AnalogCommandEventEEC2Ev:
   35|  3.88k|        Record() : sequence(0) {}
_ZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7DNPTimeEEE:
  125|  1.06k|    {
  126|  1.06k|        values.ForeachItem([this](const opendnp3::DNPTime& value) {
  127|  1.06k|            ++this->soeCount;
  128|  1.06k|            this->timeSOE.push_back(value);
  129|  1.06k|        });
  130|  1.06k|    }
_ZZN14MockSOEHandler7ProcessERKN8opendnp310HeaderInfoERKNS0_11ICollectionINS0_7DNPTimeEEEENKUlRKS5_E_clESA_:
  126|  2.87k|        values.ForeachItem([this](const opendnp3::DNPTime& value) {
  127|  2.87k|            ++this->soeCount;
  128|  2.87k|            this->timeSOE.push_back(value);
  129|  2.87k|        });

_ZN14MockLowerLayer13BeginTransmitERKN8opendnp37MessageE:
   52|  6.25k|{
   53|  6.25k|    this->sendQueue.push(message);
   54|  6.25k|    return true;
   55|  6.25k|}

_ZNK10NullLogger10get_loggerEv:
   19|  6.25k|    opendnp3::Logger get_logger() const {
   20|  6.25k|        return opendnp3::Logger(this->handler, opendnp3::ModuleId(0), "logger", opendnp3::LogLevels(~0));
   21|  6.25k|    }

LLVMFuzzerTestOneInput:
   80|  6.25k|{
   81|  6.25k|    ser4cpp::rseq_t buffer(Data, Size);
   82|       |
   83|  6.25k|    opendnp3::MasterParams config;
   84|  6.25k|    MasterTestObject t(config);
   85|  6.25k|    t.LowerLayerUp();
   86|  6.25k|    t.SendToMaster(buffer);
   87|  6.25k|    return 0;
   88|  6.25k|}
_ZN16MasterTestObjectC2ERKN8opendnp312MasterParamsE:
   38|  6.25k|        : addresses(),
   39|  6.25k|          logger(),
   40|  6.25k|          exe(std::make_shared<exe4cpp::MockExecutor>()),
   41|  6.25k|          meas(std::make_shared<MockSOEHandler>()),
   42|  6.25k|          lower(std::make_shared<MockLowerLayer>()),
   43|  6.25k|          application(std::make_shared<MockMasterApplication>()),
   44|  6.25k|          scheduler(std::make_shared<opendnp3::MasterSchedulerBackend>(exe)),
   45|  6.25k|          context(opendnp3::MContext::Create(addresses, logger.get_logger(), exe, lower, meas, application, this->scheduler, params))
   46|  6.25k|    {
   47|  6.25k|        lower->SetUpperLayer(*context);
   48|  6.25k|    }
_ZN16MasterTestObject12LowerLayerUpEv:
   62|  6.25k|    {
   63|  6.25k|        context->OnLowerLayerUp();
   64|  6.25k|        return exe->run_many();
   65|  6.25k|    }
_ZN16MasterTestObject12SendToMasterERKN7ser4cpp4RSeqImEE:
   56|  6.25k|    {
   57|  6.25k|        context->OnReceive(opendnp3::Message(this->addresses.Reverse(), buffer));
   58|  6.25k|        return exe->run_many();
   59|  6.25k|    }
_ZN16MasterTestObjectD2Ev:
   51|  6.25k|    {
   52|  6.25k|        this->scheduler->Shutdown();
   53|  6.25k|    }

