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

_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2ES9_m:
   30|    601|      : container_(std::forward<Container>(container)), length_{length} {}
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5beginEv:
  146|    601|  Iterator<Container> begin() {
  147|    601|    return {container_, length_};
  148|    601|  }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EC2ES9_m:
   57|  1.20k|        : container_p_{&container}, indices_{n} {
   58|  1.20k|      if (n == 0) {
  ------------------
  |  Branch (58:11): [True: 601, False: 601]
  ------------------
   59|    601|        steps_ = COMPLETE;
   60|    601|        return;
   61|    601|      }
   62|    601|      size_t inc = 0;
   63|  2.13k|      for (auto& iter : indices_.get()) {
  ------------------
  |  Branch (63:23): [True: 2.13k, False: 416]
  ------------------
   64|  2.13k|        auto it = get_begin(*container_p_);
   65|  2.13k|        dumb_advance(it, get_end(*container_p_), inc);
   66|  2.13k|        if (it != get_end(*container_p_)) {
  ------------------
  |  Branch (66:13): [True: 1.95k, False: 185]
  ------------------
   67|  1.95k|          iter = it;
   68|  1.95k|          ++inc;
   69|  1.95k|        } else {
   70|    185|          steps_ = COMPLETE;
   71|    185|          break;
   72|    185|        }
   73|  2.13k|      }
   74|    601|    }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE3endEv:
  150|    601|  Iterator<Container> end() {
  151|    601|    if (length_ == 0) {
  ------------------
  |  Branch (151:9): [True: 0, False: 601]
  ------------------
  152|      0|      return Iterator<Container>::zero_length_end(container_);
  153|      0|    }
  154|    601|    return {container_, 0};
  155|    601|  }
_ZNK4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EneIS9_EEbRKNSB_IT_EE:
  136|   336k|    bool operator!=(const Iterator<T>& other) const {
  137|   336k|      return !(*this == other);
  138|   336k|    }
_ZNK4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EeqIS9_EEbRKNSB_IT_EE:
  141|   336k|    bool operator==(const Iterator<T>& other) const {
  142|   336k|      return steps_ == other.steps_;
  143|   336k|    }
_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|   373k|      for (auto iter = indices_.get().rbegin(); iter != indices_.get().rend();
  ------------------
  |  Branch (96:49): [True: 373k, False: 0]
  ------------------
   97|   373k|           ++iter) {
   98|   373k|        ++(*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|   373k|        auto dist = std::distance(indices_.get().rbegin(), iter);
  104|       |
  105|   373k|        if (!(dumb_next(*iter, dist) != get_end(*container_p_))) {
  ------------------
  |  Branch (105:13): [True: 37.6k, False: 335k]
  ------------------
  106|  37.6k|          if ((iter + 1) != indices_.get().rend()) {
  ------------------
  |  Branch (106:15): [True: 37.4k, False: 215]
  ------------------
  107|  37.4k|            size_t inc = 1;
  108|  56.2k|            for (auto down = iter;; --down) {
  109|  56.2k|              (*down) = dumb_next(*(iter + 1), 1 + inc);
  110|  56.2k|              ++inc;
  111|  56.2k|              if (down == indices_.get().rbegin()) break;
  ------------------
  |  Branch (111:19): [True: 37.4k, False: 18.8k]
  ------------------
  112|  56.2k|            }
  113|  37.4k|          } else {
  114|    215|            steps_ = COMPLETE;
  115|    215|            break;
  116|    215|          }
  117|   335k|        } else {
  118|   335k|          break;
  119|   335k|        }
  120|       |        // we break because none of the rest of the items need
  121|       |        // to be incremented
  122|   373k|      }
  123|   336k|      if (steps_ != COMPLETE) {
  ------------------
  |  Branch (123:11): [True: 335k, False: 215]
  ------------------
  124|   335k|        ++steps_;
  125|   335k|      }
  126|   336k|      return *this;
  127|   336k|    }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EdeEv:
   82|   336k|    CombIteratorDeref<ContainerT>& operator*() {
   83|   336k|      return indices_;
   84|   336k|    }

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

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

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

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

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

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

