_ZNK4iter4impl10ChainMakerclIJRNSt3__16vectorIcNS3_9allocatorIcEEEES8_S8_EEEDaDpOT_:
  336|    593|  auto operator()(Containers&&... cs) const {
  337|    593|    return chain_impl(
  338|    593|        std::tuple<Containers...>{std::forward<Containers>(cs)...},
  339|    593|        std::index_sequence_for<Containers...>{});
  340|    593|  }
_ZNK4iter4impl10ChainMaker10chain_implINSt3__15tupleIJRNS3_6vectorIcNS3_9allocatorIcEEEES9_S9_EEEJLm0ELm1ELm2EEEENS0_7ChainedIT_JXspT0_EEEEOSC_NS3_16integer_sequenceImJXspT0_EEEE:
  329|    593|      TupleType&& containers, std::index_sequence<Is...>) const {
  330|    593|    return {std::move(containers)};
  331|    593|  }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEEC2EOS9_:
  116|    593|  Chained(TupType&& t) : tup_(std::move(t)) {}
_ZNK4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE5beginEv:
  198|    593|  Iterator<AsTupleOfConst<TupType>> begin() const {
  199|    593|    return {0, {get_begin(std::as_const(std::get<Is>(tup_)))...},
  200|    593|        {get_end(std::as_const(std::get<Is>(tup_)))...}};
  201|    593|  }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEEC2EmONS3_IJNS2_11__wrap_iterIPKcEESJ_SJ_EEESL_:
  150|  1.18k|        : index_{i}, iters_(std::move(iters)), ends_(std::move(ends)) {
  151|  1.18k|      check_for_end_and_adjust();
  152|  1.18k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEE24check_for_end_and_adjustEv:
  130|   172k|    void check_for_end_and_adjust() {
  131|   174k|      while (index_ < sizeof...(Is)
  ------------------
  |  Branch (131:14): [True: 173k, False: 1.18k]
  ------------------
  132|   173k|             && !(IteratorDataPair<TupTypeT, TupTypeT>::neq_comparers[index_](
  ------------------
  |  Branch (132:17): [True: 1.77k, False: 171k]
  ------------------
  133|   173k|                 iters_, ends_))) {
  134|  1.77k|        ++index_;
  135|  1.77k|      }
  136|   172k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE16IteratorDataPairINS3_IJRKS7_SD_SD_EEESE_E23get_and_check_not_equalILm0EEEbRKNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEESN_:
   56|  57.8k|        const IterTupTypeA& lhs, const IterTupTypeB& rhs) {
   57|  57.8k|      return std::get<Idx>(lhs) != std::get<Idx>(rhs);
   58|  57.8k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE16IteratorDataPairINS3_IJRKS7_SD_SD_EEESE_E23get_and_check_not_equalILm1EEEbRKNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEESN_:
   56|  57.8k|        const IterTupTypeA& lhs, const IterTupTypeB& rhs) {
   57|  57.8k|      return std::get<Idx>(lhs) != std::get<Idx>(rhs);
   58|  57.8k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE16IteratorDataPairINS3_IJRKS7_SD_SD_EEESE_E23get_and_check_not_equalILm2EEEbRKNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEESN_:
   56|  57.8k|        const IterTupTypeA& lhs, const IterTupTypeB& rhs) {
   57|  57.8k|      return std::get<Idx>(lhs) != std::get<Idx>(rhs);
   58|  57.8k|    }
_ZNK4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE3endEv:
  203|    593|  Iterator<AsTupleOfConst<TupType>> end() const {
  204|    593|    return {sizeof...(Is), {get_end(std::as_const(std::get<Is>(tup_)))...},
  205|    593|        {get_end(std::as_const(std::get<Is>(tup_)))...}};
  206|    593|  }
_ZNK4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEEneISE_EEbRKNSB_IT_EE:
  175|   172k|    bool operator!=(const Iterator<T>& other) const {
  176|   172k|      return index_ != other.index_
  ------------------
  |  Branch (176:14): [True: 171k, False: 593]
  ------------------
  177|    593|             || (index_ != sizeof...(Is)
  ------------------
  |  Branch (177:18): [True: 0, False: 593]
  ------------------
  178|      0|                 && IteratorDataPair<TupTypeT, T>::neq_comparers[index_](
  ------------------
  |  Branch (178:21): [True: 0, False: 0]
  ------------------
  179|      0|                     iters_, other.iters_));
  180|   172k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEEdeEv:
  154|   171k|    decltype(auto) operator*() {
  155|   171k|      return IterData::derefers[index_](iters_);
  156|   171k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE13get_and_derefILm0EEERKcRNS3_IJNS2_11__wrap_iterIPSH_EESL_SL_EEE:
   85|  57.2k|    static DerefType get_and_deref(IterTupType& iters) {
   86|  57.2k|      return *std::get<Idx>(iters);
   87|  57.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE13get_and_derefILm1EEERKcRNS3_IJNS2_11__wrap_iterIPSH_EESL_SL_EEE:
   85|  57.2k|    static DerefType get_and_deref(IterTupType& iters) {
   86|  57.2k|      return *std::get<Idx>(iters);
   87|  57.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE13get_and_derefILm2EEERKcRNS3_IJNS2_11__wrap_iterIPSH_EESL_SL_EEE:
   85|  57.2k|    static DerefType get_and_deref(IterTupType& iters) {
   86|  57.2k|      return *std::get<Idx>(iters);
   87|  57.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEEppEv:
  162|   171k|    Iterator& operator++() {
  163|   171k|      IterData::incrementers[index_](iters_);
  164|   171k|      check_for_end_and_adjust();
  165|   171k|      return *this;
  166|   171k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE17get_and_incrementILm0EEEvRNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEE:
   95|  57.2k|    static void get_and_increment(IterTupType& iters) {
   96|  57.2k|      ++std::get<Idx>(iters);
   97|  57.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE17get_and_incrementILm1EEEvRNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEE:
   95|  57.2k|    static void get_and_increment(IterTupType& iters) {
   96|  57.2k|      ++std::get<Idx>(iters);
   97|  57.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE17get_and_incrementILm2EEEvRNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEE:
   95|  57.2k|    static void get_and_increment(IterTupType& iters) {
   96|  57.2k|      ++std::get<Idx>(iters);
   97|  57.2k|    }

_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2ES9_m:
   30|    593|      : container_(std::forward<Container>(container)), length_{length} {}
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5beginEv:
  146|    593|  Iterator<Container> begin() {
  147|    593|    return {container_, length_};
  148|    593|  }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EC2ES9_m:
   57|  1.18k|        : container_p_{&container}, indices_{n} {
   58|  1.18k|      if (n == 0) {
  ------------------
  |  Branch (58:11): [True: 593, False: 593]
  ------------------
   59|    593|        steps_ = COMPLETE;
   60|    593|        return;
   61|    593|      }
   62|    593|      size_t inc = 0;
   63|  2.39k|      for (auto& iter : indices_.get()) {
  ------------------
  |  Branch (63:23): [True: 2.39k, False: 405]
  ------------------
   64|  2.39k|        auto it = get_begin(*container_p_);
   65|  2.39k|        dumb_advance(it, get_end(*container_p_), inc);
   66|  2.39k|        if (it != get_end(*container_p_)) {
  ------------------
  |  Branch (66:13): [True: 2.20k, False: 188]
  ------------------
   67|  2.20k|          iter = it;
   68|  2.20k|          ++inc;
   69|  2.20k|        } else {
   70|    188|          steps_ = COMPLETE;
   71|    188|          break;
   72|    188|        }
   73|  2.39k|      }
   74|    593|    }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE3endEv:
  150|    593|  Iterator<Container> end() {
  151|    593|    if (length_ == 0) {
  ------------------
  |  Branch (151:9): [True: 0, False: 593]
  ------------------
  152|      0|      return Iterator<Container>::zero_length_end(container_);
  153|      0|    }
  154|    593|    return {container_, 0};
  155|    593|  }
_ZNK4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EneIS9_EEbRKNSB_IT_EE:
  136|   337k|    bool operator!=(const Iterator<T>& other) const {
  137|   337k|      return !(*this == other);
  138|   337k|    }
_ZNK4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EeqIS9_EEbRKNSB_IT_EE:
  141|   337k|    bool operator==(const Iterator<T>& other) const {
  142|   337k|      return steps_ == other.steps_;
  143|   337k|    }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EppEv:
   90|   336k|    Iterator& operator++() {
   91|   336k|      if (indices_.get().empty()) {
  ------------------
  |  Branch (91:11): [True: 0, False: 336k]
  ------------------
   92|       |        // zero-length case.
   93|      0|        ++steps_;
   94|      0|        return *this;
   95|      0|      }
   96|   380k|      for (auto iter = indices_.get().rbegin(); iter != indices_.get().rend();
  ------------------
  |  Branch (96:49): [True: 380k, False: 0]
  ------------------
   97|   380k|           ++iter) {
   98|   380k|        ++(*iter);
   99|       |
  100|       |        // what we have to check here is if the distance between
  101|       |        // the index and the end of indices_ is >= the distance
  102|       |        // between the item and end of item
  103|   380k|        auto dist = std::distance(indices_.get().rbegin(), iter);
  104|       |
  105|   380k|        if (!(dumb_next(*iter, dist) != get_end(*container_p_))) {
  ------------------
  |  Branch (105:13): [True: 43.3k, False: 336k]
  ------------------
  106|  43.3k|          if ((iter + 1) != indices_.get().rend()) {
  ------------------
  |  Branch (106:15): [True: 43.1k, False: 203]
  ------------------
  107|  43.1k|            size_t inc = 1;
  108|  63.0k|            for (auto down = iter;; --down) {
  109|  63.0k|              (*down) = dumb_next(*(iter + 1), 1 + inc);
  110|  63.0k|              ++inc;
  111|  63.0k|              if (down == indices_.get().rbegin()) break;
  ------------------
  |  Branch (111:19): [True: 43.1k, False: 19.8k]
  ------------------
  112|  63.0k|            }
  113|  43.1k|          } else {
  114|    203|            steps_ = COMPLETE;
  115|    203|            break;
  116|    203|          }
  117|   336k|        } else {
  118|   336k|          break;
  119|   336k|        }
  120|       |        // we break because none of the rest of the items need
  121|       |        // to be incremented
  122|   380k|      }
  123|   336k|      if (steps_ != COMPLETE) {
  ------------------
  |  Branch (123:11): [True: 336k, False: 203]
  ------------------
  124|   336k|        ++steps_;
  125|   336k|      }
  126|   336k|      return *this;
  127|   336k|    }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EdeEv:
   82|   337k|    CombIteratorDeref<ContainerT>& operator*() {
   83|   337k|      return indices_;
   84|   337k|    }

_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE5beginEv:
  108|  1.18k|  Iterator<Container, Selector> begin() {
  109|  1.18k|    return {get_begin(container_), get_end(container_), get_begin(selectors_),
  110|  1.18k|        get_end(selectors_)};
  111|  1.18k|  }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EC2EONS2_11__wrap_iterIPiEESH_ONS2_14__bit_iteratorIS9_Lb0ELm0EEESK_:
   69|  1.77k|        : sub_iter_{std::move(cont_iter)},
   70|  1.77k|          sub_end_{std::move(cont_end)},
   71|  1.77k|          selector_iter_{std::move(sel_iter)},
   72|  1.77k|          selector_end_{std::move(sel_end)} {
   73|  1.77k|      skip_failures();
   74|  1.77k|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_E13skip_failuresEv:
   51|  21.3k|    void skip_failures() {
   52|  75.4k|      while (sub_iter_ != sub_end_ && selector_iter_ != selector_end_
  ------------------
  |  Branch (52:14): [True: 74.1k, False: 1.30k]
  |  Branch (52:14): [True: 54.0k, False: 21.3k]
  |  Branch (52:39): [True: 74.1k, False: 0]
  ------------------
   53|  74.1k|             && !*selector_iter_) {
  ------------------
  |  Branch (53:17): [True: 54.0k, False: 20.0k]
  ------------------
   54|  54.0k|        increment_iterators();
   55|  54.0k|      }
   56|  21.3k|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_E19increment_iteratorsEv:
   46|  73.6k|    void increment_iterators() {
   47|  73.6k|      ++sub_iter_;
   48|  73.6k|      ++selector_iter_;
   49|  73.6k|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE3endEv:
  113|    593|  Iterator<Container, Selector> end() {
  114|    593|    return {get_end(container_), get_end(container_), get_end(selectors_),
  115|    593|        get_end(selectors_)};
  116|    593|  }
_ZNK4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE3endEv:
  125|    593|  Iterator<AsConst<Container>, AsConst<Selector>> end() const {
  126|    593|    return {get_end(std::as_const(container_)),
  127|    593|        get_end(std::as_const(container_)),
  128|    593|        get_end(std::as_const(selectors_)),
  129|    593|        get_end(std::as_const(selectors_))};
  130|    593|  }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIRKS6_RKS9_EC2EONS2_11__wrap_iterIPKiEESM_ONS2_14__bit_iteratorIS9_Lb1ELm0EEESP_:
   69|    593|        : sub_iter_{std::move(cont_iter)},
   70|    593|          sub_end_{std::move(cont_end)},
   71|    593|          selector_iter_{std::move(sel_iter)},
   72|    593|          selector_end_{std::move(sel_end)} {
   73|    593|      skip_failures();
   74|    593|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIRKS6_RKS9_E13skip_failuresEv:
   51|    593|    void skip_failures() {
   52|    593|      while (sub_iter_ != sub_end_ && selector_iter_ != selector_end_
  ------------------
  |  Branch (52:14): [True: 0, False: 593]
  |  Branch (52:14): [True: 0, False: 593]
  |  Branch (52:39): [True: 0, False: 0]
  ------------------
   53|      0|             && !*selector_iter_) {
  ------------------
  |  Branch (53:17): [True: 0, False: 0]
  ------------------
   54|      0|        increment_iterators();
   55|      0|      }
   56|    593|    }
_ZN4iter8compressIRNSt3__16vectorIiNS1_9allocatorIiEEEERNS2_IbNS3_IbEEEEEENS_4impl10CompressedIT_T0_EEOSC_OSD_:
  135|    593|    Container&& container_, Selector&& selectors_) {
  136|    593|  return {
  137|    593|      std::forward<Container>(container_), std::forward<Selector>(selectors_)};
  138|    593|}
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEEC2ES7_SA_:
   30|    593|      : container_(std::forward<Container>(in_container)),
   31|    593|        selectors_(std::forward<Selector>(in_selectors)) {}
_ZNK4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EneIS7_SA_EEbRKNSC_IT_T0_EE:
   97|  20.1k|    bool operator!=(const Iterator<T, U>& other) const {
   98|  20.1k|      return sub_iter_ != other.sub_iter_
  ------------------
  |  Branch (98:14): [True: 19.5k, False: 593]
  ------------------
   99|  19.5k|             && selector_iter_ != other.selector_iter_;
  ------------------
  |  Branch (99:17): [True: 19.5k, False: 0]
  ------------------
  100|  20.1k|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EdeEv:
   76|  19.5k|    iterator_deref<ContainerT> operator*() {
   77|  19.5k|      return *sub_iter_;
   78|  19.5k|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EppEv:
   84|  19.5k|    Iterator& operator++() {
   85|  19.5k|      increment_iterators();
   86|  19.5k|      skip_failures();
   87|  19.5k|      return *this;
   88|  19.5k|    }
_ZNK4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EeqIRKS6_RKS9_EEbRKNSC_IT_T0_EE:
  103|    593|    bool operator==(const Iterator<T, U>& other) const {
  104|    593|      return !(*this != other);
  105|    593|    }
_ZNK4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EneIRKS6_RKS9_EEbRKNSC_IT_T0_EE:
   97|    593|    bool operator!=(const Iterator<T, U>& other) const {
   98|    593|      return sub_iter_ != other.sub_iter_
  ------------------
  |  Branch (98:14): [True: 472, False: 121]
  ------------------
   99|    472|             && selector_iter_ != other.selector_iter_;
  ------------------
  |  Branch (99:17): [True: 472, False: 0]
  ------------------
  100|    593|    }

_ZN4iter4impl6CyclerIRNSt3__16vectorIiNS2_9allocatorIiEEEEEC2ES7_:
   29|    593|      : container_(std::forward<Container>(container)) {}
_ZN4iter4impl6CyclerIRNSt3__16vectorIiNS2_9allocatorIiEEEEE5beginEv:
   89|    593|  Iterator<Container> begin() {
   90|    593|    return {get_begin(container_), get_end(container_)};
   91|    593|  }
_ZN4iter4impl6CyclerIRNSt3__16vectorIiNS2_9allocatorIiEEEEE8IteratorIS7_EC2EONS2_11__wrap_iterIPiEESE_:
   51|  1.18k|        : sub_iter_{sub_iter},
   52|  1.18k|          sub_begin_{sub_iter},
   53|  1.18k|          sub_end_{std::move(sub_end)} {}
_ZN4iter4impl6CyclerIRNSt3__16vectorIiNS2_9allocatorIiEEEEE3endEv:
   93|    593|  Iterator<Container> end() {
   94|    593|    return {get_end(container_), get_end(container_)};
   95|    593|  }
_ZNK4iter4impl6CyclerIRNSt3__16vectorIiNS2_9allocatorIiEEEEE8IteratorIS7_EneIS7_EEbRKNS9_IT_EE:
   79|   890k|    bool operator!=(const Iterator<T>& other) const {
   80|   890k|      return sub_iter_ != other.sub_iter_;
   81|   890k|    }
_ZN4iter4impl6CyclerIRNSt3__16vectorIiNS2_9allocatorIiEEEEE8IteratorIS7_EppEv:
   63|   889k|    Iterator& operator++() {
   64|   889k|      ++sub_iter_;
   65|       |      // reset to beginning upon reaching the sub_end_
   66|   889k|      if (!(sub_iter_ != sub_end_)) {
  ------------------
  |  Branch (66:11): [True: 265k, False: 623k]
  ------------------
   67|   265k|        sub_iter_ = sub_begin_;
   68|   265k|      }
   69|   889k|      return *this;
   70|   889k|    }
_ZN4iter4impl6CyclerIRNSt3__16vectorIiNS2_9allocatorIiEEEEE8IteratorIS7_EdeEv:
   55|   890k|    iterator_deref<ContainerT> operator*() {
   56|   890k|      return *sub_iter_;
   57|   890k|    }

_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_ED2Ev:
  102|  1.18k|    ~Iterator() = default;
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_ED2Ev:
  200|  7.59k|    ~Group() {
  201|  7.59k|      if (!completed) {
  ------------------
  |  Branch (201:11): [True: 3.79k, False: 3.79k]
  ------------------
  202|  16.5k|        for (auto iter = begin(), end_it = end(); iter != end_it; ++iter) {
  ------------------
  |  Branch (202:51): [True: 12.7k, False: 3.79k]
  ------------------
  203|  12.7k|        }
  204|  3.79k|      }
  205|  7.59k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E5beginEv:
  268|  3.79k|    GroupIterator begin() {
  269|  3.79k|      return {this, key_};
  270|  3.79k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIteratorC2EPSJ_Ri:
  234|  7.59k|          : key_{&key}, group_p_{group_p} {}
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E3endEv:
  272|  3.79k|    GroupIterator end() {
  273|  3.79k|      return {nullptr, key_};
  274|  3.79k|    }
_ZNK4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIteratorneERKSK_:
  236|  16.5k|      bool operator!=(const GroupIterator& other) const {
  237|  16.5k|        return !(*this == other);
  238|  16.5k|      }
_ZNK4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIteratoreqERKSK_:
  240|  16.5k|      bool operator==(const GroupIterator& other) const {
  241|  16.5k|        return group_p_ == other.group_p_;
  242|  16.5k|      }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIteratorppEv:
  244|  12.7k|      GroupIterator& operator++() {
  245|  12.7k|        group_p_->owner_.increment_iterator();
  246|  12.7k|        if (!not_at_end()) {
  ------------------
  |  Branch (246:13): [True: 3.79k, False: 8.95k]
  ------------------
  247|  3.79k|          group_p_->completed = true;
  248|  3.79k|          group_p_ = nullptr;
  249|  3.79k|        }
  250|  12.7k|        return *this;
  251|  12.7k|      }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_E18increment_iteratorEv:
  141|  12.7k|    void increment_iterator() {
  142|  12.7k|      if (sub_iter_ != sub_end_) {
  ------------------
  |  Branch (142:11): [True: 12.7k, False: 0]
  ------------------
  143|  12.7k|        ++sub_iter_;
  144|  12.7k|        if (sub_iter_ != sub_end_) {
  ------------------
  |  Branch (144:13): [True: 12.1k, False: 593]
  ------------------
  145|  12.1k|          item_.reset(*sub_iter_);
  146|  12.1k|        }
  147|  12.7k|      }
  148|  12.7k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIterator10not_at_endEv:
  220|  12.7k|      bool not_at_end() {
  221|  12.7k|        return !group_p_->owner_.exhausted()
  ------------------
  |  Branch (221:16): [True: 12.1k, False: 593]
  ------------------
  222|  12.1k|               && group_p_->owner_.next_key() == *key_;
  ------------------
  |  Branch (222:19): [True: 8.95k, False: 3.20k]
  ------------------
  223|  12.7k|      }
_ZNK4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_E9exhaustedEv:
  150|  12.7k|    bool exhausted() const {
  151|  12.7k|      return !(sub_iter_ != sub_end_);
  152|  12.7k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_E8next_keyEv:
  162|  15.9k|    key_func_ret<ContainerT> next_key() {
  163|  15.9k|      return std::invoke(*key_func_, item_.get());
  164|  15.9k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EEC2ESC_SG_:
   38|    593|      : container_(std::forward<Container>(container)),
   39|    593|        key_func_(std::move(key_func)) {}
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5beginEv:
  277|    593|  Iterator<Container> begin() {
  278|    593|    return {get_begin(container_), get_end(container_), key_func_};
  279|    593|  }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_EC2EONS2_11__wrap_iterIPS9_EESN_RSG_:
   76|  1.18k|        : sub_iter_{std::move(sub_iter)},
   77|  1.18k|          sub_end_{std::move(sub_end)},
   78|  1.18k|          key_func_(&key_func) {
   79|  1.18k|      if (sub_iter_ != sub_end_) {
  ------------------
  |  Branch (79:11): [True: 593, False: 593]
  ------------------
   80|    593|        item_.reset(*sub_iter_);
   81|    593|      }
   82|  1.18k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE3endEv:
  281|    593|  Iterator<Container> end() {
  282|    593|    return {get_end(container_), get_end(container_), key_func_};
  283|    593|  }
_ZNK4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_EneISC_EEbRKNSI_IT_EE:
  132|  4.39k|    bool operator!=(const Iterator<T>& other) const {
  133|  4.39k|      return sub_iter_ != other.sub_iter_;
  134|  4.39k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_EppEv:
  117|  3.79k|    Iterator& operator++() {
  118|  3.79k|      if (!current_key_group_pair_) {
  ------------------
  |  Branch (118:11): [True: 0, False: 3.79k]
  ------------------
  119|      0|        set_key_group_pair();
  120|      0|      }
  121|  3.79k|      current_key_group_pair_.reset();
  122|  3.79k|      return *this;
  123|  3.79k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_E18set_key_group_pairEv:
  166|  3.79k|    void set_key_group_pair() {
  167|  3.79k|      if (!current_key_group_pair_) {
  ------------------
  |  Branch (167:11): [True: 3.79k, False: 0]
  ------------------
  168|  3.79k|        current_key_group_pair_.emplace(std::invoke(*key_func_, item_.get()),
  169|  3.79k|            Group<ContainerT>{*this, next_key()});
  170|  3.79k|      }
  171|  3.79k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_EC2EOSJ_:
  209|  3.79k|        : owner_(other.owner_),
  210|  3.79k|          key_{std::forward<key_func_ret<ContainerT>>(other.key_)},
  211|  3.79k|          completed{other.completed} {
  212|  3.79k|      other.completed = true;
  213|  3.79k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_EC2ERNSH_8IteratorISC_EEi:
  197|  3.79k|        : owner_(owner), key_(std::forward<key_func_ret<ContainerT>>(key)) {}
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_EdeEv:
  107|  3.79k|    KeyGroupPair<ContainerT>& operator*() {
  108|  3.79k|      set_key_group_pair();
  109|  3.79k|      return *current_key_group_pair_;
  110|  3.79k|    }

_ZN4iter4impl15IterIterWrapperINSt3__16vectorINS2_11__wrap_iterIPcEENS2_9allocatorIS6_EEEEE5beginEv:
  217|   337k|      iterator begin() noexcept {
  218|   337k|        return {container.begin()};
  219|   337k|      }
_ZN4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEC2ERKS7_:
   50|   674k|      IteratorIterator(const TopIter& it) : sub_iter{it} {}
_ZN4iter4impl15IterIterWrapperINSt3__16vectorINS2_11__wrap_iterIPcEENS2_9allocatorIS6_EEEEE3endEv:
  221|   337k|      iterator end() noexcept {
  222|   337k|        return {container.end()};
  223|   337k|      }
_ZN4iter4impl15IterIterWrapperINSt3__16vectorINS2_11__wrap_iterIPcEENS2_9allocatorIS6_EEEEEC2Em:
  186|  1.18k|      explicit IterIterWrapper(size_type sz) : container(sz) {}
_ZN4iter4impl15IterIterWrapperINSt3__16vectorINS2_11__wrap_iterIPcEENS2_9allocatorIS6_EEEEE3getEv:
  268|  1.54M|      Container& get() noexcept {
  269|  1.54M|        return container;
  270|  1.54M|      }
_ZNK4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEmiERKS8_:
  123|   337k|      Diff operator-(const IteratorIterator& rhs) const {
  124|   337k|        return this->sub_iter - rhs.sub_iter;
  125|   337k|      }
_ZNK4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEneIS7_EEbRKNS1_IT_EE:
   62|  2.86M|      bool operator!=(const IteratorIterator<T>& other) const {
   63|  2.86M|        return this->sub_iter != other.sub_iter;
   64|  2.86M|      }
_ZNK4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEdeEv:
   88|  2.52M|      auto operator*() const -> decltype(**sub_iter) {
   89|  2.52M|        return **this->sub_iter;
   90|  2.52M|      }
_ZN4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEppEv:
   66|  2.52M|      IteratorIterator& operator++() {
   67|  2.52M|        ++this->sub_iter;
   68|  2.52M|        return *this;
   69|  2.52M|      }

_ZN4iter4impl9get_iters9get_beginIKNSt3__16vectorIcNS3_9allocatorIcEEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEESA_:
   49|  1.77k|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|  1.77k|        return get_begin_impl(t, 42);
   51|  1.77k|      }
_ZN4iter4impl9get_iters14get_begin_implIKNSt3__16vectorIcNS3_9allocatorIcEEEENS3_11__wrap_iterIPKcEEEET0_RT_i:
   38|  1.77k|      I get_begin_impl(T& r, int) {
   39|  1.77k|        return r.begin();
   40|  1.77k|      }
_ZN4iter4impl9get_iters7get_endIKNSt3__16vectorIcNS3_9allocatorIcEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESA_:
   72|  5.33k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  5.33k|        return get_end_impl(t, 42);
   74|  5.33k|      }
_ZN4iter4impl9get_iters12get_end_implIKNSt3__16vectorIcNS3_9allocatorIcEEEENS3_11__wrap_iterIPKcEEEET0_RT_i:
   61|  5.33k|      I get_end_impl(T& r, int) {
   62|  5.33k|        return r.end();
   63|  5.33k|      }
_ZN4iter4impl11DerefHolderIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5resetES9_:
  332|  12.7k|      void reset(reference item) {
  333|  12.7k|        item_p_ = &item;
  334|  12.7k|      }
_ZN4iter4impl11DerefHolderIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE3getEv:
  322|  19.7k|      reference get() {
  323|  19.7k|        assert(item_p_);
  ------------------
  |  Branch (323:9): [True: 19.7k, False: 0]
  ------------------
  324|  19.7k|        return *item_p_;
  325|  19.7k|      }
_ZN4iter4impl9get_iters9get_beginINSt3__16vectorIiNS3_9allocatorIiEEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEES9_:
   49|  1.77k|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|  1.77k|        return get_begin_impl(t, 42);
   51|  1.77k|      }
_ZN4iter4impl9get_iters14get_begin_implINSt3__16vectorIiNS3_9allocatorIiEEEENS3_11__wrap_iterIPiEEEET0_RT_i:
   38|  1.77k|      I get_begin_impl(T& r, int) {
   39|  1.77k|        return r.begin();
   40|  1.77k|      }
_ZN4iter4impl9get_iters7get_endINSt3__16vectorIiNS3_9allocatorIiEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEES9_:
   72|  4.15k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  4.15k|        return get_end_impl(t, 42);
   74|  4.15k|      }
_ZN4iter4impl9get_iters12get_end_implINSt3__16vectorIiNS3_9allocatorIiEEEENS3_11__wrap_iterIPiEEEET0_RT_i:
   61|  4.15k|      I get_end_impl(T& r, int) {
   62|  4.15k|        return r.end();
   63|  4.15k|      }
_ZN4iter4impl9get_iters9get_beginINSt3__16vectorIbNS3_9allocatorIbEEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEES9_:
   49|  1.18k|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|  1.18k|        return get_begin_impl(t, 42);
   51|  1.18k|      }
_ZN4iter4impl9get_iters14get_begin_implINSt3__16vectorIbNS3_9allocatorIbEEEENS3_14__bit_iteratorIS7_Lb0ELm0EEEEET0_RT_i:
   38|  1.18k|      I get_begin_impl(T& r, int) {
   39|  1.18k|        return r.begin();
   40|  1.18k|      }
_ZN4iter4impl9get_iters7get_endINSt3__16vectorIbNS3_9allocatorIbEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEES9_:
   72|  2.37k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  2.37k|        return get_end_impl(t, 42);
   74|  2.37k|      }
_ZN4iter4impl9get_iters12get_end_implINSt3__16vectorIbNS3_9allocatorIbEEEENS3_14__bit_iteratorIS7_Lb0ELm0EEEEET0_RT_i:
   61|  2.37k|      I get_end_impl(T& r, int) {
   62|  2.37k|        return r.end();
   63|  2.37k|      }
_ZN4iter4impl9get_iters7get_endIKNSt3__16vectorIiNS3_9allocatorIiEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESA_:
   72|  1.18k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  1.18k|        return get_end_impl(t, 42);
   74|  1.18k|      }
_ZN4iter4impl9get_iters12get_end_implIKNSt3__16vectorIiNS3_9allocatorIiEEEENS3_11__wrap_iterIPKiEEEET0_RT_i:
   61|  1.18k|      I get_end_impl(T& r, int) {
   62|  1.18k|        return r.end();
   63|  1.18k|      }
_ZN4iter4impl9get_iters7get_endIKNSt3__16vectorIbNS3_9allocatorIbEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESA_:
   72|  1.18k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  1.18k|        return get_end_impl(t, 42);
   74|  1.18k|      }
_ZN4iter4impl9get_iters12get_end_implIKNSt3__16vectorIbNS3_9allocatorIbEEEENS3_14__bit_iteratorIS7_Lb1ELm0EEEEET0_RT_i:
   61|  1.18k|      I get_end_impl(T& r, int) {
   62|  1.18k|        return r.end();
   63|  1.18k|      }
_ZNK4iter4impl28IterToolFnOptionalBindSecondINS0_13GroupProducerENS0_8IdentityEEclIRNSt3__16vectorINS6_12basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEENSB_ISD_EEEEPFiRKSD_EEENS2_IT_T0_EEOSL_SM_:
  488|    593|      ItImpl<Container, T> operator()(Container&& container, T func) const {
  489|    593|        return {std::forward<Container>(container), std::move(func)};
  490|    593|      }
_ZN4iter4impl9get_iters9get_beginINSt3__16vectorINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS8_ISA_EEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEESE_:
   49|    593|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|    593|        return get_begin_impl(t, 42);
   51|    593|      }
_ZN4iter4impl9get_iters14get_begin_implINSt3__16vectorINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS8_ISA_EEEENS3_11__wrap_iterIPSA_EEEET0_RT_i:
   38|    593|      I get_begin_impl(T& r, int) {
   39|    593|        return r.begin();
   40|    593|      }
_ZN4iter4impl9get_iters7get_endINSt3__16vectorINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS8_ISA_EEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESE_:
   72|  1.77k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  1.77k|        return get_end_impl(t, 42);
   74|  1.77k|      }
_ZN4iter4impl9get_iters12get_end_implINSt3__16vectorINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS8_ISA_EEEENS3_11__wrap_iterIPSA_EEEET0_RT_i:
   61|  1.77k|      I get_end_impl(T& r, int) {
   62|  1.77k|        return r.end();
   63|  1.77k|      }
_ZN4iter4impl11DerefHolderIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2Ev:
  320|  1.18k|      DerefHolder() = default;
_ZNK4iter4impl10IterToolFnINS0_6CyclerEEclIRNSt3__16vectorIiNS5_9allocatorIiEEEEJEEENS2_IT_EEOSB_DpT0_:
  365|    593|      ItImpl<T> operator()(T&& t, Ts... ts) const {
  366|    593|        return {std::forward<T>(t), std::move(ts)...};
  367|    593|      }
_ZNK4iter4impl25IterToolFnBindSizeTSecondINS0_10CombinatorEEclIRNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEvEENS2_IT_EEOSD_m:
  526|    593|      ItImpl<Container> operator()(Container&& container, Size sz) const {
  527|    593|        return {std::forward<Container>(container), sz};
  528|    593|      }
_ZN4iter4impl9get_iters9get_beginINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEESB_:
   49|  2.39k|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|  2.39k|        return get_begin_impl(t, 42);
   51|  2.39k|      }
_ZN4iter4impl9get_iters14get_begin_implINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS3_11__wrap_iterIPcEEEET0_RT_i:
   38|  2.39k|      I get_begin_impl(T& r, int) {
   39|  2.39k|        return r.begin();
   40|  2.39k|      }
_ZN4iter4impl12dumb_advanceINSt3__111__wrap_iterIPcEES5_mEEvRT_RKT0_T1_:
  219|  2.39k|    void dumb_advance(Iter& iter, const EndIter& end, Distance distance) {
  220|  2.39k|      if constexpr (is_random_access_iter<Iter>{}) {
  221|  2.39k|        if (static_cast<Distance>(end - iter) < distance) {
  ------------------
  |  Branch (221:13): [True: 0, False: 2.39k]
  ------------------
  222|      0|          iter = end;
  223|  2.39k|        } else {
  224|  2.39k|          iter += distance;
  225|  2.39k|        }
  226|       |      } else {
  227|       |        for (Distance i(0); i < distance && iter != end; ++i) {
  228|       |          ++iter;
  229|       |        }
  230|       |      }
  231|  2.39k|    }
_ZN4iter4impl9get_iters7get_endINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESB_:
   72|   384k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|   384k|        return get_end_impl(t, 42);
   74|   384k|      }
_ZN4iter4impl9get_iters12get_end_implINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS3_11__wrap_iterIPcEEEET0_RT_i:
   61|   384k|      I get_end_impl(T& r, int) {
   62|   384k|        return r.end();
   63|   384k|      }
_ZN4iter4impl9dumb_nextINSt3__111__wrap_iterIPcEElEET_S6_T0_:
  234|   380k|    ForwardIt dumb_next(ForwardIt it, Distance distance = 1) {
  235|   380k|      dumb_advance_unsafe(it, distance);
  236|   380k|      return it;
  237|   380k|    }
_ZN4iter4impl19dumb_advance_unsafeINSt3__111__wrap_iterIPcEElEEvRT_T0_:
  211|   380k|    void dumb_advance_unsafe(InputIt& iter, Distance distance) {
  212|   443k|      for (Distance i(0); i < distance; ++i) {
  ------------------
  |  Branch (212:27): [True: 63.0k, False: 380k]
  ------------------
  213|  63.0k|        ++iter;
  214|  63.0k|      }
  215|   380k|    }
_ZN4iter4impl9dumb_nextINSt3__111__wrap_iterIPcEEmEET_S6_T0_:
  234|  63.0k|    ForwardIt dumb_next(ForwardIt it, Distance distance = 1) {
  235|  63.0k|      dumb_advance_unsafe(it, distance);
  236|  63.0k|      return it;
  237|  63.0k|    }
_ZN4iter4impl19dumb_advance_unsafeINSt3__111__wrap_iterIPcEEmEEvRT_T0_:
  211|  63.0k|    void dumb_advance_unsafe(InputIt& iter, Distance distance) {
  212|   222k|      for (Distance i(0); i < distance; ++i) {
  ------------------
  |  Branch (212:27): [True: 159k, False: 63.0k]
  ------------------
  213|   159k|        ++iter;
  214|   159k|      }
  215|  63.0k|    }

_Z11FuzzChainedPKhm:
   31|    593|void FuzzChained(const uint8_t *data, size_t size) {
   32|    593|  FuzzedDataProvider fdp(data, size);
   33|    593|  std::vector<char> v;
   34|  57.8k|  for (int i = 0; i < fdp.ConsumeIntegralInRange<int>(1, 1024); i++) {
  ------------------
  |  Branch (34:19): [True: 57.2k, False: 593]
  ------------------
   35|  57.2k|    v.push_back((char)fdp.ConsumeIntegral<char>());
   36|  57.2k|  }
   37|    593|  const auto ch = chain(v, v, v);
   38|    593|  std::vector<char> v2(std::begin(ch), std::end(ch));
   39|    593|}
_Z6lengthRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE:
   41|  19.7k|int length(const std::string &s) { return s.size(); }
_Z11FuzzGroupbyPKhm:
   43|    593|void FuzzGroupby(const uint8_t *data, size_t size) {
   44|    593|  FuzzedDataProvider fdp(data, size);
   45|    593|  std::vector<std::string> v;
   46|  13.3k|  for (int i = 0; i < fdp.ConsumeIntegralInRange<int>(1, 1024); i++) {
  ------------------
  |  Branch (46:19): [True: 12.7k, False: 593]
  ------------------
   47|  12.7k|    v.push_back(fdp.ConsumeRandomLengthString());
   48|  12.7k|  }
   49|  3.79k|  for (auto &&gb : groupby(v, length)) {
  ------------------
  |  Branch (49:18): [True: 3.79k, False: 593]
  ------------------
   50|  3.79k|  }
   51|    593|}
_Z9FuzzCyclePKhm:
   53|    593|void FuzzCycle(const uint8_t *data, size_t size) {
   54|    593|  FuzzedDataProvider fdp(data, size);
   55|    593|  std::vector<int> v;
   56|  45.3k|  for (int i = 0; i < fdp.ConsumeIntegralInRange<int>(1, 1024); i++) {
  ------------------
  |  Branch (56:19): [True: 44.7k, False: 593]
  ------------------
   57|  44.7k|    v.push_back(fdp.ConsumeIntegral<int>());
   58|  44.7k|  }
   59|    593|  auto ch = cycle(v);
   60|       |
   61|    593|  std::vector<int> o;
   62|    593|  size_t count = 0;
   63|   890k|  for (auto val : ch) {
  ------------------
  |  Branch (63:17): [True: 890k, False: 0]
  ------------------
   64|   890k|    o.push_back(val);
   65|   890k|    count++;
   66|   890k|    if (count > 1500) {
  ------------------
  |  Branch (66:9): [True: 593, False: 889k]
  ------------------
   67|    593|      break;
   68|    593|    }
   69|   890k|  }
   70|    593|}
_Z16FuzzCombinationsPKhm:
   72|    593|void FuzzCombinations(const uint8_t *data, size_t size) {
   73|    593|  FuzzedDataProvider fdp(data, size);
   74|    593|  std::string s = fdp.ConsumeRandomLengthString();
   75|    593|  std::vector<std::vector<char>> sc;
   76|    593|  size_t count = 0;
   77|   337k|  for (auto &&v : combinations(s, fdp.ConsumeIntegralInRange(1, 16))) {
  ------------------
  |  Branch (77:17): [True: 337k, False: 391]
  ------------------
   78|   337k|    sc.emplace_back(std::begin(v), std::end(v));
   79|   337k|    count++;
   80|   337k|    if (count > 1500) {
  ------------------
  |  Branch (80:9): [True: 202, False: 336k]
  ------------------
   81|    202|      break;
   82|    202|    }
   83|   337k|  }
   84|    593|}
_Z12FuzzCompressPKhm:
   86|    593|void FuzzCompress(const uint8_t *data, size_t size) {
   87|    593|  FuzzedDataProvider fdp(data, size);
   88|    593|  std::vector<int> ivec;
   89|    593|  std::vector<bool> bvec;
   90|  59.8k|  for (int i = 0; i < 100; i++) {
  ------------------
  |  Branch (90:19): [True: 59.3k, False: 593]
  ------------------
   91|  59.3k|    ivec.push_back(fdp.ConsumeIntegralInRange(1, 1000000));
   92|  59.3k|    bvec.push_back(fdp.ConsumeBool());
   93|  59.3k|  }
   94|    593|  auto c = compress(ivec, bvec);
   95|    593|  std::vector<int> v(std::begin(c), std::end(c));
   96|    593|  const auto &c2 = c;
   97|    593|  (void)(std::begin(c) == std::end(c2));
   98|    593|}
LLVMFuzzerTestOneInput:
  100|    593|extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
  101|    593|  FuzzChained(data, size);
  102|    593|  FuzzGroupby(data, size);
  103|    593|  FuzzCycle(data, size);
  104|    593|  FuzzCombinations(data, size);
  105|    593|  FuzzCompress(data, size);
  106|    593|  return 0;
  107|    593|}

