_ZNK4iter4impl10ChainMakerclIJRNSt3__16vectorIcNS3_9allocatorIcEEEES8_S8_EEEDaDpOT_:
  320|    506|  auto operator()(Containers&&... cs) const {
  321|    506|    return chain_impl(
  322|    506|        std::tuple<Containers...>{std::forward<Containers>(cs)...},
  323|    506|        std::index_sequence_for<Containers...>{});
  324|    506|  }
_ZNK4iter4impl10ChainMaker10chain_implINSt3__15tupleIJRNS3_6vectorIcNS3_9allocatorIcEEEES9_S9_EEEJLm0ELm1ELm2EEEENS0_7ChainedIT_JXspT0_EEEEOSC_NS3_16integer_sequenceImJXspT0_EEEE:
  313|    506|      TupleType&& containers, std::index_sequence<Is...>) const {
  314|    506|    return {std::move(containers)};
  315|    506|  }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEEC2EOS9_:
  106|    506|  Chained(TupType&& t) : tup_(std::move(t)) {}
_ZNK4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE5beginEv:
  182|    506|  Iterator<AsTupleOfConst<TupType>> begin() const {
  183|    506|    return {0, {get_begin(std::as_const(std::get<Is>(tup_)))...},
  184|    506|        {get_end(std::as_const(std::get<Is>(tup_)))...}};
  185|    506|  }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEEC2EmONS3_IJNS2_11__wrap_iterIPKcEESJ_SJ_EEESL_:
  136|  1.01k|        : index_{i}, iters_(std::move(iters)), ends_(std::move(ends)) {
  137|  1.01k|      check_for_end_and_adjust();
  138|  1.01k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEE24check_for_end_and_adjustEv:
  120|   154k|    void check_for_end_and_adjust() {
  121|   156k|      while (index_ < sizeof...(Is)
  ------------------
  |  Branch (121:14): [True: 155k, False: 1.01k]
  ------------------
  122|   156k|             && !(IterData::neq_comparers[index_](iters_, ends_))) {
  ------------------
  |  Branch (122:17): [True: 1.51k, False: 153k]
  ------------------
  123|  1.51k|        ++index_;
  124|  1.51k|      }
  125|   154k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE23get_and_check_not_equalILm0EEEbRKNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEESN_:
   81|  51.7k|        const IterTupType& lhs, const IterTupType& rhs) {
   82|  51.7k|      return std::get<Idx>(lhs) != std::get<Idx>(rhs);
   83|  51.7k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE23get_and_check_not_equalILm1EEEbRKNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEESN_:
   81|  51.7k|        const IterTupType& lhs, const IterTupType& rhs) {
   82|  51.7k|      return std::get<Idx>(lhs) != std::get<Idx>(rhs);
   83|  51.7k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE23get_and_check_not_equalILm2EEEbRKNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEESN_:
   81|  51.7k|        const IterTupType& lhs, const IterTupType& rhs) {
   82|  51.7k|      return std::get<Idx>(lhs) != std::get<Idx>(rhs);
   83|  51.7k|    }
_ZNK4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE3endEv:
  187|    506|  Iterator<AsTupleOfConst<TupType>> end() const {
  188|    506|    return {sizeof...(Is), {get_end(std::as_const(std::get<Is>(tup_)))...},
  189|    506|        {get_end(std::as_const(std::get<Is>(tup_)))...}};
  190|    506|  }
_ZNK4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEEneERKSF_:
  161|   154k|    bool operator!=(const Iterator& other) const {
  162|   154k|      return index_ != other.index_
  ------------------
  |  Branch (162:14): [True: 153k, False: 506]
  ------------------
  163|   154k|             || (index_ != sizeof...(Is)
  ------------------
  |  Branch (163:18): [True: 0, False: 506]
  ------------------
  164|    506|                    && IterData::neq_comparers[index_](iters_, other.iters_));
  ------------------
  |  Branch (164:24): [True: 0, False: 0]
  ------------------
  165|   154k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEEdeEv:
  140|   153k|    decltype(auto) operator*() {
  141|   153k|      return IterData::derefers[index_](iters_);
  142|   153k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE13get_and_derefILm0EEERKcRNS3_IJNS2_11__wrap_iterIPSH_EESL_SL_EEE:
   65|  51.2k|    static DerefType get_and_deref(IterTupType& iters) {
   66|  51.2k|      return *std::get<Idx>(iters);
   67|  51.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE13get_and_derefILm1EEERKcRNS3_IJNS2_11__wrap_iterIPSH_EESL_SL_EEE:
   65|  51.2k|    static DerefType get_and_deref(IterTupType& iters) {
   66|  51.2k|      return *std::get<Idx>(iters);
   67|  51.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE13get_and_derefILm2EEERKcRNS3_IJNS2_11__wrap_iterIPSH_EESL_SL_EEE:
   65|  51.2k|    static DerefType get_and_deref(IterTupType& iters) {
   66|  51.2k|      return *std::get<Idx>(iters);
   67|  51.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE8IteratorINS3_IJRKS7_SD_SD_EEEEppEv:
  148|   153k|    Iterator& operator++() {
  149|   153k|      IterData::incrementers[index_](iters_);
  150|   153k|      check_for_end_and_adjust();
  151|   153k|      return *this;
  152|   153k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE17get_and_incrementILm0EEEvRNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEE:
   75|  51.2k|    static void get_and_increment(IterTupType& iters) {
   76|  51.2k|      ++std::get<Idx>(iters);
   77|  51.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE17get_and_incrementILm1EEEvRNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEE:
   75|  51.2k|    static void get_and_increment(IterTupType& iters) {
   76|  51.2k|      ++std::get<Idx>(iters);
   77|  51.2k|    }
_ZN4iter4impl7ChainedINSt3__15tupleIJRNS2_6vectorIcNS2_9allocatorIcEEEES8_S8_EEEJLm0ELm1ELm2EEE12IteratorDataINS3_IJRKS7_SD_SD_EEEE17get_and_incrementILm2EEEvRNS3_IJNS2_11__wrap_iterIPKcEESK_SK_EEE:
   75|  51.2k|    static void get_and_increment(IterTupType& iters) {
   76|  51.2k|      ++std::get<Idx>(iters);
   77|  51.2k|    }

_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2ES9_m:
   30|    506|      : container_(std::forward<Container>(container)), length_{length} {}
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5beginEv:
  136|    506|  Iterator<Container> begin() {
  137|    506|    return {container_, length_};
  138|    506|  }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EC2ES9_m:
   57|  1.01k|        : container_p_{&container}, indices_{n} {
   58|  1.01k|      if (n == 0) {
  ------------------
  |  Branch (58:11): [True: 506, False: 506]
  ------------------
   59|    506|        steps_ = COMPLETE;
   60|    506|        return;
   61|    506|      }
   62|    506|      size_t inc = 0;
   63|  1.88k|      for (auto& iter : indices_.get()) {
  ------------------
  |  Branch (63:23): [True: 1.88k, False: 326]
  ------------------
   64|  1.88k|        auto it = get_begin(*container_p_);
   65|  1.88k|        dumb_advance(it, get_end(*container_p_), inc);
   66|  1.88k|        if (it != get_end(*container_p_)) {
  ------------------
  |  Branch (66:13): [True: 1.70k, False: 180]
  ------------------
   67|  1.70k|          iter = it;
   68|  1.70k|          ++inc;
   69|  1.70k|        } else {
   70|    180|          steps_ = COMPLETE;
   71|    180|          break;
   72|    180|        }
   73|  1.88k|      }
   74|    506|    }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE3endEv:
  140|    506|  Iterator<Container> end() {
  141|    506|    return {container_, 0};
  142|    506|  }
_ZNK4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EneIS9_EEbRKNSB_IT_EE:
  126|   298k|    bool operator!=(const Iterator<T>& other) const {
  127|   298k|      return !(*this == other);
  128|   298k|    }
_ZNK4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EeqIS9_EEbRKNSB_IT_EE:
  131|   298k|    bool operator==(const Iterator<T>& other) const {
  132|   298k|      return steps_ == other.steps_;
  133|   298k|    }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EppEv:
   84|   297k|    Iterator& operator++() {
   85|   323k|      for (auto iter = indices_.get().rbegin(); iter != indices_.get().rend();
  ------------------
  |  Branch (85:49): [True: 323k, False: 0]
  ------------------
   86|   323k|           ++iter) {
   87|   323k|        ++(*iter);
   88|       |
   89|       |        // what we have to check here is if the distance between
   90|       |        // the index and the end of indices_ is >= the distance
   91|       |        // between the item and end of item
   92|   323k|        auto dist = std::distance(indices_.get().rbegin(), iter);
   93|       |
   94|   323k|        if (!(dumb_next(*iter, dist) != get_end(*container_p_))) {
  ------------------
  |  Branch (94:13): [True: 25.8k, False: 297k]
  ------------------
   95|  25.8k|          if ((iter + 1) != indices_.get().rend()) {
  ------------------
  |  Branch (95:15): [True: 25.7k, False: 144]
  ------------------
   96|  25.7k|            size_t inc = 1;
   97|  37.1k|            for (auto down = iter; ; --down) {
   98|  37.1k|              (*down) = dumb_next(*(iter + 1), 1 + inc);
   99|  37.1k|              ++inc;
  100|  37.1k|              if (down == indices_.get().rbegin())
  ------------------
  |  Branch (100:19): [True: 25.7k, False: 11.4k]
  ------------------
  101|  25.7k|                break;
  102|  37.1k|            }
  103|  25.7k|          } else {
  104|    144|            steps_ = COMPLETE;
  105|    144|            break;
  106|    144|          }
  107|   297k|        } else {
  108|   297k|          break;
  109|   297k|        }
  110|       |        // we break because none of the rest of the items need
  111|       |        // to be incremented
  112|   323k|      }
  113|   297k|      if (steps_ != COMPLETE) {
  ------------------
  |  Branch (113:11): [True: 297k, False: 144]
  ------------------
  114|   297k|        ++steps_;
  115|   297k|      }
  116|   297k|      return *this;
  117|   297k|    }
_ZN4iter4impl10CombinatorIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE8IteratorIS9_EdeEv:
   76|   297k|    CombIteratorDeref<ContainerT>& operator*() {
   77|   297k|      return indices_;
   78|   297k|    }

_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE5beginEv:
  108|  1.01k|  Iterator<Container, Selector> begin() {
  109|  1.01k|    return {get_begin(container_), get_end(container_), get_begin(selectors_),
  110|  1.01k|        get_end(selectors_)};
  111|  1.01k|  }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EC2EONS2_11__wrap_iterIPiEESH_ONS2_14__bit_iteratorIS9_Lb0ELm0EEESK_:
   72|  1.51k|          selector_end_{std::move(sel_end)} {
   73|  1.51k|      skip_failures();
   74|  1.51k|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_E13skip_failuresEv:
   51|  1.51k|    void skip_failures() {
   52|  1.51k|      while (sub_iter_ != sub_end_ && selector_iter_ != selector_end_
  ------------------
  |  Branch (52:14): [True: 1.01k, False: 506]
  |  Branch (52:14): [True: 0, False: 1.51k]
  |  Branch (52:39): [True: 0, False: 1.01k]
  ------------------
   53|  1.51k|             && !*selector_iter_) {
  ------------------
  |  Branch (53:17): [True: 0, False: 0]
  ------------------
   54|      0|        increment_iterators();
   55|      0|      }
   56|  1.51k|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE3endEv:
  113|    506|  Iterator<Container, Selector> end() {
  114|    506|    return {get_end(container_), get_end(container_), get_end(selectors_),
  115|    506|        get_end(selectors_)};
  116|    506|  }
_ZNK4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE3endEv:
  125|    506|  Iterator<AsConst<Container>, AsConst<Selector>> end() const {
  126|    506|    return {get_end(std::as_const(container_)),
  127|    506|        get_end(std::as_const(container_)),
  128|    506|        get_end(std::as_const(selectors_)),
  129|    506|        get_end(std::as_const(selectors_))};
  130|    506|  }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIRKS6_RKS9_EC2EONS2_11__wrap_iterIPKiEESM_ONS2_14__bit_iteratorIS9_Lb1ELm0EEESP_:
   72|    506|          selector_end_{std::move(sel_end)} {
   73|    506|      skip_failures();
   74|    506|    }
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIRKS6_RKS9_E13skip_failuresEv:
   51|    506|    void skip_failures() {
   52|    506|      while (sub_iter_ != sub_end_ && selector_iter_ != selector_end_
  ------------------
  |  Branch (52:14): [True: 0, False: 506]
  |  Branch (52:14): [True: 0, False: 506]
  |  Branch (52:39): [True: 0, False: 0]
  ------------------
   53|    506|             && !*selector_iter_) {
  ------------------
  |  Branch (53:17): [True: 0, False: 0]
  ------------------
   54|      0|        increment_iterators();
   55|      0|      }
   56|    506|    }
_ZN4iter8compressIRNSt3__16vectorIiNS1_9allocatorIiEEEERNS2_IbNS3_IbEEEEEENS_4impl10CompressedIT_T0_EEOSC_OSD_:
  135|    506|    Container&& container_, Selector&& selectors_) {
  136|    506|  return {
  137|    506|      std::forward<Container>(container_), std::forward<Selector>(selectors_)};
  138|    506|}
_ZN4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEEC2ES7_SA_:
   31|    506|        selectors_(std::forward<Selector>(in_selectors)) {}
_ZNK4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EneIS7_SA_EEbRKNSC_IT_T0_EE:
   97|    506|    bool operator!=(const Iterator<T, U>& other) const {
   98|    506|      return sub_iter_ != other.sub_iter_
  ------------------
  |  Branch (98:14): [True: 506, False: 0]
  ------------------
   99|    506|             && selector_iter_ != other.selector_iter_;
  ------------------
  |  Branch (99:17): [True: 0, False: 506]
  ------------------
  100|    506|    }
_ZNK4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EeqIRKS6_RKS9_EEbRKNSC_IT_T0_EE:
  103|    506|    bool operator==(const Iterator<T, U>& other) const {
  104|    506|      return !(*this != other);
  105|    506|    }
_ZNK4iter4impl10CompressedIRNSt3__16vectorIiNS2_9allocatorIiEEEERNS3_IbNS4_IbEEEEE8IteratorIS7_SA_EneIRKS6_RKS9_EEbRKNSC_IT_T0_EE:
   97|    506|    bool operator!=(const Iterator<T, U>& other) const {
   98|    506|      return sub_iter_ != other.sub_iter_
  ------------------
  |  Branch (98:14): [True: 506, False: 0]
  ------------------
   99|    506|             && selector_iter_ != other.selector_iter_;
  ------------------
  |  Branch (99:17): [True: 0, False: 506]
  ------------------
  100|    506|    }

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

_Z11FuzzChainedPKhm:
   32|    506|void FuzzChained(const uint8_t *data, size_t size) {
   33|    506|  FuzzedDataProvider fdp(data, size);
   34|    506|  std::vector<char> v;
   35|  51.7k|  for (int i = 0; i < fdp.ConsumeIntegralInRange<int>(1, 1024); i++) {
  ------------------
  |  Branch (35:19): [True: 51.2k, False: 506]
  ------------------
   36|  51.2k|    v.push_back((char)fdp.ConsumeIntegral<char>());
   37|  51.2k|  }
   38|    506|  const auto ch = chain(v, v, v);
   39|    506|  std::vector<char> v2(std::begin(ch), std::end(ch));
   40|    506|}
_Z6lengthRKNSt3__112basic_stringIcNS_11char_traitsIcEENS_9allocatorIcEEEE:
   42|  20.2k|int length(const std::string &s) { return s.size(); }
_Z11FuzzGroupbyPKhm:
   44|    506|void FuzzGroupby(const uint8_t *data, size_t size) {
   45|    506|  FuzzedDataProvider fdp(data, size);
   46|    506|  std::vector<std::string> v;
   47|  13.7k|  for (int i = 0; i < fdp.ConsumeIntegralInRange<int>(1, 1024); i++) {
  ------------------
  |  Branch (47:19): [True: 13.2k, False: 506]
  ------------------
   48|  13.2k|    v.push_back(fdp.ConsumeRandomLengthString());
   49|  13.2k|  }
   50|  3.76k|  for (auto &&gb : groupby(v, length)) {
  ------------------
  |  Branch (50:18): [True: 3.76k, False: 506]
  ------------------
   51|  3.76k|  }
   52|    506|}
_Z9FuzzCyclePKhm:
   54|    506|void FuzzCycle(const uint8_t *data, size_t size) {
   55|    506|  FuzzedDataProvider fdp(data, size);
   56|    506|  std::vector<int> v;
   57|  41.6k|  for (int i = 0; i < fdp.ConsumeIntegralInRange<int>(1, 1024); i++) {
  ------------------
  |  Branch (57:19): [True: 41.1k, False: 506]
  ------------------
   58|  41.1k|    v.push_back(fdp.ConsumeIntegral<int>());
   59|  41.1k|  }
   60|    506|  auto ch = cycle(v);
   61|       |
   62|    506|  std::vector<int> o;
   63|    506|  size_t count = 0;
   64|   759k|  for (auto val : ch) {
  ------------------
  |  Branch (64:17): [True: 759k, False: 0]
  ------------------
   65|   759k|    o.push_back(val);
   66|   759k|    count++;
   67|   759k|    if (count > 1500) {
  ------------------
  |  Branch (67:9): [True: 506, False: 759k]
  ------------------
   68|    506|      break;
   69|    506|    }
   70|   759k|  }
   71|    506|}
_Z16FuzzCombinationsPKhm:
   73|    506|void FuzzCombinations(const uint8_t *data, size_t size) {
   74|    506|  FuzzedDataProvider fdp(data, size);
   75|    506|  std::string s = fdp.ConsumeRandomLengthString();
   76|    506|  std::vector<std::vector<char>> sc;
   77|    506|  size_t count = 0;
   78|   297k|  for (auto &&v : combinations(s, fdp.ConsumeIntegralInRange(1, 16))) {
  ------------------
  |  Branch (78:17): [True: 297k, False: 324]
  ------------------
   79|   297k|    sc.emplace_back(std::begin(v), std::end(v));
   80|   297k|    count++;
   81|   297k|    if (count > 1500) {
  ------------------
  |  Branch (81:9): [True: 182, False: 297k]
  ------------------
   82|    182|      break;
   83|    182|    }
   84|   297k|  }
   85|    506|}
_Z12FuzzCompressPKhm:
   87|    506|void FuzzCompress(const uint8_t *data, size_t size) {
   88|    506|  FuzzedDataProvider fdp(data, size);
   89|    506|  std::vector<int> ivec;
   90|    506|  std::vector<bool> bvec;
   91|  51.1k|  for (int i = 0; i < 100; i++) {
  ------------------
  |  Branch (91:19): [True: 50.6k, False: 506]
  ------------------
   92|  50.6k|    ivec.push_back(fdp.ConsumeIntegralInRange(1, 1000000));
   93|  50.6k|    ivec.push_back(fdp.ConsumeBool());
   94|  50.6k|  }
   95|    506|  auto c = compress(ivec, bvec);
   96|    506|  std::vector<int> v(std::begin(c), std::end(c));
   97|    506|  const auto &c2 = c;
   98|    506|  (void)(std::begin(c) == std::end(c2));
   99|    506|}
LLVMFuzzerTestOneInput:
  101|    506|extern "C" int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
  102|    506|  FuzzChained(data, size);
  103|    506|  FuzzGroupby(data, size);
  104|    506|  FuzzCycle(data, size);
  105|    506|  FuzzCombinations(data, size);
  106|    506|  FuzzCompress(data, size);
  107|    506|  return 0;
  108|    506|}

_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_ED2Ev:
  101|  1.01k|    ~Iterator() = default;
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_ED2Ev:
  197|  7.53k|    ~Group() {
  198|  7.53k|      if (!completed) {
  ------------------
  |  Branch (198:11): [True: 3.76k, False: 3.76k]
  ------------------
  199|  16.9k|        for (auto iter = begin(), end_it = end(); iter != end_it; ++iter) {
  ------------------
  |  Branch (199:51): [True: 13.2k, False: 3.76k]
  ------------------
  200|  13.2k|        }
  201|  3.76k|      }
  202|  7.53k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E5beginEv:
  263|  3.76k|    GroupIterator begin() {
  264|  3.76k|      return {this, key_};
  265|  3.76k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIteratorC2EPSJ_Ri:
  229|  7.53k|          : key_{&key}, group_p_{group_p} {}
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E3endEv:
  267|  3.76k|    GroupIterator end() {
  268|  3.76k|      return {nullptr, key_};
  269|  3.76k|    }
_ZNK4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIteratorneERKSK_:
  231|  16.9k|      bool operator!=(const GroupIterator& other) const {
  232|  16.9k|        return !(*this == other);
  233|  16.9k|      }
_ZNK4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIteratoreqERKSK_:
  235|  16.9k|      bool operator==(const GroupIterator& other) const {
  236|  16.9k|        return group_p_ == other.group_p_;
  237|  16.9k|      }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIteratorppEv:
  239|  13.2k|      GroupIterator& operator++() {
  240|  13.2k|        group_p_->owner_.increment_iterator();
  241|  13.2k|        if (!not_at_end()) {
  ------------------
  |  Branch (241:13): [True: 3.76k, False: 9.44k]
  ------------------
  242|  3.76k|          group_p_->completed = true;
  243|  3.76k|          group_p_ = nullptr;
  244|  3.76k|        }
  245|  13.2k|        return *this;
  246|  13.2k|      }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_E18increment_iteratorEv:
  140|  13.2k|    void increment_iterator() {
  141|  13.2k|      if (sub_iter_ != sub_end_) {
  ------------------
  |  Branch (141:11): [True: 13.2k, False: 0]
  ------------------
  142|  13.2k|        ++sub_iter_;
  143|  13.2k|        if (sub_iter_ != sub_end_) {
  ------------------
  |  Branch (143:13): [True: 12.7k, False: 506]
  ------------------
  144|  12.7k|          item_.reset(*sub_iter_);
  145|  12.7k|        }
  146|  13.2k|      }
  147|  13.2k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_E13GroupIterator10not_at_endEv:
  215|  13.2k|      bool not_at_end() {
  216|  13.2k|        return !group_p_->owner_.exhausted()
  ------------------
  |  Branch (216:16): [True: 12.7k, False: 506]
  ------------------
  217|  13.2k|               && group_p_->owner_.next_key() == *key_;
  ------------------
  |  Branch (217:19): [True: 9.44k, False: 3.26k]
  ------------------
  218|  13.2k|      }
_ZNK4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_E9exhaustedEv:
  149|  13.2k|    bool exhausted() const {
  150|  13.2k|      return !(sub_iter_ != sub_end_);
  151|  13.2k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_E8next_keyEv:
  161|  16.4k|    key_func_ret<ContainerT> next_key() {
  162|  16.4k|      return std::invoke(*key_func_, item_.get());
  163|  16.4k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EEC2ESC_SG_:
   38|    506|      : container_(std::forward<Container>(container)), key_func_(key_func) {}
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5beginEv:
  272|    506|  Iterator<Container> begin() {
  273|    506|    return {get_begin(container_), get_end(container_), key_func_};
  274|    506|  }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_EC2EONS2_11__wrap_iterIPS9_EESN_RSG_:
   77|  1.01k|          key_func_(&key_func) {
   78|  1.01k|      if (sub_iter_ != sub_end_) {
  ------------------
  |  Branch (78:11): [True: 506, False: 506]
  ------------------
   79|    506|        item_.reset(*sub_iter_);
   80|    506|      }
   81|  1.01k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE3endEv:
  276|    506|  Iterator<Container> end() {
  277|    506|    return {get_end(container_), get_end(container_), key_func_};
  278|    506|  }
_ZNK4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_EneISC_EEbRKNSI_IT_EE:
  131|  4.27k|    bool operator!=(const Iterator<T>& other) const {
  132|  4.27k|      return sub_iter_ != other.sub_iter_;
  133|  4.27k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_EppEv:
  116|  3.76k|    Iterator& operator++() {
  117|  3.76k|      if (!current_key_group_pair_) {
  ------------------
  |  Branch (117:11): [True: 0, False: 3.76k]
  ------------------
  118|      0|        set_key_group_pair();
  119|      0|      }
  120|  3.76k|      current_key_group_pair_.reset();
  121|  3.76k|      return *this;
  122|  3.76k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_E18set_key_group_pairEv:
  165|  3.76k|    void set_key_group_pair() {
  166|  3.76k|      if (!current_key_group_pair_) {
  ------------------
  |  Branch (166:11): [True: 3.76k, False: 0]
  ------------------
  167|  3.76k|        current_key_group_pair_.emplace(std::invoke(*key_func_, item_.get()),
  168|  3.76k|            Group<ContainerT>{*this, next_key()});
  169|  3.76k|      }
  170|  3.76k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_EC2EOSJ_:
  206|  3.76k|        : owner_(other.owner_), key_{other.key_}, completed{other.completed} {
  207|  3.76k|      other.completed = true;
  208|  3.76k|    }
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE5GroupISC_EC2ERNSH_8IteratorISC_EEi:
  194|  3.76k|        : owner_(owner), key_(key) {}
_ZN4iter4impl13GroupProducerIRNSt3__16vectorINS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEENS7_IS9_EEEEPFiRKS9_EE8IteratorISC_EdeEv:
  106|  3.76k|    KeyGroupPair<ContainerT>& operator*() {
  107|  3.76k|      set_key_group_pair();
  108|  3.76k|      return *current_key_group_pair_;
  109|  3.76k|    }

_ZN4iter4impl15IterIterWrapperINSt3__16vectorINS2_11__wrap_iterIPcEENS2_9allocatorIS6_EEEEE5beginEv:
  212|   297k|      iterator begin() noexcept {
  213|   297k|        return {container.begin()};
  214|   297k|      }
_ZN4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEC2ERKS7_:
   45|   595k|      IteratorIterator(const TopIter& it) : sub_iter{it} {}
_ZN4iter4impl15IterIterWrapperINSt3__16vectorINS2_11__wrap_iterIPcEENS2_9allocatorIS6_EEEEE3endEv:
  216|   297k|      iterator end() noexcept {
  217|   297k|        return {container.end()};
  218|   297k|      }
_ZN4iter4impl15IterIterWrapperINSt3__16vectorINS2_11__wrap_iterIPcEENS2_9allocatorIS6_EEEEEC2Em:
  181|  1.01k|      explicit IterIterWrapper(size_type sz) : container(sz) {}
_ZN4iter4impl15IterIterWrapperINSt3__16vectorINS2_11__wrap_iterIPcEENS2_9allocatorIS6_EEEEE3getEv:
  263|  1.00M|      Container& get() noexcept {
  264|  1.00M|        return container;
  265|  1.00M|      }
_ZNK4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEmiERKS8_:
  118|   297k|      Diff operator-(const IteratorIterator& rhs) const {
  119|   297k|        return this->sub_iter - rhs.sub_iter;
  120|   297k|      }
_ZNK4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEneIS7_EEbRKNS1_IT_EE:
   57|  2.25M|      bool operator!=(const IteratorIterator<T>& other) const {
   58|  2.25M|        return this->sub_iter != other.sub_iter;
   59|  2.25M|      }
_ZNK4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEdeEv:
   83|  1.96M|      auto operator*() const -> decltype(**sub_iter) {
   84|  1.96M|        return **this->sub_iter;
   85|  1.96M|      }
_ZN4iter4impl16IteratorIteratorINSt3__111__wrap_iterIPNS3_IPcEEEEEppEv:
   61|  1.96M|      IteratorIterator& operator++() {
   62|  1.96M|        ++this->sub_iter;
   63|  1.96M|        return *this;
   64|  1.96M|      }

_ZN4iter4impl9get_iters9get_beginIKNSt3__16vectorIcNS3_9allocatorIcEEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEESA_:
   49|  1.51k|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|  1.51k|        return get_begin_impl(t, 42);
   51|  1.51k|      }
_ZN4iter4impl9get_iters14get_begin_implIKNSt3__16vectorIcNS3_9allocatorIcEEEENS3_11__wrap_iterIPKcEEEET0_RT_i:
   38|  1.51k|      I get_begin_impl(T& r, int) {
   39|  1.51k|        return r.begin();
   40|  1.51k|      }
_ZN4iter4impl9get_iters7get_endIKNSt3__16vectorIcNS3_9allocatorIcEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESA_:
   72|  4.55k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  4.55k|        return get_end_impl(t, 42);
   74|  4.55k|      }
_ZN4iter4impl9get_iters12get_end_implIKNSt3__16vectorIcNS3_9allocatorIcEEEENS3_11__wrap_iterIPKcEEEET0_RT_i:
   61|  4.55k|      I get_end_impl(T& r, int) {
   62|  4.55k|        return r.end();
   63|  4.55k|      }
_ZN4iter4impl11DerefHolderIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE5resetES9_:
  341|  13.2k|      void reset(reference item) {
  342|  13.2k|        item_p_ = &item;
  343|  13.2k|      }
_ZN4iter4impl11DerefHolderIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEE3getEv:
  331|  20.2k|      reference get() {
  332|  20.2k|        assert(item_p_);
  333|      0|        return *item_p_;
  334|  20.2k|      }
_ZN4iter4impl9get_iters9get_beginINSt3__16vectorIiNS3_9allocatorIiEEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEES9_:
   49|  1.51k|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|  1.51k|        return get_begin_impl(t, 42);
   51|  1.51k|      }
_ZN4iter4impl9get_iters14get_begin_implINSt3__16vectorIiNS3_9allocatorIiEEEENS3_11__wrap_iterIPiEEEET0_RT_i:
   38|  1.51k|      I get_begin_impl(T& r, int) {
   39|  1.51k|        return r.begin();
   40|  1.51k|      }
_ZN4iter4impl9get_iters7get_endINSt3__16vectorIiNS3_9allocatorIiEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEES9_:
   72|  3.54k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  3.54k|        return get_end_impl(t, 42);
   74|  3.54k|      }
_ZN4iter4impl9get_iters12get_end_implINSt3__16vectorIiNS3_9allocatorIiEEEENS3_11__wrap_iterIPiEEEET0_RT_i:
   61|  3.54k|      I get_end_impl(T& r, int) {
   62|  3.54k|        return r.end();
   63|  3.54k|      }
_ZN4iter4impl9get_iters9get_beginINSt3__16vectorIbNS3_9allocatorIbEEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEES9_:
   49|  1.01k|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|  1.01k|        return get_begin_impl(t, 42);
   51|  1.01k|      }
_ZN4iter4impl9get_iters14get_begin_implINSt3__16vectorIbNS3_9allocatorIbEEEENS3_14__bit_iteratorIS7_Lb0ELm0EEEEET0_RT_i:
   38|  1.01k|      I get_begin_impl(T& r, int) {
   39|  1.01k|        return r.begin();
   40|  1.01k|      }
_ZN4iter4impl9get_iters7get_endINSt3__16vectorIbNS3_9allocatorIbEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEES9_:
   72|  2.02k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  2.02k|        return get_end_impl(t, 42);
   74|  2.02k|      }
_ZN4iter4impl9get_iters12get_end_implINSt3__16vectorIbNS3_9allocatorIbEEEENS3_14__bit_iteratorIS7_Lb0ELm0EEEEET0_RT_i:
   61|  2.02k|      I get_end_impl(T& r, int) {
   62|  2.02k|        return r.end();
   63|  2.02k|      }
_ZN4iter4impl9get_iters7get_endIKNSt3__16vectorIiNS3_9allocatorIiEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESA_:
   72|  1.01k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  1.01k|        return get_end_impl(t, 42);
   74|  1.01k|      }
_ZN4iter4impl9get_iters12get_end_implIKNSt3__16vectorIiNS3_9allocatorIiEEEENS3_11__wrap_iterIPKiEEEET0_RT_i:
   61|  1.01k|      I get_end_impl(T& r, int) {
   62|  1.01k|        return r.end();
   63|  1.01k|      }
_ZN4iter4impl9get_iters7get_endIKNSt3__16vectorIbNS3_9allocatorIbEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESA_:
   72|  1.01k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  1.01k|        return get_end_impl(t, 42);
   74|  1.01k|      }
_ZN4iter4impl9get_iters12get_end_implIKNSt3__16vectorIbNS3_9allocatorIbEEEENS3_14__bit_iteratorIS7_Lb1ELm0EEEEET0_RT_i:
   61|  1.01k|      I get_end_impl(T& r, int) {
   62|  1.01k|        return r.end();
   63|  1.01k|      }
_ZNK4iter4impl28IterToolFnOptionalBindSecondINS0_13GroupProducerENS0_8IdentityEEclIRNSt3__16vectorINS6_12basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEENSB_ISD_EEEEPFiRKSD_EEENS2_IT_T0_EEOSL_SM_:
  480|    506|      ItImpl<Container, T> operator()(Container&& container, T func) const {
  481|    506|        return {std::forward<Container>(container), std::move(func)};
  482|    506|      }
_ZN4iter4impl9get_iters9get_beginINSt3__16vectorINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS8_ISA_EEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEESE_:
   49|    506|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|    506|        return get_begin_impl(t, 42);
   51|    506|      }
_ZN4iter4impl9get_iters14get_begin_implINSt3__16vectorINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS8_ISA_EEEENS3_11__wrap_iterIPSA_EEEET0_RT_i:
   38|    506|      I get_begin_impl(T& r, int) {
   39|    506|        return r.begin();
   40|    506|      }
_ZN4iter4impl9get_iters7get_endINSt3__16vectorINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS8_ISA_EEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESE_:
   72|  1.51k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|  1.51k|        return get_end_impl(t, 42);
   74|  1.51k|      }
_ZN4iter4impl9get_iters12get_end_implINSt3__16vectorINS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS8_ISA_EEEENS3_11__wrap_iterIPSA_EEEET0_RT_i:
   61|  1.51k|      I get_end_impl(T& r, int) {
   62|  1.51k|        return r.end();
   63|  1.51k|      }
_ZN4iter4impl11DerefHolderIRNSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEC2Ev:
  329|  1.01k|      DerefHolder() = default;
_ZNK4iter4impl10IterToolFnINS0_6CyclerEEclIRNSt3__16vectorIiNS5_9allocatorIiEEEEJEEENS2_IT_EEOSB_DpT0_:
  366|    506|      ItImpl<T> operator()(T&& t, Ts... ts) const {
  367|    506|        return {std::forward<T>(t), std::move(ts)...};
  368|    506|      }
_ZNK4iter4impl25IterToolFnBindSizeTSecondINS0_10CombinatorEEclIRNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEvEENS2_IT_EEOSD_m:
  518|    506|      ItImpl<Container> operator()(Container&& container, Size sz) const {
  519|    506|        return {std::forward<Container>(container), sz};
  520|    506|      }
_ZN4iter4impl9get_iters9get_beginINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEDTcl14get_begin_implclsr3stdE7declvalIRT_EELi42EEESB_:
   49|  1.88k|      auto get_begin(T& t) -> decltype(get_begin_impl(std::declval<T&>(), 42)) {
   50|  1.88k|        return get_begin_impl(t, 42);
   51|  1.88k|      }
_ZN4iter4impl9get_iters14get_begin_implINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS3_11__wrap_iterIPcEEEET0_RT_i:
   38|  1.88k|      I get_begin_impl(T& r, int) {
   39|  1.88k|        return r.begin();
   40|  1.88k|      }
_ZN4iter4impl12dumb_advanceINSt3__111__wrap_iterIPcEES5_mEEvRT_RKT0_T1_:
  237|  1.88k|    void dumb_advance(Iter& iter, const EndIter& end, Distance distance) {
  238|  1.88k|      dumb_advance_impl(iter, end, distance, is_random_access_iter<Iter>{});
  239|  1.88k|    }
_ZN4iter4impl17dumb_advance_implINSt3__111__wrap_iterIPcEES5_mEEvRT_RKT0_T1_NS2_17integral_constantIbLb1EEE:
  227|  1.88k|        Iter& iter, const EndIter& end, Distance distance, std::true_type) {
  228|  1.88k|      if (static_cast<Distance>(end - iter) < distance) {
  ------------------
  |  Branch (228:11): [True: 0, False: 1.88k]
  ------------------
  229|      0|        iter = end;
  230|  1.88k|      } else {
  231|  1.88k|        iter += distance;
  232|  1.88k|      }
  233|  1.88k|    }
_ZN4iter4impl9get_iters7get_endINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEDTcl12get_end_implclsr3stdE7declvalIRT_EELi42EEESB_:
   72|   327k|      auto get_end(T& t) -> decltype(get_end_impl(std::declval<T&>(), 42)) {
   73|   327k|        return get_end_impl(t, 42);
   74|   327k|      }
_ZN4iter4impl9get_iters12get_end_implINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEENS3_11__wrap_iterIPcEEEET0_RT_i:
   61|   327k|      I get_end_impl(T& r, int) {
   62|   327k|        return r.end();
   63|   327k|      }
_ZN4iter4impl9dumb_nextINSt3__111__wrap_iterIPcEElEET_S6_T0_:
  242|   323k|    ForwardIt dumb_next(ForwardIt it, Distance distance = 1) {
  243|   323k|      dumb_advance_unsafe(it, distance);
  244|   323k|      return it;
  245|   323k|    }
_ZN4iter4impl19dumb_advance_unsafeINSt3__111__wrap_iterIPcEElEEvRT_T0_:
  211|   323k|    void dumb_advance_unsafe(InputIt& iter, Distance distance) {
  212|   360k|      for (Distance i(0); i < distance; ++i) {
  ------------------
  |  Branch (212:27): [True: 37.1k, False: 323k]
  ------------------
  213|  37.1k|        ++iter;
  214|  37.1k|      }
  215|   323k|    }
_ZN4iter4impl9dumb_nextINSt3__111__wrap_iterIPcEEmEET_S6_T0_:
  242|  37.1k|    ForwardIt dumb_next(ForwardIt it, Distance distance = 1) {
  243|  37.1k|      dumb_advance_unsafe(it, distance);
  244|  37.1k|      return it;
  245|  37.1k|    }
_ZN4iter4impl19dumb_advance_unsafeINSt3__111__wrap_iterIPcEEmEEvRT_T0_:
  211|  37.1k|    void dumb_advance_unsafe(InputIt& iter, Distance distance) {
  212|   132k|      for (Distance i(0); i < distance; ++i) {
  ------------------
  |  Branch (212:27): [True: 94.8k, False: 37.1k]
  ------------------
  213|  94.8k|        ++iter;
  214|  94.8k|      }
  215|  37.1k|    }

