LLVMFuzzerTestOneInput:
   19|    122|extern "C" int LLVMFuzzerTestOneInput(const std::uint8_t *data, std::size_t size) {
   20|    122|    auto is_even = [](auto t) {
   21|    122|        return t % 2 == 0;
   22|    122|    };
   23|       |
   24|    122|    std::vector<std::uint8_t> v1, v2;
   25|    122|    auto iter = std::partition_copy(data, data + size,
   26|    122|        std::back_inserter<std::vector<std::uint8_t>>(v1),
   27|    122|        std::back_inserter<std::vector<std::uint8_t>>(v2),
   28|    122|        is_even);
   29|    122|    ((void)iter);
   30|       |    // The two vectors should add up to the original size
   31|    122|    if (v1.size() + v2.size() != size)
  ------------------
  |  Branch (31:9): [True: 0, False: 122]
  ------------------
   32|      0|        return 1;
   33|       |
   34|       |    // All of the even values should be in the first vector, and none in the second
   35|    122|    if (!std::all_of(v1.begin(), v1.end(), is_even))
  ------------------
  |  Branch (35:9): [True: 0, False: 122]
  ------------------
   36|      0|        return 2;
   37|    122|    if (!std::none_of(v2.begin(), v2.end(), is_even))
  ------------------
  |  Branch (37:9): [True: 0, False: 122]
  ------------------
   38|      0|        return 3;
   39|       |
   40|       |    // Every value in both vectors has to be in the original
   41|       |
   42|       |    // Make a copy of the input, and sort it
   43|    122|    std::vector<std::uint8_t> v0{data, data + size};
   44|    122|    std::sort(v0.begin(), v0.end());
   45|       |
   46|       |    // Sort each vector and ensure that all of the elements appear in the original input
   47|    122|    std::sort(v1.begin(), v1.end());
   48|    122|    if (!std::includes(v0.begin(), v0.end(), v1.begin(), v1.end()))
  ------------------
  |  Branch (48:9): [True: 0, False: 122]
  ------------------
   49|      0|        return 4;
   50|       |
   51|    122|    std::sort(v2.begin(), v2.end());
   52|    122|    if (!std::includes(v0.begin(), v0.end(), v2.begin(), v2.end()))
  ------------------
  |  Branch (52:9): [True: 0, False: 122]
  ------------------
   53|      0|        return 5;
   54|       |
   55|       |    // This, while simple, is really slow - 20 seconds on a 500K element input.
   56|       |    //  for (auto v: v1)
   57|       |    //      if (std::find(data, data + size, v) == data + size)
   58|       |    //          return 4;
   59|       |    //
   60|       |    //  for (auto v: v2)
   61|       |    //      if (std::find(data, data + size, v) == data + size)
   62|       |    //          return 5;
   63|       |
   64|    122|    return 0;
   65|    122|}
partition_copy.pass.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_0clIhEEDaT_:
   20|  17.0M|    auto is_even = [](auto t) {
   21|  17.0M|        return t % 2 == 0;
   22|  17.0M|    };

