_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12is_discardedEv:
42155|  5.72k|    {
42156|  5.72k|        return m_data.m_type == value_t::discarded;
42157|  5.72k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dumpEicbNS0_6detail15error_handler_tE:
42027|  25.0k|    {
42028|  25.0k|        string_t result;
42029|  25.0k|        detail::output_string_adapter<char, string_t> string_adapter(result);
42030|       |
42031|  25.0k|        if (indent >= 0)
  ------------------
  |  Branch (42031:13): [True: 0, False: 25.0k]
  ------------------
42032|      0|        {
42033|      0|            serializer s(string_adapter, indent_char,
42034|      0|                         true, ensure_ascii, static_cast<std::size_t>(indent), error_handler);
42035|      0|            s.dump(*this);
42036|      0|        }
42037|  25.0k|        else
42038|  25.0k|        {
42039|  25.0k|            serializer s(string_adapter, indent_char,
42040|  25.0k|                         false, ensure_ascii, 0, error_handler);
42041|  25.0k|            s.dump(*this);
42042|  25.0k|        }
42043|       |
42044|  25.0k|        return result;
42045|  25.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEC2ERS9_:
29216|  25.0k|        : str(s)
29217|  25.0k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcEC2Ev:
28874|  25.0k|    output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcED2Ev:
28872|  25.0k|    virtual ~output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEE16write_charactersEPKcm:
29225|  27.0k|    {
29226|  27.0k|        str.append(s, length);
29227|  27.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEC2ERNS1_23output_adapter_protocolIcEEcbbmNS1_15error_handler_tE:
36767|  25.0k|        : o(&s)
36768|  25.0k|        , number_buffer() // NOLINT(readability-redundant-member-init)
36769|  25.0k|        , string_buffer() // NOLINT(readability-redundant-member-init)
36770|  25.0k|        , indent_char(ichar)
36771|  25.0k|        , pretty_print(pretty_print_)
36772|  25.0k|        , ensure_ascii(ensure_ascii_)
36773|  25.0k|        , indent_step(indent_step_)
36774|  25.0k|        , error_handler(error_handler_)
36775|  25.0k|        , write_buffer() // NOLINT(readability-redundant-member-init)
36776|  25.0k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE20uninitialized_bufferILm64EEC2Ev:
38864|  25.0k|        uninitialized_buffer() noexcept {} // NOLINT(modernize-use-equals-default,hicpp-use-equals-default,cppcoreguidelines-pro-type-member-init,hicpp-member-init): see above
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE20uninitialized_bufferILm512EEC2Ev:
38864|  25.0k|        uninitialized_buffer() noexcept {} // NOLINT(modernize-use-equals-default,hicpp-use-equals-default,cppcoreguidelines-pro-type-member-init,hicpp-member-init): see above
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE20uninitialized_bufferILm1024EEC2Ev:
38864|  25.0k|        uninitialized_buffer() noexcept {} // NOLINT(modernize-use-equals-default,hicpp-use-equals-default,cppcoreguidelines-pro-type-member-init,hicpp-member-init): see above
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE4dumpERKSG_m:
36805|  25.0k|    {
36806|  25.0k|        dump_element(val, current_indent, 0);
36807|  25.0k|        flush();
36808|  25.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_elementERKSG_mm:
36956|   746k|    {
36957|   746k|        if (val.m_data.m_type == value_t::object || val.m_data.m_type == value_t::array)
  ------------------
  |  Branch (36957:13): [True: 36.4k, False: 710k]
  |  Branch (36957:53): [True: 333k, False: 376k]
  ------------------
36958|   370k|        {
36959|   370k|            dump_container(val, current_indent, depth);
36960|   370k|        }
36961|   376k|        else
36962|   376k|        {
36963|   376k|            dump_scalar(val, current_indent);
36964|   376k|        }
36965|   746k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE14dump_containerERKSG_mm:
36831|   370k|    {
36832|   370k|        JSON_ASSERT(val.m_data.m_type == value_t::object || val.m_data.m_type == value_t::array);
  ------------------
  |  | 2643|   370k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36832:9): [True: 36.4k, False: 333k]
  |  Branch (36832:9): [True: 333k, False: 0]
  |  Branch (36832:9): [True: 370k, False: 0]
  ------------------
36833|       |
36834|   370k|        if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1697|   370k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 8.55k, False: 361k]
  |  |  ------------------
  ------------------
36835|  8.55k|        {
36836|  8.55k|            dump_iteratively(val, current_indent);
36837|  8.55k|            return;
36838|  8.55k|        }
36839|       |
36840|   361k|        if (val.m_data.m_type == value_t::object)
  ------------------
  |  Branch (36840:13): [True: 32.1k, False: 329k]
  ------------------
36841|  32.1k|        {
36842|  32.1k|            if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (36842:17): [True: 8.40k, False: 23.7k]
  ------------------
36843|  8.40k|            {
36844|  8.40k|                put_literal("{}");
36845|  8.40k|                return;
36846|  8.40k|            }
36847|       |
36848|  23.7k|            if (pretty_print)
  ------------------
  |  Branch (36848:17): [True: 0, False: 23.7k]
  ------------------
36849|      0|            {
36850|       |                // variable to hold indentation for recursive calls
36851|      0|                const auto new_indent = next_indent(current_indent, indent_step);
36852|       |
36853|      0|                put_literal_indent("{\n", new_indent);
36854|       |
36855|       |                // first n-1 elements
36856|      0|                auto i = val.m_data.m_value.object->cbegin();
36857|      0|                for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (36857:43): [True: 0, False: 0]
  ------------------
36858|      0|                {
36859|      0|                    put_object_key(i->first, "\": ");
36860|      0|                    dump_element(i->second, new_indent, depth + 1);
36861|      0|                    put_literal_indent(",\n", new_indent);
36862|      0|                }
36863|       |
36864|       |                // last element
36865|      0|                JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36865:17): [True: 0, False: 0]
  ------------------
36866|      0|                JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36866:17): [True: 0, False: 0]
  ------------------
36867|      0|                put_object_key(i->first, "\": ");
36868|      0|                dump_element(i->second, new_indent, depth + 1);
36869|       |
36870|      0|                put_literal_indent("\n", current_indent);
36871|      0|                put_char('}');
36872|      0|            }
36873|  23.7k|            else
36874|  23.7k|            {
36875|  23.7k|                put_char('{');
36876|       |
36877|       |                // first n-1 elements
36878|  23.7k|                auto i = val.m_data.m_value.object->cbegin();
36879|  56.2k|                for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (36879:43): [True: 32.5k, False: 23.7k]
  ------------------
36880|  32.5k|                {
36881|  32.5k|                    put_object_key(i->first, "\":");
36882|  32.5k|                    dump_element(i->second, 0, depth + 1);
36883|  32.5k|                    put_char(',');
36884|  32.5k|                }
36885|       |
36886|       |                // last element
36887|  23.7k|                JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2643|  23.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36887:17): [True: 23.7k, False: 0]
  ------------------
36888|  23.7k|                JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2643|  23.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36888:17): [True: 23.7k, False: 0]
  ------------------
36889|  23.7k|                put_object_key(i->first, "\":");
36890|  23.7k|                dump_element(i->second, 0, depth + 1);
36891|       |
36892|  23.7k|                put_char('}');
36893|  23.7k|            }
36894|  23.7k|            return;
36895|  23.7k|        }
36896|       |
36897|   329k|        if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (36897:13): [True: 14.3k, False: 315k]
  ------------------
36898|  14.3k|        {
36899|  14.3k|            put_literal("[]");
36900|  14.3k|            return;
36901|  14.3k|        }
36902|       |
36903|   315k|        if (pretty_print)
  ------------------
  |  Branch (36903:13): [True: 0, False: 315k]
  ------------------
36904|      0|        {
36905|       |            // variable to hold indentation for recursive calls
36906|      0|            const auto new_indent = next_indent(current_indent, indent_step);
36907|       |
36908|      0|            put_literal_indent("[\n", new_indent);
36909|       |
36910|       |            // first n-1 elements
36911|      0|            for (auto i = val.m_data.m_value.array->cbegin();
36912|      0|                    i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (36912:21): [True: 0, False: 0]
  ------------------
36913|      0|            {
36914|      0|                dump_element(*i, new_indent, depth + 1);
36915|      0|                put_literal_indent(",\n", new_indent);
36916|      0|            }
36917|       |
36918|       |            // last element
36919|      0|            JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36919:13): [True: 0, False: 0]
  ------------------
36920|      0|            dump_element(val.m_data.m_value.array->back(), new_indent, depth + 1);
36921|       |
36922|      0|            put_literal_indent("\n", current_indent);
36923|      0|            put_char(']');
36924|      0|        }
36925|   315k|        else
36926|   315k|        {
36927|   315k|            put_char('[');
36928|       |
36929|       |            // first n-1 elements
36930|   315k|            for (auto i = val.m_data.m_value.array->cbegin();
36931|   665k|                    i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (36931:21): [True: 350k, False: 315k]
  ------------------
36932|   350k|            {
36933|   350k|                dump_element(*i, 0, depth + 1);
36934|   350k|                put_char(',');
36935|   350k|            }
36936|       |
36937|       |            // last element
36938|   315k|            JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2643|   315k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36938:13): [True: 315k, False: 0]
  ------------------
36939|   315k|            dump_element(val.m_data.m_value.array->back(), 0, depth + 1);
36940|       |
36941|   315k|            put_char(']');
36942|   315k|        }
36943|   315k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21recursion_depth_limitEv:
 8688|  1.19M|{
 8689|       |    // an integer: not a floating-point number, whose range check would pass for 1.5 or 254.0
 8690|       |    // (bool and the character types are integer types, too, but true, false or 'a' are
 8691|       |    // no way to say a limit; JSON_UBJSON_VALUELESS_ELEMENTS_PER_BYTE refuses them as well)
 8692|  1.19M|    static_assert(std::is_integral<decltype(JSON_RECURSION_DEPTH_LIMIT)>::value
 8693|  1.19M|                  && !recursion_depth_limit_is_char_or_bool<typename std::remove_cv<decltype(JSON_RECURSION_DEPTH_LIMIT)>::type>::value,
 8694|  1.19M|                  "JSON_RECURSION_DEPTH_LIMIT must be an integer constant (not bool or a character type)");
 8695|  1.19M|    static_assert(JSON_RECURSION_DEPTH_LIMIT >= 0 && JSON_RECURSION_DEPTH_LIMIT <= 254,
 8696|  1.19M|                  "JSON_RECURSION_DEPTH_LIMIT must be between 0 and 254: the nesting depth is counted in a byte per thread "
 8697|  1.19M|                  "and may exceed the limit by one (see https://json.nlohmann.me/api/macros/json_recursion_depth_limit/)");
 8698|  1.19M|    return static_cast<std::size_t>(JSON_RECURSION_DEPTH_LIMIT);
  ------------------
  |  | 8623|  1.19M|    #define JSON_RECURSION_DEPTH_LIMIT 128
  ------------------
 8699|  1.19M|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16dump_iterativelyERKSG_m:
36978|  8.55k|    {
36979|       |        // Scalars, empty containers and binary values are written by dump_value
36980|       |        // alone, so nothing is allocated for them: only a container with
36981|       |        // elements is ever pushed.
36982|  8.55k|        std::vector<dump_frame> stack;
36983|       |
36984|  8.55k|        dump_value(val, current_indent, stack);
36985|       |
36986|   390k|        while (!stack.empty())
  ------------------
  |  Branch (36986:16): [True: 381k, False: 8.55k]
  ------------------
36987|   381k|        {
36988|   381k|            dump_frame& frame = stack.back();
36989|       |
36990|   381k|            if (frame.value->m_data.m_type == value_t::object)
  ------------------
  |  Branch (36990:17): [True: 37.2k, False: 344k]
  ------------------
36991|  37.2k|            {
36992|  37.2k|                const auto* object = frame.value->m_data.m_value.object;
36993|       |
36994|  37.2k|                if (frame.object_it == object->cend())
  ------------------
  |  Branch (36994:21): [True: 9.32k, False: 27.9k]
  ------------------
36995|  9.32k|                {
36996|  9.32k|                    if (pretty_print)
  ------------------
  |  Branch (36996:25): [True: 0, False: 9.32k]
  ------------------
36997|      0|                    {
36998|      0|                        put_literal_indent("\n", frame.current_indent);
36999|      0|                    }
37000|       |
37001|  9.32k|                    put_char('}');
37002|  9.32k|                    stack.pop_back();
37003|  9.32k|                    continue;
37004|  9.32k|                }
37005|       |
37006|       |                // the separator goes in front of every element but the first,
37007|       |                // which puts exactly one between each pair and none at the end
37008|  27.9k|                if (frame.object_it != object->cbegin())
  ------------------
  |  Branch (37008:21): [True: 18.6k, False: 9.32k]
  ------------------
37009|  18.6k|                {
37010|  18.6k|                    if (pretty_print)
  ------------------
  |  Branch (37010:25): [True: 0, False: 18.6k]
  ------------------
37011|      0|                    {
37012|      0|                        put_literal(",\n");
37013|      0|                    }
37014|  18.6k|                    else
37015|  18.6k|                    {
37016|  18.6k|                        put_char(',');
37017|  18.6k|                    }
37018|  18.6k|                }
37019|       |
37020|  27.9k|                if (pretty_print)
  ------------------
  |  Branch (37020:21): [True: 0, False: 27.9k]
  ------------------
37021|      0|                {
37022|      0|                    put_indent(frame.child_indent);
37023|      0|                }
37024|       |
37025|  27.9k|                if (pretty_print)
  ------------------
  |  Branch (37025:21): [True: 0, False: 27.9k]
  ------------------
37026|      0|                {
37027|      0|                    put_object_key(frame.object_it->first, "\": ");
37028|      0|                }
37029|  27.9k|                else
37030|  27.9k|                {
37031|  27.9k|                    put_object_key(frame.object_it->first, "\":");
37032|  27.9k|                }
37033|       |
37034|  27.9k|                const BasicJsonType& element = frame.object_it->second;
37035|  27.9k|                ++frame.object_it;
37036|       |
37037|       |                // read everything needed from the frame before this: entering a
37038|       |                // container pushes another one and can move them all
37039|  27.9k|                const std::size_t element_indent = frame.child_indent;
37040|  27.9k|                dump_value(element, element_indent, stack);
37041|  27.9k|            }
37042|   344k|            else
37043|   344k|            {
37044|   344k|                const auto* array = frame.value->m_data.m_value.array;
37045|       |
37046|   344k|                if (frame.array_it == array->cend())
  ------------------
  |  Branch (37046:21): [True: 156k, False: 187k]
  ------------------
37047|   156k|                {
37048|   156k|                    if (pretty_print)
  ------------------
  |  Branch (37048:25): [True: 0, False: 156k]
  ------------------
37049|      0|                    {
37050|      0|                        put_literal_indent("\n", frame.current_indent);
37051|      0|                    }
37052|       |
37053|   156k|                    put_char(']');
37054|   156k|                    stack.pop_back();
37055|   156k|                    continue;
37056|   156k|                }
37057|       |
37058|   187k|                if (frame.array_it != array->cbegin())
  ------------------
  |  Branch (37058:21): [True: 31.2k, False: 156k]
  ------------------
37059|  31.2k|                {
37060|  31.2k|                    if (pretty_print)
  ------------------
  |  Branch (37060:25): [True: 0, False: 31.2k]
  ------------------
37061|      0|                    {
37062|      0|                        put_literal(",\n");
37063|      0|                    }
37064|  31.2k|                    else
37065|  31.2k|                    {
37066|  31.2k|                        put_char(',');
37067|  31.2k|                    }
37068|  31.2k|                }
37069|       |
37070|   187k|                if (pretty_print)
  ------------------
  |  Branch (37070:21): [True: 0, False: 187k]
  ------------------
37071|      0|                {
37072|      0|                    put_indent(frame.child_indent);
37073|      0|                }
37074|       |
37075|   187k|                const BasicJsonType& element = *frame.array_it;
37076|   187k|                ++frame.array_it;
37077|       |
37078|       |                // see above
37079|   187k|                const std::size_t element_indent = frame.child_indent;
37080|   187k|                dump_value(element, element_indent, stack);
37081|   187k|            }
37082|   381k|        }
37083|  8.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_valueERKSG_mRNS6_INSH_10dump_frameENSA_ISK_EEEE:
37121|   224k|    {
37122|   224k|        switch (val.m_data.m_type)
37123|   224k|        {
37124|  20.6k|            case value_t::object:
  ------------------
  |  Branch (37124:13): [True: 20.6k, False: 203k]
  ------------------
37125|  20.6k|            {
37126|  20.6k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (37126:21): [True: 11.3k, False: 9.32k]
  ------------------
37127|  11.3k|                {
37128|  11.3k|                    put_literal("{}");
37129|  11.3k|                    return;
37130|  11.3k|                }
37131|       |
37132|  9.32k|                std::size_t child_indent = current_indent;
37133|       |
37134|  9.32k|                if (pretty_print)
  ------------------
  |  Branch (37134:21): [True: 0, False: 9.32k]
  ------------------
37135|      0|                {
37136|      0|                    put_literal("{\n");
37137|      0|                    child_indent = next_indent(current_indent, indent_step);
37138|      0|                }
37139|  9.32k|                else
37140|  9.32k|                {
37141|  9.32k|                    put_char('{');
37142|  9.32k|                }
37143|       |
37144|  9.32k|                stack.emplace_back(&val, current_indent, child_indent);
37145|  9.32k|                stack.back().object_it = val.m_data.m_value.object->cbegin();
37146|  9.32k|                return;
37147|  20.6k|            }
37148|       |
37149|   161k|            case value_t::array:
  ------------------
  |  Branch (37149:13): [True: 161k, False: 62.9k]
  ------------------
37150|   161k|            {
37151|   161k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (37151:21): [True: 4.80k, False: 156k]
  ------------------
37152|  4.80k|                {
37153|  4.80k|                    put_literal("[]");
37154|  4.80k|                    return;
37155|  4.80k|                }
37156|       |
37157|   156k|                std::size_t child_indent = current_indent;
37158|       |
37159|   156k|                if (pretty_print)
  ------------------
  |  Branch (37159:21): [True: 0, False: 156k]
  ------------------
37160|      0|                {
37161|      0|                    put_literal("[\n");
37162|      0|                    child_indent = next_indent(current_indent, indent_step);
37163|      0|                }
37164|   156k|                else
37165|   156k|                {
37166|   156k|                    put_char('[');
37167|   156k|                }
37168|       |
37169|   156k|                stack.emplace_back(&val, current_indent, child_indent);
37170|   156k|                stack.back().array_it = val.m_data.m_value.array->cbegin();
37171|   156k|                return;
37172|   161k|            }
37173|       |
37174|  11.4k|            case value_t::string:
  ------------------
  |  Branch (37174:13): [True: 11.4k, False: 212k]
  ------------------
37175|  11.4k|            case value_t::binary:
  ------------------
  |  Branch (37175:13): [True: 0, False: 224k]
  ------------------
37176|  19.1k|            case value_t::boolean:
  ------------------
  |  Branch (37176:13): [True: 7.68k, False: 216k]
  ------------------
37177|  25.0k|            case value_t::number_integer:
  ------------------
  |  Branch (37177:13): [True: 5.94k, False: 218k]
  ------------------
37178|  34.3k|            case value_t::number_unsigned:
  ------------------
  |  Branch (37178:13): [True: 9.27k, False: 215k]
  ------------------
37179|  39.3k|            case value_t::number_float:
  ------------------
  |  Branch (37179:13): [True: 5.05k, False: 219k]
  ------------------
37180|  39.3k|            case value_t::discarded:
  ------------------
  |  Branch (37180:13): [True: 0, False: 224k]
  ------------------
37181|  42.3k|            case value_t::null:
  ------------------
  |  Branch (37181:13): [True: 2.91k, False: 221k]
  ------------------
37182|  42.3k|            default:
  ------------------
  |  Branch (37182:13): [True: 0, False: 224k]
  ------------------
37183|  42.3k|                dump_scalar(val, current_indent);
37184|  42.3k|                return;
37185|   224k|        }
37186|   224k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_frameC2EPKSG_mm:
37091|   165k|            : value(value_)
37092|   165k|            , current_indent(current_indent_)
37093|   165k|            , child_indent(child_indent_)
37094|   165k|        {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm3EEEvRAT__Kc:
38134|  70.5k|    {
38135|  70.5k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
38136|       |        // the array bound counts the terminating NUL, which is not written
38137|  70.5k|        constexpr std::size_t length = N - 1;
38138|  70.5k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
38139|       |
38140|  70.5k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|  70.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 150, False: 70.4k]
  |  |  ------------------
  ------------------
38141|    150|        {
38142|    150|            flush();
38143|    150|        }
38144|  70.5k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38145|  70.5k|        write_buffer_pos += length;
38146|  70.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18copy_plain_vectorsEPcPKcm:
37552|  3.69k|    {
37553|       |#if JSON_SCAN_NEON
37554|       |        const uint8x16_t a = vld1q_u8(reinterpret_cast<const std::uint8_t*>(p));
37555|       |        const uint8x16_t b = vld1q_u8(reinterpret_cast<const std::uint8_t*>(p + n - 16));
37556|       |        // (int8_t)(c ^ 2) < 33: the quote, the control characters and the
37557|       |        // non-ASCII bytes (see vector_plain_run())
37558|       |        const uint8x16_t flip = vdupq_n_u8(2);
37559|       |        const int8x16_t limit = vdupq_n_s8(33);
37560|       |        const uint8x16_t special = vorrq_u8(vorrq_u8(vorrq_u8(vceqq_u8(a, vdupq_n_u8('\\')), vceqq_u8(b, vdupq_n_u8('\\'))),
37561|       |                                            vorrq_u8(vceqq_u8(a, vdupq_n_u8(0x7F)), vceqq_u8(b, vdupq_n_u8(0x7F)))),
37562|       |                                            vorrq_u8(vcltq_s8(vreinterpretq_s8_u8(veorq_u8(a, flip)), limit), vcltq_s8(vreinterpretq_s8_u8(veorq_u8(b, flip)), limit)));
37563|       |        if (vmaxvq_u8(special) != 0)
37564|       |        {
37565|       |            return false;
37566|       |        }
37567|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(d), a);
37568|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(d + n - 16), b);
37569|       |#else
37570|  3.69k|        const __m128i a = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(p))); // NOLINT(bugprone-casting-through-void)
37571|  3.69k|        const __m128i b = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(p + n - 16))); // NOLINT(bugprone-casting-through-void)
37572|       |        // (int8_t)(c ^ 2) < 33: the quote, the control characters and the
37573|       |        // non-ASCII bytes (see vector_plain_run())
37574|  3.69k|        const __m128i backslash = _mm_set1_epi8('\\');
37575|  3.69k|        const __m128i del = _mm_set1_epi8(0x7F);
37576|  3.69k|        const __m128i flip = _mm_set1_epi8(2);
37577|  3.69k|        const __m128i limit = _mm_set1_epi8(33);
37578|  3.69k|        const __m128i special = _mm_or_si128(_mm_or_si128(_mm_or_si128(_mm_cmpeq_epi8(a, backslash), _mm_cmpeq_epi8(b, backslash)),
37579|  3.69k|                                             _mm_or_si128(_mm_cmpeq_epi8(a, del), _mm_cmpeq_epi8(b, del))),
37580|  3.69k|                                             _mm_or_si128(_mm_cmplt_epi8(_mm_xor_si128(a, flip), limit), _mm_cmplt_epi8(_mm_xor_si128(b, flip), limit)));
37581|  3.69k|        if (_mm_movemask_epi8(special) != 0)
  ------------------
  |  Branch (37581:13): [True: 3.40k, False: 288]
  ------------------
37582|  3.40k|        {
37583|  3.40k|            return false;
37584|  3.40k|        }
37585|    288|        _mm_storeu_si128(static_cast<__m128i*>(static_cast<void*>(d)), a); // NOLINT(bugprone-casting-through-void)
37586|    288|        _mm_storeu_si128(static_cast<__m128i*>(static_cast<void*>(d + n - 16)), b); // NOLINT(bugprone-casting-through-void)
37587|    288|#endif
37588|    288|        return true;
37589|  3.69k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17copy_plain_halvesEPcPKcm:
37517|  4.92k|    {
37518|       |#if JSON_SCAN_NEON
37519|       |        const uint8x8_t lo = vld1_u8(reinterpret_cast<const std::uint8_t*>(p));
37520|       |        const uint8x8_t hi = vld1_u8(reinterpret_cast<const std::uint8_t*>(p + n - 8));
37521|       |        const uint8x16_t in = vcombine_u8(lo, hi);
37522|       |        // (int8_t)(c ^ 2) < 33: the quote, the control characters and the
37523|       |        // non-ASCII bytes (see vector_plain_run())
37524|       |        const uint8x16_t special = vorrq_u8(vorrq_u8(vceqq_u8(in, vdupq_n_u8('\\')), vceqq_u8(in, vdupq_n_u8(0x7F))),
37525|       |                                            vcltq_s8(vreinterpretq_s8_u8(veorq_u8(in, vdupq_n_u8(2))), vdupq_n_s8(33)));
37526|       |        if (vmaxvq_u8(special) != 0)
37527|       |        {
37528|       |            return false;
37529|       |        }
37530|       |        vst1_u8(reinterpret_cast<std::uint8_t*>(d), lo);
37531|       |        vst1_u8(reinterpret_cast<std::uint8_t*>(d + n - 8), hi);
37532|       |#else
37533|  4.92k|        const __m128i lo = _mm_loadl_epi64(static_cast<const __m128i*>(static_cast<const void*>(p))); // NOLINT(bugprone-casting-through-void)
37534|  4.92k|        const __m128i hi = _mm_loadl_epi64(static_cast<const __m128i*>(static_cast<const void*>(p + n - 8))); // NOLINT(bugprone-casting-through-void)
37535|  4.92k|        const __m128i in = _mm_unpacklo_epi64(lo, hi);
37536|  4.92k|        const __m128i special = _mm_or_si128(_mm_or_si128(_mm_cmpeq_epi8(in, _mm_set1_epi8('\\')), _mm_cmpeq_epi8(in, _mm_set1_epi8(0x7F))),
37537|  4.92k|                                             _mm_cmplt_epi8(_mm_xor_si128(in, _mm_set1_epi8(2)), _mm_set1_epi8(33)));
37538|  4.92k|        if (_mm_movemask_epi8(special) != 0)
  ------------------
  |  Branch (37538:13): [True: 3.62k, False: 1.29k]
  ------------------
37539|  3.62k|        {
37540|  3.62k|            return false;
37541|  3.62k|        }
37542|  1.29k|        _mm_storel_epi64(static_cast<__m128i*>(static_cast<void*>(d)), lo); // NOLINT(bugprone-casting-through-void)
37543|  1.29k|        _mm_storel_epi64(static_cast<__m128i*>(static_cast<void*>(d + n - 8)), hi); // NOLINT(bugprone-casting-through-void)
37544|  1.29k|#endif
37545|  1.29k|        return true;
37546|  4.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9load_wordIjEET_PKc:
37418|  16.4k|    {
37419|  16.4k|        WordType w;
37420|  16.4k|        std::memcpy(&w, p, sizeof(w));
37421|  16.4k|        return w;
37422|  16.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE14swar_not_plainEm:
37408|   194k|    {
37409|   194k|        constexpr std::uint64_t ones = 0x0101010101010101ull;
37410|   194k|        const std::uint64_t q = v ^ 0x2222222222222222ull; // '"'
37411|   194k|        const std::uint64_t b = v ^ 0x5C5C5C5C5C5C5C5Cull; // '\\'
37412|       |        // (see swar_string_special(): the bytes from 0x80 are flagged anyway)
37413|   194k|        return ((q - ones) | (b - ones) | (v - 0x2020202020202020ull) | v | (v + ones)) & 0x8080808080808080ull;
37414|   194k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10store_wordIjEEvPcT_:
37426|  2.77k|    {
37427|  2.77k|        std::memcpy(p, &w, sizeof(w));
37428|  2.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9load_wordItEET_PKc:
37418|  58.6k|    {
37419|  58.6k|        WordType w;
37420|  58.6k|        std::memcpy(&w, p, sizeof(w));
37421|  58.6k|        return w;
37422|  58.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10store_wordItEEvPcT_:
37426|  8.34k|    {
37427|  8.34k|        std::memcpy(p, &w, sizeof(w));
37428|  8.34k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_escapedERKSC_:
37611|   145k|    {
37612|       |        // Short strings of printable ASCII - most object keys and many values -
37613|       |        // are checked byte by byte against a table and then copied in one go.
37614|       |        // For them, this is cheaper than starting the vector scanner below,
37615|       |        // whose setup costs more than such a string takes to scan. The same
37616|       |        // check serves both values of ensure_ascii.
37617|       |        //
37618|       |        // Where put_short_quoted() exists and takes strings of up to 32 bytes,
37619|       |        // the callers have tried it already, and repeating the attempt only
37620|       |        // costs time for strings that need escaping or are not ASCII.
37621|       |#if !JSON_LITTLE_ENDIAN_TARGET || !JSON_SCAN_VECTOR
37622|       |        if (s.size() <= 32)
37623|       |        {
37624|       |            const auto& copyable = ascii_copyable();
37625|       |            const auto* const data = reinterpret_cast<const unsigned char*>(s.data());
37626|       |            const std::size_t n = s.size();
37627|       |            std::size_t k = 0;
37628|       |            while (k + 4 <= n && copyable[data[k]] != 0 && copyable[data[k + 1]] != 0
37629|       |                    && copyable[data[k + 2]] != 0 && copyable[data[k + 3]] != 0)
37630|       |            {
37631|       |                k += 4;
37632|       |            }
37633|       |            while (k < n && copyable[data[k]] != 0)
37634|       |            {
37635|       |                ++k;
37636|       |            }
37637|       |            if (k == n)
37638|       |            {
37639|       |                put_string(s, 0, n);
37640|       |                return;
37641|       |            }
37642|       |        }
37643|       |#endif
37644|       |
37645|       |        // dispatch once here rather than test the flag inside the loop: it does
37646|       |        // not change while a string is written, and folding it lets each of the
37647|       |        // two scanners be inlined into a loop of its own
37648|   145k|        if (ensure_ascii)
  ------------------
  |  Branch (37648:13): [True: 0, False: 145k]
  ------------------
37649|      0|        {
37650|      0|            dump_escaped_impl<true>(s);
37651|      0|        }
37652|   145k|        else
37653|   145k|        {
37654|   145k|            dump_escaped_impl<false>(s);
37655|   145k|        }
37656|   145k|    }
_ZN8nlohmann16json_abi_v3_12_06detail16read_eight_bytesEPKh:
 9148|  77.5k|{
 9149|  77.5k|#if JSON_LITTLE_ENDIAN_TARGET
 9150|       |    // the byte order already matches
 9151|  77.5k|    std::uint64_t result = 0;
 9152|  77.5k|    std::memcpy(&result, b, sizeof(result));
 9153|  77.5k|    return result;
 9154|       |#else
 9155|       |    return static_cast<std::uint64_t>(b[0]) | (static_cast<std::uint64_t>(b[1]) << 8u)
 9156|       |           | (static_cast<std::uint64_t>(b[2]) << 16u) | (static_cast<std::uint64_t>(b[3]) << 24u)
 9157|       |           | (static_cast<std::uint64_t>(b[4]) << 32u) | (static_cast<std::uint64_t>(b[5]) << 40u)
 9158|       |           | (static_cast<std::uint64_t>(b[6]) << 48u) | (static_cast<std::uint64_t>(b[7]) << 56u);
 9159|       |#endif
 9160|  77.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail20count_trailing_zerosEm:
 9020|  80.5k|{
 9021|  80.5k|#if defined(__GNUC__) || defined(__clang__)
 9022|  80.5k|    return __builtin_ctzll(x);
 9023|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9024|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9025|       |    _BitScanForward64(&index, x);
 9026|       |    return static_cast<int>(index);
 9027|       |#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_ARM))
 9028|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan* takes
 9029|       |    if (_BitScanForward(&index, static_cast<unsigned long>(x))) // NOLINT(runtime/int)
 9030|       |    {
 9031|       |        return static_cast<int>(index);
 9032|       |    }
 9033|       |    _BitScanForward(&index, static_cast<unsigned long>(x >> 32u)); // NOLINT(runtime/int)
 9034|       |    return 32 + static_cast<int>(index);
 9035|       |#elif defined(__cpp_lib_bitops)
 9036|       |    return std::countr_zero(x);
 9037|       |#else
 9038|       |    int n = 0;
 9039|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9040|       |    {
 9041|       |        if ((x << (64 - shift)) == 0)
 9042|       |        {
 9043|       |            n += shift;
 9044|       |            x >>= shift;
 9045|       |        }
 9046|       |    }
 9047|       |    return n;
 9048|       |#endif
 9049|  80.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12emit_pendingERm:
37660|   283k|    {
37661|   283k|        if (bytes != 0)
  ------------------
  |  Branch (37661:13): [True: 0, False: 283k]
  ------------------
37662|      0|        {
37663|      0|            put_buffer(string_buffer, bytes);
37664|      0|            bytes = 0;
37665|      0|        }
37666|   283k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE7put_runISC_EEvRKT_mm:
38158|  43.3k|    {
38159|       |        // a short run is the exception in text without escapes (CJK, accented
38160|       |        // Latin), for which this keeps the long path the fast one
38161|  43.3k|        if (JSON_HEDLEY_UNLIKELY(length <= 16 && start + 16 <= str.size() && write_buffer_pos + 16 <= write_buffer.size()))
  ------------------
  |  | 1697|   136k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 8.88k, False: 34.4k]
  |  |  |  Branch (1697:94): [True: 41.2k, False: 2.04k]
  |  |  |  Branch (1697:94): [True: 8.88k, False: 32.4k]
  |  |  |  Branch (1697:94): [True: 8.88k, False: 0]
  |  |  ------------------
  ------------------
38162|  8.88k|        {
38163|  8.88k|            std::memcpy(write_buffer.data() + write_buffer_pos, str.data() + start, 16);
38164|  8.88k|            write_buffer_pos += length;
38165|  8.88k|            return;
38166|  8.88k|        }
38167|  34.4k|        put_string(str, start, start + length);
38168|  34.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringISC_EEvRKT_mm:
38181|  34.4k|    {
38182|  34.4k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2643|  34.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38182:9): [True: 34.4k, False: 0]
  ------------------
38183|  34.4k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2643|  34.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38183:9): [True: 34.4k, False: 0]
  ------------------
38184|       |
38185|  34.4k|        const char* const s = str.data() + start;
38186|  34.4k|        const std::size_t length = end - start;
38187|       |
38188|  34.4k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1697|  34.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 34.4k]
  |  |  ------------------
  ------------------
38189|      0|        {
38190|      0|            flush();
38191|      0|            o->write_characters(s, length);
38192|      0|            return;
38193|      0|        }
38194|  34.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|  34.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 54, False: 34.3k]
  |  |  ------------------
  ------------------
38195|     54|        {
38196|     54|            flush();
38197|     54|        }
38198|  34.4k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38199|  34.4k|        write_buffer_pos += length;
38200|  34.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13ascii_escapesEv:
38294|   240k|    {
38295|   240k|        static const std::array<std::array<char, 8>, 0x60> escapes =
38296|   240k|        {
38297|   240k|            {
38298|   240k|                {{'\\', 'u', '0', '0', '0', '0', 0, 6}}, // 0x00
38299|   240k|                {{'\\', 'u', '0', '0', '0', '1', 0, 6}}, // 0x01
38300|   240k|                {{'\\', 'u', '0', '0', '0', '2', 0, 6}}, // 0x02
38301|   240k|                {{'\\', 'u', '0', '0', '0', '3', 0, 6}}, // 0x03
38302|   240k|                {{'\\', 'u', '0', '0', '0', '4', 0, 6}}, // 0x04
38303|   240k|                {{'\\', 'u', '0', '0', '0', '5', 0, 6}}, // 0x05
38304|   240k|                {{'\\', 'u', '0', '0', '0', '6', 0, 6}}, // 0x06
38305|   240k|                {{'\\', 'u', '0', '0', '0', '7', 0, 6}}, // 0x07
38306|   240k|                {{'\\', 'b', 0, 0, 0, 0, 0, 2}}, // 0x08
38307|   240k|                {{'\\', 't', 0, 0, 0, 0, 0, 2}}, // 0x09
38308|   240k|                {{'\\', 'n', 0, 0, 0, 0, 0, 2}}, // 0x0A
38309|   240k|                {{'\\', 'u', '0', '0', '0', 'b', 0, 6}}, // 0x0B
38310|   240k|                {{'\\', 'f', 0, 0, 0, 0, 0, 2}}, // 0x0C
38311|   240k|                {{'\\', 'r', 0, 0, 0, 0, 0, 2}}, // 0x0D
38312|   240k|                {{'\\', 'u', '0', '0', '0', 'e', 0, 6}}, // 0x0E
38313|   240k|                {{'\\', 'u', '0', '0', '0', 'f', 0, 6}}, // 0x0F
38314|   240k|                {{'\\', 'u', '0', '0', '1', '0', 0, 6}}, // 0x10
38315|   240k|                {{'\\', 'u', '0', '0', '1', '1', 0, 6}}, // 0x11
38316|   240k|                {{'\\', 'u', '0', '0', '1', '2', 0, 6}}, // 0x12
38317|   240k|                {{'\\', 'u', '0', '0', '1', '3', 0, 6}}, // 0x13
38318|   240k|                {{'\\', 'u', '0', '0', '1', '4', 0, 6}}, // 0x14
38319|   240k|                {{'\\', 'u', '0', '0', '1', '5', 0, 6}}, // 0x15
38320|   240k|                {{'\\', 'u', '0', '0', '1', '6', 0, 6}}, // 0x16
38321|   240k|                {{'\\', 'u', '0', '0', '1', '7', 0, 6}}, // 0x17
38322|   240k|                {{'\\', 'u', '0', '0', '1', '8', 0, 6}}, // 0x18
38323|   240k|                {{'\\', 'u', '0', '0', '1', '9', 0, 6}}, // 0x19
38324|   240k|                {{'\\', 'u', '0', '0', '1', 'a', 0, 6}}, // 0x1A
38325|   240k|                {{'\\', 'u', '0', '0', '1', 'b', 0, 6}}, // 0x1B
38326|   240k|                {{'\\', 'u', '0', '0', '1', 'c', 0, 6}}, // 0x1C
38327|   240k|                {{'\\', 'u', '0', '0', '1', 'd', 0, 6}}, // 0x1D
38328|   240k|                {{'\\', 'u', '0', '0', '1', 'e', 0, 6}}, // 0x1E
38329|   240k|                {{'\\', 'u', '0', '0', '1', 'f', 0, 6}}, // 0x1F
38330|   240k|                {{' ', 0, 0, 0, 0, 0, 0, 1}}, // 0x20
38331|   240k|                {{'!', 0, 0, 0, 0, 0, 0, 1}}, // 0x21
38332|   240k|                {{'\\', '"', 0, 0, 0, 0, 0, 2}}, // 0x22
38333|   240k|                {{'#', 0, 0, 0, 0, 0, 0, 1}}, // 0x23
38334|   240k|                {{'$', 0, 0, 0, 0, 0, 0, 1}}, // 0x24
38335|   240k|                {{'%', 0, 0, 0, 0, 0, 0, 1}}, // 0x25
38336|   240k|                {{'&', 0, 0, 0, 0, 0, 0, 1}}, // 0x26
38337|   240k|                {{'\'', 0, 0, 0, 0, 0, 0, 1}}, // 0x27
38338|   240k|                {{'(', 0, 0, 0, 0, 0, 0, 1}}, // 0x28
38339|   240k|                {{')', 0, 0, 0, 0, 0, 0, 1}}, // 0x29
38340|   240k|                {{'*', 0, 0, 0, 0, 0, 0, 1}}, // 0x2A
38341|   240k|                {{'+', 0, 0, 0, 0, 0, 0, 1}}, // 0x2B
38342|   240k|                {{',', 0, 0, 0, 0, 0, 0, 1}}, // 0x2C
38343|   240k|                {{'-', 0, 0, 0, 0, 0, 0, 1}}, // 0x2D
38344|   240k|                {{'.', 0, 0, 0, 0, 0, 0, 1}}, // 0x2E
38345|   240k|                {{'/', 0, 0, 0, 0, 0, 0, 1}}, // 0x2F
38346|   240k|                {{'0', 0, 0, 0, 0, 0, 0, 1}}, // 0x30
38347|   240k|                {{'1', 0, 0, 0, 0, 0, 0, 1}}, // 0x31
38348|   240k|                {{'2', 0, 0, 0, 0, 0, 0, 1}}, // 0x32
38349|   240k|                {{'3', 0, 0, 0, 0, 0, 0, 1}}, // 0x33
38350|   240k|                {{'4', 0, 0, 0, 0, 0, 0, 1}}, // 0x34
38351|   240k|                {{'5', 0, 0, 0, 0, 0, 0, 1}}, // 0x35
38352|   240k|                {{'6', 0, 0, 0, 0, 0, 0, 1}}, // 0x36
38353|   240k|                {{'7', 0, 0, 0, 0, 0, 0, 1}}, // 0x37
38354|   240k|                {{'8', 0, 0, 0, 0, 0, 0, 1}}, // 0x38
38355|   240k|                {{'9', 0, 0, 0, 0, 0, 0, 1}}, // 0x39
38356|   240k|                {{':', 0, 0, 0, 0, 0, 0, 1}}, // 0x3A
38357|   240k|                {{';', 0, 0, 0, 0, 0, 0, 1}}, // 0x3B
38358|   240k|                {{'<', 0, 0, 0, 0, 0, 0, 1}}, // 0x3C
38359|   240k|                {{'=', 0, 0, 0, 0, 0, 0, 1}}, // 0x3D
38360|   240k|                {{'>', 0, 0, 0, 0, 0, 0, 1}}, // 0x3E
38361|   240k|                {{'?', 0, 0, 0, 0, 0, 0, 1}}, // 0x3F
38362|   240k|                {{'@', 0, 0, 0, 0, 0, 0, 1}}, // 0x40
38363|   240k|                {{'A', 0, 0, 0, 0, 0, 0, 1}}, // 0x41
38364|   240k|                {{'B', 0, 0, 0, 0, 0, 0, 1}}, // 0x42
38365|   240k|                {{'C', 0, 0, 0, 0, 0, 0, 1}}, // 0x43
38366|   240k|                {{'D', 0, 0, 0, 0, 0, 0, 1}}, // 0x44
38367|   240k|                {{'E', 0, 0, 0, 0, 0, 0, 1}}, // 0x45
38368|   240k|                {{'F', 0, 0, 0, 0, 0, 0, 1}}, // 0x46
38369|   240k|                {{'G', 0, 0, 0, 0, 0, 0, 1}}, // 0x47
38370|   240k|                {{'H', 0, 0, 0, 0, 0, 0, 1}}, // 0x48
38371|   240k|                {{'I', 0, 0, 0, 0, 0, 0, 1}}, // 0x49
38372|   240k|                {{'J', 0, 0, 0, 0, 0, 0, 1}}, // 0x4A
38373|   240k|                {{'K', 0, 0, 0, 0, 0, 0, 1}}, // 0x4B
38374|   240k|                {{'L', 0, 0, 0, 0, 0, 0, 1}}, // 0x4C
38375|   240k|                {{'M', 0, 0, 0, 0, 0, 0, 1}}, // 0x4D
38376|   240k|                {{'N', 0, 0, 0, 0, 0, 0, 1}}, // 0x4E
38377|   240k|                {{'O', 0, 0, 0, 0, 0, 0, 1}}, // 0x4F
38378|   240k|                {{'P', 0, 0, 0, 0, 0, 0, 1}}, // 0x50
38379|   240k|                {{'Q', 0, 0, 0, 0, 0, 0, 1}}, // 0x51
38380|   240k|                {{'R', 0, 0, 0, 0, 0, 0, 1}}, // 0x52
38381|   240k|                {{'S', 0, 0, 0, 0, 0, 0, 1}}, // 0x53
38382|   240k|                {{'T', 0, 0, 0, 0, 0, 0, 1}}, // 0x54
38383|   240k|                {{'U', 0, 0, 0, 0, 0, 0, 1}}, // 0x55
38384|   240k|                {{'V', 0, 0, 0, 0, 0, 0, 1}}, // 0x56
38385|   240k|                {{'W', 0, 0, 0, 0, 0, 0, 1}}, // 0x57
38386|   240k|                {{'X', 0, 0, 0, 0, 0, 0, 1}}, // 0x58
38387|   240k|                {{'Y', 0, 0, 0, 0, 0, 0, 1}}, // 0x59
38388|   240k|                {{'Z', 0, 0, 0, 0, 0, 0, 1}}, // 0x5A
38389|   240k|                {{'[', 0, 0, 0, 0, 0, 0, 1}}, // 0x5B
38390|   240k|                {{'\\', '\\', 0, 0, 0, 0, 0, 2}}, // 0x5C
38391|   240k|                {{']', 0, 0, 0, 0, 0, 0, 1}}, // 0x5D
38392|   240k|                {{'^', 0, 0, 0, 0, 0, 0, 1}}, // 0x5E
38393|   240k|                {{'_', 0, 0, 0, 0, 0, 0, 1}}, // 0x5F
38394|   240k|            }
38395|   240k|        };
38396|   240k|        return escapes;
38397|   240k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17validate_one_utf8EPKhm:
12968|   312k|{
12969|   312k|    const unsigned char c0 = data[0];
12970|   312k|    if (c0 >= 0xC2 && c0 <= 0xDF)  // U+0080..U+07FF
  ------------------
  |  Branch (12970:9): [True: 197k, False: 115k]
  |  Branch (12970:23): [True: 32.3k, False: 164k]
  ------------------
12971|  32.3k|    {
12972|  32.3k|        if (avail >= 2 && data[1] >= 0x80 && data[1] <= 0xBF)
  ------------------
  |  Branch (12972:13): [True: 32.3k, False: 40]
  |  Branch (12972:27): [True: 28.0k, False: 4.32k]
  |  Branch (12972:46): [True: 25.6k, False: 2.31k]
  ------------------
12973|  25.6k|        {
12974|  25.6k|            return 2;
12975|  25.6k|        }
12976|  32.3k|    }
12977|   280k|    else if (c0 == 0xE0)  // U+0800..U+0FFF
  ------------------
  |  Branch (12977:14): [True: 6.22k, False: 273k]
  ------------------
12978|  6.22k|    {
12979|  6.22k|        if (avail >= 3 && data[1] >= 0xA0 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (12979:13): [True: 6.15k, False: 75]
  |  Branch (12979:27): [True: 5.69k, False: 454]
  |  Branch (12979:46): [True: 5.29k, False: 404]
  |  Branch (12979:65): [True: 5.28k, False: 5]
  |  Branch (12979:84): [True: 5.27k, False: 15]
  ------------------
12980|  5.27k|        {
12981|  5.27k|            return 3;
12982|  5.27k|        }
12983|  6.22k|    }
12984|   273k|    else if ((c0 >= 0xE1 && c0 <= 0xEC) || c0 == 0xEE || c0 == 0xEF)  // U+1000..U+CFFF, U+E000..U+FFFF
  ------------------
  |  Branch (12984:15): [True: 158k, False: 115k]
  |  Branch (12984:29): [True: 3.28k, False: 155k]
  |  Branch (12984:44): [True: 905, False: 269k]
  |  Branch (12984:58): [True: 796, False: 268k]
  ------------------
12985|  4.98k|    {
12986|  4.98k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (12986:13): [True: 4.93k, False: 45]
  |  Branch (12986:27): [True: 4.18k, False: 756]
  |  Branch (12986:46): [True: 3.81k, False: 370]
  |  Branch (12986:65): [True: 3.80k, False: 5]
  |  Branch (12986:84): [True: 3.79k, False: 15]
  ------------------
12987|  3.79k|        {
12988|  3.79k|            return 3;
12989|  3.79k|        }
12990|  4.98k|    }
12991|   268k|    else if (c0 == 0xED)  // U+D000..U+D7FF (excludes surrogates)
  ------------------
  |  Branch (12991:14): [True: 4.57k, False: 264k]
  ------------------
12992|  4.57k|    {
12993|  4.57k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0x9F && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (12993:13): [True: 4.51k, False: 65]
  |  Branch (12993:27): [True: 4.24k, False: 272]
  |  Branch (12993:46): [True: 3.99k, False: 243]
  |  Branch (12993:65): [True: 3.98k, False: 10]
  |  Branch (12993:84): [True: 3.95k, False: 30]
  ------------------
12994|  3.95k|        {
12995|  3.95k|            return 3;
12996|  3.95k|        }
12997|  4.57k|    }
12998|   264k|    else if (c0 == 0xF0)  // U+10000..U+3FFFF
  ------------------
  |  Branch (12998:14): [True: 3.37k, False: 261k]
  ------------------
12999|  3.37k|    {
13000|  3.37k|        if (avail >= 4 && data[1] >= 0x90 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (13000:13): [True: 3.28k, False: 90]
  |  Branch (13000:27): [True: 2.89k, False: 399]
  |  Branch (13000:46): [True: 2.63k, False: 260]
  |  Branch (13000:65): [True: 2.61k, False: 15]
  |  Branch (13000:84): [True: 2.61k, False: 5]
  |  Branch (13000:103): [True: 2.59k, False: 15]
  |  Branch (13000:122): [True: 2.57k, False: 20]
  ------------------
13001|  2.57k|        {
13002|  2.57k|            return 4;
13003|  2.57k|        }
13004|  3.37k|    }
13005|   261k|    else if (c0 >= 0xF1 && c0 <= 0xF3)  // U+40000..U+FFFFF
  ------------------
  |  Branch (13005:14): [True: 145k, False: 115k]
  |  Branch (13005:28): [True: 5.93k, False: 139k]
  ------------------
13006|  5.93k|    {
13007|  5.93k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (13007:13): [True: 5.92k, False: 15]
  |  Branch (13007:27): [True: 5.55k, False: 363]
  |  Branch (13007:46): [True: 5.28k, False: 272]
  |  Branch (13007:65): [True: 5.27k, False: 10]
  |  Branch (13007:84): [True: 5.26k, False: 15]
  |  Branch (13007:103): [True: 5.25k, False: 10]
  |  Branch (13007:122): [True: 5.23k, False: 20]
  ------------------
13008|  5.23k|        {
13009|  5.23k|            return 4;
13010|  5.23k|        }
13011|  5.93k|    }
13012|   255k|    else if (c0 == 0xF4)  // U+100000..U+10FFFF
  ------------------
  |  Branch (13012:14): [True: 3.37k, False: 251k]
  ------------------
13013|  3.37k|    {
13014|  3.37k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0x8F && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (13014:13): [True: 3.30k, False: 75]
  |  Branch (13014:27): [True: 3.07k, False: 231]
  |  Branch (13014:46): [True: 2.83k, False: 238]
  |  Branch (13014:65): [True: 2.82k, False: 5]
  |  Branch (13014:84): [True: 2.81k, False: 15]
  |  Branch (13014:103): [True: 2.79k, False: 15]
  |  Branch (13014:122): [True: 2.75k, False: 45]
  ------------------
13015|  2.75k|        {
13016|  2.75k|            return 4;
13017|  2.75k|        }
13018|  3.37k|    }
13019|   263k|    return 0; // invalid, incomplete, or must be diagnosed by the byte path
13020|   312k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_EEEmRKT_DpRKT0_:
 5426|  9.28k|{
 5427|  9.28k|    return str.size() + concat_length(rest...);
 5428|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJEEEmRKT_DpRKT0_:
 5426|  29.6k|{
 5427|  29.6k|    return str.size() + concat_length(rest...);
 5428|  29.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthEv:
 5402|  38.8k|{
 5403|  38.8k|    return 0;
 5404|  38.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5479|  18.5k|{
 5480|  18.5k|    out.append(std::forward<Arg>(arg));
 5481|  18.5k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  18.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvRT_:
 5432|  38.8k|{}
_ZN8nlohmann16json_abi_v3_12_06detail9exception4nameERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEi:
 5648|  9.28k|    {
 5649|  9.28k|        return concat("[json.exception.", ename, '.', std::to_string(id_), "] ");
 5650|  9.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA17_KcRKS9_cS9_RA3_SA_EEET_DpOT0_:
 5516|  9.28k|{
 5517|  9.28k|    OutStringType str;
 5518|  9.28k|    str.reserve(concat_length(args...));
 5519|  9.28k|    concat_into(str, std::forward<Args>(args)...);
 5520|  9.28k|    return str;
 5521|  9.28k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcS9_A3_cEEEmPKcDpRKT_:
 5420|  9.28k|{
 5421|  9.28k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cEEEmRKT_DpRKT0_:
 5426|  9.28k|{
 5427|  9.28k|    return str.size() + concat_length(rest...);
 5428|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cEEEmcDpRKT_:
 5414|  9.28k|{
 5415|  9.28k|    return 1 + concat_length(rest...);
 5416|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cEEEmRKT_DpRKT0_:
 5426|  9.28k|{
 5427|  9.28k|    return str.size() + concat_length(rest...);
 5428|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJEEEmPKcDpRKT_:
 5420|  9.28k|{
 5421|  9.28k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA17_KcJRKS9_cS9_RA3_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JcS9_RA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcJS9_RA3_KcETnNS3_9enable_ifIXaantsr24detect_string_can_appendIT_T0_EE5valuesr27detect_string_can_append_opISE_SF_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5488|  9.28k|{
 5489|  9.28k|    out += std::forward<Arg>(arg);
 5490|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5491|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail9exception11diagnosticsEDn:
 5660|  9.28k|    {
 5661|  9.28k|        return "";
 5662|  9.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exceptionC2EiPKc:
 5645|  9.28k|    exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing)
_ZNK8nlohmann16json_abi_v3_12_06detail9exception4whatEv:
 5636|  6.18k|    {
 5637|  6.18k|        return m.what();
 5638|  6.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEmPKcDpRKT_:
 5420|  20.3k|{
 5421|  20.3k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  20.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA5_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|  1.15k|{
 5480|  1.15k|    out.append(std::forward<Arg>(arg));
 5481|  1.15k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSB_OSC_DpOT1_:
 5479|  11.0k|{
 5480|  11.0k|    out.append(std::forward<Arg>(arg));
 5481|  11.0k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  11.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail8hex_byteEh:
 7173|  3.54k|{
 7174|  3.54k|    std::string result = "00";
 7175|  3.54k|    constexpr const char* nibble_to_hex = "0123456789ABCDEF";
 7176|  3.54k|    result[0] = nibble_to_hex[byte / 16];
 7177|  3.54k|    result[1] = nibble_to_hex[byte % 16];
 7178|  3.54k|    return result;
 7179|  3.54k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_escaped_implILb0EEEvRKSC_:
37693|   145k|    {
37694|   145k|        std::uint32_t codepoint{};
37695|   145k|        std::uint8_t state = UTF8_ACCEPT;
37696|   145k|        std::size_t bytes = 0;  // number of bytes written to string_buffer
37697|       |
37698|       |        // number of bytes written at the point of the last valid byte
37699|   145k|        std::size_t bytes_after_last_accept = 0;
37700|   145k|        std::size_t undumped_chars = 0;
37701|       |
37702|   386k|        for (std::size_t i = 0; i < s.size(); ++i)
  ------------------
  |  Branch (37702:33): [True: 262k, False: 123k]
  ------------------
37703|   262k|        {
37704|       |            // Fast path: at a character boundary (state == UTF8_ACCEPT),
37705|       |            // bulk-copy the longest run of bytes that need no escaping using a
37706|       |            // SWAR scanner shared with the lexer's contiguous path. The scanner
37707|       |            // stops exactly at the first byte dump_escaped would handle
37708|       |            // individually, so that byte is left to the byte-at-a-time path
37709|       |            // below, keeping escaping output and error diagnostics unchanged.
37710|       |            //
37711|       |            // - EnsureAscii == false: string_bulk_run() copies ordinary bytes
37712|       |            //   and complete well-formed UTF-8, stopping at a quote, backslash,
37713|       |            //   control character (< 0x20), or ill-formed/truncated sequence.
37714|       |            // - EnsureAscii == true: only printable ASCII may be copied
37715|       |            //   verbatim; find_ascii_copyable_run() additionally stops at 0x7F
37716|       |            //   and every non-ASCII byte (>= 0x80), which must be \u-escaped.
37717|   262k|            if (state == UTF8_ACCEPT)
  ------------------
  |  Branch (37717:17): [True: 262k, False: 0]
  ------------------
37718|   262k|            {
37719|   262k|                const auto* const data = reinterpret_cast<const unsigned char*>(s.data());
37720|       |                // A run can only be non-empty when the very first byte is one
37721|       |                // the scanner may copy, so test that single byte before paying
37722|       |                // for the scan. Without it, text whose characters all have to be
37723|       |                // escaped - CJK under ensure_ascii, where every byte is >= 0x80 -
37724|       |                // runs the scanner once per character only to be told zero.
37725|   262k|                std::size_t run = 0;
37726|   262k|                if (!EnsureAscii)
  ------------------
  |  Branch (37726:21): [True: 262k, Folded]
  ------------------
37727|   262k|                {
37728|   262k|                    run = string_bulk_run(data + i, s.size() - i);
37729|   262k|                }
37730|      0|                else if (is_ascii_copyable(data[i]))
  ------------------
  |  Branch (37730:26): [True: 0, False: 0]
  ------------------
37731|      0|                {
37732|      0|                    run = find_ascii_copyable_run(data + i, s.size() - i);
37733|      0|                }
37734|   262k|                if (run != 0)
  ------------------
  |  Branch (37734:21): [True: 43.3k, False: 219k]
  ------------------
37735|  43.3k|                {
37736|       |                    // emit any bytes still pending in string_buffer first to
37737|       |                    // preserve output order, then write the run directly
37738|  43.3k|                    emit_pending(bytes);
37739|  43.3k|                    put_run(s, i, run);
37740|  43.3k|                    bytes_after_last_accept = 0;
37741|  43.3k|                    undumped_chars = 0;
37742|  43.3k|                    i += run;
37743|  43.3k|                    if (i >= s.size())
  ------------------
  |  Branch (37743:25): [True: 22.0k, False: 21.2k]
  ------------------
37744|  22.0k|                    {
37745|  22.0k|                        break;
37746|  22.0k|                    }
37747|  43.3k|                }
37748|       |
37749|       |                // A byte below 0x60 is a complete code point and needs no
37750|       |                // UTF-8 decoding. The scanner stops only at a control
37751|       |                // character, a quote, or a backslash in that range, so look up
37752|       |                // its escape sequence and write all 8 bytes of the table entry
37753|       |                // straight into the write buffer; only the length stored in the
37754|       |                // last byte of the entry is kept.
37755|   240k|                if (data[i] < 0x60)
  ------------------
  |  Branch (37755:21): [True: 240k, False: 0]
  ------------------
37756|   240k|                {
37757|       |                    // emit any bytes still pending in string_buffer first to
37758|       |                    // preserve output order
37759|   240k|                    emit_pending(bytes);
37760|       |                    // deliberately not put_buffer(): a fixed 8-byte memcpy
37761|       |                    // has no asserts and no write-through branch, which
37762|       |                    // matters on the hot path
37763|   240k|                    const auto& escape = ascii_escapes()[data[i]];
37764|   240k|                    if (JSON_HEDLEY_UNLIKELY(write_buffer.size() - write_buffer_pos < escape.size()))
  ------------------
  |  | 1697|   240k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 270, False: 240k]
  |  |  ------------------
  ------------------
37765|    270|                    {
37766|    270|                        flush();
37767|    270|                    }
37768|   240k|                    std::memcpy(write_buffer.data() + write_buffer_pos, escape.data(), escape.size());
37769|   240k|                    write_buffer_pos += static_cast<std::size_t>(escape[7]);
37770|   240k|                    bytes_after_last_accept = 0;
37771|   240k|                    undumped_chars = 0;
37772|   240k|                    continue;
37773|   240k|                }
37774|   240k|            }
37775|       |
37776|      0|            const auto byte = static_cast<std::uint8_t>(s[i]);
37777|       |
37778|      0|            if (EnsureAscii && state == UTF8_ACCEPT && byte >= 0x80)
  ------------------
  |  Branch (37778:17): [Folded, False: 0]
  |  Branch (37778:32): [True: 0, False: 0]
  |  Branch (37778:56): [True: 0, False: 0]
  ------------------
37779|      0|            {
37780|       |                // a run of well-formed multi-byte characters is escaped
37781|       |                // straight into the write buffer; an ill-formed sequence
37782|       |                // ends the run and is left to the byte-at-a-time path
37783|      0|                if (bytes != 0)
  ------------------
  |  Branch (37783:21): [True: 0, False: 0]
  ------------------
37784|      0|                {
37785|      0|                    put_buffer(string_buffer, bytes);
37786|      0|                    bytes = 0;
37787|      0|                    bytes_after_last_accept = 0;
37788|      0|                }
37789|      0|                const std::size_t escaped = write_u_escapes(reinterpret_cast<const unsigned char*>(s.data()) + i, s.size() - i);
37790|      0|                if (escaped != 0)
  ------------------
  |  Branch (37790:21): [True: 0, False: 0]
  ------------------
37791|      0|                {
37792|      0|                    bytes_after_last_accept = 0;
37793|      0|                    undumped_chars = 0;
37794|      0|                    i += escaped - 1;
37795|      0|                    continue;
37796|      0|                }
37797|      0|            }
37798|       |
37799|      0|            switch (decode(state, codepoint, byte))
37800|      0|            {
37801|      0|                case UTF8_ACCEPT:  // decode found a new code point
  ------------------
  |  Branch (37801:17): [True: 0, False: 0]
  ------------------
37802|      0|                {
37803|       |                    // the code point is at least 0x60 (smaller ones are handled
37804|       |                    // above) and is not printable ASCII (which the scanner
37805|       |                    // copies). Under EnsureAscii it is DEL (0x7F): every
37806|       |                    // well-formed multi-byte character is escaped by
37807|       |                    // write_u_escapes() above, so decode() only ever accepts a
37808|       |                    // single byte here, and nothing of it was buffered
37809|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (37809:25): [Folded, False: 0]
  ------------------
37810|      0|                    {
37811|      0|                        JSON_ASSERT(codepoint == 0x7F);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (37811:25): [True: 0, False: 0]
  ------------------
37812|      0|                        JSON_ASSERT(bytes == bytes_after_last_accept);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (37812:25): [True: 0, False: 0]
  ------------------
37813|      0|                        write_u_escape(bytes, static_cast<std::uint16_t>(codepoint));
37814|      0|                    }
37815|      0|                    else
37816|      0|                    {
37817|       |                        // copy byte to buffer (all previous bytes of the
37818|       |                        // sequence have been copied in the default case below)
37819|      0|                        string_buffer[bytes++] = s[i]; // LCOV_EXCL_LINE (well-formed sequences are copied in runs)
37820|      0|                    }
37821|       |
37822|      0|                    reserve_string_buffer(bytes);
37823|       |
37824|       |                    // remember the byte position of this accept
37825|      0|                    bytes_after_last_accept = bytes;
37826|      0|                    undumped_chars = 0;
37827|      0|                    break;
37828|      0|                }
37829|       |
37830|      0|                case UTF8_REJECT:  // decode found invalid UTF-8 byte
  ------------------
  |  Branch (37830:17): [True: 0, False: 0]
  ------------------
37831|      0|                {
37832|      0|                    switch (error_handler)
37833|      0|                    {
37834|      0|                        case error_handler_t::strict:
  ------------------
  |  Branch (37834:25): [True: 0, False: 0]
  ------------------
37835|      0|                        {
37836|      0|                            JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("invalid UTF-8 byte at index ", std::to_string(i), ": 0x", detail::hex_byte(byte)), nullptr));
  ------------------
  |  | 2608|      0|    #define JSON_THROW(exception) throw exception
  ------------------
37837|      0|                        }
37838|       |
37839|      0|                        case error_handler_t::ignore:
  ------------------
  |  Branch (37839:25): [True: 0, False: 0]
  ------------------
37840|      0|                        case error_handler_t::replace:
  ------------------
  |  Branch (37840:25): [True: 0, False: 0]
  ------------------
37841|      0|                        {
37842|       |                            // in case we saw this character the first time, we
37843|       |                            // would like to read it again, because the byte
37844|       |                            // may be OK for itself, but just not OK for the
37845|       |                            // previous sequence
37846|      0|                            if (undumped_chars > 0)
  ------------------
  |  Branch (37846:33): [True: 0, False: 0]
  ------------------
37847|      0|                            {
37848|      0|                                --i;
37849|      0|                            }
37850|       |
37851|       |                            // reset length buffer to the last accepted index;
37852|       |                            // thus removing/ignoring the invalid characters
37853|      0|                            bytes = bytes_after_last_accept;
37854|       |
37855|      0|                            if (error_handler == error_handler_t::replace)
  ------------------
  |  Branch (37855:33): [True: 0, False: 0]
  ------------------
37856|      0|                            {
37857|       |                                // add a replacement character
37858|      0|                                if (EnsureAscii)
  ------------------
  |  Branch (37858:37): [Folded, False: 0]
  ------------------
37859|      0|                                {
37860|      0|                                    string_buffer[bytes++] = '\\';
37861|      0|                                    string_buffer[bytes++] = 'u';
37862|      0|                                    string_buffer[bytes++] = 'f';
37863|      0|                                    string_buffer[bytes++] = 'f';
37864|      0|                                    string_buffer[bytes++] = 'f';
37865|      0|                                    string_buffer[bytes++] = 'd';
37866|      0|                                }
37867|      0|                                else
37868|      0|                                {
37869|      0|                                    string_buffer[bytes++] = '\xEF';
37870|      0|                                    string_buffer[bytes++] = '\xBF';
37871|      0|                                    string_buffer[bytes++] = '\xBD';
37872|      0|                                }
37873|       |
37874|      0|                                reserve_string_buffer(bytes);
37875|       |
37876|      0|                                bytes_after_last_accept = bytes;
37877|      0|                            }
37878|       |
37879|      0|                            undumped_chars = 0;
37880|       |
37881|       |                            // continue processing the string
37882|      0|                            state = UTF8_ACCEPT;
37883|      0|                            break;
37884|      0|                        }
37885|       |
37886|      0|                        case error_handler_t::keep:
  ------------------
  |  Branch (37886:25): [True: 0, False: 0]
  ------------------
37887|      0|                        {
37888|       |                            // the bytes of this (now abandoned) ill-formed
37889|       |                            // sequence seen so far are already buffered below
37890|       |                            // and are kept unchanged in the output
37891|      0|                            if (undumped_chars > 0)
  ------------------
  |  Branch (37891:33): [True: 0, False: 0]
  ------------------
37892|      0|                            {
37893|       |                                // the byte that ended the sequence may be OK
37894|       |                                // for itself (e.g., a quote that must still be
37895|       |                                // escaped, or the lead byte of a well-formed
37896|       |                                // code point), so read it again
37897|      0|                                --i;
37898|      0|                            }
37899|      0|                            else
37900|      0|                            {
37901|       |                                // a byte that cannot start a sequence (e.g.,
37902|       |                                // 0xFF or a stray continuation byte) is kept
37903|       |                                // as well
37904|      0|                                string_buffer[bytes++] = s[i];
37905|      0|                            }
37906|       |
37907|      0|                            reserve_string_buffer(bytes);
37908|       |
37909|      0|                            bytes_after_last_accept = bytes;
37910|      0|                            undumped_chars = 0;
37911|       |
37912|       |                            // continue processing the string
37913|      0|                            state = UTF8_ACCEPT;
37914|      0|                            break;
37915|      0|                        }
37916|       |
37917|      0|                        default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (37917:25): [True: 0, False: 0]
  ------------------
37918|      0|                            JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (37918:29): [Folded, False: 0]
  ------------------
37919|      0|                    }
37920|      0|                    break;
37921|      0|                }
37922|       |
37923|      0|                default:  // decode found yet incomplete multibyte code point
  ------------------
  |  Branch (37923:17): [True: 0, False: 0]
  ------------------
37924|      0|                {
37925|      0|                    if (!EnsureAscii || error_handler == error_handler_t::keep)
  ------------------
  |  Branch (37925:25): [True: 0, Folded]
  |  Branch (37925:41): [True: 0, False: 0]
  ------------------
37926|      0|                    {
37927|       |                        // code point will not be escaped (or will be kept as
37928|       |                        // is if it turns out to be ill-formed) - copy byte to
37929|       |                        // buffer; dropped again above if it decodes to a
37930|       |                        // well-formed code point that needs \u-escaping
37931|      0|                        string_buffer[bytes++] = s[i];
37932|      0|                    }
37933|      0|                    ++undumped_chars;
37934|      0|                    break;
37935|      0|                }
37936|      0|            }
37937|      0|        }
37938|       |
37939|       |        // we finished processing the string
37940|   145k|        if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
  ------------------
  |  | 1696|   145k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 145k, False: 0]
  |  |  ------------------
  ------------------
37941|   145k|        {
37942|       |            // write buffer
37943|   145k|            if (bytes > 0)
  ------------------
  |  Branch (37943:17): [True: 0, False: 145k]
  ------------------
37944|      0|            {
37945|      0|                put_buffer(string_buffer, bytes);
37946|      0|            }
37947|   145k|        }
37948|      0|        else
37949|      0|        {
37950|       |            // we finish reading, but do not accept: string was incomplete
37951|      0|            switch (error_handler)
37952|      0|            {
37953|      0|                case error_handler_t::strict:
  ------------------
  |  Branch (37953:17): [True: 0, False: 0]
  ------------------
37954|      0|                {
37955|      0|                    JSON_THROW(type_error::create(exception_id::invalid_utf8, concat("incomplete UTF-8 string; last byte: 0x", detail::hex_byte(static_cast<std::uint8_t>(s[s.size() - 1]))), nullptr));
  ------------------
  |  | 2608|      0|    #define JSON_THROW(exception) throw exception
  ------------------
37956|      0|                }
37957|       |
37958|      0|                case error_handler_t::ignore:
  ------------------
  |  Branch (37958:17): [True: 0, False: 0]
  ------------------
37959|      0|                {
37960|       |                    // write all accepted bytes
37961|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
37962|      0|                    break;
37963|      0|                }
37964|       |
37965|      0|                case error_handler_t::replace:
  ------------------
  |  Branch (37965:17): [True: 0, False: 0]
  ------------------
37966|      0|                {
37967|       |                    // write all accepted bytes
37968|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
37969|       |                    // add a replacement character
37970|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (37970:25): [Folded, False: 0]
  ------------------
37971|      0|                    {
37972|      0|                        put_literal("\\ufffd");
37973|      0|                    }
37974|      0|                    else
37975|      0|                    {
37976|      0|                        put_literal("\xEF\xBF\xBD");
37977|      0|                    }
37978|      0|                    break;
37979|      0|                }
37980|       |
37981|      0|                case error_handler_t::keep:
  ------------------
  |  Branch (37981:17): [True: 0, False: 0]
  ------------------
37982|      0|                {
37983|       |                    // write the ill-formed trailing bytes as is; they were
37984|       |                    // buffered above regardless of EnsureAscii
37985|      0|                    put_buffer(string_buffer, bytes);
37986|      0|                    break;
37987|      0|                }
37988|       |
37989|      0|                default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (37989:17): [True: 0, False: 0]
  ------------------
37990|       |                    JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (37990:21): [Folded, False: 0]
  ------------------
37991|      0|            }
37992|      0|        }
37993|   145k|    }
_ZN8nlohmann16json_abi_v3_12_06detail15string_bulk_runEPKhm:
13295|   262k|{
13296|       |#if defined(JSON_USE_SIMDUTF) && defined(JSON_HAS_CPP_17)
13297|       |    const std::size_t run = find_string_delimiter(data, n);
13298|       |    if (run != 0 && simdutf::validate_utf8(reinterpret_cast<const char*>(data), run))
13299|       |    {
13300|       |        return run;
13301|       |    }
13302|       |#endif
13303|   262k|    return scalar_string_bulk_run(data, n);
13304|   262k|}
_ZN8nlohmann16json_abi_v3_12_06detail22scalar_string_bulk_runEPKhm:
13216|   262k|{
13217|   262k|    const unsigned char* const e = data + n;
13218|   262k|    const unsigned char* p = data;
13219|   262k|    while (p != e)
  ------------------
  |  Branch (13219:12): [True: 262k, False: 0]
  ------------------
13220|   262k|    {
13221|   262k|#if JSON_SCAN_VECTOR
13222|   262k|        p = plain_run_end(p, e);
13223|       |#else
13224|       |        p += find_string_special(p, static_cast<std::size_t>(e - p));
13225|       |#endif
13226|   262k|        if (p == e || *p < 0x80u)
  ------------------
  |  Branch (13226:13): [True: 8.63k, False: 254k]
  |  Branch (13226:23): [True: 235k, False: 18.8k]
  ------------------
13227|   243k|        {
13228|   243k|            break; // end of buffer, or a quote/escape/control byte
13229|   243k|        }
13230|  18.8k|#if JSON_SCAN_VECTOR_UTF8
13231|  18.8k|#if JSON_SCAN_SSSE3_DISPATCH
13232|  18.8k|        if (JSON_HEDLEY_LIKELY(cpu_has_ssse3()))
  ------------------
  |  | 1696|  18.8k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 18.8k, False: 0]
  |  |  ------------------
  ------------------
13233|  18.8k|#endif
13234|  18.8k|        {
13235|  18.8k|            return static_cast<std::size_t>(scan_string_vector(p, e) - data);
13236|  18.8k|        }
13237|      0|#endif
13238|      0|#if !JSON_SCAN_VECTOR_UTF8 || JSON_SCAN_SSSE3_DISPATCH
13239|       |        // a run of multi-byte sequences (e.g. CJK text) is validated sequence
13240|       |        // by sequence without searching for the next special byte in between
13241|      0|        do
13242|      0|        {
13243|      0|            const std::size_t seq = validate_one_utf8(p, static_cast<std::size_t>(e - p));
13244|      0|            if (seq == 0)
  ------------------
  |  Branch (13244:17): [True: 0, False: 0]
  ------------------
13245|      0|            {
13246|      0|                return static_cast<std::size_t>(p - data); // ill-formed or truncated: let the byte path diagnose it
13247|      0|            }
13248|      0|            p += seq;
13249|      0|        }
13250|      0|        while (p != e && *p >= 0x80u);
  ------------------
  |  Branch (13250:16): [True: 0, False: 0]
  |  Branch (13250:26): [True: 0, False: 0]
  ------------------
13251|      0|#endif
13252|      0|    }
13253|   243k|    return static_cast<std::size_t>(p - data);
13254|   262k|}
_ZN8nlohmann16json_abi_v3_12_06detail13plain_run_endEPKhS3_:
13181|   262k|{
13182|   262k|    constexpr int prefix_words = JSON_SCAN_NEON ? 4 : 1;
  ------------------
  |  |12448|   262k|    #define JSON_SCAN_NEON 0
  |  |  ------------------
  |  |  |  Branch (12448:28): [Folded, False: 262k]
  |  |  ------------------
  ------------------
13183|   266k|    for (int words = prefix_words; words > 0 && e - p >= 8; --words)
  ------------------
  |  Branch (13183:36): [True: 262k, False: 4.05k]
  |  Branch (13183:49): [True: 76.3k, False: 186k]
  ------------------
13184|  76.3k|    {
13185|  76.3k|        const std::uint64_t special = swar_string_special(read_eight_bytes(p));
13186|  76.3k|        if (special != 0)
  ------------------
  |  Branch (13186:13): [True: 72.3k, False: 4.05k]
  ------------------
13187|  72.3k|        {
13188|  72.3k|            return p + (static_cast<std::size_t>(count_trailing_zeros(special)) / 8);
13189|  72.3k|        }
13190|  4.05k|        p += 8;
13191|  4.05k|    }
13192|       |    // the vector loop only for 16 bytes or more: the serializer passes a
13193|       |    // string without its closing quote, so most of its runs end at e, and a
13194|       |    // call of the out-of-line NEON loop for a shorter rest made dump() up to
13195|       |    // 10% slower
13196|   190k|    if (e - p >= 16)
  ------------------
  |  Branch (13196:9): [True: 2.71k, False: 187k]
  ------------------
13197|  2.71k|    {
13198|  2.71k|        p = vector_plain_run_long(p, e);
13199|  2.71k|        if (e - p >= 16)
  ------------------
  |  Branch (13199:13): [True: 1.98k, False: 732]
  ------------------
13200|  1.98k|        {
13201|  1.98k|            return p; // the vector loop stopped at a special byte
13202|  1.98k|        }
13203|  2.71k|    }
13204|   188k|    return p + find_string_special(p, static_cast<std::size_t>(e - p));
13205|   190k|}
_ZN8nlohmann16json_abi_v3_12_06detail19swar_string_specialEm:
12852|  77.5k|{
12853|  77.5k|    constexpr std::uint64_t ones = 0x0101010101010101ull;
12854|  77.5k|    constexpr std::uint64_t high = 0x8080808080808080ull;
12855|  77.5k|    const std::uint64_t q = v ^ 0x2222222222222222ull; // '"'  (0x22)
12856|  77.5k|    const std::uint64_t b = v ^ 0x5C5C5C5C5C5C5C5Cull; // '\\' (0x5C)
12857|       |    // The usual test for a zero byte is (x - ones) & ~x & high. The `& ~x`
12858|       |    // only removes bytes from 0x80, and `v & high` flags those anyway, so it
12859|       |    // can be dropped. Clang finds this reduction itself; GCC does not.
12860|  77.5k|    return ((q - ones) | (b - ones) | (v - 0x2020202020202020ull) | v) & high;
12861|  77.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail21vector_plain_run_longEPKhS3_:
12547|  2.71k|{
12548|  2.71k|    return vector_plain_run(p, e);
12549|  2.71k|}
_ZN8nlohmann16json_abi_v3_12_06detail16vector_plain_runEPKhS3_:
12507|  2.71k|{
12508|  4.86k|    while (e - p >= 16)
  ------------------
  |  Branch (12508:12): [True: 4.48k, False: 378]
  ------------------
12509|  4.48k|    {
12510|       |#if JSON_SCAN_NEON
12511|       |        const uint8x16_t in = vld1q_u8(p);
12512|       |        const uint8x16_t special = vorrq_u8(vceqq_u8(in, vdupq_n_u8('\\')),
12513|       |                                            vcltq_s8(vreinterpretq_s8_u8(veorq_u8(in, vdupq_n_u8(2))), vdupq_n_s8(33)));
12514|       |        // one nibble per byte (the usual NEON replacement of x86's movemask, see
12515|       |        // D. Kutenin, "Porting x86 vector bitmask optimizations to Arm NEON", 2022)
12516|       |        const std::uint64_t bits = vget_lane_u64(vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(special), 4)), 0);
12517|       |        if (bits != 0)
12518|       |        {
12519|       |            return p + (count_trailing_zeros(bits) >> 2u);
12520|       |        }
12521|       |#else
12522|  4.48k|        const __m128i in = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(p))); // NOLINT(bugprone-casting-through-void)
12523|  4.48k|        const __m128i special = _mm_or_si128(_mm_cmpeq_epi8(in, _mm_set1_epi8('\\')),
12524|  4.48k|                                             _mm_cmplt_epi8(_mm_xor_si128(in, _mm_set1_epi8(2)), _mm_set1_epi8(33)));
12525|  4.48k|        const auto bits = static_cast<std::uint64_t>(static_cast<unsigned>(_mm_movemask_epi8(special)));
12526|  4.48k|        if (bits != 0)
  ------------------
  |  Branch (12526:13): [True: 2.33k, False: 2.15k]
  ------------------
12527|  2.33k|        {
12528|  2.33k|            return p + count_trailing_zeros(bits);
12529|  2.33k|        }
12530|  2.15k|#endif
12531|  2.15k|        p += 16;
12532|  2.15k|    }
12533|    378|    return p;
12534|  2.71k|}
_ZN8nlohmann16json_abi_v3_12_06detail19find_string_specialEPKhm:
12866|   188k|{
12867|   188k|    std::size_t i = 0;
12868|   188k|    for (; i + 8 <= n; i += 8)
  ------------------
  |  Branch (12868:12): [True: 1.23k, False: 187k]
  ------------------
12869|  1.23k|    {
12870|  1.23k|        const std::uint64_t special = swar_string_special(read_eight_bytes(data + i));
12871|  1.23k|        if (special != 0)
  ------------------
  |  Branch (12871:13): [True: 918, False: 312]
  ------------------
12872|    918|        {
12873|       |            // the lowest flagged byte is the first special one: the borrows of
12874|       |            // the subtractions can only flag bytes above a true hit
12875|    918|            return i + (static_cast<std::size_t>(count_trailing_zeros(special)) / 8);
12876|    918|        }
12877|  1.23k|    }
12878|   208k|    for (; i < n; ++i)
  ------------------
  |  Branch (12878:12): [True: 200k, False: 8.63k]
  ------------------
12879|   200k|    {
12880|   200k|        if (is_string_special(data[i]))
  ------------------
  |  Branch (12880:13): [True: 178k, False: 21.3k]
  ------------------
12881|   178k|        {
12882|   178k|            return i;
12883|   178k|        }
12884|   200k|    }
12885|  8.63k|    return n;
12886|   187k|}
_ZN8nlohmann16json_abi_v3_12_06detail17is_string_specialEh:
12845|   207k|{
12846|   207k|    return c == '\"' || c == '\\' || c < 0x20u || c >= 0x80u;
  ------------------
  |  Branch (12846:12): [True: 1.53k, False: 206k]
  |  Branch (12846:25): [True: 1.64k, False: 204k]
  |  Branch (12846:38): [True: 165k, False: 38.4k]
  |  Branch (12846:51): [True: 13.0k, False: 25.4k]
  ------------------
12847|   207k|}
_ZN8nlohmann16json_abi_v3_12_06detail13cpu_has_ssse3Ev:
12574|  19.4k|{
12575|  19.4k|    static std::atomic<int> known{0}; // 0: not asked yet, 1: no, 2: yes
12576|  19.4k|    int state = known.load(std::memory_order_relaxed);
12577|  19.4k|    if (JSON_HEDLEY_UNLIKELY(state == 0))
  ------------------
  |  | 1697|  19.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1, False: 19.4k]
  |  |  ------------------
  ------------------
12578|      1|    {
12579|      1|        state = cpu_ssse3() ? 2 : 1;
  ------------------
  |  Branch (12579:17): [True: 1, False: 0]
  ------------------
12580|      1|        known.store(state, std::memory_order_relaxed);
12581|      1|    }
12582|  19.4k|    return state == 2;
12583|  19.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail9cpu_ssse3Ev:
12555|      1|{
12556|       |#if defined(_MSC_VER) && !defined(__clang__)
12557|       |    std::array<int, 4> regs {{}};
12558|       |    __cpuid(regs.data(), 1);
12559|       |    return (static_cast<unsigned>(regs[2]) & (1u << 9u)) != 0;
12560|       |#else
12561|      1|    unsigned eax = 0;
12562|      1|    unsigned ebx = 0;
12563|      1|    unsigned ecx = 0;
12564|      1|    unsigned edx = 0;
12565|      1|    return __get_cpuid(1, &eax, &ebx, &ecx, &edx) != 0 && (ecx & (1u << 9u)) != 0;
  ------------------
  |  Branch (12565:12): [True: 1, False: 0]
  |  Branch (12565:59): [True: 1, False: 0]
  ------------------
12566|      1|#endif
12567|      1|}
_ZN8nlohmann16json_abi_v3_12_06detail18scan_string_vectorEPKhS3_:
13164|  18.8k|{
13165|  18.8k|    const unsigned char* block = p;
13166|  18.8k|    if (vector_utf8_run(p, e, block))
  ------------------
  |  Branch (13166:9): [True: 2.08k, False: 16.7k]
  ------------------
13167|  2.08k|    {
13168|  2.08k|        return block;
13169|  2.08k|    }
13170|  16.7k|    return scan_string_finish(p, block, e);
13171|  18.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail15vector_utf8_runEPKhS3_RS3_:
12650|  18.8k|{
12651|  18.8k|    using lookup = utf8_lookup4<>;
12652|  18.8k|    const unsigned char* block = p;
12653|       |#if JSON_SCAN_NEON
12654|       |    const uint8x16_t t1h = vld1q_u8(lookup::byte_1_high.data());
12655|       |    const uint8x16_t t1l = vld1q_u8(lookup::byte_1_low.data());
12656|       |    const uint8x16_t t2h = vld1q_u8(lookup::byte_2_high.data());
12657|       |    uint8x16_t prev = vdupq_n_u8(0);
12658|       |    while (e - block >= 16)
12659|       |    {
12660|       |        const uint8x16_t in = vld1q_u8(block);
12661|       |        // the quote and the control characters: (c ^ 2) < 33 (see vector_plain_run())
12662|       |        const uint8x16_t special = vorrq_u8(vceqq_u8(in, vdupq_n_u8('\\')), vcltq_u8(veorq_u8(in, vdupq_n_u8(2)), vdupq_n_u8(33)));
12663|       |        const uint8x16_t prev1 = vextq_u8(prev, in, 15);
12664|       |        const uint8x16_t sc = vandq_u8(vandq_u8(vqtbl1q_u8(t1h, vshrq_n_u8(prev1, 4)), vqtbl1q_u8(t1l, vandq_u8(prev1, vdupq_n_u8(0x0F)))), vqtbl1q_u8(t2h, vshrq_n_u8(in, 4)));
12665|       |        const uint8x16_t must23 = vorrq_u8(vqsubq_u8(vextq_u8(prev, in, 14), vdupq_n_u8(0xE0 - 0x80)), vqsubq_u8(vextq_u8(prev, in, 13), vdupq_n_u8(0xF0 - 0x80)));
12666|       |        const uint8x16_t err = veorq_u8(vandq_u8(must23, vdupq_n_u8(0x80)), sc);
12667|       |        const std::uint64_t special_bits = vget_lane_u64(vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(special), 4)), 0);
12668|       |        const std::uint64_t err_bits = vget_lane_u64(vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(vtstq_u8(err, err)), 4)), 0);
12669|       |        if (special_bits != 0)
12670|       |        {
12671|       |            // errors up to the special byte count (an incomplete sequence
12672|       |            // before a quote shows at the quote); the bytes after it do not
12673|       |            const unsigned k = static_cast<unsigned>(count_trailing_zeros(special_bits)) >> 2u;
12674|       |            const std::uint64_t upto = k == 15 ? ~std::uint64_t{0} :
12675|       |                                       (std::uint64_t{1} << (4u * (k + 1u))) - 1u;
12676|       |            if ((err_bits & upto) == 0)
12677|       |            {
12678|       |                block_out = block + k;
12679|       |                return true;
12680|       |            }
12681|       |            break;
12682|       |        }
12683|       |        if (err_bits != 0)
12684|       |        {
12685|       |            break;
12686|       |        }
12687|       |        prev = in;
12688|       |        block += 16;
12689|       |    }
12690|       |#else
12691|       |    // the same with SSSE3 (pshufb for the table lookups; nibbles from 16-bit
12692|       |    // shifts, as there are no byte shifts)
12693|  18.8k|    const __m128i t1h = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(lookup::byte_1_high.data()))); // NOLINT(bugprone-casting-through-void)
12694|  18.8k|    const __m128i t1l = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(lookup::byte_1_low.data()))); // NOLINT(bugprone-casting-through-void)
12695|  18.8k|    const __m128i t2h = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(lookup::byte_2_high.data()))); // NOLINT(bugprone-casting-through-void)
12696|  18.8k|    const __m128i nibble = _mm_set1_epi8(0x0F);
12697|  18.8k|    const __m128i zero = _mm_setzero_si128();
12698|  18.8k|    __m128i prev = zero;
12699|  20.7k|    while (e - block >= 16)
  ------------------
  |  Branch (12699:12): [True: 3.98k, False: 16.7k]
  ------------------
12700|  3.98k|    {
12701|  3.98k|        const __m128i in = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(block))); // NOLINT(bugprone-casting-through-void)
12702|       |        // the quote and the control characters: (c ^ 2) < 33, that is,
12703|       |        // (c ^ 2) - 32 saturates to 0 (see vector_plain_run())
12704|  3.98k|        const __m128i special = _mm_or_si128(_mm_cmpeq_epi8(in, _mm_set1_epi8('\\')),
12705|  3.98k|                                             _mm_cmpeq_epi8(_mm_subs_epu8(_mm_xor_si128(in, _mm_set1_epi8(2)), _mm_set1_epi8(32)), zero));
12706|  3.98k|        const __m128i prev1 = _mm_alignr_epi8(in, prev, 15);
12707|  3.98k|        const __m128i sc = _mm_and_si128(_mm_and_si128(_mm_shuffle_epi8(t1h, _mm_and_si128(_mm_srli_epi16(prev1, 4), nibble)),
12708|  3.98k|                                         _mm_shuffle_epi8(t1l, _mm_and_si128(prev1, nibble))),
12709|  3.98k|                                         _mm_shuffle_epi8(t2h, _mm_and_si128(_mm_srli_epi16(in, 4), nibble)));
12710|  3.98k|        const __m128i must23 = _mm_or_si128(_mm_subs_epu8(_mm_alignr_epi8(in, prev, 14), _mm_set1_epi8(0xE0 - 0x80)),
12711|  3.98k|                                            _mm_subs_epu8(_mm_alignr_epi8(in, prev, 13), _mm_set1_epi8(0xF0 - 0x80)));
12712|  3.98k|        const __m128i err = _mm_xor_si128(_mm_and_si128(must23, _mm_set1_epi8(static_cast<char>(-128))), sc);
12713|  3.98k|        const auto special_bits = static_cast<unsigned>(_mm_movemask_epi8(special));
12714|  3.98k|        const auto err_bits = ~static_cast<unsigned>(_mm_movemask_epi8(_mm_cmpeq_epi8(err, zero))) & 0xFFFFu;
12715|  3.98k|        if (special_bits != 0)
  ------------------
  |  Branch (12715:13): [True: 2.08k, False: 1.90k]
  ------------------
12716|  2.08k|        {
12717|  2.08k|            const auto k = static_cast<unsigned>(count_trailing_zeros(static_cast<std::uint64_t>(special_bits)));
12718|  2.08k|            if ((err_bits & ((2u << k) - 1u)) == 0)
  ------------------
  |  Branch (12718:17): [True: 2.08k, False: 0]
  ------------------
12719|  2.08k|            {
12720|  2.08k|                block_out = block + k;
12721|  2.08k|                return true;
12722|  2.08k|            }
12723|      0|            break;
12724|  2.08k|        }
12725|  1.90k|        if (err_bits != 0)
  ------------------
  |  Branch (12725:13): [True: 0, False: 1.90k]
  ------------------
12726|      0|        {
12727|      0|            break;
12728|      0|        }
12729|  1.90k|        prev = in;
12730|  1.90k|        block += 16;
12731|  1.90k|    }
12732|  16.7k|#endif
12733|  16.7k|    block_out = block;
12734|  16.7k|    return false;
12735|  18.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail18scan_string_finishEPKhS3_S3_:
13122|  16.7k|{
13123|  18.3k|    for (int i = 1; i <= 3 && block - i >= p; ++i)
  ------------------
  |  Branch (13123:21): [True: 18.0k, False: 342]
  |  Branch (13123:31): [True: 2.45k, False: 15.5k]
  ------------------
13124|  2.45k|    {
13125|  2.45k|        const unsigned char c = block[-i];
13126|  2.45k|        if (c < 0x80)
  ------------------
  |  Branch (13126:13): [True: 318, False: 2.13k]
  ------------------
13127|    318|        {
13128|    318|            break;
13129|    318|        }
13130|  2.13k|        if (c >= 0xC0)
  ------------------
  |  Branch (13130:13): [True: 516, False: 1.62k]
  ------------------
13131|    516|        {
13132|    516|            const int len = 2 + static_cast<int>(c >= 0xE0) + static_cast<int>(c >= 0xF0);
13133|    516|            if (len > i)
  ------------------
  |  Branch (13133:17): [True: 144, False: 372]
  ------------------
13134|    144|            {
13135|    144|                block -= i;
13136|    144|            }
13137|    516|            break;
13138|    516|        }
13139|  2.13k|    }
13140|  39.7k|    for (p = block; p != e;)
  ------------------
  |  Branch (13140:21): [True: 26.3k, False: 13.4k]
  ------------------
13141|  26.3k|    {
13142|  26.3k|        if (*p < 0x80)
  ------------------
  |  Branch (13142:13): [True: 7.49k, False: 18.8k]
  ------------------
13143|  7.49k|        {
13144|  7.49k|            if (is_string_special(*p))
  ------------------
  |  Branch (13144:17): [True: 3.33k, False: 4.16k]
  ------------------
13145|  3.33k|            {
13146|  3.33k|                return p;
13147|  3.33k|            }
13148|  4.16k|            ++p;
13149|  4.16k|            continue;
13150|  7.49k|        }
13151|  18.8k|        const std::size_t n = validate_one_utf8(p, static_cast<std::size_t>(e - p));
13152|  18.8k|        if (n == 0)
  ------------------
  |  Branch (13152:13): [True: 0, False: 18.8k]
  ------------------
13153|      0|        {
13154|      0|            return p;
13155|      0|        }
13156|  18.8k|        p += n;
13157|  18.8k|    }
13158|  13.4k|    return p;
13159|  16.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE8put_charEc:
38008|  1.70M|    {
38009|  1.70M|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos == write_buffer.size()))
  ------------------
  |  | 1697|  1.70M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 858, False: 1.70M]
  |  |  ------------------
  ------------------
38010|    858|        {
38011|    858|            flush();
38012|    858|        }
38013|  1.70M|        write_buffer[write_buffer_pos++] = c;
38014|  1.70M|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE14put_object_keyILm3EEEvRKSC_RAT__Kc:
37388|  84.1k|    {
37389|  84.1k|#if JSON_LITTLE_ENDIAN_TARGET
37390|  84.1k|        if (put_short_quoted(s, tail))
  ------------------
  |  Branch (37390:13): [True: 52.5k, False: 31.6k]
  ------------------
37391|  52.5k|        {
37392|  52.5k|            return;
37393|  52.5k|        }
37394|  31.6k|#endif
37395|  31.6k|        put_char('"');
37396|  31.6k|        dump_escaped(s);
37397|  31.6k|        put_literal(tail);
37398|  31.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16put_short_quotedILm3EEEbRKSC_RAT__Kc:
37442|  84.1k|    {
37443|  84.1k|        const std::size_t n = s.size();
37444|  84.1k|        if (n > short_string_max || write_buffer_pos + n + N > write_buffer.size())
  ------------------
  |  Branch (37444:13): [True: 174, False: 84.0k]
  |  Branch (37444:37): [True: 204, False: 83.7k]
  ------------------
37445|    378|        {
37446|    378|            return false;
37447|    378|        }
37448|       |
37449|  83.7k|        char* d = write_buffer.data() + write_buffer_pos + 1;
37450|  83.7k|        const char* const p = s.data();
37451|       |
37452|  83.7k|        if (n >= 8)
  ------------------
  |  Branch (37452:13): [True: 2.04k, False: 81.7k]
  ------------------
37453|  2.04k|        {
37454|  2.04k|#if JSON_SCAN_VECTOR
37455|  2.04k|            if (!(n >= 16 ? copy_plain_vectors(d, p, n) : copy_plain_halves(d, p, n)))
  ------------------
  |  Branch (37455:17): [True: 1.44k, False: 600]
  |  Branch (37455:19): [True: 678, False: 1.36k]
  ------------------
37456|  1.44k|            {
37457|  1.44k|                return false;
37458|  1.44k|            }
37459|       |#else
37460|       |            const auto a = load_word<std::uint64_t>(p);
37461|       |            const auto b = load_word<std::uint64_t>(p + n - 8);
37462|       |            if ((swar_not_plain(a) | swar_not_plain(b)) != 0)
37463|       |            {
37464|       |                return false;
37465|       |            }
37466|       |            store_word(d, a);
37467|       |            store_word(d + n - 8, b);
37468|       |#endif
37469|  2.04k|        }
37470|  81.7k|        else if (n >= 4)
  ------------------
  |  Branch (37470:18): [True: 1.88k, False: 79.8k]
  ------------------
37471|  1.88k|        {
37472|  1.88k|            const auto a = load_word<std::uint32_t>(p);
37473|  1.88k|            const auto b = load_word<std::uint32_t>(p + n - 4);
37474|       |            // the bytes above the string are filled with a plain character
37475|  1.88k|            const std::uint64_t w = a | (static_cast<std::uint64_t>(b) << (8 * (n - 4)))
37476|  1.88k|                                    | (0x4141414141414141ull << (8 * n));
37477|  1.88k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37477:17): [True: 1.36k, False: 516]
  ------------------
37478|  1.36k|            {
37479|  1.36k|                return false;
37480|  1.36k|            }
37481|    516|            store_word(d, a);
37482|    516|            store_word(d + n - 4, b);
37483|    516|        }
37484|  79.8k|        else if (n >= 2)
  ------------------
  |  Branch (37484:18): [True: 13.1k, False: 66.6k]
  ------------------
37485|  13.1k|        {
37486|  13.1k|            const auto a = load_word<std::uint16_t>(p);
37487|  13.1k|            const auto b = load_word<std::uint16_t>(p + n - 2);
37488|  13.1k|            const std::uint64_t w = a | (static_cast<std::uint64_t>(b) << (8 * (n - 2)))
37489|  13.1k|                                    | (0x4141414141414141ull << (8 * n));
37490|  13.1k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37490:17): [True: 10.0k, False: 3.15k]
  ------------------
37491|  10.0k|            {
37492|  10.0k|                return false;
37493|  10.0k|            }
37494|  3.15k|            store_word(d, a);
37495|  3.15k|            store_word(d + n - 2, b);
37496|  3.15k|        }
37497|  66.6k|        else if (n == 1)
  ------------------
  |  Branch (37497:18): [True: 60.1k, False: 6.49k]
  ------------------
37498|  60.1k|        {
37499|  60.1k|            const std::uint64_t w = static_cast<std::uint64_t>(static_cast<unsigned char>(p[0])) | (0x4141414141414141ull << 8u);
37500|  60.1k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37500:17): [True: 18.4k, False: 41.7k]
  ------------------
37501|  18.4k|            {
37502|  18.4k|                return false;
37503|  18.4k|            }
37504|  41.7k|            *d = p[0];
37505|  41.7k|        }
37506|       |
37507|  52.5k|        d[-1] = '"';
37508|  52.5k|        std::memcpy(d + n, tail, N - 1);
37509|  52.5k|        write_buffer_pos += n + N;
37510|  52.5k|        return true;
37511|  83.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11dump_scalarERKSG_m:
37200|   418k|    {
37201|   418k|        switch (val.m_data.m_type)
37202|   418k|        {
37203|   151k|            case value_t::string:
  ------------------
  |  Branch (37203:13): [True: 151k, False: 267k]
  ------------------
37204|   151k|            {
37205|   151k|                dump_string_value(*val.m_data.m_value.string);
37206|   151k|                return;
37207|      0|            }
37208|       |
37209|      0|            case value_t::binary:
  ------------------
  |  Branch (37209:13): [True: 0, False: 418k]
  ------------------
37210|      0|            {
37211|      0|                dump_binary_value(current_indent, *val.m_data.m_value.binary);
37212|      0|                return;
37213|      0|            }
37214|       |
37215|   101k|            case value_t::boolean:
  ------------------
  |  Branch (37215:13): [True: 101k, False: 317k]
  ------------------
37216|   101k|            {
37217|   101k|                if (val.m_data.m_value.boolean)
  ------------------
  |  Branch (37217:21): [True: 8.64k, False: 93.0k]
  ------------------
37218|  8.64k|                {
37219|  8.64k|                    put_literal("true");
37220|  8.64k|                }
37221|  93.0k|                else
37222|  93.0k|                {
37223|  93.0k|                    put_literal("false");
37224|  93.0k|                }
37225|   101k|                return;
37226|      0|            }
37227|       |
37228|  40.4k|            case value_t::number_integer:
  ------------------
  |  Branch (37228:13): [True: 40.4k, False: 378k]
  ------------------
37229|  40.4k|            {
37230|  40.4k|                dump_signed_value(val.m_data.m_value.number_integer);
37231|  40.4k|                return;
37232|      0|            }
37233|       |
37234|  63.3k|            case value_t::number_unsigned:
  ------------------
  |  Branch (37234:13): [True: 63.3k, False: 355k]
  ------------------
37235|  63.3k|            {
37236|  63.3k|                dump_unsigned_value(val.m_data.m_value.number_unsigned);
37237|  63.3k|                return;
37238|      0|            }
37239|       |
37240|  48.2k|            case value_t::number_float:
  ------------------
  |  Branch (37240:13): [True: 48.2k, False: 370k]
  ------------------
37241|  48.2k|            {
37242|  48.2k|                dump_float_value(val.m_data.m_value.number_float);
37243|  48.2k|                return;
37244|      0|            }
37245|       |
37246|      0|            case value_t::discarded:
  ------------------
  |  Branch (37246:13): [True: 0, False: 418k]
  ------------------
37247|      0|            {
37248|      0|                put_literal("<discarded>");
37249|      0|                return;
37250|      0|            }
37251|       |
37252|  13.5k|            case value_t::null:
  ------------------
  |  Branch (37252:13): [True: 13.5k, False: 405k]
  ------------------
37253|  13.5k|            {
37254|  13.5k|                put_literal("null");
37255|  13.5k|                return;
37256|      0|            }
37257|       |
37258|      0|            case value_t::object: // LCOV_EXCL_LINE
  ------------------
  |  Branch (37258:13): [True: 0, False: 418k]
  ------------------
37259|      0|            case value_t::array:  // LCOV_EXCL_LINE
  ------------------
  |  Branch (37259:13): [True: 0, False: 418k]
  ------------------
37260|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (37260:13): [True: 0, False: 418k]
  ------------------
37261|       |                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (37261:17): [Folded, False: 0]
  ------------------
37262|   418k|        }
37263|   418k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_string_valueERKSC_:
37268|   151k|    {
37269|   151k|#if JSON_LITTLE_ENDIAN_TARGET
37270|   151k|        if (s.size() <= short_string_max && put_short_quoted(s, "\""))
  ------------------
  |  Branch (37270:13): [True: 150k, False: 1.28k]
  |  Branch (37270:45): [True: 37.2k, False: 112k]
  ------------------
37271|  37.2k|        {
37272|  37.2k|            return;
37273|  37.2k|        }
37274|   114k|#endif
37275|   114k|        put_char('"');
37276|   114k|        dump_escaped(s);
37277|   114k|        put_char('"');
37278|   114k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16put_short_quotedILm2EEEbRKSC_RAT__Kc:
37442|   150k|    {
37443|   150k|        const std::size_t n = s.size();
37444|   150k|        if (n > short_string_max || write_buffer_pos + n + N > write_buffer.size())
  ------------------
  |  Branch (37444:13): [True: 0, False: 150k]
  |  Branch (37444:37): [True: 156, False: 150k]
  ------------------
37445|    156|        {
37446|    156|            return false;
37447|    156|        }
37448|       |
37449|   150k|        char* d = write_buffer.data() + write_buffer_pos + 1;
37450|   150k|        const char* const p = s.data();
37451|       |
37452|   150k|        if (n >= 8)
  ------------------
  |  Branch (37452:13): [True: 6.57k, False: 143k]
  ------------------
37453|  6.57k|        {
37454|  6.57k|#if JSON_SCAN_VECTOR
37455|  6.57k|            if (!(n >= 16 ? copy_plain_vectors(d, p, n) : copy_plain_halves(d, p, n)))
  ------------------
  |  Branch (37455:17): [True: 5.58k, False: 984]
  |  Branch (37455:19): [True: 3.01k, False: 3.55k]
  ------------------
37456|  5.58k|            {
37457|  5.58k|                return false;
37458|  5.58k|            }
37459|       |#else
37460|       |            const auto a = load_word<std::uint64_t>(p);
37461|       |            const auto b = load_word<std::uint64_t>(p + n - 8);
37462|       |            if ((swar_not_plain(a) | swar_not_plain(b)) != 0)
37463|       |            {
37464|       |                return false;
37465|       |            }
37466|       |            store_word(d, a);
37467|       |            store_word(d + n - 8, b);
37468|       |#endif
37469|  6.57k|        }
37470|   143k|        else if (n >= 4)
  ------------------
  |  Branch (37470:18): [True: 6.33k, False: 137k]
  ------------------
37471|  6.33k|        {
37472|  6.33k|            const auto a = load_word<std::uint32_t>(p);
37473|  6.33k|            const auto b = load_word<std::uint32_t>(p + n - 4);
37474|       |            // the bytes above the string are filled with a plain character
37475|  6.33k|            const std::uint64_t w = a | (static_cast<std::uint64_t>(b) << (8 * (n - 4)))
37476|  6.33k|                                    | (0x4141414141414141ull << (8 * n));
37477|  6.33k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37477:17): [True: 5.46k, False: 870]
  ------------------
37478|  5.46k|            {
37479|  5.46k|                return false;
37480|  5.46k|            }
37481|    870|            store_word(d, a);
37482|    870|            store_word(d + n - 4, b);
37483|    870|        }
37484|   137k|        else if (n >= 2)
  ------------------
  |  Branch (37484:18): [True: 16.1k, False: 121k]
  ------------------
37485|  16.1k|        {
37486|  16.1k|            const auto a = load_word<std::uint16_t>(p);
37487|  16.1k|            const auto b = load_word<std::uint16_t>(p + n - 2);
37488|  16.1k|            const std::uint64_t w = a | (static_cast<std::uint64_t>(b) << (8 * (n - 2)))
37489|  16.1k|                                    | (0x4141414141414141ull << (8 * n));
37490|  16.1k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37490:17): [True: 15.0k, False: 1.02k]
  ------------------
37491|  15.0k|            {
37492|  15.0k|                return false;
37493|  15.0k|            }
37494|  1.02k|            store_word(d, a);
37495|  1.02k|            store_word(d + n - 2, b);
37496|  1.02k|        }
37497|   121k|        else if (n == 1)
  ------------------
  |  Branch (37497:18): [True: 97.2k, False: 23.7k]
  ------------------
37498|  97.2k|        {
37499|  97.2k|            const std::uint64_t w = static_cast<std::uint64_t>(static_cast<unsigned char>(p[0])) | (0x4141414141414141ull << 8u);
37500|  97.2k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37500:17): [True: 86.6k, False: 10.5k]
  ------------------
37501|  86.6k|            {
37502|  86.6k|                return false;
37503|  86.6k|            }
37504|  10.5k|            *d = p[0];
37505|  10.5k|        }
37506|       |
37507|  37.2k|        d[-1] = '"';
37508|  37.2k|        std::memcpy(d + n, tail, N - 1);
37509|  37.2k|        write_buffer_pos += n + N;
37510|  37.2k|        return true;
37511|   150k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerImTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
38587|  63.3k|    {
38588|  63.3k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
38589|  63.3k|        {
38590|  63.3k|            {
38591|  63.3k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
38592|  63.3k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
38593|  63.3k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
38594|  63.3k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
38595|  63.3k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
38596|  63.3k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
38597|  63.3k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
38598|  63.3k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
38599|  63.3k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
38600|  63.3k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
38601|  63.3k|            }
38602|  63.3k|        };
38603|       |
38604|       |        // special case for "0"
38605|  63.3k|        if (x == 0)
  ------------------
  |  Branch (38605:13): [True: 3.91k, False: 59.4k]
  ------------------
38606|  3.91k|        {
38607|  3.91k|            put_char('0');
38608|  3.91k|            return;
38609|  3.91k|        }
38610|       |
38611|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
38612|  59.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1697|  59.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 162, False: 59.2k]
  |  |  ------------------
  ------------------
38613|    162|        {
38614|    162|            flush();
38615|    162|        }
38616|  59.4k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
38617|       |
38618|  59.4k|        number_magnitude_t abs_value;
38619|       |
38620|       |        // one byte for the minus sign
38621|  59.4k|        unsigned int n_chars = 0;
38622|       |
38623|  59.4k|        if (is_negative_number(x))
  ------------------
  |  Branch (38623:13): [True: 0, False: 59.4k]
  ------------------
38624|      0|        {
38625|      0|            *buffer_ptr = '-';
38626|      0|            abs_value = remove_sign(static_cast<number_integer_t>(x));
38627|      0|            n_chars = 1;
38628|      0|        }
38629|  59.4k|        else
38630|  59.4k|        {
38631|  59.4k|            abs_value = static_cast<number_magnitude_t>(x);
38632|  59.4k|        }
38633|       |
38634|       |        // up to 16 digits: eight at a time (as the digits of floats), written
38635|       |        // without leading zeros
38636|  59.4k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (38636:13): [True: 57.9k, False: 1.48k]
  ------------------
38637|  57.9k|        {
38638|  57.9k|            const auto value = static_cast<std::uint64_t>(abs_value); // fits: abs_value < 10^16
38639|  57.9k|            const std::uint64_t upper = value / 100000000u;
38640|  57.9k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (38640:70): [True: 3.67k, False: 54.2k]
  ------------------
38641|  57.9k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
38642|  57.9k|            char* const p = buffer_ptr + n_chars;
38643|  57.9k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
38644|  57.9k|            n_chars += 8 - leading;
38645|  57.9k|            if (upper != 0)
  ------------------
  |  Branch (38645:17): [True: 3.67k, False: 54.2k]
  ------------------
38646|  3.67k|            {
38647|  3.67k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
38648|  3.67k|                n_chars += 8;
38649|  3.67k|            }
38650|  57.9k|            write_buffer_pos += n_chars;
38651|  57.9k|            return;
38652|  57.9k|        }
38653|       |
38654|       |        // 17 to 20 digits: the first one to four, then twice eight
38655|  1.48k|        if (magnitude_fits_64_bits(abs_value, std::integral_constant<bool, magnitude_has_at_most_64_bits>()))
  ------------------
  |  Branch (38655:13): [True: 1.48k, False: 0]
  ------------------
38656|  1.48k|        {
38657|  1.48k|            const auto value = static_cast<std::uint64_t>(abs_value);
38658|  1.48k|            const std::uint64_t top = value / 10000000000000000u; // 1 to 1844
38659|  1.48k|            const std::uint64_t low16 = value - (top * 10000000000000000u);
38660|  1.48k|            const std::uint64_t middle = low16 / 100000000u;
38661|  1.48k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(top);
38662|  1.48k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
38663|  1.48k|            char* const p = buffer_ptr + n_chars;
38664|  1.48k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
38665|  1.48k|            dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(middle) + 0x3030303030303030u);
38666|  1.48k|            dtoa_impl::store_msb_first(p + 16 - leading, dtoa_impl::eight_digit_bytes(low16 - (middle * 100000000u)) + 0x3030303030303030u);
38667|  1.48k|            write_buffer_pos += n_chars + 24 - leading;
38668|  1.48k|            return;
38669|  1.48k|        }
38670|       |
38671|      0|        n_chars += count_digits(abs_value);
38672|       |
38673|       |        // spare 1 byte for '\0'
38674|      0|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38674:9): [True: 0, False: 0]
  ------------------
38675|       |
38676|       |        // jump to the end to generate the string from backward,
38677|       |        // so we later avoid reversing the result
38678|      0|        buffer_ptr += n_chars;
38679|       |
38680|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
38681|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
38682|      0|        while (abs_value >= 100)
  ------------------
  |  Branch (38682:16): [True: 0, False: 0]
  ------------------
38683|      0|        {
38684|      0|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
38685|      0|            abs_value /= 100;
38686|      0|            *(--buffer_ptr) = digits_to_99[digits_index][1];
38687|      0|            *(--buffer_ptr) = digits_to_99[digits_index][0];
38688|      0|        }
38689|       |
38690|      0|        if (abs_value >= 10)
  ------------------
  |  Branch (38690:13): [True: 0, False: 0]
  ------------------
38691|      0|        {
38692|      0|            const auto digits_index = static_cast<unsigned>(abs_value);
38693|      0|            *(--buffer_ptr) = digits_to_99[digits_index][1];
38694|      0|            *(--buffer_ptr) = digits_to_99[digits_index][0];
38695|      0|        }
38696|      0|        else
38697|      0|        {
38698|      0|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
38699|      0|        }
38700|       |
38701|      0|        write_buffer_pos += n_chars;
38702|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18is_negative_numberImTnNS4_9enable_ifIXsr3std11is_unsignedIT_EE5valueEiE4typeELi0EEEbSK_:
38509|  59.4k|    {
38510|  59.4k|        return false;
38511|  59.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11remove_signEl:
38847|  40.4k|    {
38848|  40.4k|        JSON_ASSERT(x < 0);
  ------------------
  |  | 2643|  40.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38848:9): [True: 40.4k, False: 0]
  ------------------
38849|  40.4k|        return static_cast<number_magnitude_t>(-(x + 1)) + 1;
38850|  40.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl17eight_digit_bytesEm:
36226|   120k|{
36227|   120k|    const std::uint64_t abcd_efgh = abcdefgh + (((std::uint64_t{1} << 32u) - 10000u) * ((abcdefgh * (((std::uint64_t{1} << 40u) / 10000u) + 1u)) >> 40u));
36228|   120k|    const std::uint64_t ab_cd_ef_gh = abcd_efgh + (((std::uint64_t{1} << 16u) - 100u) * (((abcd_efgh * (((std::uint64_t{1} << 19u) / 100u) + 1u)) >> 19u) & 0x7F0000007Fu));
36229|   120k|    return ab_cd_ef_gh + (((std::uint64_t{1} << 8u) - 10u) * (((ab_cd_ef_gh * (((std::uint64_t{1} << 10u) / 10u) + 1u)) >> 10u) & 0x000F000F000F000Fu));
36230|   120k|}
_ZN8nlohmann16json_abi_v3_12_06detail19count_leading_zerosEm:
 8987|   131k|{
 8988|   131k|#if defined(__GNUC__) || defined(__clang__)
 8989|   131k|    return __builtin_clzll(x);
 8990|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 8991|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 8992|       |    _BitScanReverse64(&index, x);
 8993|       |    return 63 - static_cast<int>(index);
 8994|       |#elif defined(_MSC_VER) && (defined(_M_IX86) || defined(_M_ARM))
 8995|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan* takes
 8996|       |    if (_BitScanReverse(&index, static_cast<unsigned long>(x >> 32u))) // NOLINT(runtime/int)
 8997|       |    {
 8998|       |        return 31 - static_cast<int>(index);
 8999|       |    }
 9000|       |    _BitScanReverse(&index, static_cast<unsigned long>(x)); // NOLINT(runtime/int)
 9001|       |    return 63 - static_cast<int>(index);
 9002|       |#elif defined(__cpp_lib_bitops)
 9003|       |    return std::countl_zero(x);
 9004|       |#else
 9005|       |    int n = 0;
 9006|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9007|       |    {
 9008|       |        if ((x >> (64 - shift)) == 0)
 9009|       |        {
 9010|       |            n += shift;
 9011|       |            x <<= shift;
 9012|       |        }
 9013|       |    }
 9014|       |    return n;
 9015|       |#endif
 9016|   131k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl15store_msb_firstEPcm:
36236|   123k|{
36237|   123k|#if JSON_LITTLE_ENDIAN_TARGET
36238|   123k|    v = byteswap(v);
36239|   123k|    std::memcpy(p, &v, sizeof(v));
36240|       |#elif JSON_BIG_ENDIAN_TARGET
36241|       |    std::memcpy(p, &v, sizeof(v));
36242|       |#else
36243|       |    for (unsigned i = 0; i < 8; ++i)
36244|       |    {
36245|       |        p[i] = static_cast<char>(v >> (56u - (8u * i)));
36246|       |    }
36247|       |#endif
36248|   123k|}
_ZN8nlohmann16json_abi_v3_12_06detail8byteswapEm:
 9097|   136k|{
 9098|   136k|#if defined(__GNUC__) || defined(__clang__)
 9099|   136k|    return __builtin_bswap64(x);
 9100|       |#elif defined(_MSC_VER)
 9101|       |    return _byteswap_uint64(x);
 9102|       |#elif defined(__cpp_lib_byteswap)
 9103|       |    return std::byteswap(x);
 9104|       |#else
 9105|       |    x = ((x & 0x00000000FFFFFFFFull) << 32u) | ((x & 0xFFFFFFFF00000000ull) >> 32u);
 9106|       |    x = ((x & 0x0000FFFF0000FFFFull) << 16u) | ((x & 0xFFFF0000FFFF0000ull) >> 16u);
 9107|       |    x = ((x & 0x00FF00FF00FF00FFull) << 8u) | ((x & 0xFF00FF00FF00FF00ull) >> 8u);
 9108|       |    return x;
 9109|       |#endif
 9110|   136k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE22magnitude_fits_64_bitsERKmNS4_17integral_constantIbLb1EEE:
38828|  3.56k|    {
38829|  3.56k|        return true;
38830|  3.56k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm5EEEvRAT__Kc:
38134|  25.4k|    {
38135|  25.4k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
38136|       |        // the array bound counts the terminating NUL, which is not written
38137|  25.4k|        constexpr std::size_t length = N - 1;
38138|  25.4k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
38139|       |
38140|  25.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|  25.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 126, False: 25.2k]
  |  |  ------------------
  ------------------
38141|    126|        {
38142|    126|            flush();
38143|    126|        }
38144|  25.4k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38145|  25.4k|        write_buffer_pos += length;
38146|  25.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm6EEEvRAT__Kc:
38134|  93.0k|    {
38135|  93.0k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
38136|       |        // the array bound counts the terminating NUL, which is not written
38137|  93.0k|        constexpr std::size_t length = N - 1;
38138|  93.0k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
38139|       |
38140|  93.0k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|  93.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 54, False: 93.0k]
  |  |  ------------------
  ------------------
38141|     54|        {
38142|     54|            flush();
38143|     54|        }
38144|  93.0k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38145|  93.0k|        write_buffer_pos += length;
38146|  93.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_signed_valueEl:
37285|  40.4k|    {
37286|  40.4k|        dump_integer(x);
37287|  40.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerIlTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
38587|  40.4k|    {
38588|  40.4k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
38589|  40.4k|        {
38590|  40.4k|            {
38591|  40.4k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
38592|  40.4k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
38593|  40.4k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
38594|  40.4k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
38595|  40.4k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
38596|  40.4k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
38597|  40.4k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
38598|  40.4k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
38599|  40.4k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
38600|  40.4k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
38601|  40.4k|            }
38602|  40.4k|        };
38603|       |
38604|       |        // special case for "0"
38605|  40.4k|        if (x == 0)
  ------------------
  |  Branch (38605:13): [True: 0, False: 40.4k]
  ------------------
38606|      0|        {
38607|      0|            put_char('0');
38608|      0|            return;
38609|      0|        }
38610|       |
38611|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
38612|  40.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1697|  40.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 108, False: 40.3k]
  |  |  ------------------
  ------------------
38613|    108|        {
38614|    108|            flush();
38615|    108|        }
38616|  40.4k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
38617|       |
38618|  40.4k|        number_magnitude_t abs_value;
38619|       |
38620|       |        // one byte for the minus sign
38621|  40.4k|        unsigned int n_chars = 0;
38622|       |
38623|  40.4k|        if (is_negative_number(x))
  ------------------
  |  Branch (38623:13): [True: 40.4k, False: 0]
  ------------------
38624|  40.4k|        {
38625|  40.4k|            *buffer_ptr = '-';
38626|  40.4k|            abs_value = remove_sign(static_cast<number_integer_t>(x));
38627|  40.4k|            n_chars = 1;
38628|  40.4k|        }
38629|      0|        else
38630|      0|        {
38631|      0|            abs_value = static_cast<number_magnitude_t>(x);
38632|      0|        }
38633|       |
38634|       |        // up to 16 digits: eight at a time (as the digits of floats), written
38635|       |        // without leading zeros
38636|  40.4k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (38636:13): [True: 38.3k, False: 2.07k]
  ------------------
38637|  38.3k|        {
38638|  38.3k|            const auto value = static_cast<std::uint64_t>(abs_value); // fits: abs_value < 10^16
38639|  38.3k|            const std::uint64_t upper = value / 100000000u;
38640|  38.3k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (38640:70): [True: 4.33k, False: 34.0k]
  ------------------
38641|  38.3k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
38642|  38.3k|            char* const p = buffer_ptr + n_chars;
38643|  38.3k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
38644|  38.3k|            n_chars += 8 - leading;
38645|  38.3k|            if (upper != 0)
  ------------------
  |  Branch (38645:17): [True: 4.33k, False: 34.0k]
  ------------------
38646|  4.33k|            {
38647|  4.33k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
38648|  4.33k|                n_chars += 8;
38649|  4.33k|            }
38650|  38.3k|            write_buffer_pos += n_chars;
38651|  38.3k|            return;
38652|  38.3k|        }
38653|       |
38654|       |        // 17 to 20 digits: the first one to four, then twice eight
38655|  2.07k|        if (magnitude_fits_64_bits(abs_value, std::integral_constant<bool, magnitude_has_at_most_64_bits>()))
  ------------------
  |  Branch (38655:13): [True: 2.07k, False: 0]
  ------------------
38656|  2.07k|        {
38657|  2.07k|            const auto value = static_cast<std::uint64_t>(abs_value);
38658|  2.07k|            const std::uint64_t top = value / 10000000000000000u; // 1 to 1844
38659|  2.07k|            const std::uint64_t low16 = value - (top * 10000000000000000u);
38660|  2.07k|            const std::uint64_t middle = low16 / 100000000u;
38661|  2.07k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(top);
38662|  2.07k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
38663|  2.07k|            char* const p = buffer_ptr + n_chars;
38664|  2.07k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
38665|  2.07k|            dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(middle) + 0x3030303030303030u);
38666|  2.07k|            dtoa_impl::store_msb_first(p + 16 - leading, dtoa_impl::eight_digit_bytes(low16 - (middle * 100000000u)) + 0x3030303030303030u);
38667|  2.07k|            write_buffer_pos += n_chars + 24 - leading;
38668|  2.07k|            return;
38669|  2.07k|        }
38670|       |
38671|      0|        n_chars += count_digits(abs_value);
38672|       |
38673|       |        // spare 1 byte for '\0'
38674|      0|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38674:9): [True: 0, False: 0]
  ------------------
38675|       |
38676|       |        // jump to the end to generate the string from backward,
38677|       |        // so we later avoid reversing the result
38678|      0|        buffer_ptr += n_chars;
38679|       |
38680|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
38681|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
38682|      0|        while (abs_value >= 100)
  ------------------
  |  Branch (38682:16): [True: 0, False: 0]
  ------------------
38683|      0|        {
38684|      0|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
38685|      0|            abs_value /= 100;
38686|      0|            *(--buffer_ptr) = digits_to_99[digits_index][1];
38687|      0|            *(--buffer_ptr) = digits_to_99[digits_index][0];
38688|      0|        }
38689|       |
38690|      0|        if (abs_value >= 10)
  ------------------
  |  Branch (38690:13): [True: 0, False: 0]
  ------------------
38691|      0|        {
38692|      0|            const auto digits_index = static_cast<unsigned>(abs_value);
38693|      0|            *(--buffer_ptr) = digits_to_99[digits_index][1];
38694|      0|            *(--buffer_ptr) = digits_to_99[digits_index][0];
38695|      0|        }
38696|      0|        else
38697|      0|        {
38698|      0|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
38699|      0|        }
38700|       |
38701|      0|        write_buffer_pos += n_chars;
38702|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18is_negative_numberIlTnNS4_9enable_ifIXsr9is_signedIT_EE5valueEiE4typeELi0EEEbSK_:
38503|  40.4k|    {
38504|  40.4k|        return x < 0;
38505|  40.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE19dump_unsigned_valueEm:
37290|  63.3k|    {
37291|  63.3k|        dump_integer(x);
37292|  63.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16dump_float_valueEd:
37295|  48.2k|    {
37296|  48.2k|        dump_float(x);
37297|  48.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEd:
38712|  48.2k|    {
38713|       |        // NaN / inf
38714|  48.2k|        if (!std::isfinite(x))
  ------------------
  |  Branch (38714:13): [True: 3.16k, False: 45.1k]
  ------------------
38715|  3.16k|        {
38716|  3.16k|            put_literal("null");
38717|  3.16k|            return;
38718|  3.16k|        }
38719|       |
38720|       |        // If number_float_t is an IEEE-754 single or double precision number,
38721|       |        // use the Grisu2 algorithm to produce short numbers which are
38722|       |        // guaranteed to round-trip, using strtof and strtod, resp.
38723|       |        //
38724|       |        // NB: The test below works if <long double> == <double>.
38725|  45.1k|        static constexpr bool is_ieee_single_or_double
38726|  45.1k|            = (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 24 && std::numeric_limits<number_float_t>::max_exponent == 128) ||
  ------------------
  |  Branch (38726:16): [True: 0, Folded]
  |  Branch (38726:66): [Folded, False: 0]
  |  Branch (38726:119): [Folded, False: 0]
  ------------------
38727|      0|              (std::numeric_limits<number_float_t>::is_iec559 && std::numeric_limits<number_float_t>::digits == 53 && std::numeric_limits<number_float_t>::max_exponent == 1024);
  ------------------
  |  Branch (38727:16): [True: 0, Folded]
  |  Branch (38727:66): [True: 0, Folded]
  |  Branch (38727:119): [True: 0, Folded]
  ------------------
38728|       |
38729|  45.1k|        dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
38730|  45.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEdNS4_17integral_constantIbLb1EEE:
38733|  45.1k|    {
38734|       |        // directly into the write buffer: copying the text from number_buffer
38735|       |        // right after to_chars() wrote it waits until its stores are done
38736|  45.1k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1697|  45.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 174, False: 44.9k]
  |  |  ------------------
  ------------------
38737|    174|        {
38738|    174|            flush();
38739|    174|        }
38740|  45.1k|        auto* begin = write_buffer.data() + write_buffer_pos;
38741|  45.1k|        auto* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
38742|  45.1k|        write_buffer_pos += static_cast<std::size_t>(end - begin);
38743|  45.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail8to_charsIdEEPcS3_PKcT_:
36669|  45.1k|{
36670|  45.1k|    JSON_ASSERT(std::isfinite(value));
  ------------------
  |  | 2643|  45.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36670:5): [True: 45.1k, False: 0]
  ------------------
36671|       |
36672|       |    // Use signbit(value) instead of (value < 0) since signbit works for -0.
36673|  45.1k|    if (std::signbit(value))
  ------------------
  |  Branch (36673:9): [True: 16.8k, False: 28.2k]
  ------------------
36674|  16.8k|    {
36675|  16.8k|        value = -value;
36676|  16.8k|        *first++ = '-';
36677|  16.8k|    }
36678|       |
36679|  45.1k|#ifdef __GNUC__
36680|  45.1k|    JSON_HEDLEY_DIAGNOSTIC_PUSH
36681|  45.1k|    JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
36682|  45.1k|#endif
36683|  45.1k|    if (value == 0) // +-0
  ------------------
  |  Branch (36683:9): [True: 13.0k, False: 32.0k]
  ------------------
36684|  13.0k|    {
36685|  13.0k|        *first++ = '0';
36686|       |        // Make it look like a floating-point number (#362, #378)
36687|  13.0k|        *first++ = '.';
36688|  13.0k|        *first++ = '0';
36689|  13.0k|        return first;
36690|  13.0k|    }
36691|  32.0k|#ifdef __GNUC__
36692|  32.0k|    JSON_HEDLEY_DIAGNOSTIC_POP
36693|  32.0k|#endif
36694|       |
36695|  32.0k|    return dtoa_impl::write_positive(first, last, value);
36696|  45.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_:
36649|  32.0k|{
36650|  32.0k|    return write_positive(first, last, value, is_binary64<FloatType> {});
36651|  32.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_NSt3__117integral_constantIbLb1EEE:
36631|  32.0k|{
36632|  32.0k|    return write_positive_zmij(first, last, value);
36633|  32.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl19write_positive_zmijIdEEPcS4_PKcT_:
36609|  32.0k|{
36610|  32.0k|    static_assert(is_binary64<FloatType>::value,
36611|  32.0k|                  "internal error: the conversion of Zmij needs IEEE 754 binary64 numbers");
36612|  32.0k|    const auto bits = bit_cast<std::uint64_t>(value);
36613|  32.0k|    const zmij::shortest_decimal d = zmij::to_shortest(bits);
36614|  32.0k|    if (JSON_HEDLEY_LIKELY(last - first >= 41))
  ------------------
  |  | 1696|  32.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 32.0k, False: 0]
  |  |  ------------------
  ------------------
36615|  32.0k|    {
36616|  32.0k|        return write_shortest(first, d);
36617|  32.0k|    }
36618|      0|    std::array<char, 64> buf; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
36619|      0|    const auto len = static_cast<std::size_t>(write_shortest(buf.data(), d) - buf.data());
36620|      0|    JSON_ASSERT(last - first >= static_cast<std::ptrdiff_t>(len));
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36620:5): [True: 0, False: 0]
  ------------------
36621|      0|    std::memcpy(first, buf.data(), len);
36622|      0|    return first + len;
36623|      0|}
_ZN8nlohmann16json_abi_v3_12_06detail8bit_castImdEET_RKT0_:
 9054|  32.0k|{
 9055|  32.0k|    static_assert(sizeof(To) == sizeof(From), "bit_cast needs types of the same size");
 9056|       |#if defined(__cpp_lib_bit_cast)
 9057|       |    return std::bit_cast<To>(from);
 9058|       |#else
 9059|  32.0k|    To to {};
 9060|  32.0k|    std::memcpy(&to, &from, sizeof(To));
 9061|  32.0k|    return to;
 9062|  32.0k|#endif
 9063|  32.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11to_shortestEm:
35145|  32.0k|{
35146|  32.0k|    constexpr int extra_shift = 9;
35147|  32.0k|    const auto raw_exp = static_cast<int>((bits >> 52u) & 0x7FFu);
35148|  32.0k|    std::uint64_t bin_sig = bits & ((std::uint64_t{1} << 52u) - 1);
35149|       |    // a power of two has a narrower interval below (except the smallest normal)
35150|  32.0k|    const bool regular = bin_sig != 0 || raw_exp <= 1;
  ------------------
  |  Branch (35150:26): [True: 12.5k, False: 19.4k]
  |  Branch (35150:42): [True: 0, False: 19.4k]
  ------------------
35151|  32.0k|    const int bin_exp = (raw_exp == 0 ? 1 : raw_exp) - 1075;
  ------------------
  |  Branch (35151:26): [True: 3.57k, False: 28.4k]
  ------------------
35152|  32.0k|    if (raw_exp != 0)
  ------------------
  |  Branch (35152:9): [True: 28.4k, False: 3.57k]
  ------------------
35153|  28.4k|    {
35154|  28.4k|        bin_sig |= std::uint64_t{1} << 52u;
35155|  28.4k|    }
35156|       |    // floor(log10(2^bin_exp)), or floor(log10(3/4 * 2^bin_exp)) for the irregular case
35157|  32.0k|    const int dec_exp = ((bin_exp * 315653) - (regular ? 0 : 131072)) >> 20;
  ------------------
  |  Branch (35157:48): [True: 12.5k, False: 19.4k]
  ------------------
35158|       |    // scaled by 10^(-dec_exp - 1): the integral part is the shorter candidate
35159|  32.0k|    const int shift = bin_exp + ((-(dec_exp + 1) * 217707) >> 16) + 1 + extra_shift;
35160|  32.0k|    const uint128_parts p10 = pow10(-dec_exp - 1);
35161|  32.0k|    const uint128_parts p = umul192_hi128(p10.high, p10.low, bin_sig << static_cast<unsigned>(shift));
35162|  32.0k|    std::uint64_t integral = p.high >> static_cast<unsigned>(extra_shift);
35163|       |    // (no casts in the shifts: MSVC 2015 warns C4554 on them despite the parentheses)
35164|  32.0k|    constexpr auto fractional_low_shift = static_cast<unsigned>(extra_shift);
35165|  32.0k|    constexpr unsigned fractional_high_shift = 64u - fractional_low_shift;
35166|  32.0k|    const std::uint64_t fractional = (p.high << fractional_high_shift) | (p.low >> fractional_low_shift);
35167|  32.0k|    std::uint64_t digit = 0;
35168|  32.0k|    bool round_up = false;
35169|  32.0k|    bool round_down = false;
35170|  32.0k|    if (JSON_HEDLEY_LIKELY(regular))
  ------------------
  |  | 1696|  32.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 12.5k, False: 19.4k]
  |  |  ------------------
  ------------------
35171|  12.5k|    {
35172|  12.5k|        const std::uint64_t half_ulp = (p10.high >> static_cast<unsigned>(extra_shift + 1 - shift)) + (1 - (bin_sig & 1u));
35173|  12.5k|        round_up = fractional + half_ulp < fractional;
35174|  12.5k|        round_down = half_ulp > fractional;
35175|       |        // the last digit of the longer candidate, rounded to nearest
35176|  12.5k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) + 6);
35177|  12.5k|        if (fractional == (std::uint64_t{1} << 62u))
  ------------------
  |  Branch (35177:13): [True: 1.06k, False: 11.5k]
  ------------------
35178|  1.06k|        {
35179|  1.06k|            digit = 2; // 2.5 rounds to 2
35180|  1.06k|        }
35181|  12.5k|    }
35182|  19.4k|    else
35183|  19.4k|    {
35184|  19.4k|        const std::uint64_t half_ulp = p10.high >> static_cast<unsigned>(extra_shift + 1 - shift);
35185|  19.4k|        round_up = half_ulp > ~std::uint64_t{0} - fractional;
35186|  19.4k|        round_down = (half_ulp >> 1u) > fractional;
35187|  19.4k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) - 1);
35188|  19.4k|        const std::uint64_t lowest = umul128_add_hi64(fractional - (half_ulp >> 1u), 10, ~std::uint64_t{0});
35189|  19.4k|        digit = digit < lowest ? lowest : digit;
  ------------------
  |  Branch (35189:17): [True: 18.4k, False: 1.08k]
  ------------------
35190|  19.4k|    }
35191|  32.0k|    integral += round_up ? 1u : 0u;
  ------------------
  |  Branch (35191:17): [True: 3.11k, False: 28.9k]
  ------------------
35192|       |    // if the shorter candidate is outside the rounding interval: one digit more
35193|  32.0k|    return shortest_decimal{integral, dec_exp, static_cast<unsigned char>(digit), !round_up && !round_down};
  ------------------
  |  Branch (35193:83): [True: 28.9k, False: 3.11k]
  |  Branch (35193:96): [True: 7.87k, False: 21.0k]
  ------------------
35194|  32.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij5pow10Ei:
35099|  32.0k|{
35100|  32.0k|    if (k > pow5_128_largest_power)
  ------------------
  |  Branch (35100:9): [True: 4.22k, False: 27.8k]
  ------------------
35101|  4.22k|    {
35102|  4.22k|        return compute_pow10(k); // (only for the smallest doubles)
35103|  4.22k|    }
35104|  27.8k|    const auto i = 2 * static_cast<std::size_t>(k - pow5_128_smallest_power);
35105|  27.8k|    uint128_parts r{pow5_128()[i + 1], pow5_128()[i]};
35106|  27.8k|    const std::uint64_t adjust = static_cast<unsigned>(k + 27) < 27u ? 1u : 0u;
  ------------------
  |  Branch (35106:34): [True: 1.42k, False: 26.4k]
  ------------------
35107|  27.8k|    r.high -= r.low < adjust ? 1u : 0u;
  ------------------
  |  Branch (35107:15): [True: 0, False: 27.8k]
  ------------------
35108|  27.8k|    r.low -= adjust;
35109|  27.8k|    return r;
35110|  32.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13compute_pow10Ei:
35069|  4.22k|{
35070|  4.22k|    const auto i = static_cast<unsigned>(k + 307);
35071|  4.22k|    const std::uint64_t m = pow10_minor()[(i + 24) % 28];
35072|  4.22k|    const std::size_t j = 2 * static_cast<std::size_t>((i + 24) / 28);
35073|  4.22k|    const std::uint64_t h_hi = pow10_major()[j];
35074|  4.22k|    const std::uint64_t h_lo = pow10_major()[j + 1];
35075|  4.22k|    const std::uint64_t h1 = full_multiplication(h_lo, m).high;
35076|  4.22k|    const std::uint64_t c0 = h_lo * m;
35077|  4.22k|    const std::uint64_t c1 = h1 + (h_hi * m);
35078|  4.22k|    const std::uint64_t c2 = (c1 < h1 ? 1u : 0u) + full_multiplication(h_hi, m).high;
  ------------------
  |  Branch (35078:31): [True: 12, False: 4.21k]
  ------------------
35079|  4.22k|    uint128_parts r{};
35080|  4.22k|    if ((c2 >> 63u) != 0)
  ------------------
  |  Branch (35080:9): [True: 600, False: 3.62k]
  ------------------
35081|    600|    {
35082|    600|        r.high = c2;
35083|    600|        r.low = c1;
35084|    600|    }
35085|  3.62k|    else
35086|  3.62k|    {
35087|  3.62k|        r.high = (c2 << 1u) | (c1 >> 63u);
35088|  3.62k|        r.low = (c1 << 1u) | (c0 >> 63u);
35089|  3.62k|    }
35090|  4.22k|    r.low -= (pow10_fixups()[i >> 5u] >> (i & 31u)) & 1u;
35091|  4.22k|    return r;
35092|  4.22k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_minorEv:
35017|  4.22k|{
35018|  4.22k|    static const std::array<std::uint64_t, 28> table =
35019|  4.22k|    {
35020|  4.22k|        {
35021|  4.22k|            0x8000000000000000u, 0xa000000000000000u, 0xc800000000000000u, 0xfa00000000000000u, 0x9c40000000000000u,
35022|  4.22k|            0xc350000000000000u, 0xf424000000000000u, 0x9896800000000000u, 0xbebc200000000000u, 0xee6b280000000000u,
35023|  4.22k|            0x9502f90000000000u, 0xba43b74000000000u, 0xe8d4a51000000000u, 0x9184e72a00000000u, 0xb5e620f480000000u,
35024|  4.22k|            0xe35fa931a0000000u, 0x8e1bc9bf04000000u, 0xb1a2bc2ec5000000u, 0xde0b6b3a76400000u, 0x8ac7230489e80000u,
35025|  4.22k|            0xad78ebc5ac620000u, 0xd8d726b7177a8000u, 0x878678326eac9000u, 0xa968163f0a57b400u, 0xd3c21bcecceda100u,
35026|  4.22k|            0x84595161401484a0u, 0xa56fa5b99019a5c8u, 0xcecb8f27f4200f3au
35027|  4.22k|        }
35028|  4.22k|    };
35029|  4.22k|    return table;
35030|  4.22k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_majorEv:
35034|  8.44k|{
35035|  8.44k|    static const std::array<std::uint64_t, 50> table =
35036|  8.44k|    {
35037|  8.44k|        {
35038|  8.44k|            0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3eu, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44ddau, 0xb1442798f49ffb4au, 0x99cd11cfdf41779du,
35039|  8.44k|            0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u, 0xb4bca50b065abe63u, 0x0fed077a756b53aau, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d543u,
35040|  8.44k|            0xb84687c269ef3bfbu, 0x3d5d514f40eea742u, 0xba121a4650e4ddebu, 0x92f34d62616ce413u, 0xbbe226efb628afeau, 0x890489f70a55368cu,
35041|  8.44k|            0xbdb6b8e905cb600fu, 0x5400e987bbc1c921u, 0xbf8fdb78849a5f96u, 0xde98520472bdd034u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
35042|  8.44k|            0xc350000000000000u, 0x0000000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef6u,
35043|  8.44k|            0xc913936dd571c84cu, 0x03bc3a19cd1e38eau, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc6u, 0xcd036837130890a1u, 0x36dba887c37a8c10u,
35044|  8.44k|            0xcf02b2c21207ef2eu, 0x94f967e45e03f4bcu, 0xd106f86e69d785c7u, 0xe13336d701beba52u, 0xd31045a8341ca07cu, 0x1ede48111209a051u,
35045|  8.44k|            0xd51ea6fa85785631u, 0x552a74227f3ea566u, 0xd732290fbacaf133u, 0xa97c177947ad4096u, 0xd94ad8b1c7380874u, 0x18375281ae7822bdu,
35046|  8.44k|            0xdb68c2ca82ed2a05u, 0xa67398db9f6820e1u
35047|  8.44k|        }
35048|  8.44k|    };
35049|  8.44k|    return table;
35050|  8.44k|}
_ZN8nlohmann16json_abi_v3_12_06detail19full_multiplicationEmm:
 9120|   124k|{
 9121|   124k|#if defined(__SIZEOF_INT128__)
 9122|   124k|    __extension__ using uint128 = unsigned __int128;
 9123|   124k|    const uint128 r = static_cast<uint128>(a) * b;
 9124|   124k|    return {static_cast<std::uint64_t>(r), static_cast<std::uint64_t>(r >> 64u)};
 9125|       |#elif defined(_MSC_VER) && defined(_M_X64)
 9126|       |    std::uint64_t high = 0;
 9127|       |    const std::uint64_t low = _umul128(a, b, &high);
 9128|       |    return {low, high};
 9129|       |#elif defined(_MSC_VER) && defined(_M_ARM64)
 9130|       |    return {a * b, __umulh(a, b)};
 9131|       |#else
 9132|       |    const std::uint64_t a_lo = a & 0xFFFFFFFFu;
 9133|       |    const std::uint64_t a_hi = a >> 32u;
 9134|       |    const std::uint64_t b_lo = b & 0xFFFFFFFFu;
 9135|       |    const std::uint64_t b_hi = b >> 32u;
 9136|       |    const std::uint64_t lo_lo = a_lo * b_lo;
 9137|       |    const std::uint64_t hi_lo = a_hi * b_lo;
 9138|       |    const std::uint64_t lo_hi = a_lo * b_hi;
 9139|       |    const std::uint64_t hi_hi = a_hi * b_hi;
 9140|       |    const std::uint64_t cross = (lo_lo >> 32u) + (hi_lo & 0xFFFFFFFFu) + lo_hi;
 9141|       |    return {(cross << 32u) | (lo_lo & 0xFFFFFFFFu), (hi_lo >> 32u) + (cross >> 32u) + hi_hi};
 9142|       |#endif
 9143|   124k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij12pow10_fixupsEv:
35054|  4.22k|{
35055|  4.22k|    static const std::array<std::uint32_t, 21> table =
35056|  4.22k|    {
35057|  4.22k|        {
35058|  4.22k|            0x8d8fc810u, 0x06100293u, 0x19000000u, 0x00100000u, 0x00000908u, 0x00000000u, 0x04e00300u, 0x3807e0b2u, 0x3d83d793u, 0x0006f5ccu,
35059|  4.22k|            0x00000000u, 0xffff0000u, 0x8076337du, 0x4ff45ba0u, 0x09405033u, 0x034376d9u, 0x09000000u, 0x4e100501u, 0x076d14dcu, 0xf964f45eu,
35060|  4.22k|            0x0000003du
35061|  4.22k|        }
35062|  4.22k|    };
35063|  4.22k|    return table;
35064|  4.22k|}
_ZN8nlohmann16json_abi_v3_12_06detail8pow5_128Ev:
10938|  55.6k|{
10939|  55.6k|    static const std::array<std::uint64_t, 1302> table =
10940|  55.6k|    {
10941|  55.6k|        {
10942|  55.6k|            0xeef453d6923bd65au, 0x113faa2906a13b3fu, 0x9558b4661b6565f8u, 0x4ac7ca59a424c507u,
10943|  55.6k|            0xbaaee17fa23ebf76u, 0x5d79bcf00d2df649u, 0xe95a99df8ace6f53u, 0xf4d82c2c107973dcu,
10944|  55.6k|            0x91d8a02bb6c10594u, 0x79071b9b8a4be869u, 0xb64ec836a47146f9u, 0x9748e2826cdee284u,
10945|  55.6k|            0xe3e27a444d8d98b7u, 0xfd1b1b2308169b25u, 0x8e6d8c6ab0787f72u, 0xfe30f0f5e50e20f7u,
10946|  55.6k|            0xb208ef855c969f4fu, 0xbdbd2d335e51a935u, 0xde8b2b66b3bc4723u, 0xad2c788035e61382u,
10947|  55.6k|            0x8b16fb203055ac76u, 0x4c3bcb5021afcc31u, 0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3du,
10948|  55.6k|            0xd953e8624b85dd78u, 0xd71d6dad34a2af0du, 0x87d4713d6f33aa6bu, 0x8672648c40e5ad68u,
10949|  55.6k|            0xa9c98d8ccb009506u, 0x680efdaf511f18c2u, 0xd43bf0effdc0ba48u, 0x0212bd1b2566def2u,
10950|  55.6k|            0x84a57695fe98746du, 0x014bb630f7604b57u, 0xa5ced43b7e3e9188u, 0x419ea3bd35385e2du,
10951|  55.6k|            0xcf42894a5dce35eau, 0x52064cac828675b9u, 0x818995ce7aa0e1b2u, 0x7343efebd1940993u,
10952|  55.6k|            0xa1ebfb4219491a1fu, 0x1014ebe6c5f90bf8u, 0xca66fa129f9b60a6u, 0xd41a26e077774ef6u,
10953|  55.6k|            0xfd00b897478238d0u, 0x8920b098955522b4u, 0x9e20735e8cb16382u, 0x55b46e5f5d5535b0u,
10954|  55.6k|            0xc5a890362fddbc62u, 0xeb2189f734aa831du, 0xf712b443bbd52b7bu, 0xa5e9ec7501d523e4u,
10955|  55.6k|            0x9a6bb0aa55653b2du, 0x47b233c92125366eu, 0xc1069cd4eabe89f8u, 0x999ec0bb696e840au,
10956|  55.6k|            0xf148440a256e2c76u, 0xc00670ea43ca250du, 0x96cd2a865764dbcau, 0x380406926a5e5728u,
10957|  55.6k|            0xbc807527ed3e12bcu, 0xc605083704f5ecf2u, 0xeba09271e88d976bu, 0xf7864a44c633682eu,
10958|  55.6k|            0x93445b8731587ea3u, 0x7ab3ee6afbe0211du, 0xb8157268fdae9e4cu, 0x5960ea05bad82964u,
10959|  55.6k|            0xe61acf033d1a45dfu, 0x6fb92487298e33bdu, 0x8fd0c16206306babu, 0xa5d3b6d479f8e056u,
10960|  55.6k|            0xb3c4f1ba87bc8696u, 0x8f48a4899877186cu, 0xe0b62e2929aba83cu, 0x331acdabfe94de87u,
10961|  55.6k|            0x8c71dcd9ba0b4925u, 0x9ff0c08b7f1d0b14u, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44dd9u,
10962|  55.6k|            0xdb71e91432b1a24au, 0xc9e82cd9f69d6150u, 0x892731ac9faf056eu, 0xbe311c083a225cd2u,
10963|  55.6k|            0xab70fe17c79ac6cau, 0x6dbd630a48aaf406u, 0xd64d3d9db981787du, 0x092cbbccdad5b108u,
10964|  55.6k|            0x85f0468293f0eb4eu, 0x25bbf56008c58ea5u, 0xa76c582338ed2621u, 0xaf2af2b80af6f24eu,
10965|  55.6k|            0xd1476e2c07286faau, 0x1af5af660db4aee1u, 0x82cca4db847945cau, 0x50d98d9fc890ed4du,
10966|  55.6k|            0xa37fce126597973cu, 0xe50ff107bab528a0u, 0xcc5fc196fefd7d0cu, 0x1e53ed49a96272c8u,
10967|  55.6k|            0xff77b1fcbebcdc4fu, 0x25e8e89c13bb0f7au, 0x9faacf3df73609b1u, 0x77b191618c54e9acu,
10968|  55.6k|            0xc795830d75038c1du, 0xd59df5b9ef6a2417u, 0xf97ae3d0d2446f25u, 0x4b0573286b44ad1du,
10969|  55.6k|            0x9becce62836ac577u, 0x4ee367f9430aec32u, 0xc2e801fb244576d5u, 0x229c41f793cda73fu,
10970|  55.6k|            0xf3a20279ed56d48au, 0x6b43527578c1110fu, 0x9845418c345644d6u, 0x830a13896b78aaa9u,
10971|  55.6k|            0xbe5691ef416bd60cu, 0x23cc986bc656d553u, 0xedec366b11c6cb8fu, 0x2cbfbe86b7ec8aa8u,
10972|  55.6k|            0x94b3a202eb1c3f39u, 0x7bf7d71432f3d6a9u, 0xb9e08a83a5e34f07u, 0xdaf5ccd93fb0cc53u,
10973|  55.6k|            0xe858ad248f5c22c9u, 0xd1b3400f8f9cff68u, 0x91376c36d99995beu, 0x23100809b9c21fa1u,
10974|  55.6k|            0xb58547448ffffb2du, 0xabd40a0c2832a78au, 0xe2e69915b3fff9f9u, 0x16c90c8f323f516cu,
10975|  55.6k|            0x8dd01fad907ffc3bu, 0xae3da7d97f6792e3u, 0xb1442798f49ffb4au, 0x99cd11cfdf41779cu,
10976|  55.6k|            0xdd95317f31c7fa1du, 0x40405643d711d583u, 0x8a7d3eef7f1cfc52u, 0x482835ea666b2572u,
10977|  55.6k|            0xad1c8eab5ee43b66u, 0xda3243650005eecfu, 0xd863b256369d4a40u, 0x90bed43e40076a82u,
10978|  55.6k|            0x873e4f75e2224e68u, 0x5a7744a6e804a291u, 0xa90de3535aaae202u, 0x711515d0a205cb36u,
10979|  55.6k|            0xd3515c2831559a83u, 0x0d5a5b44ca873e03u, 0x8412d9991ed58091u, 0xe858790afe9486c2u,
10980|  55.6k|            0xa5178fff668ae0b6u, 0x626e974dbe39a872u, 0xce5d73ff402d98e3u, 0xfb0a3d212dc8128fu,
10981|  55.6k|            0x80fa687f881c7f8eu, 0x7ce66634bc9d0b99u, 0xa139029f6a239f72u, 0x1c1fffc1ebc44e80u,
10982|  55.6k|            0xc987434744ac874eu, 0xa327ffb266b56220u, 0xfbe9141915d7a922u, 0x4bf1ff9f0062baa8u,
10983|  55.6k|            0x9d71ac8fada6c9b5u, 0x6f773fc3603db4a9u, 0xc4ce17b399107c22u, 0xcb550fb4384d21d3u,
10984|  55.6k|            0xf6019da07f549b2bu, 0x7e2a53a146606a48u, 0x99c102844f94e0fbu, 0x2eda7444cbfc426du,
10985|  55.6k|            0xc0314325637a1939u, 0xfa911155fefb5308u, 0xf03d93eebc589f88u, 0x793555ab7eba27cau,
10986|  55.6k|            0x96267c7535b763b5u, 0x4bc1558b2f3458deu, 0xbbb01b9283253ca2u, 0x9eb1aaedfb016f16u,
10987|  55.6k|            0xea9c227723ee8bcbu, 0x465e15a979c1cadcu, 0x92a1958a7675175fu, 0x0bfacd89ec191ec9u,
10988|  55.6k|            0xb749faed14125d36u, 0xcef980ec671f667bu, 0xe51c79a85916f484u, 0x82b7e12780e7401au,
10989|  55.6k|            0x8f31cc0937ae58d2u, 0xd1b2ecb8b0908810u, 0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u,
10990|  55.6k|            0xdfbdcece67006ac9u, 0x67a791e093e1d49au, 0x8bd6a141006042bdu, 0xe0c8bb2c5c6d24e0u,
10991|  55.6k|            0xaecc49914078536du, 0x58fae9f773886e18u, 0xda7f5bf590966848u, 0xaf39a475506a899eu,
10992|  55.6k|            0x888f99797a5e012du, 0x6d8406c952429603u, 0xaab37fd7d8f58178u, 0xc8e5087ba6d33b83u,
10993|  55.6k|            0xd5605fcdcf32e1d6u, 0xfb1e4a9a90880a64u, 0x855c3be0a17fcd26u, 0x5cf2eea09a55067fu,
10994|  55.6k|            0xa6b34ad8c9dfc06fu, 0xf42faa48c0ea481eu, 0xd0601d8efc57b08bu, 0xf13b94daf124da26u,
10995|  55.6k|            0x823c12795db6ce57u, 0x76c53d08d6b70858u, 0xa2cb1717b52481edu, 0x54768c4b0c64ca6eu,
10996|  55.6k|            0xcb7ddcdda26da268u, 0xa9942f5dcf7dfd09u, 0xfe5d54150b090b02u, 0xd3f93b35435d7c4cu,
10997|  55.6k|            0x9efa548d26e5a6e1u, 0xc47bc5014a1a6dafu, 0xc6b8e9b0709f109au, 0x359ab6419ca1091bu,
10998|  55.6k|            0xf867241c8cc6d4c0u, 0xc30163d203c94b62u, 0x9b407691d7fc44f8u, 0x79e0de63425dcf1du,
10999|  55.6k|            0xc21094364dfb5636u, 0x985915fc12f542e4u, 0xf294b943e17a2bc4u, 0x3e6f5b7b17b2939du,
11000|  55.6k|            0x979cf3ca6cec5b5au, 0xa705992ceecf9c42u, 0xbd8430bd08277231u, 0x50c6ff782a838353u,
11001|  55.6k|            0xece53cec4a314ebdu, 0xa4f8bf5635246428u, 0x940f4613ae5ed136u, 0x871b7795e136be99u,
11002|  55.6k|            0xb913179899f68584u, 0x28e2557b59846e3fu, 0xe757dd7ec07426e5u, 0x331aeada2fe589cfu,
11003|  55.6k|            0x9096ea6f3848984fu, 0x3ff0d2c85def7621u, 0xb4bca50b065abe63u, 0x0fed077a756b53a9u,
11004|  55.6k|            0xe1ebce4dc7f16dfbu, 0xd3e8495912c62894u, 0x8d3360f09cf6e4bdu, 0x64712dd7abbbd95cu,
11005|  55.6k|            0xb080392cc4349decu, 0xbd8d794d96aacfb3u, 0xdca04777f541c567u, 0xecf0d7a0fc5583a0u,
11006|  55.6k|            0x89e42caaf9491b60u, 0xf41686c49db57244u, 0xac5d37d5b79b6239u, 0x311c2875c522ced5u,
11007|  55.6k|            0xd77485cb25823ac7u, 0x7d633293366b828bu, 0x86a8d39ef77164bcu, 0xae5dff9c02033197u,
11008|  55.6k|            0xa8530886b54dbdebu, 0xd9f57f830283fdfcu, 0xd267caa862a12d66u, 0xd072df63c324fd7bu,
11009|  55.6k|            0x8380dea93da4bc60u, 0x4247cb9e59f71e6du, 0xa46116538d0deb78u, 0x52d9be85f074e608u,
11010|  55.6k|            0xcd795be870516656u, 0x67902e276c921f8bu, 0x806bd9714632dff6u, 0x00ba1cd8a3db53b6u,
11011|  55.6k|            0xa086cfcd97bf97f3u, 0x80e8a40eccd228a4u, 0xc8a883c0fdaf7df0u, 0x6122cd128006b2cdu,
11012|  55.6k|            0xfad2a4b13d1b5d6cu, 0x796b805720085f81u, 0x9cc3a6eec6311a63u, 0xcbe3303674053bb0u,
11013|  55.6k|            0xc3f490aa77bd60fcu, 0xbedbfc4411068a9cu, 0xf4f1b4d515acb93bu, 0xee92fb5515482d44u,
11014|  55.6k|            0x991711052d8bf3c5u, 0x751bdd152d4d1c4au, 0xbf5cd54678eef0b6u, 0xd262d45a78a0635du,
11015|  55.6k|            0xef340a98172aace4u, 0x86fb897116c87c34u, 0x9580869f0e7aac0eu, 0xd45d35e6ae3d4da0u,
11016|  55.6k|            0xbae0a846d2195712u, 0x8974836059cca109u, 0xe998d258869facd7u, 0x2bd1a438703fc94bu,
11017|  55.6k|            0x91ff83775423cc06u, 0x7b6306a34627ddcfu, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d542u,
11018|  55.6k|            0xe41f3d6a7377eecau, 0x20caba5f1d9e4a93u, 0x8e938662882af53eu, 0x547eb47b7282ee9cu,
11019|  55.6k|            0xb23867fb2a35b28du, 0xe99e619a4f23aa43u, 0xdec681f9f4c31f31u, 0x6405fa00e2ec94d4u,
11020|  55.6k|            0x8b3c113c38f9f37eu, 0xde83bc408dd3dd04u, 0xae0b158b4738705eu, 0x9624ab50b148d445u,
11021|  55.6k|            0xd98ddaee19068c76u, 0x3badd624dd9b0957u, 0x87f8a8d4cfa417c9u, 0xe54ca5d70a80e5d6u,
11022|  55.6k|            0xa9f6d30a038d1dbcu, 0x5e9fcf4ccd211f4cu, 0xd47487cc8470652bu, 0x7647c3200069671fu,
11023|  55.6k|            0x84c8d4dfd2c63f3bu, 0x29ecd9f40041e073u, 0xa5fb0a17c777cf09u, 0xf468107100525890u,
11024|  55.6k|            0xcf79cc9db955c2ccu, 0x7182148d4066eeb4u, 0x81ac1fe293d599bfu, 0xc6f14cd848405530u,
11025|  55.6k|            0xa21727db38cb002fu, 0xb8ada00e5a506a7cu, 0xca9cf1d206fdc03bu, 0xa6d90811f0e4851cu,
11026|  55.6k|            0xfd442e4688bd304au, 0x908f4a166d1da663u, 0x9e4a9cec15763e2eu, 0x9a598e4e043287feu,
11027|  55.6k|            0xc5dd44271ad3cdbau, 0x40eff1e1853f29fdu, 0xf7549530e188c128u, 0xd12bee59e68ef47cu,
11028|  55.6k|            0x9a94dd3e8cf578b9u, 0x82bb74f8301958ceu, 0xc13a148e3032d6e7u, 0xe36a52363c1faf01u,
11029|  55.6k|            0xf18899b1bc3f8ca1u, 0xdc44e6c3cb279ac1u, 0x96f5600f15a7b7e5u, 0x29ab103a5ef8c0b9u,
11030|  55.6k|            0xbcb2b812db11a5deu, 0x7415d448f6b6f0e7u, 0xebdf661791d60f56u, 0x111b495b3464ad21u,
11031|  55.6k|            0x936b9fcebb25c995u, 0xcab10dd900beec34u, 0xb84687c269ef3bfbu, 0x3d5d514f40eea742u,
11032|  55.6k|            0xe65829b3046b0afau, 0x0cb4a5a3112a5112u, 0x8ff71a0fe2c2e6dcu, 0x47f0e785eaba72abu,
11033|  55.6k|            0xb3f4e093db73a093u, 0x59ed216765690f56u, 0xe0f218b8d25088b8u, 0x306869c13ec3532cu,
11034|  55.6k|            0x8c974f7383725573u, 0x1e414218c73a13fbu, 0xafbd2350644eeacfu, 0xe5d1929ef90898fau,
11035|  55.6k|            0xdbac6c247d62a583u, 0xdf45f746b74abf39u, 0x894bc396ce5da772u, 0x6b8bba8c328eb783u,
11036|  55.6k|            0xab9eb47c81f5114fu, 0x066ea92f3f326564u, 0xd686619ba27255a2u, 0xc80a537b0efefebdu,
11037|  55.6k|            0x8613fd0145877585u, 0xbd06742ce95f5f36u, 0xa798fc4196e952e7u, 0x2c48113823b73704u,
11038|  55.6k|            0xd17f3b51fca3a7a0u, 0xf75a15862ca504c5u, 0x82ef85133de648c4u, 0x9a984d73dbe722fbu,
11039|  55.6k|            0xa3ab66580d5fdaf5u, 0xc13e60d0d2e0ebbau, 0xcc963fee10b7d1b3u, 0x318df905079926a8u,
11040|  55.6k|            0xffbbcfe994e5c61fu, 0xfdf17746497f7052u, 0x9fd561f1fd0f9bd3u, 0xfeb6ea8bedefa633u,
11041|  55.6k|            0xc7caba6e7c5382c8u, 0xfe64a52ee96b8fc0u, 0xf9bd690a1b68637bu, 0x3dfdce7aa3c673b0u,
11042|  55.6k|            0x9c1661a651213e2du, 0x06bea10ca65c084eu, 0xc31bfa0fe5698db8u, 0x486e494fcff30a62u,
11043|  55.6k|            0xf3e2f893dec3f126u, 0x5a89dba3c3efccfau, 0x986ddb5c6b3a76b7u, 0xf89629465a75e01cu,
11044|  55.6k|            0xbe89523386091465u, 0xf6bbb397f1135823u, 0xee2ba6c0678b597fu, 0x746aa07ded582e2cu,
11045|  55.6k|            0x94db483840b717efu, 0xa8c2a44eb4571cdcu, 0xba121a4650e4ddebu, 0x92f34d62616ce413u,
11046|  55.6k|            0xe896a0d7e51e1566u, 0x77b020baf9c81d17u, 0x915e2486ef32cd60u, 0x0ace1474dc1d122eu,
11047|  55.6k|            0xb5b5ada8aaff80b8u, 0x0d819992132456bau, 0xe3231912d5bf60e6u, 0x10e1fff697ed6c69u,
11048|  55.6k|            0x8df5efabc5979c8fu, 0xca8d3ffa1ef463c1u, 0xb1736b96b6fd83b3u, 0xbd308ff8a6b17cb2u,
11049|  55.6k|            0xddd0467c64bce4a0u, 0xac7cb3f6d05ddbdeu, 0x8aa22c0dbef60ee4u, 0x6bcdf07a423aa96bu,
11050|  55.6k|            0xad4ab7112eb3929du, 0x86c16c98d2c953c6u, 0xd89d64d57a607744u, 0xe871c7bf077ba8b7u,
11051|  55.6k|            0x87625f056c7c4a8bu, 0x11471cd764ad4972u, 0xa93af6c6c79b5d2du, 0xd598e40d3dd89bcfu,
11052|  55.6k|            0xd389b47879823479u, 0x4aff1d108d4ec2c3u, 0x843610cb4bf160cbu, 0xcedf722a585139bau,
11053|  55.6k|            0xa54394fe1eedb8feu, 0xc2974eb4ee658828u, 0xce947a3da6a9273eu, 0x733d226229feea32u,
11054|  55.6k|            0x811ccc668829b887u, 0x0806357d5a3f525fu, 0xa163ff802a3426a8u, 0xca07c2dcb0cf26f7u,
11055|  55.6k|            0xc9bcff6034c13052u, 0xfc89b393dd02f0b5u, 0xfc2c3f3841f17c67u, 0xbbac2078d443ace2u,
11056|  55.6k|            0x9d9ba7832936edc0u, 0xd54b944b84aa4c0du, 0xc5029163f384a931u, 0x0a9e795e65d4df11u,
11057|  55.6k|            0xf64335bcf065d37du, 0x4d4617b5ff4a16d5u, 0x99ea0196163fa42eu, 0x504bced1bf8e4e45u,
11058|  55.6k|            0xc06481fb9bcf8d39u, 0xe45ec2862f71e1d6u, 0xf07da27a82c37088u, 0x5d767327bb4e5a4cu,
11059|  55.6k|            0x964e858c91ba2655u, 0x3a6a07f8d510f86fu, 0xbbe226efb628afeau, 0x890489f70a55368bu,
11060|  55.6k|            0xeadab0aba3b2dbe5u, 0x2b45ac74ccea842eu, 0x92c8ae6b464fc96fu, 0x3b0b8bc90012929du,
11061|  55.6k|            0xb77ada0617e3bbcbu, 0x09ce6ebb40173744u, 0xe55990879ddcaabdu, 0xcc420a6a101d0515u,
11062|  55.6k|            0x8f57fa54c2a9eab6u, 0x9fa946824a12232du, 0xb32df8e9f3546564u, 0x47939822dc96abf9u,
11063|  55.6k|            0xdff9772470297ebdu, 0x59787e2b93bc56f7u, 0x8bfbea76c619ef36u, 0x57eb4edb3c55b65au,
11064|  55.6k|            0xaefae51477a06b03u, 0xede622920b6b23f1u, 0xdab99e59958885c4u, 0xe95fab368e45ecedu,
11065|  55.6k|            0x88b402f7fd75539bu, 0x11dbcb0218ebb414u, 0xaae103b5fcd2a881u, 0xd652bdc29f26a119u,
11066|  55.6k|            0xd59944a37c0752a2u, 0x4be76d3346f0495fu, 0x857fcae62d8493a5u, 0x6f70a4400c562ddbu,
11067|  55.6k|            0xa6dfbd9fb8e5b88eu, 0xcb4ccd500f6bb952u, 0xd097ad07a71f26b2u, 0x7e2000a41346a7a7u,
11068|  55.6k|            0x825ecc24c873782fu, 0x8ed400668c0c28c8u, 0xa2f67f2dfa90563bu, 0x728900802f0f32fau,
11069|  55.6k|            0xcbb41ef979346bcau, 0x4f2b40a03ad2ffb9u, 0xfea126b7d78186bcu, 0xe2f610c84987bfa8u,
11070|  55.6k|            0x9f24b832e6b0f436u, 0x0dd9ca7d2df4d7c9u, 0xc6ede63fa05d3143u, 0x91503d1c79720dbbu,
11071|  55.6k|            0xf8a95fcf88747d94u, 0x75a44c6397ce912au, 0x9b69dbe1b548ce7cu, 0xc986afbe3ee11abau,
11072|  55.6k|            0xc24452da229b021bu, 0xfbe85badce996168u, 0xf2d56790ab41c2a2u, 0xfae27299423fb9c3u,
11073|  55.6k|            0x97c560ba6b0919a5u, 0xdccd879fc967d41au, 0xbdb6b8e905cb600fu, 0x5400e987bbc1c920u,
11074|  55.6k|            0xed246723473e3813u, 0x290123e9aab23b68u, 0x9436c0760c86e30bu, 0xf9a0b6720aaf6521u,
11075|  55.6k|            0xb94470938fa89bceu, 0xf808e40e8d5b3e69u, 0xe7958cb87392c2c2u, 0xb60b1d1230b20e04u,
11076|  55.6k|            0x90bd77f3483bb9b9u, 0xb1c6f22b5e6f48c2u, 0xb4ecd5f01a4aa828u, 0x1e38aeb6360b1af3u,
11077|  55.6k|            0xe2280b6c20dd5232u, 0x25c6da63c38de1b0u, 0x8d590723948a535fu, 0x579c487e5a38ad0eu,
11078|  55.6k|            0xb0af48ec79ace837u, 0x2d835a9df0c6d851u, 0xdcdb1b2798182244u, 0xf8e431456cf88e65u,
11079|  55.6k|            0x8a08f0f8bf0f156bu, 0x1b8e9ecb641b58ffu, 0xac8b2d36eed2dac5u, 0xe272467e3d222f3fu,
11080|  55.6k|            0xd7adf884aa879177u, 0x5b0ed81dcc6abb0fu, 0x86ccbb52ea94baeau, 0x98e947129fc2b4e9u,
11081|  55.6k|            0xa87fea27a539e9a5u, 0x3f2398d747b36224u, 0xd29fe4b18e88640eu, 0x8eec7f0d19a03aadu,
11082|  55.6k|            0x83a3eeeef9153e89u, 0x1953cf68300424acu, 0xa48ceaaab75a8e2bu, 0x5fa8c3423c052dd7u,
11083|  55.6k|            0xcdb02555653131b6u, 0x3792f412cb06794du, 0x808e17555f3ebf11u, 0xe2bbd88bbee40bd0u,
11084|  55.6k|            0xa0b19d2ab70e6ed6u, 0x5b6aceaeae9d0ec4u, 0xc8de047564d20a8bu, 0xf245825a5a445275u,
11085|  55.6k|            0xfb158592be068d2eu, 0xeed6e2f0f0d56712u, 0x9ced737bb6c4183du, 0x55464dd69685606bu,
11086|  55.6k|            0xc428d05aa4751e4cu, 0xaa97e14c3c26b886u, 0xf53304714d9265dfu, 0xd53dd99f4b3066a8u,
11087|  55.6k|            0x993fe2c6d07b7fabu, 0xe546a8038efe4029u, 0xbf8fdb78849a5f96u, 0xde98520472bdd033u,
11088|  55.6k|            0xef73d256a5c0f77cu, 0x963e66858f6d4440u, 0x95a8637627989aadu, 0xdde7001379a44aa8u,
11089|  55.6k|            0xbb127c53b17ec159u, 0x5560c018580d5d52u, 0xe9d71b689dde71afu, 0xaab8f01e6e10b4a6u,
11090|  55.6k|            0x9226712162ab070du, 0xcab3961304ca70e8u, 0xb6b00d69bb55c8d1u, 0x3d607b97c5fd0d22u,
11091|  55.6k|            0xe45c10c42a2b3b05u, 0x8cb89a7db77c506au, 0x8eb98a7a9a5b04e3u, 0x77f3608e92adb242u,
11092|  55.6k|            0xb267ed1940f1c61cu, 0x55f038b237591ed3u, 0xdf01e85f912e37a3u, 0x6b6c46dec52f6688u,
11093|  55.6k|            0x8b61313bbabce2c6u, 0x2323ac4b3b3da015u, 0xae397d8aa96c1b77u, 0xabec975e0a0d081au,
11094|  55.6k|            0xd9c7dced53c72255u, 0x96e7bd358c904a21u, 0x881cea14545c7575u, 0x7e50d64177da2e54u,
11095|  55.6k|            0xaa242499697392d2u, 0xdde50bd1d5d0b9e9u, 0xd4ad2dbfc3d07787u, 0x955e4ec64b44e864u,
11096|  55.6k|            0x84ec3c97da624ab4u, 0xbd5af13bef0b113eu, 0xa6274bbdd0fadd61u, 0xecb1ad8aeacdd58eu,
11097|  55.6k|            0xcfb11ead453994bau, 0x67de18eda5814af2u, 0x81ceb32c4b43fcf4u, 0x80eacf948770ced7u,
11098|  55.6k|            0xa2425ff75e14fc31u, 0xa1258379a94d028du, 0xcad2f7f5359a3b3eu, 0x096ee45813a04330u,
11099|  55.6k|            0xfd87b5f28300ca0du, 0x8bca9d6e188853fcu, 0x9e74d1b791e07e48u, 0x775ea264cf55347eu,
11100|  55.6k|            0xc612062576589ddau, 0x95364afe032a819eu, 0xf79687aed3eec551u, 0x3a83ddbd83f52205u,
11101|  55.6k|            0x9abe14cd44753b52u, 0xc4926a9672793543u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
11102|  55.6k|            0xf1c90080baf72cb1u, 0x5324c68b12dd6339u, 0x971da05074da7beeu, 0xd3f6fc16ebca5e04u,
11103|  55.6k|            0xbce5086492111aeau, 0x88f4bb1ca6bcf585u, 0xec1e4a7db69561a5u, 0x2b31e9e3d06c32e6u,
11104|  55.6k|            0x9392ee8e921d5d07u, 0x3aff322e62439fd0u, 0xb877aa3236a4b449u, 0x09befeb9fad487c3u,
11105|  55.6k|            0xe69594bec44de15bu, 0x4c2ebe687989a9b4u, 0x901d7cf73ab0acd9u, 0x0f9d37014bf60a11u,
11106|  55.6k|            0xb424dc35095cd80fu, 0x538484c19ef38c95u, 0xe12e13424bb40e13u, 0x2865a5f206b06fbau,
11107|  55.6k|            0x8cbccc096f5088cbu, 0xf93f87b7442e45d4u, 0xafebff0bcb24aafeu, 0xf78f69a51539d749u,
11108|  55.6k|            0xdbe6fecebdedd5beu, 0xb573440e5a884d1cu, 0x89705f4136b4a597u, 0x31680a88f8953031u,
11109|  55.6k|            0xabcc77118461cefcu, 0xfdc20d2b36ba7c3eu, 0xd6bf94d5e57a42bcu, 0x3d32907604691b4du,
11110|  55.6k|            0x8637bd05af6c69b5u, 0xa63f9a49c2c1b110u, 0xa7c5ac471b478423u, 0x0fcf80dc33721d54u,
11111|  55.6k|            0xd1b71758e219652bu, 0xd3c36113404ea4a9u, 0x83126e978d4fdf3bu, 0x645a1cac083126eau,
11112|  55.6k|            0xa3d70a3d70a3d70au, 0x3d70a3d70a3d70a4u, 0xccccccccccccccccu, 0xcccccccccccccccdu,
11113|  55.6k|            0x8000000000000000u, 0x0000000000000000u, 0xa000000000000000u, 0x0000000000000000u,
11114|  55.6k|            0xc800000000000000u, 0x0000000000000000u, 0xfa00000000000000u, 0x0000000000000000u,
11115|  55.6k|            0x9c40000000000000u, 0x0000000000000000u, 0xc350000000000000u, 0x0000000000000000u,
11116|  55.6k|            0xf424000000000000u, 0x0000000000000000u, 0x9896800000000000u, 0x0000000000000000u,
11117|  55.6k|            0xbebc200000000000u, 0x0000000000000000u, 0xee6b280000000000u, 0x0000000000000000u,
11118|  55.6k|            0x9502f90000000000u, 0x0000000000000000u, 0xba43b74000000000u, 0x0000000000000000u,
11119|  55.6k|            0xe8d4a51000000000u, 0x0000000000000000u, 0x9184e72a00000000u, 0x0000000000000000u,
11120|  55.6k|            0xb5e620f480000000u, 0x0000000000000000u, 0xe35fa931a0000000u, 0x0000000000000000u,
11121|  55.6k|            0x8e1bc9bf04000000u, 0x0000000000000000u, 0xb1a2bc2ec5000000u, 0x0000000000000000u,
11122|  55.6k|            0xde0b6b3a76400000u, 0x0000000000000000u, 0x8ac7230489e80000u, 0x0000000000000000u,
11123|  55.6k|            0xad78ebc5ac620000u, 0x0000000000000000u, 0xd8d726b7177a8000u, 0x0000000000000000u,
11124|  55.6k|            0x878678326eac9000u, 0x0000000000000000u, 0xa968163f0a57b400u, 0x0000000000000000u,
11125|  55.6k|            0xd3c21bcecceda100u, 0x0000000000000000u, 0x84595161401484a0u, 0x0000000000000000u,
11126|  55.6k|            0xa56fa5b99019a5c8u, 0x0000000000000000u, 0xcecb8f27f4200f3au, 0x0000000000000000u,
11127|  55.6k|            0x813f3978f8940984u, 0x4000000000000000u, 0xa18f07d736b90be5u, 0x5000000000000000u,
11128|  55.6k|            0xc9f2c9cd04674edeu, 0xa400000000000000u, 0xfc6f7c4045812296u, 0x4d00000000000000u,
11129|  55.6k|            0x9dc5ada82b70b59du, 0xf020000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u,
11130|  55.6k|            0xf684df56c3e01bc6u, 0xc732000000000000u, 0x9a130b963a6c115cu, 0x3c7f400000000000u,
11131|  55.6k|            0xc097ce7bc90715b3u, 0x4b9f100000000000u, 0xf0bdc21abb48db20u, 0x1e86d40000000000u,
11132|  55.6k|            0x96769950b50d88f4u, 0x1314448000000000u, 0xbc143fa4e250eb31u, 0x17d955a000000000u,
11133|  55.6k|            0xeb194f8e1ae525fdu, 0x5dcfab0800000000u, 0x92efd1b8d0cf37beu, 0x5aa1cae500000000u,
11134|  55.6k|            0xb7abc627050305adu, 0xf14a3d9e40000000u, 0xe596b7b0c643c719u, 0x6d9ccd05d0000000u,
11135|  55.6k|            0x8f7e32ce7bea5c6fu, 0xe4820023a2000000u, 0xb35dbf821ae4f38bu, 0xdda2802c8a800000u,
11136|  55.6k|            0xe0352f62a19e306eu, 0xd50b2037ad200000u, 0x8c213d9da502de45u, 0x4526f422cc340000u,
11137|  55.6k|            0xaf298d050e4395d6u, 0x9670b12b7f410000u, 0xdaf3f04651d47b4cu, 0x3c0cdd765f114000u,
11138|  55.6k|            0x88d8762bf324cd0fu, 0xa5880a69fb6ac800u, 0xab0e93b6efee0053u, 0x8eea0d047a457a00u,
11139|  55.6k|            0xd5d238a4abe98068u, 0x72a4904598d6d880u, 0x85a36366eb71f041u, 0x47a6da2b7f864750u,
11140|  55.6k|            0xa70c3c40a64e6c51u, 0x999090b65f67d924u, 0xd0cf4b50cfe20765u, 0xfff4b4e3f741cf6du,
11141|  55.6k|            0x82818f1281ed449fu, 0xbff8f10e7a8921a4u, 0xa321f2d7226895c7u, 0xaff72d52192b6a0du,
11142|  55.6k|            0xcbea6f8ceb02bb39u, 0x9bf4f8a69f764490u, 0xfee50b7025c36a08u, 0x02f236d04753d5b4u,
11143|  55.6k|            0x9f4f2726179a2245u, 0x01d762422c946590u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef5u,
11144|  55.6k|            0xf8ebad2b84e0d58bu, 0xd2e0898765a7deb2u, 0x9b934c3b330c8577u, 0x63cc55f49f88eb2fu,
11145|  55.6k|            0xc2781f49ffcfa6d5u, 0x3cbf6b71c76b25fbu, 0xf316271c7fc3908au, 0x8bef464e3945ef7au,
11146|  55.6k|            0x97edd871cfda3a56u, 0x97758bf0e3cbb5acu, 0xbde94e8e43d0c8ecu, 0x3d52eeed1cbea317u,
11147|  55.6k|            0xed63a231d4c4fb27u, 0x4ca7aaa863ee4bddu, 0x945e455f24fb1cf8u, 0x8fe8caa93e74ef6au,
11148|  55.6k|            0xb975d6b6ee39e436u, 0xb3e2fd538e122b44u, 0xe7d34c64a9c85d44u, 0x60dbbca87196b616u,
11149|  55.6k|            0x90e40fbeea1d3a4au, 0xbc8955e946fe31cdu, 0xb51d13aea4a488ddu, 0x6babab6398bdbe41u,
11150|  55.6k|            0xe264589a4dcdab14u, 0xc696963c7eed2dd1u, 0x8d7eb76070a08aecu, 0xfc1e1de5cf543ca2u,
11151|  55.6k|            0xb0de65388cc8ada8u, 0x3b25a55f43294bcbu, 0xdd15fe86affad912u, 0x49ef0eb713f39ebeu,
11152|  55.6k|            0x8a2dbf142dfcc7abu, 0x6e3569326c784337u, 0xacb92ed9397bf996u, 0x49c2c37f07965404u,
11153|  55.6k|            0xd7e77a8f87daf7fbu, 0xdc33745ec97be906u, 0x86f0ac99b4e8dafdu, 0x69a028bb3ded71a3u,
11154|  55.6k|            0xa8acd7c0222311bcu, 0xc40832ea0d68ce0cu, 0xd2d80db02aabd62bu, 0xf50a3fa490c30190u,
11155|  55.6k|            0x83c7088e1aab65dbu, 0x792667c6da79e0fau, 0xa4b8cab1a1563f52u, 0x577001b891185938u,
11156|  55.6k|            0xcde6fd5e09abcf26u, 0xed4c0226b55e6f86u, 0x80b05e5ac60b6178u, 0x544f8158315b05b4u,
11157|  55.6k|            0xa0dc75f1778e39d6u, 0x696361ae3db1c721u, 0xc913936dd571c84cu, 0x03bc3a19cd1e38e9u,
11158|  55.6k|            0xfb5878494ace3a5fu, 0x04ab48a04065c723u, 0x9d174b2dcec0e47bu, 0x62eb0d64283f9c76u,
11159|  55.6k|            0xc45d1df942711d9au, 0x3ba5d0bd324f8394u, 0xf5746577930d6500u, 0xca8f44ec7ee36479u,
11160|  55.6k|            0x9968bf6abbe85f20u, 0x7e998b13cf4e1ecbu, 0xbfc2ef456ae276e8u, 0x9e3fedd8c321a67eu,
11161|  55.6k|            0xefb3ab16c59b14a2u, 0xc5cfe94ef3ea101eu, 0x95d04aee3b80ece5u, 0xbba1f1d158724a12u,
11162|  55.6k|            0xbb445da9ca61281fu, 0x2a8a6e45ae8edc97u, 0xea1575143cf97226u, 0xf52d09d71a3293bdu,
11163|  55.6k|            0x924d692ca61be758u, 0x593c2626705f9c56u, 0xb6e0c377cfa2e12eu, 0x6f8b2fb00c77836cu,
11164|  55.6k|            0xe498f455c38b997au, 0x0b6dfb9c0f956447u, 0x8edf98b59a373fecu, 0x4724bd4189bd5eacu,
11165|  55.6k|            0xb2977ee300c50fe7u, 0x58edec91ec2cb657u, 0xdf3d5e9bc0f653e1u, 0x2f2967b66737e3edu,
11166|  55.6k|            0x8b865b215899f46cu, 0xbd79e0d20082ee74u, 0xae67f1e9aec07187u, 0xecd8590680a3aa11u,
11167|  55.6k|            0xda01ee641a708de9u, 0xe80e6f4820cc9495u, 0x884134fe908658b2u, 0x3109058d147fdcddu,
11168|  55.6k|            0xaa51823e34a7eedeu, 0xbd4b46f0599fd415u, 0xd4e5e2cdc1d1ea96u, 0x6c9e18ac7007c91au,
11169|  55.6k|            0x850fadc09923329eu, 0x03e2cf6bc604ddb0u, 0xa6539930bf6bff45u, 0x84db8346b786151cu,
11170|  55.6k|            0xcfe87f7cef46ff16u, 0xe612641865679a63u, 0x81f14fae158c5f6eu, 0x4fcb7e8f3f60c07eu,
11171|  55.6k|            0xa26da3999aef7749u, 0xe3be5e330f38f09du, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc5u,
11172|  55.6k|            0xfdcb4fa002162a63u, 0x73d9732fc7c8f7f6u, 0x9e9f11c4014dda7eu, 0x2867e7fddcdd9afau,
11173|  55.6k|            0xc646d63501a1511du, 0xb281e1fd541501b8u, 0xf7d88bc24209a565u, 0x1f225a7ca91a4226u,
11174|  55.6k|            0x9ae757596946075fu, 0x3375788de9b06958u, 0xc1a12d2fc3978937u, 0x0052d6b1641c83aeu,
11175|  55.6k|            0xf209787bb47d6b84u, 0xc0678c5dbd23a49au, 0x9745eb4d50ce6332u, 0xf840b7ba963646e0u,
11176|  55.6k|            0xbd176620a501fbffu, 0xb650e5a93bc3d898u, 0xec5d3fa8ce427affu, 0xa3e51f138ab4cebeu,
11177|  55.6k|            0x93ba47c980e98cdfu, 0xc66f336c36b10137u, 0xb8a8d9bbe123f017u, 0xb80b0047445d4184u,
11178|  55.6k|            0xe6d3102ad96cec1du, 0xa60dc059157491e5u, 0x9043ea1ac7e41392u, 0x87c89837ad68db2fu,
11179|  55.6k|            0xb454e4a179dd1877u, 0x29babe4598c311fbu, 0xe16a1dc9d8545e94u, 0xf4296dd6fef3d67au,
11180|  55.6k|            0x8ce2529e2734bb1du, 0x1899e4a65f58660cu, 0xb01ae745b101e9e4u, 0x5ec05dcff72e7f8fu,
11181|  55.6k|            0xdc21a1171d42645du, 0x76707543f4fa1f73u, 0x899504ae72497ebau, 0x6a06494a791c53a8u,
11182|  55.6k|            0xabfa45da0edbde69u, 0x0487db9d17636892u, 0xd6f8d7509292d603u, 0x45a9d2845d3c42b6u,
11183|  55.6k|            0x865b86925b9bc5c2u, 0x0b8a2392ba45a9b2u, 0xa7f26836f282b732u, 0x8e6cac7768d7141eu,
11184|  55.6k|            0xd1ef0244af2364ffu, 0x3207d795430cd926u, 0x8335616aed761f1fu, 0x7f44e6bd49e807b8u,
11185|  55.6k|            0xa402b9c5a8d3a6e7u, 0x5f16206c9c6209a6u, 0xcd036837130890a1u, 0x36dba887c37a8c0fu,
11186|  55.6k|            0x802221226be55a64u, 0xc2494954da2c9789u, 0xa02aa96b06deb0fdu, 0xf2db9baa10b7bd6cu,
11187|  55.6k|            0xc83553c5c8965d3du, 0x6f92829494e5acc7u, 0xfa42a8b73abbf48cu, 0xcb772339ba1f17f9u,
11188|  55.6k|            0x9c69a97284b578d7u, 0xff2a760414536efbu, 0xc38413cf25e2d70du, 0xfef5138519684abau,
11189|  55.6k|            0xf46518c2ef5b8cd1u, 0x7eb258665fc25d69u, 0x98bf2f79d5993802u, 0xef2f773ffbd97a61u,
11190|  55.6k|            0xbeeefb584aff8603u, 0xaafb550ffacfd8fau, 0xeeaaba2e5dbf6784u, 0x95ba2a53f983cf38u,
11191|  55.6k|            0x952ab45cfa97a0b2u, 0xdd945a747bf26183u, 0xba756174393d88dfu, 0x94f971119aeef9e4u,
11192|  55.6k|            0xe912b9d1478ceb17u, 0x7a37cd5601aab85du, 0x91abb422ccb812eeu, 0xac62e055c10ab33au,
11193|  55.6k|            0xb616a12b7fe617aau, 0x577b986b314d6009u, 0xe39c49765fdf9d94u, 0xed5a7e85fda0b80bu,
11194|  55.6k|            0x8e41ade9fbebc27du, 0x14588f13be847307u, 0xb1d219647ae6b31cu, 0x596eb2d8ae258fc8u,
11195|  55.6k|            0xde469fbd99a05fe3u, 0x6fca5f8ed9aef3bbu, 0x8aec23d680043beeu, 0x25de7bb9480d5854u,
11196|  55.6k|            0xada72ccc20054ae9u, 0xaf561aa79a10ae6au, 0xd910f7ff28069da4u, 0x1b2ba1518094da04u,
11197|  55.6k|            0x87aa9aff79042286u, 0x90fb44d2f05d0842u, 0xa99541bf57452b28u, 0x353a1607ac744a53u,
11198|  55.6k|            0xd3fa922f2d1675f2u, 0x42889b8997915ce8u, 0x847c9b5d7c2e09b7u, 0x69956135febada11u,
11199|  55.6k|            0xa59bc234db398c25u, 0x43fab9837e699095u, 0xcf02b2c21207ef2eu, 0x94f967e45e03f4bbu,
11200|  55.6k|            0x8161afb94b44f57du, 0x1d1be0eebac278f5u, 0xa1ba1ba79e1632dcu, 0x6462d92a69731732u,
11201|  55.6k|            0xca28a291859bbf93u, 0x7d7b8f7503cfdcfeu, 0xfcb2cb35e702af78u, 0x5cda735244c3d43eu,
11202|  55.6k|            0x9defbf01b061adabu, 0x3a0888136afa64a7u, 0xc56baec21c7a1916u, 0x088aaa1845b8fdd0u,
11203|  55.6k|            0xf6c69a72a3989f5bu, 0x8aad549e57273d45u, 0x9a3c2087a63f6399u, 0x36ac54e2f678864bu,
11204|  55.6k|            0xc0cb28a98fcf3c7fu, 0x84576a1bb416a7ddu, 0xf0fdf2d3f3c30b9fu, 0x656d44a2a11c51d5u,
11205|  55.6k|            0x969eb7c47859e743u, 0x9f644ae5a4b1b325u, 0xbc4665b596706114u, 0x873d5d9f0dde1feeu,
11206|  55.6k|            0xeb57ff22fc0c7959u, 0xa90cb506d155a7eau, 0x9316ff75dd87cbd8u, 0x09a7f12442d588f2u,
11207|  55.6k|            0xb7dcbf5354e9beceu, 0x0c11ed6d538aeb2fu, 0xe5d3ef282a242e81u, 0x8f1668c8a86da5fau,
11208|  55.6k|            0x8fa475791a569d10u, 0xf96e017d694487bcu, 0xb38d92d760ec4455u, 0x37c981dcc395a9acu,
11209|  55.6k|            0xe070f78d3927556au, 0x85bbe253f47b1417u, 0x8c469ab843b89562u, 0x93956d7478ccec8eu,
11210|  55.6k|            0xaf58416654a6babbu, 0x387ac8d1970027b2u, 0xdb2e51bfe9d0696au, 0x06997b05fcc0319eu,
11211|  55.6k|            0x88fcf317f22241e2u, 0x441fece3bdf81f03u, 0xab3c2fddeeaad25au, 0xd527e81cad7626c3u,
11212|  55.6k|            0xd60b3bd56a5586f1u, 0x8a71e223d8d3b074u, 0x85c7056562757456u, 0xf6872d5667844e49u,
11213|  55.6k|            0xa738c6bebb12d16cu, 0xb428f8ac016561dbu, 0xd106f86e69d785c7u, 0xe13336d701beba52u,
11214|  55.6k|            0x82a45b450226b39cu, 0xecc0024661173473u, 0xa34d721642b06084u, 0x27f002d7f95d0190u,
11215|  55.6k|            0xcc20ce9bd35c78a5u, 0x31ec038df7b441f4u, 0xff290242c83396ceu, 0x7e67047175a15271u,
11216|  55.6k|            0x9f79a169bd203e41u, 0x0f0062c6e984d386u, 0xc75809c42c684dd1u, 0x52c07b78a3e60868u,
11217|  55.6k|            0xf92e0c3537826145u, 0xa7709a56ccdf8a82u, 0x9bbcc7a142b17ccbu, 0x88a66076400bb691u,
11218|  55.6k|            0xc2abf989935ddbfeu, 0x6acff893d00ea435u, 0xf356f7ebf83552feu, 0x0583f6b8c4124d43u,
11219|  55.6k|            0x98165af37b2153deu, 0xc3727a337a8b704au, 0xbe1bf1b059e9a8d6u, 0x744f18c0592e4c5cu,
11220|  55.6k|            0xeda2ee1c7064130cu, 0x1162def06f79df73u, 0x9485d4d1c63e8be7u, 0x8addcb5645ac2ba8u,
11221|  55.6k|            0xb9a74a0637ce2ee1u, 0x6d953e2bd7173692u, 0xe8111c87c5c1ba99u, 0xc8fa8db6ccdd0437u,
11222|  55.6k|            0x910ab1d4db9914a0u, 0x1d9c9892400a22a2u, 0xb54d5e4a127f59c8u, 0x2503beb6d00cab4bu,
11223|  55.6k|            0xe2a0b5dc971f303au, 0x2e44ae64840fd61du, 0x8da471a9de737e24u, 0x5ceaecfed289e5d2u,
11224|  55.6k|            0xb10d8e1456105dadu, 0x7425a83e872c5f47u, 0xdd50f1996b947518u, 0xd12f124e28f77719u,
11225|  55.6k|            0x8a5296ffe33cc92fu, 0x82bd6b70d99aaa6fu, 0xace73cbfdc0bfb7bu, 0x636cc64d1001550bu,
11226|  55.6k|            0xd8210befd30efa5au, 0x3c47f7e05401aa4eu, 0x8714a775e3e95c78u, 0x65acfaec34810a71u,
11227|  55.6k|            0xa8d9d1535ce3b396u, 0x7f1839a741a14d0du, 0xd31045a8341ca07cu, 0x1ede48111209a050u,
11228|  55.6k|            0x83ea2b892091e44du, 0x934aed0aab460432u, 0xa4e4b66b68b65d60u, 0xf81da84d5617853fu,
11229|  55.6k|            0xce1de40642e3f4b9u, 0x36251260ab9d668eu, 0x80d2ae83e9ce78f3u, 0xc1d72b7c6b426019u,
11230|  55.6k|            0xa1075a24e4421730u, 0xb24cf65b8612f81fu, 0xc94930ae1d529cfcu, 0xdee033f26797b627u,
11231|  55.6k|            0xfb9b7cd9a4a7443cu, 0x169840ef017da3b1u, 0x9d412e0806e88aa5u, 0x8e1f289560ee864eu,
11232|  55.6k|            0xc491798a08a2ad4eu, 0xf1a6f2bab92a27e2u, 0xf5b5d7ec8acb58a2u, 0xae10af696774b1dbu,
11233|  55.6k|            0x9991a6f3d6bf1765u, 0xacca6da1e0a8ef29u, 0xbff610b0cc6edd3fu, 0x17fd090a58d32af3u,
11234|  55.6k|            0xeff394dcff8a948eu, 0xddfc4b4cef07f5b0u, 0x95f83d0a1fb69cd9u, 0x4abdaf101564f98eu,
11235|  55.6k|            0xbb764c4ca7a4440fu, 0x9d6d1ad41abe37f1u, 0xea53df5fd18d5513u, 0x84c86189216dc5edu,
11236|  55.6k|            0x92746b9be2f8552cu, 0x32fd3cf5b4e49bb4u, 0xb7118682dbb66a77u, 0x3fbc8c33221dc2a1u,
11237|  55.6k|            0xe4d5e82392a40515u, 0x0fabaf3feaa5334au, 0x8f05b1163ba6832du, 0x29cb4d87f2a7400eu,
11238|  55.6k|            0xb2c71d5bca9023f8u, 0x743e20e9ef511012u, 0xdf78e4b2bd342cf6u, 0x914da9246b255416u,
11239|  55.6k|            0x8bab8eefb6409c1au, 0x1ad089b6c2f7548eu, 0xae9672aba3d0c320u, 0xa184ac2473b529b1u,
11240|  55.6k|            0xda3c0f568cc4f3e8u, 0xc9e5d72d90a2741eu, 0x8865899617fb1871u, 0x7e2fa67c7a658892u,
11241|  55.6k|            0xaa7eebfb9df9de8du, 0xddbb901b98feeab7u, 0xd51ea6fa85785631u, 0x552a74227f3ea565u,
11242|  55.6k|            0x8533285c936b35deu, 0xd53a88958f87275fu, 0xa67ff273b8460356u, 0x8a892abaf368f137u,
11243|  55.6k|            0xd01fef10a657842cu, 0x2d2b7569b0432d85u, 0x8213f56a67f6b29bu, 0x9c3b29620e29fc73u,
11244|  55.6k|            0xa298f2c501f45f42u, 0x8349f3ba91b47b8fu, 0xcb3f2f7642717713u, 0x241c70a936219a73u,
11245|  55.6k|            0xfe0efb53d30dd4d7u, 0xed238cd383aa0110u, 0x9ec95d1463e8a506u, 0xf4363804324a40aau,
11246|  55.6k|            0xc67bb4597ce2ce48u, 0xb143c6053edcd0d5u, 0xf81aa16fdc1b81dau, 0xdd94b7868e94050au,
11247|  55.6k|            0x9b10a4e5e9913128u, 0xca7cf2b4191c8326u, 0xc1d4ce1f63f57d72u, 0xfd1c2f611f63a3f0u,
11248|  55.6k|            0xf24a01a73cf2dccfu, 0xbc633b39673c8cecu, 0x976e41088617ca01u, 0xd5be0503e085d813u,
11249|  55.6k|            0xbd49d14aa79dbc82u, 0x4b2d8644d8a74e18u, 0xec9c459d51852ba2u, 0xddf8e7d60ed1219eu,
11250|  55.6k|            0x93e1ab8252f33b45u, 0xcabb90e5c942b503u, 0xb8da1662e7b00a17u, 0x3d6a751f3b936243u,
11251|  55.6k|            0xe7109bfba19c0c9du, 0x0cc512670a783ad4u, 0x906a617d450187e2u, 0x27fb2b80668b24c5u,
11252|  55.6k|            0xb484f9dc9641e9dau, 0xb1f9f660802dedf6u, 0xe1a63853bbd26451u, 0x5e7873f8a0396973u,
11253|  55.6k|            0x8d07e33455637eb2u, 0xdb0b487b6423e1e8u, 0xb049dc016abc5e5fu, 0x91ce1a9a3d2cda62u,
11254|  55.6k|            0xdc5c5301c56b75f7u, 0x7641a140cc7810fbu, 0x89b9b3e11b6329bau, 0xa9e904c87fcb0a9du,
11255|  55.6k|            0xac2820d9623bf429u, 0x546345fa9fbdcd44u, 0xd732290fbacaf133u, 0xa97c177947ad4095u,
11256|  55.6k|            0x867f59a9d4bed6c0u, 0x49ed8eabcccc485du, 0xa81f301449ee8c70u, 0x5c68f256bfff5a74u,
11257|  55.6k|            0xd226fc195c6a2f8cu, 0x73832eec6fff3111u, 0x83585d8fd9c25db7u, 0xc831fd53c5ff7eabu,
11258|  55.6k|            0xa42e74f3d032f525u, 0xba3e7ca8b77f5e55u, 0xcd3a1230c43fb26fu, 0x28ce1bd2e55f35ebu,
11259|  55.6k|            0x80444b5e7aa7cf85u, 0x7980d163cf5b81b3u, 0xa0555e361951c366u, 0xd7e105bcc332621fu,
11260|  55.6k|            0xc86ab5c39fa63440u, 0x8dd9472bf3fefaa7u, 0xfa856334878fc150u, 0xb14f98f6f0feb951u,
11261|  55.6k|            0x9c935e00d4b9d8d2u, 0x6ed1bf9a569f33d3u, 0xc3b8358109e84f07u, 0x0a862f80ec4700c8u,
11262|  55.6k|            0xf4a642e14c6262c8u, 0xcd27bb612758c0fau, 0x98e7e9cccfbd7dbdu, 0x8038d51cb897789cu,
11263|  55.6k|            0xbf21e44003acdd2cu, 0xe0470a63e6bd56c3u, 0xeeea5d5004981478u, 0x1858ccfce06cac74u,
11264|  55.6k|            0x95527a5202df0ccbu, 0x0f37801e0c43ebc8u, 0xbaa718e68396cffdu, 0xd30560258f54e6bau,
11265|  55.6k|            0xe950df20247c83fdu, 0x47c6b82ef32a2069u, 0x91d28b7416cdd27eu, 0x4cdc331d57fa5441u,
11266|  55.6k|            0xb6472e511c81471du, 0xe0133fe4adf8e952u, 0xe3d8f9e563a198e5u, 0x58180fddd97723a6u,
11267|  55.6k|            0x8e679c2f5e44ff8fu, 0x570f09eaa7ea7648u,
11268|  55.6k|        }
11269|  55.6k|    };
11270|  55.6k|    return table;
11271|  55.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13umul192_hi128Emmm:
35114|  32.0k|{
35115|  32.0k|    const uint128_parts p = full_multiplication(x_hi, y);
35116|  32.0k|    uint128_parts r{};
35117|  32.0k|    r.low = p.low + full_multiplication(x_lo, y).high;
35118|  32.0k|    r.high = p.high + (r.low < p.low ? 1u : 0u);
  ------------------
  |  Branch (35118:24): [True: 318, False: 31.7k]
  ------------------
35119|  32.0k|    return r;
35120|  32.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij16umul128_add_hi64Emmm:
35124|  51.5k|{
35125|  51.5k|    const uint128_parts p = full_multiplication(x, y);
35126|  51.5k|    return p.high + (p.low + c < p.low ? 1u : 0u);
  ------------------
  |  Branch (35126:22): [True: 26.0k, False: 25.5k]
  ------------------
35127|  51.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalE:
36353|  32.0k|{
36354|  32.0k|    const std::uint64_t sig = d.integral;
36355|  32.0k|    if (JSON_HEDLEY_UNLIKELY(sig < 100000000000000u || sig >= 10000000000000000u))
  ------------------
  |  | 1697|  61.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2.92k, False: 29.1k]
  |  |  |  Branch (1697:94): [True: 2.92k, False: 29.1k]
  |  |  |  Branch (1697:94): [True: 0, False: 29.1k]
  |  |  ------------------
  ------------------
36356|  2.92k|    {
36357|       |        // (subnormals)
36358|  2.92k|        return d.has_digit ? write_decimal(first, (sig * 10) + d.digit, d.exponent) : write_decimal(first, sig, d.exponent + 1);
  ------------------
  |  Branch (36358:16): [True: 1.26k, False: 1.66k]
  ------------------
36359|  2.92k|    }
36360|  29.1k|    const bool sixteen = sig >= 1000000000000000u; // (else 15 digits)
36361|  29.1k|    const int last = d.has_digit ? d.digit : 0;
  ------------------
  |  Branch (36361:22): [True: 6.60k, False: 22.5k]
  ------------------
36362|  29.1k|    const std::uint64_t upper = sig / 100000000u;
36363|  29.1k|#if JSON_DTOA_SSE2
36364|       |    // NOLINTBEGIN(portability-simd-intrinsics)
36365|       |    // the two halves in the 64-bit lanes, each as abcd * 2^32 + efgh, then as
36366|       |    // bytes (as eight_digit_bytes(), one lane each)
36367|  29.1k|    const __m128i x = _mm_set_epi64x(static_cast<long long>(sig - (upper * 100000000u)), static_cast<long long>(upper)); // NOLINT(runtime/int)
36368|  29.1k|    const __m128i abcd = _mm_srli_epi64(_mm_mul_epu32(x, _mm_set1_epi64x(109951163)), 40); // 2^40 / 10000 + 1
36369|  29.1k|    const __m128i abcd_efgh = _mm_add_epi64(x, _mm_mul_epu32(abcd, _mm_set1_epi64x(4294957296))); // 2^32 - 10000
36370|       |    // 32-bit lanes in the order of the text: abcd, efgh of both halves
36371|  29.1k|    const __m128i fours = _mm_shuffle_epi32(abcd_efgh, _MM_SHUFFLE(2, 3, 0, 1));
36372|  29.1k|    const __m128i ab = _mm_srli_epi16(_mm_mulhi_epu16(fours, _mm_set1_epi32(5243)), 3);
36373|  29.1k|    const __m128i ab_cd = _mm_or_si128(_mm_slli_epi32(_mm_sub_epi16(fours, _mm_mullo_epi16(ab, _mm_set1_epi32(100))), 16), ab);
36374|       |    // 16-bit lanes ab (< 100) -> bytes a, b: 256 * ab - 2559 * (ab / 10)
36375|  29.1k|    const __m128i bytes = _mm_sub_epi16(_mm_slli_epi16(ab_cd, 8), _mm_mullo_epi16(_mm_set1_epi16(2559), _mm_mulhi_epu16(ab_cd, _mm_set1_epi16(6554))));
36376|       |    // the last digit that is not 0 (sig is not 0)
36377|  29.1k|    const auto nonzero = static_cast<std::uint64_t>(_mm_movemask_epi8(_mm_cmpgt_epi8(bytes, _mm_setzero_si128())));
36378|  29.1k|    const int digits = 63 - count_leading_zeros(nonzero) + (sixteen ? 1 : 0); // without trailing zeros
  ------------------
  |  Branch (36378:61): [True: 26.1k, False: 2.95k]
  ------------------
36379|  29.1k|    const __m128i chars = _mm_add_epi8(bytes, _mm_set1_epi8('0'));
36380|       |    // the 16 characters from the first digit
36381|  29.1k|    const __m128i s = sixteen ? chars : _mm_or_si128(_mm_srli_si128(chars, 1), _mm_slli_si128(_mm_cvtsi32_si128('0' + last), 15));
  ------------------
  |  Branch (36381:23): [True: 26.1k, False: 2.95k]
  ------------------
36382|  29.1k|    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
  ------------------
  |  Branch (36382:40): [True: 26.1k, False: 2.95k]
  ------------------
36383|  29.1k|    const auto store_16 = [&s](char* p) noexcept
36384|  29.1k|    {
36385|  29.1k|        std::memcpy(p, &s, 16);
36386|  29.1k|    };
36387|  29.1k|    const char first_digit = static_cast<char>(_mm_cvtsi128_si32(s));
36388|       |    // NOLINTEND(portability-simd-intrinsics)
36389|       |#elif JSON_DTOA_NEON
36390|       |    // as with SSE2: the halves in 32-bit lanes, then abcd, efgh of both
36391|       |    const uint32x2_t halves = vcreate_u32(upper | ((sig - (upper * 100000000u)) << 32u));
36392|       |    const uint32x2_t abcd = vmovn_u64(vshrq_n_u64(vmull_n_u32(halves, static_cast<std::uint32_t>(((std::uint64_t{1} << 40u) / 10000u) + 1u)), 40));
36393|       |    const uint32x2_t efgh = vmls_n_u32(halves, abcd, 10000u);
36394|       |    const uint32x4_t fours = vcombine_u32(vzip1_u32(abcd, efgh), vzip2_u32(abcd, efgh));
36395|       |    const uint32x4_t ab = vshrq_n_u32(vmulq_n_u32(fours, 5243u), 19);
36396|       |    const uint16x8_t ab_cd = vreinterpretq_u16_u32(vorrq_u32(ab, vshlq_n_u32(vmlsq_n_u32(fours, ab, 100u), 16)));
36397|       |    const uint16x8_t tens = vshrq_n_u16(vmulq_n_u16(ab_cd, 103u), 10);
36398|       |    const uint8x16_t bytes = vreinterpretq_u8_u16(vorrq_u16(tens, vshlq_n_u16(vmlsq_n_u16(ab_cd, tens, 10u), 8)));
36399|       |    // the last digit that is not 0 (sig is not 0): a nibble per byte
36400|       |    const std::uint64_t nonzero = vget_lane_u64(vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(vtstq_u8(bytes, bytes)), 4)), 0);
36401|       |    const int digits = ((63 - count_leading_zeros(nonzero)) / 4) + (sixteen ? 1 : 0); // without trailing zeros
36402|       |    const uint8x16_t chars = vaddq_u8(bytes, vdupq_n_u8('0'));
36403|       |    // the 16 characters from the first digit
36404|       |    const uint8x16_t s = sixteen ? chars : vextq_u8(chars, vdupq_n_u8(static_cast<std::uint8_t>('0' + last)), 1);
36405|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
36406|       |    const auto store_16 = [&s](char* p) noexcept
36407|       |    {
36408|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(p), s); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
36409|       |    };
36410|       |    const auto first_digit = static_cast<char>(vgetq_lane_u8(s, 0));
36411|       |#else
36412|       |    const std::uint64_t hi = eight_digit_bytes(upper);
36413|       |    const std::uint64_t lo = eight_digit_bytes(sig - (upper * 100000000u));
36414|       |    // trailing zero digits: zero bytes (sig is not 0)
36415|       |    const int zeros = lo != 0 ? count_trailing_zeros(lo) / 8 : 8 + (count_trailing_zeros(hi) / 8);
36416|       |    const int digits = 15 - zeros + (sixteen ? 1 : 0); // without trailing zeros
36417|       |    // the 16 characters from the first digit
36418|       |    const std::uint64_t s_hi = (sixteen ? hi : (hi << 8u) | (lo >> 56u)) + 0x3030303030303030u;
36419|       |    const std::uint64_t s_lo = (sixteen ? lo : (lo << 8u) | static_cast<std::uint64_t>(last)) + 0x3030303030303030u;
36420|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
36421|       |    const auto store_16 = [s_hi, s_lo](char* p) noexcept
36422|       |    {
36423|       |        store_msb_first(p, s_hi);
36424|       |        store_msb_first(p + 8, s_lo);
36425|       |    };
36426|       |    const auto first_digit = static_cast<char>(s_hi >> 56u);
36427|       |#endif
36428|  29.1k|    const int len = d.has_digit ? 16 + (sixteen ? 1 : 0) : digits; // significant digits
  ------------------
  |  Branch (36428:21): [True: 6.60k, False: 22.5k]
  |  Branch (36428:41): [True: 4.72k, False: 1.87k]
  ------------------
36429|  29.1k|    const int n = 16 + (sixteen ? 1 : 0) + d.exponent;           // digits before the point
  ------------------
  |  Branch (36429:25): [True: 26.1k, False: 2.95k]
  ------------------
36430|       |
36431|  29.1k|    if (JSON_HEDLEY_LIKELY(n >= 1 && n <= 15))
  ------------------
  |  | 1696|  52.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 20.2k, False: 8.86k]
  |  |  |  Branch (1696:94): [True: 23.0k, False: 6.08k]
  |  |  |  Branch (1696:94): [True: 20.2k, False: 2.77k]
  |  |  ------------------
  ------------------
36432|  20.2k|    {
36433|       |        // "dig.its" and "digits[000].0": the digits after the point move by
36434|       |        // one byte ('0's follow the digits)
36435|  20.2k|#if JSON_DTOA_SSE2
36436|       |        // NOLINTBEGIN(portability-simd-intrinsics)
36437|       |        // (in the register: reading the digits back from memory right after
36438|       |        // storing them waits until the stores are done)
36439|  20.2k|        const __m128i at = _mm_set1_epi8(static_cast<char>(n));
36440|  20.2k|        const __m128i index = _mm_setr_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
36441|  20.2k|        const __m128i before = _mm_cmpgt_epi8(at, index);
36442|  20.2k|        const __m128i after = _mm_cmpgt_epi8(index, at);
36443|  20.2k|        const __m128i text = _mm_or_si128(_mm_or_si128(_mm_and_si128(s, before), _mm_and_si128(_mm_slli_si128(s, 1), after)),
36444|  20.2k|                                          _mm_andnot_si128(_mm_or_si128(before, after), _mm_set1_epi8('.')));
36445|  20.2k|        std::memcpy(first, &text, 16);
36446|  20.2k|        first[16] = static_cast<char>(_mm_extract_epi16(s, 7) >> 8);
36447|  20.2k|        first[17] = s16;
36448|       |        // NOLINTEND(portability-simd-intrinsics)
36449|       |#elif JSON_DTOA_NEON
36450|       |        const uint8x16_t index = vcombine_u8(vcreate_u8(0x0706050403020100u), vcreate_u8(0x0F0E0D0C0B0A0908u));
36451|       |        const uint8x16_t at = vdupq_n_u8(static_cast<std::uint8_t>(n));
36452|       |        const uint8x16_t after_point = vbslq_u8(vcgtq_u8(index, at), vextq_u8(vdupq_n_u8(0), s, 15), vdupq_n_u8('.'));
36453|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(first), vbslq_u8(vcltq_u8(index, at), s, after_point)); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
36454|       |        first[16] = static_cast<char>(vgetq_lane_u8(s, 15));
36455|       |        first[17] = s16;
36456|       |#else
36457|       |        store_16(first);
36458|       |        first[16] = s16;
36459|       |        std::uint64_t after_point[2]; // NOLINT(cppcoreguidelines-avoid-c-arrays,hicpp-avoid-c-arrays,modernize-avoid-c-arrays,cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
36460|       |        std::memcpy(after_point, first + n, 16);
36461|       |        std::memcpy(first + n + 1, after_point, 16);
36462|       |        first[n] = '.';
36463|       |#endif
36464|  20.2k|        return first + (n >= len ? n + 2 : len + 1);
  ------------------
  |  Branch (36464:25): [True: 18.4k, False: 1.86k]
  ------------------
36465|  20.2k|    }
36466|  8.86k|    if (n <= 0 && n > -4)
  ------------------
  |  Branch (36466:9): [True: 6.08k, False: 2.77k]
  |  Branch (36466:19): [True: 666, False: 5.41k]
  ------------------
36467|    666|    {
36468|       |        // "0.[000]digits"
36469|    666|        std::memset(first, '0', 8);
36470|    666|        first[1] = '.';
36471|    666|        store_16(first + 2 - n);
36472|    666|        first[18 - n] = s16;
36473|    666|        return first + 2 - n + len;
36474|    666|    }
36475|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
36476|  8.19k|    store_16(first + 1);
36477|  8.19k|    first[17] = s16;
36478|  8.19k|    first[0] = first_digit;
36479|  8.19k|    first[1] = '.';
36480|  8.19k|    char* const end = first + (len == 1 ? 1 : len + 1);
  ------------------
  |  Branch (36480:32): [True: 504, False: 7.69k]
  ------------------
36481|  8.19k|    const int e = n - 1;
36482|  8.19k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (36482:21): [True: 5.41k, False: 2.77k]
  ------------------
36483|  8.19k|    const bool three = ea >= 100;
36484|  8.19k|    end[0] = 'e';
36485|  8.19k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (36485:14): [True: 5.41k, False: 2.77k]
  ------------------
36486|  8.19k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (36486:39): [True: 2.65k, False: 5.54k]
  ------------------
36487|  8.19k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (36487:39): [True: 2.65k, False: 5.54k]
  ------------------
36488|  8.19k|    end[4] = static_cast<char>('0' + (ea % 10));
36489|  8.19k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (36489:19): [True: 2.65k, False: 5.54k]
  ------------------
36490|  8.86k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl13write_decimalEPcmi:
36265|  2.92k|{
36266|  2.92k|    JSON_ASSERT(digits != 0 && digits < 100000000000000000u);
  ------------------
  |  | 2643|  2.92k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36266:5): [True: 2.92k, False: 0]
  |  Branch (36266:5): [True: 2.92k, False: 0]
  |  Branch (36266:5): [True: 2.92k, False: 0]
  ------------------
36267|  2.92k|    const std::uint64_t upper = digits / 100000000u;
36268|  2.92k|    const std::uint64_t b0 = upper / 100000000u; // (one digit: it is its own byte)
36269|  2.92k|    const std::uint64_t b1 = eight_digit_bytes(upper % 100000000u);
36270|  2.92k|    const std::uint64_t b2 = eight_digit_bytes(digits % 100000000u);
36271|       |    // leading and trailing zero digits: zero bytes, counted without division
36272|  2.92k|    int leading = 16;
36273|  2.92k|    int zeros = 16;
36274|  2.92k|    if (b0 != 0)
  ------------------
  |  Branch (36274:9): [True: 0, False: 2.92k]
  ------------------
36275|      0|    {
36276|      0|        leading = count_leading_zeros(b0) / 8;
36277|      0|    }
36278|  2.92k|    else if (b1 != 0)
  ------------------
  |  Branch (36278:14): [True: 1.56k, False: 1.36k]
  ------------------
36279|  1.56k|    {
36280|  1.56k|        leading = 8 + (count_leading_zeros(b1) / 8);
36281|  1.56k|    }
36282|  1.36k|    else
36283|  1.36k|    {
36284|  1.36k|        leading += count_leading_zeros(b2) / 8;
36285|  1.36k|    }
36286|  2.92k|    if (b2 != 0)
  ------------------
  |  Branch (36286:9): [True: 2.92k, False: 0]
  ------------------
36287|  2.92k|    {
36288|  2.92k|        zeros = count_trailing_zeros(b2) / 8;
36289|  2.92k|    }
36290|      0|    else if (b1 != 0)
  ------------------
  |  Branch (36290:14): [True: 0, False: 0]
  ------------------
36291|      0|    {
36292|      0|        zeros = 8 + (count_trailing_zeros(b1) / 8);
36293|      0|    }
36294|       |    // (else: 16, b0 is the one digit that is not 0)
36295|       |    // the digits as text at text + leading, then '0's, so that fixed-size
36296|       |    // moves need not check how many digits there are
36297|  2.92k|    std::array<char, 64> text; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
36298|  2.92k|    store_msb_first(text.data(), b0 + 0x3030303030303030u);
36299|  2.92k|    store_msb_first(text.data() + 8, b1 + 0x3030303030303030u);
36300|  2.92k|    store_msb_first(text.data() + 16, b2 + 0x3030303030303030u);
36301|  2.92k|    std::memset(text.data() + 24, '0', 40);
36302|  2.92k|    const int k = 24 - leading - zeros; // significant digits
36303|  2.92k|    const int n = k + exp + zeros;      // position of the decimal point after the first digit
36304|  2.92k|    const char* const s0 = text.data() + leading;
36305|       |
36306|  2.92k|    if (-4 < n && n <= 15)
  ------------------
  |  Branch (36306:9): [True: 0, False: 2.92k]
  |  Branch (36306:19): [True: 0, False: 0]
  ------------------
36307|      0|    {
36308|       |        // "0.[000]digits" (n <= 0) is the digits after 1 - n leading '0's
36309|       |        // with the point after the first; "digits[000].0" (n >= k) and
36310|       |        // "dig.its" put the point after n characters
36311|      0|        const int pad = n <= 0 ? 1 - n : 0;
  ------------------
  |  Branch (36311:25): [True: 0, False: 0]
  ------------------
36312|      0|        const char* const s = s0 - pad;
36313|      0|        const int len = k + pad;
36314|      0|        const int point = n + pad;
36315|      0|        std::memcpy(first, s, 16);
36316|      0|        std::memcpy(first + point + 1, s + point, 24);
36317|      0|        first[point] = '.';
36318|      0|        return first + (point >= len ? point + 2 : len + 1);
  ------------------
  |  Branch (36318:25): [True: 0, False: 0]
  ------------------
36319|      0|    }
36320|       |
36321|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
36322|  2.92k|    std::memcpy(first, s0, 16);
36323|  2.92k|    std::memcpy(first + 2, s0 + 1, 16);
36324|  2.92k|    first[1] = '.';
36325|  2.92k|    char* const end = first + (k == 1 ? 1 : k + 1);
  ------------------
  |  Branch (36325:32): [True: 900, False: 2.02k]
  ------------------
36326|  2.92k|    const int e = n - 1;
36327|  2.92k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (36327:21): [True: 2.92k, False: 0]
  ------------------
36328|  2.92k|    const bool three = ea >= 100;
36329|  2.92k|    end[0] = 'e';
36330|  2.92k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (36330:14): [True: 2.92k, False: 0]
  ------------------
36331|  2.92k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (36331:39): [True: 2.92k, False: 0]
  ------------------
36332|  2.92k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (36332:39): [True: 2.92k, False: 0]
  ------------------
36333|  2.92k|    end[4] = static_cast<char>('0' + (ea % 10));
36334|  2.92k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (36334:19): [True: 2.92k, False: 0]
  ------------------
36335|  2.92k|}
_ZZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalEENKUlS3_E_clES3_:
36384|  8.86k|    {
36385|  8.86k|        std::memcpy(p, &s, 16);
36386|  8.86k|    };
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE5flushEv:
38224|  27.0k|    {
38225|  27.0k|        o->write_characters(write_buffer.data(), write_buffer_pos);
38226|  27.0k|        write_buffer_pos = 0;
38227|  27.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvED2Ev:
42005|  2.32M|    {
42006|  2.32M|        assert_invariant(false);
42007|  2.32M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16assert_invariantEb:
40333|  6.41M|    {
40334|  6.41M|        JSON_ASSERT(m_data.m_type != value_t::object || m_data.m_value.object != nullptr);
  ------------------
  |  | 2643|  6.41M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40334:9): [True: 6.12M, False: 289k]
  |  Branch (40334:9): [True: 289k, False: 0]
  |  Branch (40334:9): [True: 6.41M, False: 0]
  ------------------
40335|  6.41M|        JSON_ASSERT(m_data.m_type != value_t::array || m_data.m_value.array != nullptr);
  ------------------
  |  | 2643|  6.41M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40335:9): [True: 5.53M, False: 887k]
  |  Branch (40335:9): [True: 887k, False: 0]
  |  Branch (40335:9): [True: 6.41M, False: 0]
  ------------------
40336|  6.41M|        JSON_ASSERT(m_data.m_type != value_t::string || m_data.m_value.string != nullptr);
  ------------------
  |  | 2643|  6.41M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40336:9): [True: 5.19M, False: 1.22M]
  |  Branch (40336:9): [True: 1.22M, False: 0]
  |  Branch (40336:9): [True: 6.41M, False: 0]
  ------------------
40337|  6.41M|        JSON_ASSERT(m_data.m_type != value_t::binary || m_data.m_value.binary != nullptr);
  ------------------
  |  | 2643|  6.41M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40337:9): [True: 6.41M, False: 0]
  |  Branch (40337:9): [True: 0, False: 0]
  |  Branch (40337:9): [True: 6.41M, False: 0]
  ------------------
40338|       |
40339|       |#if JSON_DIAGNOSTICS
40340|       |        JSON_TRY
40341|       |        {
40342|       |            JSON_ASSERT(!check_parents || !is_structured() || std::all_of(begin(), end(), [this](const basic_json & j)
40343|       |            {
40344|       |                return j.m_parent == this;
40345|       |            }));
40346|       |        }
40347|       |        JSON_CATCH(...) {} // LCOV_EXCL_LINE
40348|       |#endif
40349|  6.41M|        static_cast<void>(check_parents);
40350|  6.41M|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataD2Ev:
45585|  2.78M|        {
45586|  2.78M|            m_value.destroy(m_type);
45587|  2.78M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value7destroyENS0_6detail7value_tE:
40277|  3.38M|        {
40278|  3.38M|            if (JSON_HEDLEY_UNLIKELY(detail::owns_memory(t)))
  ------------------
  |  | 1697|  3.38M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 271k, False: 3.11M]
  |  |  ------------------
  ------------------
40279|   271k|            {
40280|   271k|                destroy_owned(t);
40281|   271k|            }
40282|  3.38M|        }
_ZN8nlohmann16json_abi_v3_12_06detail11owns_memoryENS1_7value_tE:
 3441|  3.38M|{
 3442|  3.38M|    switch (t)
 3443|  3.38M|    {
 3444|  21.2k|        case value_t::object:
  ------------------
  |  Branch (3444:9): [True: 21.2k, False: 3.36M]
  ------------------
 3445|  51.6k|        case value_t::array:
  ------------------
  |  Branch (3445:9): [True: 30.3k, False: 3.35M]
  ------------------
 3446|   271k|        case value_t::string:
  ------------------
  |  Branch (3446:9): [True: 220k, False: 3.16M]
  ------------------
 3447|   271k|        case value_t::binary:
  ------------------
  |  Branch (3447:9): [True: 0, False: 3.38M]
  ------------------
 3448|   271k|            return true;
 3449|       |
 3450|  2.73M|        case value_t::null:
  ------------------
  |  Branch (3450:9): [True: 2.73M, False: 655k]
  ------------------
 3451|  2.86M|        case value_t::boolean:
  ------------------
  |  Branch (3451:9): [True: 132k, False: 3.25M]
  ------------------
 3452|  2.93M|        case value_t::number_integer:
  ------------------
  |  Branch (3452:9): [True: 72.7k, False: 3.31M]
  ------------------
 3453|  3.03M|        case value_t::number_unsigned:
  ------------------
  |  Branch (3453:9): [True: 99.7k, False: 3.28M]
  ------------------
 3454|  3.11M|        case value_t::number_float:
  ------------------
  |  Branch (3454:9): [True: 77.4k, False: 3.31M]
  ------------------
 3455|  3.11M|        case value_t::discarded:
  ------------------
  |  Branch (3455:9): [True: 1.54k, False: 3.38M]
  ------------------
 3456|  3.11M|        default:
  ------------------
  |  Branch (3456:9): [True: 0, False: 3.38M]
  ------------------
 3457|  3.11M|            return false;
 3458|  3.38M|    }
 3459|  3.38M|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13destroy_ownedENS0_6detail7value_tE:
40285|   271k|        {
40286|   271k|            switch (t)
40287|   271k|            {
40288|   220k|                case value_t::string:
  ------------------
  |  Branch (40288:17): [True: 220k, False: 51.6k]
  ------------------
40289|   220k|                    destroy_pointer(string);
40290|   220k|                    break;
40291|       |
40292|      0|                case value_t::binary:
  ------------------
  |  Branch (40292:17): [True: 0, False: 271k]
  ------------------
40293|      0|                    destroy_pointer(binary);
40294|      0|                    break;
40295|       |
40296|  21.2k|                case value_t::object:
  ------------------
  |  Branch (40296:17): [True: 21.2k, False: 250k]
  ------------------
40297|  51.6k|                case value_t::array:
  ------------------
  |  Branch (40297:17): [True: 30.3k, False: 241k]
  ------------------
40298|  51.6k|                    destroy_container(t);
40299|  51.6k|                    break;
40300|       |
40301|      0|                case value_t::null: // LCOV_EXCL_LINE
  ------------------
  |  Branch (40301:17): [True: 0, False: 271k]
  ------------------
40302|      0|                case value_t::boolean:
  ------------------
  |  Branch (40302:17): [True: 0, False: 271k]
  ------------------
40303|      0|                case value_t::number_integer:
  ------------------
  |  Branch (40303:17): [True: 0, False: 271k]
  ------------------
40304|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (40304:17): [True: 0, False: 271k]
  ------------------
40305|      0|                case value_t::number_float:
  ------------------
  |  Branch (40305:17): [True: 0, False: 271k]
  ------------------
40306|      0|                case value_t::discarded:
  ------------------
  |  Branch (40306:17): [True: 0, False: 271k]
  ------------------
40307|      0|                default:
  ------------------
  |  Branch (40307:17): [True: 0, False: 271k]
  ------------------
40308|      0|                    break; // LCOV_EXCL_LINE
40309|   271k|            }
40310|   271k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15destroy_pointerISA_EEvRPT_:
40117|   220k|        {
40118|   220k|            if (ptr == nullptr)
  ------------------
  |  Branch (40118:17): [True: 0, False: 220k]
  ------------------
40119|      0|            {
40120|       |                // not initialized (e.g., due to exception in the ctor)
40121|      0|                return;
40122|      0|            }
40123|   220k|            AllocatorType<T> alloc;
40124|   220k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, ptr);
40125|   220k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, ptr, 1);
40126|   220k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value17destroy_containerENS0_6detail7value_tE:
40130|  51.6k|        {
40131|  51.6k|            if (
40132|  51.6k|                (t == value_t::object && object == nullptr) ||
  ------------------
  |  Branch (40132:18): [True: 21.2k, False: 30.3k]
  |  Branch (40132:42): [True: 0, False: 21.2k]
  ------------------
40133|  51.6k|                (t == value_t::array && array == nullptr)
  ------------------
  |  Branch (40133:18): [True: 30.3k, False: 21.2k]
  |  Branch (40133:41): [True: 0, False: 30.3k]
  ------------------
40134|  51.6k|            )
40135|      0|            {
40136|       |                // not initialized (e.g., due to exception in the ctor)
40137|      0|                return;
40138|      0|            }
40139|       |
40140|       |            // This json_value is not itself a basic_json, so the top-level
40141|       |            // container is first moved into a local stand-in ("cur"); a
40142|       |            // default-constructed data has a null pointer in its m_value
40143|       |            // (see data::m_value's initializer), so swapping it with *this
40144|       |            // leaves this union's own pointer null, and it is never looked
40145|       |            // at or freed a second time. The stand-ins are data, not
40146|       |            // basic_json, so that destroying a value never constructs a
40147|       |            // CustomBaseClass, whose constructor may allocate (#5995).
40148|  51.6k|            data cur;
40149|  51.6k|            cur.m_type = t;
40150|  51.6k|            std::swap(cur.m_value, *this);
40151|       |
40152|  51.6k|            destroy_bounded(cur, 0);
40153|  51.6k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2Ev:
45578|  1.26M|        data() noexcept = default;
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15destroy_boundedERNSE_4dataEm:
40160|   593k|        {
40161|   593k|            if (JSON_HEDLEY_UNLIKELY(depth >= detail::recursion_depth_limit()))
  ------------------
  |  | 1697|   593k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 11.8k, False: 582k]
  |  |  ------------------
  ------------------
40162|  11.8k|            {
40163|  11.8k|                destroy_walk(v);
40164|  11.8k|                return;
40165|  11.8k|            }
40166|       |
40167|   582k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40167:17): [True: 514k, False: 67.7k]
  ------------------
40168|   514k|            {
40169|   514k|                for (auto& child : *v.m_value.array)
  ------------------
  |  Branch (40169:34): [True: 977k, False: 514k]
  ------------------
40170|   977k|                {
40171|   977k|                    if (child.m_data.m_type == value_t::array || child.m_data.m_type == value_t::object)
  ------------------
  |  Branch (40171:25): [True: 481k, False: 496k]
  |  Branch (40171:66): [True: 27.1k, False: 468k]
  ------------------
40172|   508k|                    {
40173|   508k|                        destroy_bounded(child.m_data, depth + 1);
40174|   508k|                    }
40175|   977k|                }
40176|   514k|            }
40177|  67.7k|            else
40178|  67.7k|            {
40179|  67.7k|                for (auto& child : *v.m_value.object)
  ------------------
  |  Branch (40179:34): [True: 92.2k, False: 67.7k]
  ------------------
40180|  92.2k|                {
40181|  92.2k|                    if (child.second.m_data.m_type == value_t::array || child.second.m_data.m_type == value_t::object)
  ------------------
  |  Branch (40181:25): [True: 8.31k, False: 83.9k]
  |  Branch (40181:73): [True: 25.5k, False: 58.3k]
  ------------------
40182|  33.9k|                    {
40183|  33.9k|                        destroy_bounded(child.second.m_data, depth + 1);
40184|  33.9k|                    }
40185|  92.2k|                }
40186|  67.7k|            }
40187|       |
40188|       |            // only leaves and already destroyed (null) children remain
40189|   582k|            free_container(v);
40190|   582k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value12destroy_walkERNSE_4dataE:
40214|  11.8k|        {
40215|  11.8k|            data cur;
40216|  11.8k|            take(cur, top);
40217|       |
40218|  11.8k|            data prev; // value_t::null: no parent
40219|       |
40220|       |            // true right after cur was entered: its children have not been
40221|       |            // looked at yet. If none of them has children of its own, cur is
40222|       |            // freed in one go instead of child by child; this is tried once
40223|       |            // per container, so the walk stays linear.
40224|  11.8k|            bool fresh = true;
40225|       |
40226|   438k|            while (true)
  ------------------
  |  Branch (40226:20): [True: 438k, Folded]
  ------------------
40227|   438k|            {
40228|   438k|                const bool fresh_now = fresh;
40229|   438k|                fresh = false;
40230|   438k|                if (has_no_children(cur) || (fresh_now && all_children_leaves(cur)))
  ------------------
  |  Branch (40230:21): [True: 196k, False: 242k]
  |  Branch (40230:46): [True: 199k, False: 42.6k]
  |  Branch (40230:59): [True: 8.09k, False: 191k]
  ------------------
40231|   204k|                {
40232|   204k|                    if (prev.m_type == value_t::null)
  ------------------
  |  Branch (40232:25): [True: 11.8k, False: 192k]
  ------------------
40233|  11.8k|                    {
40234|  11.8k|                        free_container(cur);
40235|  11.8k|                        return; // back at the top with nothing left to do
40236|  11.8k|                    }
40237|       |
40238|       |                    // ascend: detach the grandparent link from prev's
40239|       |                    // walk_child() slot, drop that (now null) slot, free cur
40240|       |                    // (it is empty), then move up one level
40241|   192k|                    data gp;
40242|   192k|                    take(gp, walk_child(prev));
40243|   192k|                    pop_walk_child(prev);
40244|       |
40245|   192k|                    free_container(cur);
40246|       |
40247|   192k|                    take(cur, prev);
40248|   192k|                    take(prev, gp);
40249|   192k|                    continue;
40250|   204k|                }
40251|       |
40252|   234k|                data& cur_child_ref = walk_child(cur);
40253|       |
40254|   234k|                if (has_no_children(cur_child_ref))
  ------------------
  |  Branch (40254:21): [True: 41.6k, False: 192k]
  ------------------
40255|  41.6k|                {
40256|       |                    // scalar, or already-empty array/object
40257|  41.6k|                    pop_walk_child(cur);
40258|  41.6k|                    continue;
40259|  41.6k|                }
40260|       |
40261|       |                // descend into the non-empty child, reversing the
40262|       |                // link: its slot takes over prev, and the child becomes
40263|       |                // the new cur
40264|   192k|                data tmp;
40265|   192k|                take(tmp, cur_child_ref);
40266|   192k|                take(cur_child_ref, prev);
40267|   192k|                take(prev, cur);
40268|   192k|                take(cur, tmp);
40269|   192k|                fresh = true;
40270|   192k|            }
40271|  11.8k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value4takeERNSE_4dataESH_:
39993|  1.36M|        {
39994|  1.36M|            dst.m_type = src.m_type;
39995|  1.36M|            dst.m_value = src.m_value;
39996|  1.36M|            src.m_type = value_t::null;
39997|  1.36M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15has_no_childrenERKNSE_4dataE:
40001|  2.80M|        {
40002|  2.80M|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40002:17): [True: 1.46M, False: 1.34M]
  ------------------
40003|  1.46M|            {
40004|  1.46M|                return v.m_value.array->empty();
40005|  1.46M|            }
40006|  1.34M|            if (v.m_type == value_t::object)
  ------------------
  |  Branch (40006:17): [True: 177k, False: 1.16M]
  ------------------
40007|   177k|            {
40008|   177k|                return v.m_value.object->empty();
40009|   177k|            }
40010|  1.16M|            return true;
40011|  1.34M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKNSE_4dataE:
40018|   729k|        {
40019|       |            // array_t only needs forward iterators (see custom_array_type)
40020|   729k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40020:17): [True: 672k, False: 56.7k]
  ------------------
40021|   672k|            {
40022|   672k|                const auto& a = *v.m_value.array;
40023|   672k|                return std::all_of(a.begin(), a.end(), [](const basic_json & el)
40024|   672k|                {
40025|   672k|                    return has_no_children(el.m_data);
40026|   672k|                });
40027|   672k|            }
40028|  56.7k|            const auto& o = *v.m_value.object;
40029|  56.7k|            return std::all_of(o.begin(), o.end(), [](const typename object_t::value_type & el)
40030|  56.7k|            {
40031|  56.7k|                return has_no_children(el.second.m_data);
40032|  56.7k|            });
40033|   729k|        }
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKNSE_4dataEENKUlRKSE_E_clESK_:
40024|  1.21M|                {
40025|  1.21M|                    return has_no_children(el.m_data);
40026|  1.21M|                });
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKNSE_4dataEENKUlRKNS2_4pairIKSA_SE_EEE_clESN_:
40030|   134k|            {
40031|   134k|                return has_no_children(el.second.m_data);
40032|   134k|            });
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10walk_childERNSE_4dataE:
40064|   426k|        {
40065|   426k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40065:17): [True: 381k, False: 45.4k]
  ------------------
40066|   381k|            {
40067|   381k|                return v.m_value.array->back().m_data;
40068|   381k|            }
40069|  45.4k|            JSON_ASSERT(v.m_type == value_t::object);
  ------------------
  |  | 2643|  45.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40069:13): [True: 45.4k, False: 0]
  ------------------
40070|  45.4k|            return walk_child_it(*v.m_value.object)->second.m_data;
40071|  45.4k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13walk_child_itINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEEENT_8iteratorERSO_:
40056|  80.1k|        {
40057|  80.1k|            JSON_ASSERT(!o.empty());
  ------------------
  |  | 2643|  80.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40057:13): [True: 80.1k, False: 0]
  ------------------
40058|  80.1k|            return walk_child_it(o, typename std::iterator_traits<typename ObjectType_::iterator>::iterator_category());
40059|  80.1k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13walk_child_itINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEEENT_8iteratorERSO_NS2_26bidirectional_iterator_tagE:
40044|  80.1k|        {
40045|  80.1k|            return std::prev(o.end());
40046|  80.1k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14pop_walk_childERNSE_4dataE:
40078|   234k|        {
40079|   234k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40079:17): [True: 199k, False: 34.6k]
  ------------------
40080|   199k|            {
40081|   199k|                v.m_value.array->pop_back();
40082|   199k|            }
40083|  34.6k|            else
40084|  34.6k|            {
40085|  34.6k|                JSON_ASSERT(v.m_type == value_t::object);
  ------------------
  |  | 2643|  34.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40085:17): [True: 34.6k, False: 0]
  ------------------
40086|  34.6k|                v.m_value.object->erase(walk_child_it(*v.m_value.object));
40087|  34.6k|            }
40088|   234k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14free_containerERNSE_4dataE:
40096|   786k|        {
40097|   786k|            JSON_ASSERT(has_no_children(v) || all_children_leaves(v));
  ------------------
  |  | 2643|   786k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40097:13): [True: 256k, False: 529k]
  |  Branch (40097:13): [True: 529k, False: 0]
  |  Branch (40097:13): [True: 786k, False: 0]
  ------------------
40098|   786k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40098:17): [True: 701k, False: 84.9k]
  ------------------
40099|   701k|            {
40100|   701k|                AllocatorType<array_t> alloc;
40101|   701k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_value.array);
40102|   701k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_value.array, 1);
40103|   701k|            }
40104|  84.9k|            else
40105|  84.9k|            {
40106|  84.9k|                JSON_ASSERT(v.m_type == value_t::object);
  ------------------
  |  | 2643|  84.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40106:17): [True: 84.9k, False: 0]
  ------------------
40107|  84.9k|                AllocatorType<object_t> alloc;
40108|  84.9k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_value.object);
40109|  84.9k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_value.object, 1);
40110|  84.9k|            }
40111|   786k|            v.m_type = value_t::null; // avoid a double free if v is later destructed
40112|   786k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8IRKSD_EESE_OT_bb:
46048|  15.6k|    {
46049|  15.6k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bon8, strict, allow_exceptions);
46050|  15.6k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterIPKhSJ_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
45629|  21.3k|    {
45630|  21.3k|        basic_json result;
45631|  21.3k|        detail::json_sax_dom_binary_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
45632|  21.3k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
45633|  21.3k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (45633:13): [True: 1.54k, False: 19.7k]
  ------------------
45634|  1.54k|        {
45635|  1.54k|            result = value_t::discarded;
45636|  1.54k|        }
45637|  21.3k|        return result;
45638|  21.3k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EDn:
41578|   202k|    {
41579|   202k|        assert_invariant();
41580|   202k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEEC2ERSG_bPNS1_5lexerISG_SK_Lb0EEE:
17426|  21.3k|        : json_sax_dom_error_state(allow_exceptions_), root(r), m_lexer_ref(lexer_)
17427|  21.3k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail24json_sax_dom_error_stateC2Eb:
16324|  38.5k|        : allow_exceptions(allow_exceptions_)
16325|  38.5k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEEC2EOSK_NS1_14input_format_tENS1_15error_handler_tE:
18477|  21.3k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
18478|  21.3k|    {
18479|  21.3k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
18480|  21.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE3eofEv:
 4442|  1.79M|    {
 4443|  1.79M|        return static_cast<int_type>(std::char_traits<char>::eof());
 4444|  1.79M|    }
_ZN8nlohmann16json_abi_v3_12_06detail17little_endiannessEi:
18415|  46.8k|{
18416|  46.8k|    return *reinterpret_cast<char*>(&num) == 1;
18417|  46.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE9sax_parseEPSM_bNS1_18cbor_tag_handler_tE:
18502|  21.3k|    {
18503|  21.3k|        sax = sax_;
18504|  21.3k|        container_stack.clear();
18505|  21.3k|        bon8_pushback_size = 0;
18506|  21.3k|        bool result = false;
18507|       |
18508|  21.3k|        switch (input_format)
18509|  21.3k|        {
18510|      0|            case input_format_t::bson:
  ------------------
  |  Branch (18510:13): [True: 0, False: 21.3k]
  ------------------
18511|      0|                result = parse_bson_internal();
18512|      0|                break;
18513|       |
18514|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (18514:13): [True: 0, False: 21.3k]
  ------------------
18515|      0|                result = parse_cbor_internal(tag_handler);
18516|      0|                break;
18517|       |
18518|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (18518:13): [True: 0, False: 21.3k]
  ------------------
18519|      0|                result = parse_msgpack_internal();
18520|      0|                break;
18521|       |
18522|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (18522:13): [True: 0, False: 21.3k]
  ------------------
18523|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (18523:13): [True: 0, False: 21.3k]
  ------------------
18524|      0|                result = parse_ubjson_internal();
18525|      0|                break;
18526|       |
18527|  21.3k|            case input_format_t::bon8:
  ------------------
  |  Branch (18527:13): [True: 21.3k, False: 0]
  ------------------
18528|  21.3k|                result = parse_bon8_internal();
18529|  21.3k|                break;
18530|       |
18531|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (18531:13): [True: 0, False: 21.3k]
  ------------------
18532|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (18532:13): [True: 0, False: 21.3k]
  ------------------
18533|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18533:17): [Folded, False: 0]
  ------------------
18534|  21.3k|        }
18535|       |
18536|       |        // strict mode: next byte must be EOF
18537|  18.4k|        if (result && strict)
  ------------------
  |  Branch (18537:13): [True: 17.0k, False: 1.44k]
  |  Branch (18537:23): [True: 17.0k, False: 0]
  ------------------
18538|  17.0k|        {
18539|  17.0k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (18539:17): [True: 0, False: 17.0k]
  |  Branch (18539:59): [True: 0, False: 17.0k]
  ------------------
18540|      0|            {
18541|      0|                get_ignore_noop();
18542|      0|            }
18543|  17.0k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (18543:22): [True: 17.0k, False: 0]
  ------------------
18544|  17.0k|            {
18545|       |                // a string that ends a container hands back the byte after it
18546|  17.0k|                get_bon8();
18547|  17.0k|            }
18548|      0|            else
18549|      0|            {
18550|      0|                get();
18551|      0|            }
18552|       |
18553|  17.0k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  17.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 309, False: 16.7k]
  |  |  ------------------
  ------------------
18554|    309|            {
18555|    309|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
18556|    309|            }
18557|  17.0k|        }
18558|       |
18559|  18.1k|        return result;
18560|  18.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE6get_toIiEEbRT_PKc:
22855|  5.81k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  5.81k|        auto new_chars_read = ia.get_elements(&dest);
22859|  5.81k|        chars_read += new_chars_read;
22860|  5.81k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  5.81k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 51, False: 5.76k]
  |  |  ------------------
  ------------------
22861|     51|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     51|            ++chars_read;
22864|     51|            static_cast<void>(report_eof(context));
22865|     51|            return false;
22866|     51|        }
22867|  5.76k|        return true;
22868|  5.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIiEEmPT_m:
10174|  5.81k|    {
10175|  5.81k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  5.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIiEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  5.81k|    {
10233|  5.81k|        const std::size_t wanted = count * sizeof(T);
10234|  5.81k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  5.81k|        const std::size_t copied = (std::min)(wanted, available);
10236|  5.81k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  5.81k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 5.79k, False: 27]
  |  |  ------------------
  ------------------
10237|  5.79k|        {
10238|       |            // the copy must stay within both buffers: the caller-provided
10239|       |            // destination holds `wanted` bytes and the remaining input range
10240|       |            // holds `available` bytes, and `copied` is the minimum of the two
10241|  5.79k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  5.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 5.79k, False: 0]
  ------------------
10242|  5.79k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  5.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 5.79k, False: 0]
  ------------------
10243|       |            // &*current yields the raw address for both raw pointers and
10244|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
10245|  5.79k|            std::memcpy(dest, &*current, copied);
10246|  5.79k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  5.79k|        }
10248|  5.81k|        return copied;
10249|  5.81k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E15remaining_countEv:
10193|   195k|    {
10194|       |#if JSON_HAS_RANGES && defined(__cpp_lib_concepts) && defined(JSON_HAS_CPP_20)
10195|       |        // std::ranges::distance also supports sized sentinels of a different
10196|       |        // type (e.g. std::counted_iterator + std::default_sentinel_t)
10197|       |        return static_cast<std::size_t>(std::ranges::distance(current, end));
10198|       |#else
10199|   195k|        return static_cast<std::size_t>(std::distance(current, end));
10200|   195k|#endif
10201|   195k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE10report_eofEPKc:
23343|  3.75k|    {
23344|  3.75k|        return sax->parse_error(chars_read, "<end of file>",
23345|  3.75k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
23346|  3.75k|    }
_ZN8nlohmann16json_abi_v3_12_06detail24json_sax_dom_error_state11parse_errorINS1_11parse_errorEEEbmRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEERKT_:
16337|  9.28k|    {
16338|  9.28k|        errored = true;
16339|  9.28k|        static_cast<void>(ex);
16340|  9.28k|        if (allow_exceptions)
  ------------------
  |  Branch (16340:13): [True: 7.73k, False: 1.54k]
  ------------------
16341|  7.73k|        {
16342|  7.73k|            JSON_THROW(ex);
  ------------------
  |  | 2608|  7.73k|    #define JSON_THROW(exception) throw exception
  ------------------
16343|  7.73k|        }
16344|  1.54k|        return false;
16345|  9.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idEmRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5781|  9.28k|    {
 5782|  9.28k|        return create(static_cast<int>(id_), byte_, what_arg, context);
 5783|  9.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_imRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5766|  9.28k|    {
 5767|  9.28k|        const std::string w = concat(exception::name("parse_error", id_), "parse error",
 5768|  9.28k|                                     (byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""),
  ------------------
  |  Branch (5768:39): [True: 9.28k, False: 0]
  ------------------
 5769|  9.28k|                                     ": ", exception::diagnostics(context), what_arg);
 5770|  9.28k|        return {id_, byte_, w.c_str()};
 5771|  9.28k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_RA12_KcS9_RA3_SA_S9_RKS9_EEET_DpOT0_:
 5516|  9.28k|{
 5517|  9.28k|    OutStringType str;
 5518|  9.28k|    str.reserve(concat_length(args...));
 5519|  9.28k|    concat_into(str, std::forward<Args>(args)...);
 5520|  9.28k|    return str;
 5521|  9.28k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA12_cS9_A3_cS9_S9_EEEmRKT_DpRKT0_:
 5426|  9.28k|{
 5427|  9.28k|    return str.size() + concat_length(rest...);
 5428|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_S9_EEEmPKcDpRKT_:
 5420|  9.28k|{
 5421|  9.28k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_S9_EEEmRKT_DpRKT0_:
 5426|  9.28k|{
 5427|  9.28k|    return str.size() + concat_length(rest...);
 5428|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_EEEmPKcDpRKT_:
 5420|  9.28k|{
 5421|  9.28k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA12_KcS9_RA3_SA_S9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA12_KcJS9_RA3_SA_S9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA10_KcS9_EEET_DpOT0_:
 5516|  9.28k|{
 5517|  9.28k|    OutStringType str;
 5518|  9.28k|    str.reserve(concat_length(args...));
 5519|  9.28k|    concat_into(str, std::forward<Args>(args)...);
 5520|  9.28k|    return str;
 5521|  9.28k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA10_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11parse_errorC2EimPKc:
 5798|  9.28k|        : exception(id_, what_arg), byte(byte_) {}
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE17exception_messageERKSC_SP_:
23454|  4.64k|    {
23455|  4.64k|        std::string error_msg = "syntax error while parsing ";
23456|  4.64k|        error_msg += input_format_name(input_format);
23457|       |
23458|  4.64k|        return concat(error_msg, ' ', context, ": ", detail);
23459|  4.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17input_format_nameENS1_14input_format_tE:
 9263|  9.28k|{
 9264|  9.28k|    switch (format)
 9265|  9.28k|    {
 9266|      0|        case input_format_t::cbor:
  ------------------
  |  Branch (9266:9): [True: 0, False: 9.28k]
  ------------------
 9267|      0|            return "CBOR";
 9268|      0|        case input_format_t::msgpack:
  ------------------
  |  Branch (9268:9): [True: 0, False: 9.28k]
  ------------------
 9269|      0|            return "MessagePack";
 9270|      0|        case input_format_t::ubjson:
  ------------------
  |  Branch (9270:9): [True: 0, False: 9.28k]
  ------------------
 9271|      0|            return "UBJSON";
 9272|      0|        case input_format_t::bson:
  ------------------
  |  Branch (9272:9): [True: 0, False: 9.28k]
  ------------------
 9273|      0|            return "BSON";
 9274|      0|        case input_format_t::bjdata:
  ------------------
  |  Branch (9274:9): [True: 0, False: 9.28k]
  ------------------
 9275|      0|            return "BJData";
 9276|  9.28k|        case input_format_t::bon8:
  ------------------
  |  Branch (9276:9): [True: 9.28k, False: 0]
  ------------------
 9277|  9.28k|            return "BON8";
 9278|      0|        case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (9278:9): [True: 0, False: 9.28k]
  ------------------
 9279|      0|        default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (9279:9): [True: 0, False: 9.28k]
  ------------------
 9280|      0|            JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (9280:13): [Folded, False: 0]
  ------------------
 9281|      0|            return ""; // LCOV_EXCL_LINE
 9282|  9.28k|    }
 9283|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRS9_cRKS9_RA3_KcSC_EEET_DpOT0_:
 5516|  9.28k|{
 5517|  9.28k|    OutStringType str;
 5518|  9.28k|    str.reserve(concat_length(args...));
 5519|  9.28k|    concat_into(str, std::forward<Args>(args)...);
 5520|  9.28k|    return str;
 5521|  9.28k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cS9_EEEmRKT_DpRKT0_:
 5426|  9.28k|{
 5427|  9.28k|    return str.size() + concat_length(rest...);
 5428|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_EEEmcDpRKT_:
 5414|  9.28k|{
 5415|  9.28k|    return 1 + concat_length(rest...);
 5416|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_EEEmRKT_DpRKT0_:
 5426|  9.28k|{
 5427|  9.28k|    return str.size() + concat_length(rest...);
 5428|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERS9_JcRKS9_RA3_KcSC_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSH_OSI_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcJRKS9_RA3_KcSB_ETnNS3_9enable_ifIXaantsr24detect_string_can_appendIT_T0_EE5valuesr27detect_string_can_append_opISG_SH_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5488|  9.28k|{
 5489|  9.28k|    out += std::forward<Arg>(arg);
 5490|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5491|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRA3_KcSB_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  9.28k|{
 5480|  9.28k|    out.append(std::forward<Arg>(arg));
 5481|  9.28k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  9.28k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE9byte_swapIiEEvRT_:
22907|  5.76k|    {
22908|  5.76k|        constexpr std::size_t sz = sizeof(number);
22909|       |#ifdef __cpp_lib_byteswap
22910|       |        if constexpr (sz == 1)
22911|       |        {
22912|       |            return;
22913|       |        }
22914|       |        else if constexpr(std::is_integral_v<NumberType>)
22915|       |        {
22916|       |            number = std::byteswap(number);
22917|       |            return;
22918|       |        }
22919|       |        else
22920|       |        {
22921|       |#endif
22922|  5.76k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  17.3k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 11.5k, False: 5.76k]
  ------------------
22924|  11.5k|            {
22925|  11.5k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  11.5k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  5.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE15enter_containerEbmm:
18618|   438k|    {
18619|   438k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1697|   877k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 438k]
  |  |  |  Branch (1697:94): [True: 46.8k, False: 391k]
  |  |  ------------------
  ------------------
18620|      0|        {
18621|      0|            return false;
18622|      0|        }
18623|       |
18624|   438k|        container_stack.emplace_back(len, is_object, type_marker);
18625|   438k|        return true;
18626|   438k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12start_objectEm:
17483|  46.8k|    {
17484|  46.8k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
17485|       |
17486|       |#if JSON_DIAGNOSTIC_POSITIONS
17487|       |        // Ensure this is after the call to handle_value to ensure correct start position.
17488|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
17489|       |#endif
17490|       |
17491|  46.8k|        return check_container_size(*this, len, "object", ref_stack.back());
17492|  46.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
17566|   438k|    {
17567|   438k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 14.2k, False: 424k]
  ------------------
17568|  14.2k|        {
17569|  14.2k|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|  14.2k|            return &root;
17576|  14.2k|        }
17577|       |
17578|   424k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   424k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 393k, False: 30.8k]
  |  Branch (17578:9): [True: 30.8k, False: 0]
  |  Branch (17578:9): [True: 424k, False: 0]
  ------------------
17579|       |
17580|   424k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 393k, False: 30.8k]
  ------------------
17581|   393k|        {
17582|   393k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|   393k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   393k|        }
17590|       |
17591|  30.8k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  30.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 30.8k, False: 0]
  ------------------
17592|  30.8k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  30.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 30.8k, False: 0]
  ------------------
17593|  30.8k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  30.8k|        return object_element;
17600|  30.8k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8is_arrayEv:
42131|  3.63M|    {
42132|  3.63M|        return m_data.m_type == value_t::array;
42133|  3.63M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9is_objectEv:
42123|   689k|    {
42124|   689k|        return m_data.m_type == value_t::object;
42125|   689k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EOSE_:
41950|   732k|        : json_base_class_t(std::move(static_cast<json_base_class_t&>(other))),
41951|   732k|          m_data(std::move(other.m_data))
41952|       |#if JSON_DIAGNOSTIC_POSITIONS
41953|       |        , start_position(other.start_position)
41954|       |        , end_position(other.end_position)
41955|       |#endif
41956|   732k|    {
41957|       |        // check that the passed value is valid
41958|   732k|        other.assert_invariant(false);
41959|       |
41960|       |        // invalidate payload
41961|   732k|        other.m_data.m_type = value_t::null;
41962|   732k|        other.m_data.m_value = {};
41963|       |
41964|       |#if JSON_DIAGNOSTIC_POSITIONS
41965|       |        other.start_position = std::string::npos;
41966|       |        other.end_position = std::string::npos;
41967|       |#endif
41968|       |
41969|   732k|        set_parents();
41970|   732k|        assert_invariant();
41971|   732k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11set_parentsEv:
40353|  2.82M|    {
40354|       |#if JSON_DIAGNOSTICS
40355|       |        if (m_data.m_type == value_t::array)
40356|       |        {
40357|       |            for (auto& element : *m_data.m_value.array)
40358|       |            {
40359|       |                element.m_parent = this;
40360|       |            }
40361|       |        }
40362|       |        else if (m_data.m_type == value_t::object)
40363|       |        {
40364|       |            for (auto& element : *m_data.m_value.object)
40365|       |            {
40366|       |                element.second.m_parent = this;
40367|       |            }
40368|       |        }
40369|       |#endif
40370|  2.82M|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterIPKhSK_EEEESH_EEbRT_mPKcPT0_:
16179|   438k|{
16180|   438k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1697|   846k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 438k]
  |  |  |  Branch (1697:94): [True: 407k, False: 30.9k]
  |  |  |  Branch (1697:94): [True: 0, False: 407k]
  |  |  ------------------
  ------------------
16181|      0|    {
16182|      0|        return container_too_large_error(sax, len, kind, ref);
16183|      0|    }
16184|   438k|    return true;
16185|   438k|}
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8max_sizeEv:
44002|   726k|    {
44003|   726k|        if (m_data.m_type == value_t::array)
  ------------------
  |  Branch (44003:13): [True: 655k, False: 71.6k]
  ------------------
44004|   655k|        {
44005|       |            // delegate call to array_t::max_size()
44006|   655k|            return m_data.m_value.array->max_size();
44007|   655k|        }
44008|       |
44009|  71.6k|        if (m_data.m_type == value_t::object)
  ------------------
  |  Branch (44009:13): [True: 71.6k, False: 0]
  ------------------
44010|  71.6k|        {
44011|       |            // delegate call to object_t::max_size()
44012|  71.6k|            return m_data.m_value.object->max_size();
44013|  71.6k|        }
44014|       |
44015|       |        // all other types have max_size() == size()
44016|      0|        return size();
44017|  71.6k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4sizeEv:
43962|   121k|    {
43963|   121k|        switch (m_data.m_type)
43964|   121k|        {
43965|      0|            case value_t::null:
  ------------------
  |  Branch (43965:13): [True: 0, False: 121k]
  ------------------
43966|      0|            {
43967|       |                // null values are empty
43968|      0|                return 0;
43969|      0|            }
43970|       |
43971|   110k|            case value_t::array:
  ------------------
  |  Branch (43971:13): [True: 110k, False: 10.9k]
  ------------------
43972|   110k|            {
43973|       |                // delegate call to array_t::size()
43974|   110k|                return m_data.m_value.array->size();
43975|      0|            }
43976|       |
43977|  10.9k|            case value_t::object:
  ------------------
  |  Branch (43977:13): [True: 10.9k, False: 110k]
  ------------------
43978|  10.9k|            {
43979|       |                // delegate call to object_t::size()
43980|  10.9k|                return m_data.m_value.object->size();
43981|      0|            }
43982|       |
43983|      0|            case value_t::string:
  ------------------
  |  Branch (43983:13): [True: 0, False: 121k]
  ------------------
43984|      0|            case value_t::boolean:
  ------------------
  |  Branch (43984:13): [True: 0, False: 121k]
  ------------------
43985|      0|            case value_t::number_integer:
  ------------------
  |  Branch (43985:13): [True: 0, False: 121k]
  ------------------
43986|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (43986:13): [True: 0, False: 121k]
  ------------------
43987|      0|            case value_t::number_float:
  ------------------
  |  Branch (43987:13): [True: 0, False: 121k]
  ------------------
43988|      0|            case value_t::binary:
  ------------------
  |  Branch (43988:13): [True: 0, False: 121k]
  ------------------
43989|      0|            case value_t::discarded:
  ------------------
  |  Branch (43989:13): [True: 0, False: 121k]
  ------------------
43990|      0|            default:
  ------------------
  |  Branch (43990:13): [True: 0, False: 121k]
  ------------------
43991|      0|            {
43992|       |                // all other types have size 1
43993|      0|                return 1;
43994|      0|            }
43995|   121k|        }
43996|   121k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11start_arrayEm:
17520|   391k|    {
17521|   391k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
17522|       |
17523|       |#if JSON_DIAGNOSTIC_POSITIONS
17524|       |        // Ensure this is after the call to handle_value to ensure correct start position.
17525|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
17526|       |#endif
17527|       |
17528|   391k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1697|   391k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 391k]
  |  |  ------------------
  ------------------
17529|      0|        {
17530|      0|            return false;
17531|      0|        }
17532|       |
17533|   391k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (17533:13): [True: 367k, False: 24.1k]
  ------------------
17534|   367k|        {
17535|   367k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
17536|   367k|        }
17537|       |
17538|   391k|        return true;
17539|   391k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13reserve_arrayINSt3__16vectorINS0_10basic_jsonINS3_3mapES4_NS3_12basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS4_IhNSA_IhEEEEvEENSA_ISG_EEEEEEDTcmcldtfp_7reservefp0_Ecvv_EERT_mNS1_12priority_tagILj1EEE:
16150|   655k|{
16151|   655k|    constexpr std::size_t reserve_cap = 16384;
16152|   655k|    arr.reserve((std::min)(len, reserve_cap));
16153|   655k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE15container_frameC2Embm:
18584|   438k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail12unknown_sizeEv:
16132|  1.48M|{
16133|  1.48M|    return (std::numeric_limits<std::size_t>::max)();
16134|  1.48M|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE15leave_containerEv:
18650|   380k|    {
18651|   380k|        const bool is_object = container_stack.back().is_object;
18652|   380k|        container_stack.pop_back();
18653|   380k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (18653:16): [True: 40.5k, False: 339k]
  ------------------
18654|   380k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE10end_objectEv:
17506|  40.5k|    {
17507|  40.5k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  40.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17507:9): [True: 40.5k, False: 0]
  ------------------
17508|  40.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  40.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17508:9): [True: 40.5k, False: 0]
  ------------------
17509|       |
17510|       |#if JSON_DIAGNOSTIC_POSITIONS
17511|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17512|       |#endif
17513|       |
17514|  40.5k|        ref_stack.back()->set_parents();
17515|  40.5k|        ref_stack.pop_back();
17516|  40.5k|        return true;
17517|  40.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE9end_arrayEv:
17542|   339k|    {
17543|   339k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|   339k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17543:9): [True: 339k, False: 0]
  ------------------
17544|   339k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2643|   339k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17544:9): [True: 339k, False: 0]
  ------------------
17545|       |
17546|       |#if JSON_DIAGNOSTIC_POSITIONS
17547|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17548|       |#endif
17549|       |
17550|   339k|        ref_stack.back()->set_parents();
17551|   339k|        ref_stack.pop_back();
17552|   339k|        return true;
17553|   339k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE12unexpect_eofEPKc:
23326|  23.2k|    {
23327|  23.2k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  23.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 3.53k, False: 19.6k]
  |  |  ------------------
  ------------------
23328|  3.53k|        {
23329|  3.53k|            return report_eof(context);
23330|  3.53k|        }
23331|  19.6k|        return true;
23332|  23.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E14bulk_remainingEv:
10218|   172k|    {
10219|   172k|        return remaining_count();
10220|   172k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E9bulk_dataEv:
10212|   171k|    {
10213|   171k|        return &*current;
10214|   171k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E9bulk_skipEm:
10224|  30.0k|    {
10225|  30.0k|        std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(n));
10226|  30.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17valid_utf8_stringEPKhm:
13067|  78.5k|{
13068|  78.5k|    constexpr std::uint64_t high = 0x8080808080808080ull;
13069|  78.5k|    if (n <= 16)
  ------------------
  |  Branch (13069:9): [True: 77.2k, False: 1.31k]
  ------------------
13070|  77.2k|    {
13071|       |        // two overlapping words cover 8 to 16 bytes, one partial word fewer
13072|  77.2k|        std::uint64_t first = 0;
13073|  77.2k|        std::uint64_t last = 0;
13074|  77.2k|        if (n >= 8)
  ------------------
  |  Branch (13074:13): [True: 2.05k, False: 75.1k]
  ------------------
13075|  2.05k|        {
13076|  2.05k|            std::memcpy(&first, data, sizeof(first));
13077|  2.05k|            std::memcpy(&last, data + n - 8, sizeof(last));
13078|  2.05k|        }
13079|  75.1k|        else if (n != 0)
  ------------------
  |  Branch (13079:18): [True: 65.0k, False: 10.1k]
  ------------------
13080|  65.0k|        {
13081|  65.0k|            std::memcpy(&first, data, n);
13082|  65.0k|        }
13083|  77.2k|        if (((first | last) & high) == 0)
  ------------------
  |  Branch (13083:13): [True: 72.5k, False: 4.71k]
  ------------------
13084|  72.5k|        {
13085|  72.5k|            return true;
13086|  72.5k|        }
13087|  77.2k|    }
13088|  1.31k|#if JSON_SCAN_VECTOR_UTF8
13089|  1.31k|    else if (n >= 32
  ------------------
  |  Branch (13089:14): [True: 610, False: 702]
  ------------------
13090|    610|#if JSON_SCAN_SSSE3_DISPATCH
13091|    610|             && cpu_has_ssse3()
  ------------------
  |  Branch (13091:17): [True: 610, False: 0]
  ------------------
13092|  1.31k|#endif
13093|  1.31k|            )
13094|    610|    {
13095|    610|        const unsigned char* block = vector_utf8_valid_blocks(data, data + n);
13096|       |        // the rest from the start of a sequence that may be cut at block
13097|    908|        for (int i = 1; i <= 3 && block - i >= data; ++i)
  ------------------
  |  Branch (13097:25): [True: 848, False: 60]
  |  Branch (13097:35): [True: 848, False: 0]
  ------------------
13098|    848|        {
13099|    848|            const unsigned char c = block[-i];
13100|    848|            if (c < 0x80)
  ------------------
  |  Branch (13100:17): [True: 426, False: 422]
  ------------------
13101|    426|            {
13102|    426|                break;
13103|    426|            }
13104|    422|            if (c >= 0xC0)
  ------------------
  |  Branch (13104:17): [True: 124, False: 298]
  ------------------
13105|    124|            {
13106|    124|                block -= i;
13107|    124|                break;
13108|    124|            }
13109|    422|        }
13110|    610|        const auto checked = static_cast<std::size_t>(block - data);
13111|    610|        return checked + valid_utf8_prefix(block, n - checked) == n;
13112|    610|    }
13113|  5.41k|#endif
13114|  5.41k|    return valid_utf8_prefix(data, n) == n;
13115|  78.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail24vector_utf8_valid_blocksEPKhS3_:
12747|    610|{
12748|    610|    using lookup = utf8_lookup4<>;
12749|       |#if JSON_SCAN_NEON
12750|       |    const uint8x16_t t1h = vld1q_u8(lookup::byte_1_high.data());
12751|       |    const uint8x16_t t1l = vld1q_u8(lookup::byte_1_low.data());
12752|       |    const uint8x16_t t2h = vld1q_u8(lookup::byte_2_high.data());
12753|       |    uint8x16_t prev = vdupq_n_u8(0);
12754|       |    while (e - block >= 16)
12755|       |    {
12756|       |        const uint8x16_t in = vld1q_u8(block);
12757|       |        if (vmaxvq_u8(vorrq_u8(in, prev)) < 0x80)
12758|       |        {
12759|       |            // ASCII here, and no sequence from the block before to finish
12760|       |            prev = in;
12761|       |            block += 16;
12762|       |            continue;
12763|       |        }
12764|       |        const uint8x16_t prev1 = vextq_u8(prev, in, 15);
12765|       |        const uint8x16_t sc = vandq_u8(vandq_u8(vqtbl1q_u8(t1h, vshrq_n_u8(prev1, 4)), vqtbl1q_u8(t1l, vandq_u8(prev1, vdupq_n_u8(0x0F)))), vqtbl1q_u8(t2h, vshrq_n_u8(in, 4)));
12766|       |        const uint8x16_t must23 = vorrq_u8(vqsubq_u8(vextq_u8(prev, in, 14), vdupq_n_u8(0xE0 - 0x80)), vqsubq_u8(vextq_u8(prev, in, 13), vdupq_n_u8(0xF0 - 0x80)));
12767|       |        const uint8x16_t err = veorq_u8(vandq_u8(must23, vdupq_n_u8(0x80)), sc);
12768|       |        if (vmaxvq_u8(err) != 0)
12769|       |        {
12770|       |            break;
12771|       |        }
12772|       |        prev = in;
12773|       |        block += 16;
12774|       |    }
12775|       |#else
12776|    610|    const __m128i t1h = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(lookup::byte_1_high.data()))); // NOLINT(bugprone-casting-through-void)
12777|    610|    const __m128i t1l = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(lookup::byte_1_low.data()))); // NOLINT(bugprone-casting-through-void)
12778|    610|    const __m128i t2h = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(lookup::byte_2_high.data()))); // NOLINT(bugprone-casting-through-void)
12779|    610|    const __m128i nibble = _mm_set1_epi8(0x0F);
12780|    610|    const __m128i zero = _mm_setzero_si128();
12781|    610|    __m128i prev = zero;
12782|  3.76k|    while (e - block >= 16)
  ------------------
  |  Branch (12782:12): [True: 3.15k, False: 610]
  ------------------
12783|  3.15k|    {
12784|  3.15k|        const __m128i in = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(block))); // NOLINT(bugprone-casting-through-void)
12785|  3.15k|        if (_mm_movemask_epi8(_mm_or_si128(in, prev)) == 0)
  ------------------
  |  Branch (12785:13): [True: 2.34k, False: 812]
  ------------------
12786|  2.34k|        {
12787|  2.34k|            prev = in;
12788|  2.34k|            block += 16;
12789|  2.34k|            continue;
12790|  2.34k|        }
12791|    812|        const __m128i prev1 = _mm_alignr_epi8(in, prev, 15);
12792|    812|        const __m128i sc = _mm_and_si128(_mm_and_si128(_mm_shuffle_epi8(t1h, _mm_and_si128(_mm_srli_epi16(prev1, 4), nibble)),
12793|    812|                                         _mm_shuffle_epi8(t1l, _mm_and_si128(prev1, nibble))),
12794|    812|                                         _mm_shuffle_epi8(t2h, _mm_and_si128(_mm_srli_epi16(in, 4), nibble)));
12795|    812|        const __m128i must23 = _mm_or_si128(_mm_subs_epu8(_mm_alignr_epi8(in, prev, 14), _mm_set1_epi8(0xE0 - 0x80)),
12796|    812|                                            _mm_subs_epu8(_mm_alignr_epi8(in, prev, 13), _mm_set1_epi8(0xF0 - 0x80)));
12797|    812|        const __m128i err = _mm_xor_si128(_mm_and_si128(must23, _mm_set1_epi8(static_cast<char>(-128))), sc);
12798|    812|        if (_mm_movemask_epi8(_mm_cmpeq_epi8(err, zero)) != 0xFFFF)
  ------------------
  |  Branch (12798:13): [True: 0, False: 812]
  ------------------
12799|      0|        {
12800|      0|            break;
12801|      0|        }
12802|    812|        prev = in;
12803|    812|        block += 16;
12804|    812|    }
12805|    610|#endif
12806|    610|    return block;
12807|    610|}
_ZN8nlohmann16json_abi_v3_12_06detail17valid_utf8_prefixEPKhm:
13027|   269k|{
13028|   269k|    constexpr std::uint64_t high = 0x8080808080808080ull;
13029|   269k|    std::size_t pos = 0;
13030|   436k|    while (pos < n)
  ------------------
  |  Branch (13030:12): [True: 429k, False: 6.49k]
  ------------------
13031|   429k|    {
13032|   429k|        if (pos + 8 <= n)
  ------------------
  |  Branch (13032:13): [True: 372k, False: 57.0k]
  ------------------
13033|   372k|        {
13034|   372k|            std::uint64_t word = 0;
13035|   372k|            std::memcpy(&word, data + pos, sizeof(word));
13036|   372k|            if ((word & high) == 0)
  ------------------
  |  Branch (13036:17): [True: 25.5k, False: 347k]
  ------------------
13037|  25.5k|            {
13038|  25.5k|                pos += 8;
13039|  25.5k|                continue;
13040|  25.5k|            }
13041|   372k|        }
13042|       |
13043|   404k|        if (data[pos] < 0x80u)
  ------------------
  |  Branch (13043:13): [True: 110k, False: 293k]
  ------------------
13044|   110k|        {
13045|   110k|            ++pos;
13046|   110k|            continue;
13047|   110k|        }
13048|       |
13049|   293k|        const std::size_t seq = validate_one_utf8(data + pos, n - pos);
13050|   293k|        if (seq == 0)
  ------------------
  |  Branch (13050:13): [True: 263k, False: 30.4k]
  ------------------
13051|   263k|        {
13052|   263k|            break; // ill-formed or truncated
13053|   263k|        }
13054|  30.4k|        pos += seq;
13055|  30.4k|    }
13056|   269k|    return pos;
13057|   269k|}
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE3keyERSC_:
17495|  96.3k|    {
17496|  96.3k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  96.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17496:9): [True: 96.3k, False: 0]
  ------------------
17497|  96.3k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  96.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17497:9): [True: 96.3k, False: 0]
  ------------------
17498|       |
17499|       |        // add null at the given key and store the reference for later; the
17500|       |        // key is moved, as the lexer starts the next token with reset()
17501|  96.3k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](std::move(val)));
17502|  96.3k|        return true;
17503|  96.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE6get_toIdEEbRT_PKc:
22855|  4.92k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  4.92k|        auto new_chars_read = ia.get_elements(&dest);
22859|  4.92k|        chars_read += new_chars_read;
22860|  4.92k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  4.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 72, False: 4.85k]
  |  |  ------------------
  ------------------
22861|     72|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     72|            ++chars_read;
22864|     72|            static_cast<void>(report_eof(context));
22865|     72|            return false;
22866|     72|        }
22867|  4.85k|        return true;
22868|  4.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIdEEmPT_m:
10174|  4.92k|    {
10175|  4.92k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  4.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIdEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  4.92k|    {
10233|  4.92k|        const std::size_t wanted = count * sizeof(T);
10234|  4.92k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  4.92k|        const std::size_t copied = (std::min)(wanted, available);
10236|  4.92k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  4.92k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 4.89k, False: 36]
  |  |  ------------------
  ------------------
10237|  4.89k|        {
10238|       |            // the copy must stay within both buffers: the caller-provided
10239|       |            // destination holds `wanted` bytes and the remaining input range
10240|       |            // holds `available` bytes, and `copied` is the minimum of the two
10241|  4.89k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  4.89k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 4.89k, False: 0]
  ------------------
10242|  4.89k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  4.89k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 4.89k, False: 0]
  ------------------
10243|       |            // &*current yields the raw address for both raw pointers and
10244|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
10245|  4.89k|            std::memcpy(dest, &*current, copied);
10246|  4.89k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  4.89k|        }
10248|  4.92k|        return copied;
10249|  4.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE9byte_swapERd:
22887|  4.85k|    {
22888|  4.85k|        static_assert(sizeof(double) == sizeof(std::uint64_t), "double must have 64 bits");
22889|  4.85k|        std::uint64_t bits{};
22890|  4.85k|        std::memcpy(&bits, &number, sizeof(bits));
22891|  4.85k|        bits = byteswap(bits);
22892|  4.85k|        std::memcpy(&number, &bits, sizeof(bits));
22893|  4.85k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE10emit_floatIdEEbT_:
23034|  4.85k|    {
23035|  4.85k|        const auto result = static_cast<number_float_t>(number);
23036|  4.85k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  9.69k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 4.85k]
  |  |  |  Branch (1697:94): [True: 4.84k, False: 15]
  |  |  |  Branch (1697:94): [True: 0, False: 4.84k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  4.85k|        return sax->number_float(result, no_source);
23041|  4.85k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE16get_token_stringEv:
23443|  1.77k|    {
23444|  1.77k|        return hex_byte(static_cast<std::uint8_t>(current));
23445|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12number_floatEdRKSC_:
17461|  42.7k|    {
17462|  42.7k|        handle_value(val);
17463|  42.7k|        return true;
17464|  42.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRdEEPSG_OT_:
17566|  42.7k|    {
17567|  42.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 2.21k, False: 40.5k]
  ------------------
17568|  2.21k|        {
17569|  2.21k|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|  2.21k|            return &root;
17576|  2.21k|        }
17577|       |
17578|  40.5k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  40.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 28.4k, False: 12.0k]
  |  Branch (17578:9): [True: 12.0k, False: 0]
  |  Branch (17578:9): [True: 40.5k, False: 0]
  ------------------
17579|       |
17580|  40.5k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 28.4k, False: 12.0k]
  ------------------
17581|  28.4k|        {
17582|  28.4k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  28.4k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  28.4k|        }
17590|       |
17591|  12.0k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  12.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 12.0k, False: 0]
  ------------------
17592|  12.0k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  12.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 12.0k, False: 0]
  ------------------
17593|  12.0k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  12.0k|        return object_element;
17600|  12.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRddTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
41596|  77.4k|    {
41597|  77.4k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|  77.4k|        set_parents();
41599|  77.4k|        assert_invariant();
41600|  77.4k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIdvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERdEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 8422|  77.4k|    {
 8423|  77.4k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|  77.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERdEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 8366|  77.4k|    {
 8367|  77.4k|        return to_json(j, std::forward<T>(val));
 8368|  77.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEdTnNS4_9enable_ifIXsr3std17is_floating_pointIT0_EE5valueEiE4typeELi0EEEvRT_SI_:
 8059|  77.4k|{
 8060|  77.4k|    external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
 8061|  77.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE7EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_14number_float_tE:
 7849|  77.4k|    {
 7850|  77.4k|        j.replace_value(value_t::number_float, val);
 7851|  77.4k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13replace_valueENS0_6detail7value_tERKNSE_10json_valueE:
40376|   602k|    {
40377|   602k|        m_data.m_value.destroy(m_data.m_type);
40378|   602k|        m_data.m_value = v;
40379|   602k|        m_data.m_type = t;
40380|   602k|        set_parents();
40381|   602k|        assert_invariant();
40382|   602k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Ed:
39864|  77.4k|        json_value(number_float_t v) noexcept : number_float(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE6stringERSC_:
17467|   122k|    {
17468|       |        // json_sax documents that the passed value may be moved from,
17469|       |        // so hand the buffer over instead of copying it
17470|   122k|        handle_value(std::move(val));
17471|   122k|        return true;
17472|   122k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueISC_EEPSG_OT_:
17566|   122k|    {
17567|   122k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 1.37k, False: 121k]
  ------------------
17568|  1.37k|        {
17569|  1.37k|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|  1.37k|            return &root;
17576|  1.37k|        }
17577|       |
17578|   121k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   121k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 107k, False: 14.2k]
  |  Branch (17578:9): [True: 14.2k, False: 0]
  |  Branch (17578:9): [True: 121k, False: 0]
  ------------------
17579|       |
17580|   121k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 107k, False: 14.2k]
  ------------------
17581|   107k|        {
17582|   107k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|   107k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   107k|        }
17590|       |
17591|  14.2k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  14.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 14.2k, False: 0]
  ------------------
17592|  14.2k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  14.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 14.2k, False: 0]
  ------------------
17593|  14.2k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  14.2k|        return object_element;
17600|  14.2k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ISA_SA_TnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SH_EE5valueEiE4typeELi0EEEOT_:
41596|   220k|    {
41597|   220k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|   220k|        set_parents();
41599|   220k|        assert_invariant();
41600|   220k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerINSt3__112basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEvE7to_jsonINS0_10basic_jsonINS2_3mapENS2_6vectorES8_blmdS6_S1_NSD_IhNS6_IhEEEEvEES8_EEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSI_:
 8422|   220k|    {
 8423|   220k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|   220k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEESD_EEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSI_:
 8366|   220k|    {
 8367|   220k|        return to_json(j, std::forward<T>(val));
 8368|   220k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_ONSH_8string_tE:
 8052|   220k|{
 8053|   220k|    external_constructor<value_t::string>::construct(j, std::move(s));
 8054|   220k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE3EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_ONSK_8string_tE:
 7811|   220k|    {
 7812|   220k|        const typename BasicJsonType::json_value value(std::move(s));
 7813|   220k|        j.replace_value(value_t::string, value);
 7814|   220k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2EOSA_:
39955|   220k|        json_value(string_t&& value) : string(create<string_t>(std::move(value))) {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createISA_JSA_EEEPT_DpOT0_:
39788|   220k|    {
39789|   220k|        AllocatorType<T> alloc;
39790|   220k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
39791|       |
39792|   220k|        auto deleter = [&](T * obj)
39793|   220k|        {
39794|   220k|            AllocatorTraits::deallocate(alloc, obj, 1);
39795|   220k|        };
39796|   220k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
39797|   220k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
39798|   220k|        JSON_ASSERT(obj);
  ------------------
  |  | 2643|   220k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (39798:9): [True: 220k, False: 0]
  ------------------
39799|   220k|        return obj.release();
39800|   220k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE7booleanEb:
17443|  74.6k|    {
17444|  74.6k|        handle_value(val);
17445|  74.6k|        return true;
17446|  74.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRbEEPSG_OT_:
17566|  74.6k|    {
17567|  74.6k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 11, False: 74.6k]
  ------------------
17568|     11|        {
17569|     11|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|     11|            return &root;
17576|     11|        }
17577|       |
17578|  74.6k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  74.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 69.8k, False: 4.83k]
  |  Branch (17578:9): [True: 4.83k, False: 0]
  |  Branch (17578:9): [True: 74.6k, False: 0]
  ------------------
17579|       |
17580|  74.6k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 69.8k, False: 4.83k]
  ------------------
17581|  69.8k|        {
17582|  69.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  69.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  69.8k|        }
17590|       |
17591|  4.83k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.83k, False: 0]
  ------------------
17592|  4.83k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.83k, False: 0]
  ------------------
17593|  4.83k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  4.83k|        return object_element;
17600|  4.83k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRbbTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
41596|   132k|    {
41597|   132k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|   132k|        set_parents();
41599|   132k|        assert_invariant();
41600|   132k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIbvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERbEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 8422|   132k|    {
 8423|   132k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|   132k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERbEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 8366|   132k|    {
 8367|   132k|        return to_json(j, std::forward<T>(val));
 8368|   132k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEbTnNS4_9enable_ifIXsr3std7is_sameIT0_NT_9boolean_tEEE5valueEiE4typeELi0EEEvRSJ_SI_:
 8026|   132k|{
 8027|   132k|    external_constructor<value_t::boolean>::construct(j, b);
 8028|   132k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE4EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_9boolean_tE:
 7794|   132k|    {
 7795|   132k|        j.replace_value(value_t::boolean, b);
 7796|   132k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Eb:
39858|   132k|        json_value(boolean_t v) noexcept : boolean(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE4nullEv:
17437|  14.7k|    {
17438|  14.7k|        handle_value(nullptr);
17439|  14.7k|        return true;
17440|  14.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIDnEEPSG_OT_:
17566|  14.7k|    {
17567|  14.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 7, False: 14.7k]
  ------------------
17568|      7|        {
17569|      7|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|      7|            return &root;
17576|      7|        }
17577|       |
17578|  14.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  14.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 8.52k, False: 6.22k]
  |  Branch (17578:9): [True: 6.22k, False: 0]
  |  Branch (17578:9): [True: 14.7k, False: 0]
  ------------------
17579|       |
17580|  14.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 8.52k, False: 6.22k]
  ------------------
17581|  8.52k|        {
17582|  8.52k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  8.52k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  8.52k|        }
17590|       |
17591|  6.22k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  6.22k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 6.22k, False: 0]
  ------------------
17592|  6.22k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  6.22k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 6.22k, False: 0]
  ------------------
17593|  6.22k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  6.22k|        return object_element;
17600|  6.22k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE14number_integerEl:
17449|  39.7k|    {
17450|  39.7k|        handle_value(val);
17451|  39.7k|        return true;
17452|  39.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRlEEPSG_OT_:
17566|  39.7k|    {
17567|  39.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 1.50k, False: 38.2k]
  ------------------
17568|  1.50k|        {
17569|  1.50k|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|  1.50k|            return &root;
17576|  1.50k|        }
17577|       |
17578|  38.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  38.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 26.3k, False: 11.9k]
  |  Branch (17578:9): [True: 11.9k, False: 0]
  |  Branch (17578:9): [True: 38.2k, False: 0]
  ------------------
17579|       |
17580|  38.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 26.3k, False: 11.9k]
  ------------------
17581|  26.3k|        {
17582|  26.3k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  26.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  26.3k|        }
17590|       |
17591|  11.9k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  11.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 11.9k, False: 0]
  ------------------
17592|  11.9k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  11.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 11.9k, False: 0]
  ------------------
17593|  11.9k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  11.9k|        return object_element;
17600|  11.9k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRllTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
41596|  72.7k|    {
41597|  72.7k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|  72.7k|        set_parents();
41599|  72.7k|        assert_invariant();
41600|  72.7k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerIlvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERlEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 8422|  72.7k|    {
 8423|  72.7k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|  72.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERlEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 8366|  72.7k|    {
 8367|  72.7k|        return to_json(j, std::forward<T>(val));
 8368|  72.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEElTnNS4_9enable_ifIXsr33is_compatible_number_integer_typeIT_T0_EE5valueEiE4typeELi0EEEvRSI_SJ_:
 8073|  72.7k|{
 8074|  72.7k|    external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
 8075|  72.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE5EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_16number_integer_tE:
 7869|  72.7k|    {
 7870|  72.7k|        j.replace_value(value_t::number_integer, val);
 7871|  72.7k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2El:
39860|  72.7k|        json_value(number_integer_t v) noexcept : number_integer(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE15number_unsignedEm:
17455|  55.1k|    {
17456|  55.1k|        handle_value(val);
17457|  55.1k|        return true;
17458|  55.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRmEEPSG_OT_:
17566|  55.1k|    {
17567|  55.1k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 1.00k, False: 54.1k]
  ------------------
17568|  1.00k|        {
17569|  1.00k|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|  1.00k|            return &root;
17576|  1.00k|        }
17577|       |
17578|  54.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  54.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 38.3k, False: 15.8k]
  |  Branch (17578:9): [True: 15.8k, False: 0]
  |  Branch (17578:9): [True: 54.1k, False: 0]
  ------------------
17579|       |
17580|  54.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 38.3k, False: 15.8k]
  ------------------
17581|  38.3k|        {
17582|  38.3k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  38.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  38.3k|        }
17590|       |
17591|  15.8k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  15.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 15.8k, False: 0]
  ------------------
17592|  15.8k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  15.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 15.8k, False: 0]
  ------------------
17593|  15.8k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  15.8k|        return object_element;
17600|  15.8k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2IRmmTnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SI_EE5valueEiE4typeELi0EEEOT_:
41596|  99.7k|    {
41597|  99.7k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|  99.7k|        set_parents();
41599|  99.7k|        assert_invariant();
41600|  99.7k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerImvE7to_jsonINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_S1_NS7_IhNSB_IhEEEEvEERmEEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 8422|  99.7k|    {
 8423|  99.7k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|  99.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEERmEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSJ_:
 8366|  99.7k|    {
 8367|  99.7k|        return to_json(j, std::forward<T>(val));
 8368|  99.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEmTnNS4_9enable_ifIXsr26is_compatible_integer_typeINS4_11conditionalIXsr3std7is_sameINT_16number_integer_tENSJ_17number_unsigned_tEEE5valueENS1_27same_as_number_integer_typeESL_E4typeET0_EE5valueEiE4typeELi0EEEvRSJ_SP_:
 8066|  99.7k|{
 8067|  99.7k|    external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
 8068|  99.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE6EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_NSK_17number_unsigned_tE:
 7859|  99.7k|    {
 7860|  99.7k|        j.replace_value(value_t::number_unsigned, val);
 7861|  99.7k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Em:
39862|  99.7k|        json_value(detail::number_unsigned_overload_type<NumberIntegerType, NumberUnsignedType> v) noexcept : number_unsigned(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE6get_toIlEEbRT_PKc:
22855|  3.99k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  3.99k|        auto new_chars_read = ia.get_elements(&dest);
22859|  3.99k|        chars_read += new_chars_read;
22860|  3.99k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  3.99k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 51, False: 3.94k]
  |  |  ------------------
  ------------------
22861|     51|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     51|            ++chars_read;
22864|     51|            static_cast<void>(report_eof(context));
22865|     51|            return false;
22866|     51|        }
22867|  3.94k|        return true;
22868|  3.99k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIlEEmPT_m:
10174|  3.99k|    {
10175|  3.99k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  3.99k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIlEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  3.99k|    {
10233|  3.99k|        const std::size_t wanted = count * sizeof(T);
10234|  3.99k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  3.99k|        const std::size_t copied = (std::min)(wanted, available);
10236|  3.99k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  3.99k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.97k, False: 21]
  |  |  ------------------
  ------------------
10237|  3.97k|        {
10238|       |            // the copy must stay within both buffers: the caller-provided
10239|       |            // destination holds `wanted` bytes and the remaining input range
10240|       |            // holds `available` bytes, and `copied` is the minimum of the two
10241|  3.97k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  3.97k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 3.97k, False: 0]
  ------------------
10242|  3.97k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  3.97k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 3.97k, False: 0]
  ------------------
10243|       |            // &*current yields the raw address for both raw pointers and
10244|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
10245|  3.97k|            std::memcpy(dest, &*current, copied);
10246|  3.97k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  3.97k|        }
10248|  3.99k|        return copied;
10249|  3.99k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE9byte_swapIlEEvRT_:
22907|  3.94k|    {
22908|  3.94k|        constexpr std::size_t sz = sizeof(number);
22909|       |#ifdef __cpp_lib_byteswap
22910|       |        if constexpr (sz == 1)
22911|       |        {
22912|       |            return;
22913|       |        }
22914|       |        else if constexpr(std::is_integral_v<NumberType>)
22915|       |        {
22916|       |            number = std::byteswap(number);
22917|       |            return;
22918|       |        }
22919|       |        else
22920|       |        {
22921|       |#endif
22922|  3.94k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  19.7k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 15.7k, False: 3.94k]
  ------------------
22924|  15.7k|            {
22925|  15.7k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  15.7k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  3.94k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE11emit_signedIlEEbT_:
22980|  15.7k|    {
22981|  15.7k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  15.7k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 15.7k, False: 0]
  |  |  ------------------
  ------------------
22982|  15.7k|        {
22983|  15.7k|            return sax->number_integer(static_cast<number_integer_t>(number));
22984|  15.7k|        }
22985|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (22985:13): [True: 0, False: 0]
  ------------------
22986|      0|        {
22987|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
22988|      0|        }
22989|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
22990|      0|        return emit_float(static_cast<long double>(number));
22991|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIllEEbT0_:
 5295|  28.6k|{
 5296|  28.6k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  28.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IllLb1EvE4testEl:
 5288|  28.6k|    {
 5289|  28.6k|        return true;
 5290|  28.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE13emit_unsignedImEEbT_:
23008|  13.5k|    {
23009|  13.5k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|  13.5k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 13.5k, False: 0]
  |  |  ------------------
  ------------------
23010|  13.5k|        {
23011|  13.5k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|  13.5k|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|  13.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImmEEbT0_:
 5295|  24.1k|{
 5296|  24.1k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImmLb1EvE4testEm:
 5288|  24.1k|    {
 5289|  24.1k|        return true;
 5290|  24.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE25leave_container_and_checkERb:
18667|   380k|    {
18668|   380k|        if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1697|   380k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 380k]
  |  |  ------------------
  ------------------
18669|      0|        {
18670|      0|            return false;
18671|      0|        }
18672|   380k|        value_complete = container_stack.empty();
18673|   380k|        return true;
18674|   380k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA16_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5420|    618|{
 5421|    618|    return ::strlen(cstr) + concat_length(rest...);
 5422|    618|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|    618|{
 5480|    618|    out.append(std::forward<Arg>(arg));
 5481|    618|    concat_into(out, std::forward<Args>(rest)...);
 5482|    618|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA16_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|    618|{
 5480|    618|    out.append(std::forward<Arg>(arg));
 5481|    618|    concat_into(out, std::forward<Args>(rest)...);
 5482|    618|}
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castIllTnNSt3__19enable_ifIXsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 5188|  44.0k|{
 5189|  44.0k|    return value;
 5190|  44.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE10emit_floatIfEEbT_:
23034|  8.32k|    {
23035|  8.32k|        const auto result = static_cast<number_float_t>(number);
23036|  8.32k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  14.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 8.32k]
  |  |  |  Branch (1697:94): [True: 6.21k, False: 2.11k]
  |  |  |  Branch (1697:94): [True: 0, False: 6.21k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  8.32k|        return sax->number_float(result, no_source);
23041|  8.32k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE9byte_swapERf:
22897|  8.32k|    {
22898|  8.32k|        static_assert(sizeof(float) == sizeof(std::uint32_t), "float must have 32 bits");
22899|  8.32k|        std::uint32_t bits{};
22900|  8.32k|        std::memcpy(&bits, &number, sizeof(bits));
22901|  8.32k|        bits = byteswap(bits);
22902|  8.32k|        std::memcpy(&number, &bits, sizeof(bits));
22903|  8.32k|    }
_ZN8nlohmann16json_abi_v3_12_06detail8byteswapEj:
 9082|  20.5k|{
 9083|  20.5k|#if defined(__GNUC__) || defined(__clang__)
 9084|  20.5k|    return __builtin_bswap32(x);
 9085|       |#elif defined(_MSC_VER)
 9086|       |    return _byteswap_ulong(x);
 9087|       |#elif defined(__cpp_lib_byteswap)
 9088|       |    return std::byteswap(x);
 9089|       |#else
 9090|       |    return ((x & 0x000000FFu) << 24u) | ((x & 0x0000FF00u) << 8u)
 9091|       |           | ((x & 0x00FF0000u) >> 8u) | ((x & 0xFF000000u) >> 24u);
 9092|       |#endif
 9093|  20.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE11enter_arrayEmm:
18630|   391k|    {
18631|   391k|        return enter_container(/*is_object*/false, len, type_marker);
18632|   391k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE12enter_objectEmm:
18636|  46.8k|    {
18637|  46.8k|        return enter_container(/*is_object*/true, len, type_marker);
18638|  46.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE15unexpected_byteEPKcSP_:
23421|    576|    {
23422|    576|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
23423|    576|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRPKcRA5_SA_S9_EEET_DpOT0_:
 5516|  1.15k|{
 5517|  1.15k|    OutStringType str;
 5518|  1.15k|    str.reserve(concat_length(args...));
 5519|  1.15k|    concat_into(str, std::forward<Args>(args)...);
 5520|  1.15k|    return str;
 5521|  1.15k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA5_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5420|  1.15k|{
 5421|  1.15k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  1.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA5_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  1.15k|{
 5480|  1.15k|    out.append(std::forward<Arg>(arg));
 5481|  1.15k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE10get_numberIfLb0EEEbRT_:
22948|  8.37k|    {
22949|       |        // read in the original format
22950|       |
22951|  8.37k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  8.37k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 8.35k]
  |  |  ------------------
  ------------------
22952|     16|        {
22953|     16|            return false;
22954|     16|        }
22955|  8.35k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 8.32k, False: 32]
  |  Branch (22955:34): [Folded, False: 8.32k]
  |  Branch (22955:57): [True: 0, False: 8.32k]
  ------------------
22956|  8.32k|        {
22957|  8.32k|            byte_swap(result);
22958|  8.32k|        }
22959|  8.35k|        return true;
22960|  8.37k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE6get_toIfEEbRT_PKc:
22855|  8.37k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  8.37k|        auto new_chars_read = ia.get_elements(&dest);
22859|  8.37k|        chars_read += new_chars_read;
22860|  8.37k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  8.37k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 48, False: 8.32k]
  |  |  ------------------
  ------------------
22861|     48|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     48|            ++chars_read;
22864|     48|            static_cast<void>(report_eof(context));
22865|     48|            return false;
22866|     48|        }
22867|  8.32k|        return true;
22868|  8.37k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIfEEmPT_m:
10174|  8.37k|    {
10175|  8.37k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  8.37k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIfEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  8.37k|    {
10233|  8.37k|        const std::size_t wanted = count * sizeof(T);
10234|  8.37k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  8.37k|        const std::size_t copied = (std::min)(wanted, available);
10236|  8.37k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  8.37k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 8.35k, False: 24]
  |  |  ------------------
  ------------------
10237|  8.35k|        {
10238|       |            // the copy must stay within both buffers: the caller-provided
10239|       |            // destination holds `wanted` bytes and the remaining input range
10240|       |            // holds `available` bytes, and `copied` is the minimum of the two
10241|  8.35k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  8.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 8.35k, False: 0]
  ------------------
10242|  8.35k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  8.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 8.35k, False: 0]
  ------------------
10243|       |            // &*current yields the raw address for both raw pointers and
10244|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
10245|  8.35k|            std::memcpy(dest, &*current, copied);
10246|  8.35k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  8.35k|        }
10248|  8.37k|        return copied;
10249|  8.37k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE10get_numberIdLb0EEEbRT_:
22948|  4.92k|    {
22949|       |        // read in the original format
22950|       |
22951|  4.92k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  4.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 24, False: 4.90k]
  |  |  ------------------
  ------------------
22952|     24|        {
22953|     24|            return false;
22954|     24|        }
22955|  4.90k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 4.85k, False: 48]
  |  Branch (22955:34): [Folded, False: 4.85k]
  |  Branch (22955:57): [True: 0, False: 4.85k]
  ------------------
22956|  4.85k|        {
22957|  4.85k|            byte_swap(result);
22958|  4.85k|        }
22959|  4.90k|        return true;
22960|  4.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE10get_numberIiLb0EEEbRT_:
22948|  5.81k|    {
22949|       |        // read in the original format
22950|       |
22951|  5.81k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  5.81k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 5.80k]
  |  |  ------------------
  ------------------
22952|     17|        {
22953|     17|            return false;
22954|     17|        }
22955|  5.80k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 5.76k, False: 34]
  |  Branch (22955:34): [Folded, False: 5.76k]
  |  Branch (22955:57): [True: 0, False: 5.76k]
  ------------------
22956|  5.76k|        {
22957|  5.76k|            byte_swap(result);
22958|  5.76k|        }
22959|  5.80k|        return true;
22960|  5.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE10get_numberIlLb0EEEbRT_:
22948|  3.99k|    {
22949|       |        // read in the original format
22950|       |
22951|  3.99k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  3.99k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 3.97k]
  |  |  ------------------
  ------------------
22952|     17|        {
22953|     17|            return false;
22954|     17|        }
22955|  3.97k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 3.94k, False: 34]
  |  Branch (22955:34): [Folded, False: 3.94k]
  |  Branch (22955:57): [True: 0, False: 3.94k]
  ------------------
22956|  3.94k|        {
22957|  3.94k|            byte_swap(result);
22958|  3.94k|        }
22959|  3.97k|        return true;
22960|  3.99k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE19parse_bon8_internalEv:
22346|  21.3k|    {
22347|       |        // the key currently being read; hoisted out of the loop so that its
22348|       |        // capacity is reused across elements and across nesting levels
22349|  21.3k|        string_t key;
22350|       |
22351|  1.17M|        while (true)
  ------------------
  |  Branch (22351:16): [True: 1.17M, Folded]
  ------------------
22352|  1.17M|        {
22353|  1.17M|            if (!container_stack.empty())
  ------------------
  |  Branch (22353:17): [True: 1.15M, False: 21.3k]
  ------------------
22354|  1.15M|            {
22355|       |                // a copy, not a reference: it must stay valid across the
22356|       |                // pop_back() below, which destroys the container_stack element
22357|       |                // it would otherwise alias
22358|  1.15M|                const container_frame top = container_stack.back();
22359|  1.15M|                bool at_end = false;
22360|       |
22361|  1.15M|                if (top.remaining != npos)
  ------------------
  |  Branch (22361:21): [True: 759k, False: 392k]
  ------------------
22362|   759k|                {
22363|       |                    // counted container (0x80..0x84, 0x86..0x8A): it ends once
22364|       |                    // its elements have been read
22365|   759k|                    at_end = (top.remaining == 0);
22366|   759k|                    if (!at_end)
  ------------------
  |  Branch (22366:25): [True: 394k, False: 365k]
  ------------------
22367|   394k|                    {
22368|       |                        // claim the element about to be read
22369|   394k|                        --container_stack.back().remaining;
22370|   394k|                    }
22371|   759k|                }
22372|   392k|                else
22373|   392k|                {
22374|       |                    // container 0x85 or 0x8B: it ends at an end-of-container
22375|       |                    // marker (0xFE); any other byte begins the next element
22376|   392k|                    at_end = (get_bon8() == 0xFE);
22377|   392k|                    if (!at_end)
  ------------------
  |  Branch (22377:25): [True: 377k, False: 15.2k]
  ------------------
22378|   377k|                    {
22379|   377k|                        unget_bon8(current);
22380|   377k|                    }
22381|   392k|                }
22382|       |
22383|  1.15M|                if (at_end)
  ------------------
  |  Branch (22383:21): [True: 380k, False: 771k]
  ------------------
22384|   380k|                {
22385|   380k|                    bool value_complete = false;
22386|   380k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container_and_check(value_complete)))
  ------------------
  |  | 1697|   380k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 380k]
  |  |  ------------------
  ------------------
22387|      0|                    {
22388|      0|                        return false;
22389|      0|                    }
22390|   380k|                    if (value_complete)
  ------------------
  |  Branch (22390:25): [True: 10.8k, False: 369k]
  ------------------
22391|  10.8k|                    {
22392|  10.8k|                        return true;
22393|  10.8k|                    }
22394|   369k|                    continue;
22395|   380k|                }
22396|       |
22397|   771k|                if (top.is_object)
  ------------------
  |  Branch (22397:21): [True: 97.6k, False: 673k]
  ------------------
22398|  97.6k|                {
22399|  97.6k|                    if (JSON_HEDLEY_UNLIKELY(!read_object_key<&binary_reader::get_bon8_key>(key)))
  ------------------
  |  | 1697|  97.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 425, False: 97.2k]
  |  |  ------------------
  ------------------
22400|    425|                    {
22401|    425|                        return false;
22402|    425|                    }
22403|  97.6k|                }
22404|   771k|            }
22405|       |
22406|   792k|            if (JSON_HEDLEY_UNLIKELY(!parse_bon8_value()))
  ------------------
  |  | 1697|   792k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1.01k, False: 791k]
  |  |  ------------------
  ------------------
22407|  1.01k|            {
22408|  1.01k|                return false;
22409|  1.01k|            }
22410|       |
22411|       |            // a value that opened a container left it on the stack; one that
22412|       |            // did not, and that was not inside a container, was the whole value
22413|   791k|            if (container_stack.empty())
  ------------------
  |  Branch (22413:17): [True: 6.12k, False: 785k]
  ------------------
22414|  6.12k|            {
22415|  6.12k|                return true;
22416|  6.12k|            }
22417|   791k|        }
22418|  21.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE10unget_bon8Em:
22315|   733k|    {
22316|       |        // At most two bytes are ever handed back: a byte is only handed back
22317|       |        // right after it was read with get_bon8(), and the only place that
22318|       |        // hands back two bytes (a lead byte and the byte after it) read both
22319|       |        // of them in a row, which emptied the buffer first. This is an
22320|       |        // invariant of the reader rather than a property of the input, so
22321|       |        // an assertion suffices (the fuzzers are built with assertions).
22322|   733k|        JSON_ASSERT(bon8_pushback_size < bon8_pushback.size());
  ------------------
  |  | 2643|   733k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (22322:9): [True: 733k, False: 0]
  ------------------
22323|   733k|        bon8_pushback[bon8_pushback_size++] = c;
22324|   733k|        --chars_read;
22325|   733k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE15read_object_keyIXadL_ZNSN_12get_bon8_keyERSC_EEEEbSP_:
18685|  97.6k|    {
18686|  97.6k|        key.clear();
18687|  97.6k|        return (this->*GetKey)(key) && sax->key(key);
  ------------------
  |  Branch (18687:16): [True: 96.3k, False: 1.27k]
  |  Branch (18687:40): [True: 96.3k, False: 0]
  ------------------
18688|  97.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE12get_bon8_keyERSC_:
22640|  97.6k|    {
22641|  97.6k|        const auto byte = get_bon8();
22642|       |
22643|  97.6k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22643:13): [True: 960, False: 96.6k]
  ------------------
22644|    960|        {
22645|    960|            return unexpect_eof("key");
22646|    960|        }
22647|       |
22648|  96.6k|        if (byte == 0xFF)
  ------------------
  |  Branch (22648:13): [True: 16.8k, False: 79.7k]
  ------------------
22649|  16.8k|        {
22650|  16.8k|            return true;
22651|  16.8k|        }
22652|       |
22653|  79.7k|        if (byte <= 0x7F)
  ------------------
  |  Branch (22653:13): [True: 75.6k, False: 4.15k]
  ------------------
22654|  75.6k|        {
22655|  75.6k|            unget_bon8(byte);
22656|  75.6k|            return get_bon8_string(result);
22657|  75.6k|        }
22658|       |
22659|  4.15k|        if (0xC2 <= byte && byte <= 0xF7)
  ------------------
  |  Branch (22659:13): [True: 4.10k, False: 48]
  |  Branch (22659:29): [True: 4.07k, False: 30]
  ------------------
22660|  4.07k|        {
22661|  4.07k|            const auto second = get_bon8();
22662|  4.07k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (22662:17): [True: 21, False: 4.05k]
  ------------------
22663|     21|            {
22664|       |                // the input ends inside a character or an integer
22665|     21|                return unexpect_eof("key");
22666|     21|            }
22667|  4.05k|            unget_bon8(second);
22668|  4.05k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (22668:17): [True: 4.00k, False: 51]
  ------------------
22669|  4.00k|            {
22670|  4.00k|                unget_bon8(byte);
22671|  4.00k|                return get_bon8_string(result);
22672|  4.00k|            }
22673|       |            // an integer: report its first byte rather than the one after it
22674|     51|            current = byte;
22675|     51|        }
22676|       |
22677|    129|        return unexpected_byte("expected a string; last byte", "key");
22678|  4.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE15get_bon8_stringERSC_:
22729|   172k|    {
22730|   344k|        while (true)
  ------------------
  |  Branch (22730:16): [True: 344k, Folded]
  ------------------
22731|   344k|        {
22732|   344k|            get_bon8_string_bulk(result, std::integral_constant<bool, bulk_scan> {});
22733|       |
22734|   344k|            const auto byte = get_bon8();
22735|       |
22736|   344k|            if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22736:17): [True: 477, False: 344k]
  ------------------
22737|    477|            {
22738|    477|                return unexpect_eof("string");
22739|    477|            }
22740|       |
22741|       |            // end of string
22742|   344k|            if (byte == 0xFF)
  ------------------
  |  Branch (22742:17): [True: 7.52k, False: 336k]
  ------------------
22743|  7.52k|            {
22744|  7.52k|                return true;
22745|  7.52k|            }
22746|       |
22747|       |            // ASCII character
22748|   336k|            if (byte <= 0x7F)
  ------------------
  |  Branch (22748:17): [True: 159k, False: 177k]
  ------------------
22749|   159k|            {
22750|   159k|                result.push_back(static_cast<typename string_t::value_type>(byte));
22751|   159k|                continue;
22752|   159k|            }
22753|       |
22754|       |            // a byte that cannot begin a character ends the string and begins
22755|       |            // the next value
22756|   177k|            if (byte < 0xC2 || byte > 0xF7)
  ------------------
  |  Branch (22756:17): [True: 74.3k, False: 102k]
  |  Branch (22756:32): [True: 82.1k, False: 20.6k]
  ------------------
22757|   156k|            {
22758|   156k|                unget_bon8(byte);
22759|   156k|                return true;
22760|   156k|            }
22761|       |
22762|       |            // a lead byte ends the string if no continuation byte follows: it
22763|       |            // is then the first byte of an integer
22764|  20.6k|            const auto second = get_bon8();
22765|  20.6k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (22765:17): [True: 54, False: 20.6k]
  ------------------
22766|     54|            {
22767|       |                // the input ends inside a character or an integer: either
22768|       |                // way, the message is incomplete
22769|     54|                return unexpect_eof("string");
22770|     54|            }
22771|  20.6k|            if (!is_bon8_continuation(second))
  ------------------
  |  Branch (22771:17): [True: 7.15k, False: 13.4k]
  ------------------
22772|  7.15k|            {
22773|  7.15k|                unget_bon8(second);
22774|  7.15k|                unget_bon8(byte);
22775|  7.15k|                return true;
22776|  7.15k|            }
22777|       |
22778|       |            // the valid range of the second byte excludes overlong forms,
22779|       |            // surrogates, and code points above U+10FFFF
22780|       |            // (RFC 3629, section 4)
22781|  13.4k|            int continuation_bytes = 0;
22782|  13.4k|            bool valid_second = true;
22783|  13.4k|            if (byte <= 0xDF)
  ------------------
  |  Branch (22783:17): [True: 6.72k, False: 6.73k]
  ------------------
22784|  6.72k|            {
22785|  6.72k|                continuation_bytes = 1;
22786|  6.72k|            }
22787|  6.73k|            else if (byte <= 0xEF)
  ------------------
  |  Branch (22787:22): [True: 2.98k, False: 3.75k]
  ------------------
22788|  2.98k|            {
22789|  2.98k|                continuation_bytes = 2;
22790|  2.98k|                valid_second = (byte != 0xE0 || second >= 0xA0) && (byte != 0xED || second <= 0x9F);
  ------------------
  |  Branch (22790:33): [True: 1.31k, False: 1.66k]
  |  Branch (22790:49): [True: 1.62k, False: 45]
  |  Branch (22790:69): [True: 1.91k, False: 1.01k]
  |  Branch (22790:85): [True: 1.00k, False: 9]
  ------------------
22791|  2.98k|            }
22792|  3.75k|            else
22793|  3.75k|            {
22794|  3.75k|                continuation_bytes = 3;
22795|  3.75k|                valid_second = byte <= 0xF4 && (byte != 0xF0 || second >= 0x90) && (byte != 0xF4 || second <= 0x8F);
  ------------------
  |  Branch (22795:32): [True: 3.74k, False: 9]
  |  Branch (22795:49): [True: 2.68k, False: 1.05k]
  |  Branch (22795:65): [True: 1.02k, False: 30]
  |  Branch (22795:85): [True: 2.52k, False: 1.19k]
  |  Branch (22795:101): [True: 1.17k, False: 15]
  ------------------
22796|  3.75k|            }
22797|       |
22798|  13.4k|            if (JSON_HEDLEY_UNLIKELY(!valid_second))
  ------------------
  |  | 1697|  13.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 108, False: 13.3k]
  |  |  ------------------
  ------------------
22799|    108|            {
22800|    108|                return unexpected_byte("invalid UTF-8 byte", "string");
22801|    108|            }
22802|       |
22803|  13.3k|            result.push_back(static_cast<typename string_t::value_type>(byte));
22804|  13.3k|            result.push_back(static_cast<typename string_t::value_type>(second));
22805|       |
22806|  23.0k|            for (int i = 1; i < continuation_bytes; ++i)
  ------------------
  |  Branch (22806:29): [True: 10.1k, False: 12.8k]
  ------------------
22807|  10.1k|            {
22808|  10.1k|                if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  10.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 294, False: 9.85k]
  |  |  ------------------
  ------------------
22809|    294|                {
22810|    294|                    return unexpect_eof("string");
22811|    294|                }
22812|  9.85k|                if (JSON_HEDLEY_UNLIKELY(!is_bon8_continuation(current)))
  ------------------
  |  | 1697|  9.85k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 201, False: 9.65k]
  |  |  ------------------
  ------------------
22813|    201|                {
22814|    201|                    return unexpected_byte("invalid UTF-8 byte", "string");
22815|    201|                }
22816|  9.65k|                result.push_back(static_cast<typename string_t::value_type>(current));
22817|  9.65k|            }
22818|  13.3k|        }
22819|   172k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE20get_bon8_string_bulkERSC_NS4_17integral_constantIbLb1EEE:
22692|   344k|    {
22693|       |        // bytes handed back must be read through get_bon8() first
22694|   344k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (22694:13): [True: 172k, False: 172k]
  ------------------
22695|   172k|        {
22696|   172k|            return;
22697|   172k|        }
22698|   172k|        const std::size_t remaining = ia.bulk_remaining();
22699|   172k|        if (remaining == 0)
  ------------------
  |  Branch (22699:13): [True: 198, False: 171k]
  ------------------
22700|    198|        {
22701|    198|            return;
22702|    198|        }
22703|   171k|        const auto* const data = reinterpret_cast<const unsigned char*>(ia.bulk_data());
22704|   171k|        const std::size_t length = valid_utf8_prefix(data, remaining);
22705|   171k|        if (length != 0)
  ------------------
  |  Branch (22705:13): [True: 30.0k, False: 141k]
  ------------------
22706|  30.0k|        {
22707|  30.0k|            result.append(reinterpret_cast<const typename string_t::value_type*>(data), length);
22708|  30.0k|            ia.bulk_skip(length);
22709|  30.0k|            chars_read += length;
22710|  30.0k|        }
22711|   171k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE20is_bon8_continuationEm:
22332|  63.3k|    {
22333|  63.3k|        return 0x80 <= c && c <= 0xBF;
  ------------------
  |  Branch (22333:16): [True: 49.1k, False: 14.2k]
  |  Branch (22333:29): [True: 36.2k, False: 12.9k]
  ------------------
22334|  63.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE16parse_bon8_valueEv:
22431|   791k|    {
22432|   791k|        const auto byte = get_bon8();
22433|       |
22434|   791k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22434:13): [True: 1.56k, False: 789k]
  ------------------
22435|  1.56k|        {
22436|  1.56k|            return unexpect_eof("value");
22437|  1.56k|        }
22438|       |
22439|       |        // string: ASCII character
22440|   789k|        if (byte <= 0x7F)
  ------------------
  |  Branch (22440:13): [True: 83.6k, False: 706k]
  ------------------
22441|  83.6k|        {
22442|  83.6k|            string_t s;
22443|  83.6k|            unget_bon8(byte);
22444|  83.6k|            return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (22444:20): [True: 83.2k, False: 453]
  |  Branch (22444:42): [True: 83.2k, False: 0]
  ------------------
22445|  83.6k|        }
22446|       |
22447|       |        // array with 0..4 elements
22448|   706k|        if (byte <= 0x84)
  ------------------
  |  Branch (22448:13): [True: 367k, False: 338k]
  ------------------
22449|   367k|        {
22450|   367k|            return enter_array(static_cast<std::size_t>(byte - 0x80));
22451|   367k|        }
22452|       |
22453|       |        // array terminated by 0xFE
22454|   338k|        if (byte == 0x85)
  ------------------
  |  Branch (22454:13): [True: 24.1k, False: 314k]
  ------------------
22455|  24.1k|        {
22456|  24.1k|            return enter_array(npos);
22457|  24.1k|        }
22458|       |
22459|       |        // object with 0..4 members
22460|   314k|        if (byte <= 0x8A)
  ------------------
  |  Branch (22460:13): [True: 40.0k, False: 274k]
  ------------------
22461|  40.0k|        {
22462|  40.0k|            return enter_object(static_cast<std::size_t>(byte - 0x86));
22463|  40.0k|        }
22464|       |
22465|   274k|        switch (byte)
22466|   274k|        {
22467|  6.81k|            case 0x8B: // object terminated by 0xFE
  ------------------
  |  Branch (22467:13): [True: 6.81k, False: 267k]
  ------------------
22468|  6.81k|                return enter_object(npos);
22469|       |
22470|  5.81k|            case 0x8C: // int32
  ------------------
  |  Branch (22470:13): [True: 5.81k, False: 268k]
  ------------------
22471|  5.81k|            {
22472|  5.81k|                std::int32_t number{};
22473|  5.81k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (22473:24): [True: 5.76k, False: 51]
  |  Branch (22473:46): [True: 5.76k, False: 0]
  ------------------
22474|      0|            }
22475|       |
22476|  3.99k|            case 0x8D: // int64
  ------------------
  |  Branch (22476:13): [True: 3.99k, False: 270k]
  ------------------
22477|  3.99k|            {
22478|  3.99k|                std::int64_t number{};
22479|  3.99k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (22479:24): [True: 3.94k, False: 51]
  |  Branch (22479:46): [True: 3.94k, False: 0]
  ------------------
22480|      0|            }
22481|       |
22482|  8.37k|            case 0x8E: // binary32
  ------------------
  |  Branch (22482:13): [True: 8.37k, False: 266k]
  ------------------
22483|  8.37k|            {
22484|  8.37k|                float number{};
22485|  8.37k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (22485:24): [True: 8.32k, False: 48]
  |  Branch (22485:46): [True: 8.32k, False: 0]
  ------------------
22486|      0|            }
22487|       |
22488|  4.92k|            case 0x8F: // binary64
  ------------------
  |  Branch (22488:13): [True: 4.92k, False: 269k]
  ------------------
22489|  4.92k|            {
22490|  4.92k|                double number{};
22491|  4.92k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (22491:24): [True: 4.85k, False: 72]
  |  Branch (22491:46): [True: 4.85k, False: 0]
  ------------------
22492|      0|            }
22493|       |
22494|  67.0k|            case 0xF8:
  ------------------
  |  Branch (22494:13): [True: 67.0k, False: 207k]
  ------------------
22495|  67.0k|                return sax->boolean(false);
22496|       |
22497|  7.65k|            case 0xF9:
  ------------------
  |  Branch (22497:13): [True: 7.65k, False: 266k]
  ------------------
22498|  7.65k|                return sax->boolean(true);
22499|       |
22500|  14.7k|            case 0xFA:
  ------------------
  |  Branch (22500:13): [True: 14.7k, False: 259k]
  ------------------
22501|  14.7k|                return sax->null();
22502|       |
22503|  10.5k|            case 0xFB:
  ------------------
  |  Branch (22503:13): [True: 10.5k, False: 263k]
  ------------------
22504|  10.5k|                return sax->number_float(static_cast<number_float_t>(-1.0), no_source);
22505|       |
22506|  10.3k|            case 0xFC:
  ------------------
  |  Branch (22506:13): [True: 10.3k, False: 264k]
  ------------------
22507|  10.3k|                return sax->number_float(static_cast<number_float_t>(0.0), no_source);
22508|       |
22509|  8.67k|            case 0xFD:
  ------------------
  |  Branch (22509:13): [True: 8.67k, False: 265k]
  ------------------
22510|  8.67k|                return sax->number_float(static_cast<number_float_t>(1.0), no_source);
22511|       |
22512|  30.9k|            case 0xFF: // empty string
  ------------------
  |  Branch (22512:13): [True: 30.9k, False: 243k]
  ------------------
22513|  30.9k|            {
22514|  30.9k|                string_t s;
22515|  30.9k|                return sax->string(s);
22516|      0|            }
22517|       |
22518|  94.5k|            default:
  ------------------
  |  Branch (22518:13): [True: 94.5k, False: 179k]
  ------------------
22519|  94.5k|                break;
22520|   274k|        }
22521|       |
22522|       |        // integer 0..39
22523|  94.5k|        if (byte <= 0xB7)
  ------------------
  |  Branch (22523:13): [True: 41.6k, False: 52.9k]
  ------------------
22524|  41.6k|        {
22525|  41.6k|            return sax->number_unsigned(static_cast<number_unsigned_t>(byte - 0x90));
22526|  41.6k|        }
22527|       |
22528|       |        // integer -1..-10
22529|  52.9k|        if (byte <= 0xC1)
  ------------------
  |  Branch (22529:13): [True: 23.9k, False: 28.9k]
  ------------------
22530|  23.9k|        {
22531|  23.9k|            return sax->number_integer(conditional_static_cast<number_integer_t>(-1 - static_cast<number_integer_t>(byte - 0xB8)));
22532|  23.9k|        }
22533|       |
22534|       |        // 0xC2..0xF7: a UTF-8 lead byte begins a string if a continuation
22535|       |        // byte follows and an integer otherwise
22536|  28.9k|        if (byte <= 0xF7)
  ------------------
  |  Branch (22536:13): [True: 28.8k, False: 138]
  ------------------
22537|  28.8k|        {
22538|  28.8k|            const auto second = get_bon8();
22539|  28.8k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (22539:17): [True: 9.08k, False: 19.7k]
  ------------------
22540|  9.08k|            {
22541|  9.08k|                string_t s;
22542|  9.08k|                unget_bon8(second);
22543|  9.08k|                unget_bon8(byte);
22544|  9.08k|                return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (22544:24): [True: 8.57k, False: 516]
  |  Branch (22544:46): [True: 8.57k, False: 0]
  ------------------
22545|  9.08k|            }
22546|  19.7k|            return get_bon8_integer(byte, second);
22547|  28.8k|        }
22548|       |
22549|       |        // 0xFE: end of container where a value is expected
22550|    138|        return unexpected_byte("invalid byte", "value");
22551|  28.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE17emit_bon8_integerEl:
22565|  29.2k|    {
22566|  29.2k|        if (number >= 0)
  ------------------
  |  Branch (22566:13): [True: 13.5k, False: 15.7k]
  ------------------
22567|  13.5k|        {
22568|  13.5k|            return emit_unsigned(static_cast<std::uint64_t>(number));
22569|  13.5k|        }
22570|  15.7k|        return emit_signed(number);
22571|  29.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE16get_bon8_integerEmm:
22589|  19.7k|    {
22590|  19.7k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  19.7k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 25, False: 19.7k]
  |  |  ------------------
  ------------------
22591|     25|        {
22592|     25|            return false;
22593|     25|        }
22594|       |
22595|  19.7k|        const bool negative = second >= 0xC0;
22596|  19.7k|        auto value = static_cast<std::int64_t>(negative ? (second & 0x3F) : second);
  ------------------
  |  Branch (22596:48): [True: 10.0k, False: 9.69k]
  ------------------
22597|  19.7k|        std::int64_t offset = 0;
22598|  19.7k|        int extra_bytes = 0;
22599|       |
22600|  19.7k|        if (lead <= 0xDF)
  ------------------
  |  Branch (22600:13): [True: 9.65k, False: 10.0k]
  ------------------
22601|  9.65k|        {
22602|  9.65k|            value |= static_cast<std::int64_t>(lead - 0xC2) << (negative ? 6 : 7);
  ------------------
  |  Branch (22602:65): [True: 4.47k, False: 5.18k]
  ------------------
22603|  9.65k|            offset = negative ? 11 : 40;
  ------------------
  |  Branch (22603:22): [True: 4.47k, False: 5.18k]
  ------------------
22604|  9.65k|        }
22605|  10.0k|        else if (lead <= 0xEF)
  ------------------
  |  Branch (22605:18): [True: 5.29k, False: 4.76k]
  ------------------
22606|  5.29k|        {
22607|  5.29k|            value |= static_cast<std::int64_t>(lead & 0x0F) << (negative ? 6 : 7);
  ------------------
  |  Branch (22607:65): [True: 3.02k, False: 2.27k]
  ------------------
22608|  5.29k|            offset = negative ? 1931 : 3880;
  ------------------
  |  Branch (22608:22): [True: 3.02k, False: 2.27k]
  ------------------
22609|  5.29k|            extra_bytes = 1;
22610|  5.29k|        }
22611|  4.76k|        else
22612|  4.76k|        {
22613|  4.76k|            value |= static_cast<std::int64_t>(lead & 0x07) << (negative ? 6 : 7);
  ------------------
  |  Branch (22613:65): [True: 2.52k, False: 2.23k]
  ------------------
22614|  4.76k|            offset = negative ? 264075 : 528168;
  ------------------
  |  Branch (22614:22): [True: 2.52k, False: 2.23k]
  ------------------
22615|  4.76k|            extra_bytes = 2;
22616|  4.76k|        }
22617|       |
22618|  34.3k|        for (int i = 0; i < extra_bytes; ++i)
  ------------------
  |  Branch (22618:25): [True: 14.6k, False: 19.6k]
  ------------------
22619|  14.6k|        {
22620|  14.6k|            if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  14.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 87, False: 14.6k]
  |  |  ------------------
  ------------------
22621|     87|            {
22622|     87|                return unexpect_eof("number");
22623|     87|            }
22624|  14.6k|            value = (value << 8) | static_cast<std::int64_t>(current);
22625|  14.6k|        }
22626|       |
22627|  19.6k|        return emit_bon8_integer(negative ? -(value + offset) : value + offset);
  ------------------
  |  Branch (22627:34): [True: 9.98k, False: 9.64k]
  ------------------
22628|  19.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE8get_bon8Ev:
22299|  1.72M|    {
22300|  1.72M|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (22300:13): [True: 733k, False: 988k]
  ------------------
22301|   733k|        {
22302|   733k|            ++chars_read;
22303|   733k|            return current = bon8_pushback[--bon8_pushback_size];
22304|   733k|        }
22305|   988k|        return get();
22306|  1.72M|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE3getEv:
22840|   988k|    {
22841|   988k|        ++chars_read;
22842|   988k|        return current = ia.get_character();
22843|   988k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E13get_characterEv:
10120|   988k|    {
10121|   988k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|   988k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 967k, False: 20.2k]
  |  |  ------------------
  ------------------
10122|   967k|        {
10123|   967k|            auto result = char_traits<char_type>::to_int_type(*current);
10124|   967k|            std::advance(current, 1);
10125|   967k|            return result;
10126|   967k|        }
10127|       |
10128|  20.2k|        ++eof_reads;
10129|  20.2k|        return char_traits<char_type>::eof();
10130|   988k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE11to_int_typeEh:
 4432|  1.28M|    {
 4433|  1.28M|        return static_cast<int_type>(c);
 4434|  1.28M|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSS_:
23407|    885|    {
23408|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
23409|    885|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
23410|    885|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (23410:51): [True: 576, False: 309]
  ------------------
23411|    885|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRKS9_RPKcRA16_SC_S9_EEET_DpOT0_:
 5516|    618|{
 5517|    618|    OutStringType str;
 5518|    618|    str.reserve(concat_length(args...));
 5519|    618|    concat_into(str, std::forward<Args>(args)...);
 5520|    618|    return str;
 5521|    618|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJPKcA16_cS9_EEEmRKT_DpRKT0_:
 5426|    618|{
 5427|    618|    return str.size() + concat_length(rest...);
 5428|    618|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRPKcRA16_SC_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5479|    618|{
 5480|    618|    out.append(std::forward<Arg>(arg));
 5481|    618|    concat_into(out, std::forward<Args>(rest)...);
 5482|    618|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ENS0_6detail7value_tE:
41570|   788k|        : m_data(stored_kind(v))
41571|   788k|    {
41572|   788k|        assert_invariant();
41573|   788k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11stored_kindENS0_6detail7value_tE:
39780|   788k|    {
39781|   788k|        return (std::is_same<number_integer_t, number_unsigned_t>::value && t == value_t::number_unsigned) ? value_t::number_integer : t;
  ------------------
  |  Branch (39781:17): [Folded, False: 788k]
  |  Branch (39781:77): [True: 0, False: 0]
  ------------------
39782|   788k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2ENS0_6detail7value_tE:
45568|   788k|            : m_type(v), m_value(v)
45569|   788k|        {
45570|   788k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ENS0_6detail7value_tE:
39867|   788k|        {
39868|   788k|            switch (t)
39869|   788k|            {
39870|  84.9k|                case value_t::object:
  ------------------
  |  Branch (39870:17): [True: 84.9k, False: 703k]
  ------------------
39871|   786k|                case value_t::array:
  ------------------
  |  Branch (39871:17): [True: 701k, False: 86.4k]
  ------------------
39872|   786k|                case value_t::string:
  ------------------
  |  Branch (39872:17): [True: 0, False: 788k]
  ------------------
39873|   786k|                case value_t::binary:
  ------------------
  |  Branch (39873:17): [True: 0, False: 788k]
  ------------------
39874|   786k|                {
39875|       |                    // allocating: kept out of line, so the scalar cases below inline
39876|   786k|                    init_owned(t);
39877|   786k|                    break;
39878|   786k|                }
39879|       |
39880|      0|                case value_t::boolean:
  ------------------
  |  Branch (39880:17): [True: 0, False: 788k]
  ------------------
39881|      0|                {
39882|      0|                    boolean = static_cast<boolean_t>(false);
39883|      0|                    break;
39884|   786k|                }
39885|       |
39886|      0|                case value_t::number_integer:
  ------------------
  |  Branch (39886:17): [True: 0, False: 788k]
  ------------------
39887|      0|                {
39888|      0|                    number_integer = static_cast<number_integer_t>(0);
39889|      0|                    break;
39890|   786k|                }
39891|       |
39892|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (39892:17): [True: 0, False: 788k]
  ------------------
39893|      0|                {
39894|      0|                    number_unsigned = static_cast<number_unsigned_t>(0);
39895|      0|                    break;
39896|   786k|                }
39897|       |
39898|      0|                case value_t::number_float:
  ------------------
  |  Branch (39898:17): [True: 0, False: 788k]
  ------------------
39899|      0|                {
39900|      0|                    number_float = static_cast<number_float_t>(0.0);
39901|      0|                    break;
39902|   786k|                }
39903|       |
39904|      0|                case value_t::null:
  ------------------
  |  Branch (39904:17): [True: 0, False: 788k]
  ------------------
39905|      0|                {
39906|      0|                    object = nullptr;  // silence warning, see #821
39907|      0|                    break;
39908|   786k|                }
39909|       |
39910|  1.54k|                case value_t::discarded:
  ------------------
  |  Branch (39910:17): [True: 1.54k, False: 786k]
  ------------------
39911|  1.54k|                default:
  ------------------
  |  Branch (39911:17): [True: 0, False: 788k]
  ------------------
39912|  1.54k|                {
39913|  1.54k|                    object = nullptr;  // silence warning, see #821
39914|  1.54k|                    if (JSON_HEDLEY_UNLIKELY(t == value_t::null))
  ------------------
  |  | 1697|  1.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.54k]
  |  |  ------------------
  ------------------
39915|      0|                    {
39916|      0|                        detail::throw_literal<other_error>(detail::exception_id::internal_error, "961c151d2e87f2686a955a9be24d316f1362bf21 3.12.0", nullptr); // LCOV_EXCL_LINE
39917|      0|                    }
39918|  1.54k|                    break;
39919|  1.54k|                }
39920|   788k|            }
39921|   788k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10init_ownedENS0_6detail7value_tE:
39925|   786k|        {
39926|   786k|            switch (t)
39927|   786k|            {
39928|  84.9k|                case value_t::object:
  ------------------
  |  Branch (39928:17): [True: 84.9k, False: 701k]
  ------------------
39929|  84.9k|                    object = create<object_t>();
39930|  84.9k|                    break;
39931|   701k|                case value_t::array:
  ------------------
  |  Branch (39931:17): [True: 701k, False: 84.9k]
  ------------------
39932|   701k|                    array = create<array_t>();
39933|   701k|                    break;
39934|      0|                case value_t::string:
  ------------------
  |  Branch (39934:17): [True: 0, False: 786k]
  ------------------
39935|      0|                    string = create<string_t>("");
39936|      0|                    break;
39937|      0|                case value_t::binary:
  ------------------
  |  Branch (39937:17): [True: 0, False: 786k]
  ------------------
39938|      0|                    binary = create<binary_t>();
39939|      0|                    break;
39940|      0|                case value_t::null: // LCOV_EXCL_LINE
  ------------------
  |  Branch (39940:17): [True: 0, False: 786k]
  ------------------
39941|      0|                case value_t::boolean:
  ------------------
  |  Branch (39941:17): [True: 0, False: 786k]
  ------------------
39942|      0|                case value_t::number_integer:
  ------------------
  |  Branch (39942:17): [True: 0, False: 786k]
  ------------------
39943|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (39943:17): [True: 0, False: 786k]
  ------------------
39944|      0|                case value_t::number_float:
  ------------------
  |  Branch (39944:17): [True: 0, False: 786k]
  ------------------
39945|      0|                case value_t::discarded:
  ------------------
  |  Branch (39945:17): [True: 0, False: 786k]
  ------------------
39946|      0|                default:
  ------------------
  |  Branch (39946:17): [True: 0, False: 786k]
  ------------------
39947|      0|                    break; // LCOV_EXCL_LINE
39948|   786k|            }
39949|   786k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS3_ISA_SE_NS2_4lessISA_EENS8_INS2_4pairIKSA_SE_EEEEEEJEEEPT_DpOT0_:
39788|  84.9k|    {
39789|  84.9k|        AllocatorType<T> alloc;
39790|  84.9k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
39791|       |
39792|  84.9k|        auto deleter = [&](T * obj)
39793|  84.9k|        {
39794|  84.9k|            AllocatorTraits::deallocate(alloc, obj, 1);
39795|  84.9k|        };
39796|  84.9k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
39797|  84.9k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
39798|  84.9k|        JSON_ASSERT(obj);
  ------------------
  |  | 2643|  84.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (39798:9): [True: 84.9k, False: 0]
  ------------------
39799|  84.9k|        return obj.release();
39800|  84.9k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS4_ISE_NS8_ISE_EEEEJEEEPT_DpOT0_:
39788|   701k|    {
39789|   701k|        AllocatorType<T> alloc;
39790|   701k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
39791|       |
39792|   701k|        auto deleter = [&](T * obj)
39793|   701k|        {
39794|   701k|            AllocatorTraits::deallocate(alloc, obj, 1);
39795|   701k|        };
39796|   701k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
39797|   701k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
39798|   701k|        JSON_ASSERT(obj);
  ------------------
  |  | 2643|   701k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (39798:9): [True: 701k, False: 0]
  ------------------
39799|   701k|        return obj.release();
39800|   701k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEaSESE_:
41982|   215k|    {
41983|       |        // check that the passed value is valid
41984|   215k|        other.assert_invariant();
41985|       |
41986|   215k|        using std::swap;
41987|   215k|        swap(m_data.m_type, other.m_data.m_type);
41988|   215k|        swap(m_data.m_value, other.m_data.m_value);
41989|       |
41990|       |#if JSON_DIAGNOSTIC_POSITIONS
41991|       |        swap(start_position, other.start_position);
41992|       |        swap(end_position, other.end_position);
41993|       |#endif
41994|       |
41995|   215k|        json_base_class_t::operator=(std::move(other));
41996|       |
41997|   215k|        set_parents();
41998|   215k|        assert_invariant();
41999|   215k|        return *this;
42000|   215k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_26json_sax_dom_binary_parserISG_SK_EEED2Ev:
18487|  21.3k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEED2Ev:
17434|  21.3k|    ~json_sax_dom_binary_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__16vectorIhNS3_9allocatorIhEEEETnNS3_9enable_ifIXsr28is_contiguous_byte_containerIT_EE5valueEiE4typeELi0EEEDTcl13input_adaptercldtfp_4dataEplcldtfp_4dataEcldtfp_4sizeEEERKS9_:
10700|  15.6k|{
10701|  15.6k|    return input_adapter(container.data(), container.data() + container.size());
10702|  15.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterIPKhS4_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES6_S7_:
10603|  21.3k|{
10604|  21.3k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
10605|  21.3k|    return factory_type::create(first, last);
10606|  21.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryIPKhS4_vE6createES4_S4_:
10465|  21.3k|    {
10466|  21.3k|        return adapter_type(std::move(first), std::move(last));
10467|  21.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_EC2ES4_S4_:
10116|  21.3k|        : begin(first), current(std::move(first)), end(std::move(last))
10117|  21.3k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE7to_bon8ERKSE_:
45817|  8.35k|    {
45818|  8.35k|        return to_binary_vector(j, detail::binary_writer_default_error_handler(), [&](vector_binary_writer<std::uint8_t>& w)
45819|  8.35k|        {
45820|  8.35k|            w.write_bon8(j);
45821|  8.35k|        });
45822|  8.35k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16to_binary_vectorIZNSE_7to_bon8ERKSE_EUlRNS0_6detail13binary_writerISE_hNSI_18output_vector_sinkIhSC_EEEEE_EESD_SH_NSI_15error_handler_tET_:
42454|  8.35k|    {
42455|  8.35k|        std::vector<std::uint8_t> result;
42456|  8.35k|        result.reserve(detail::binary_initial_capacity(j));
42457|  8.35k|        {
42458|       |            // the sink sets the size of result when it is destroyed, which
42459|       |            // must happen before result is returned (without NRVO, it is moved)
42460|  8.35k|            auto writer = vector_writer(result, error_handler);
42461|  8.35k|            write(writer);
42462|  8.35k|        }
42463|  8.35k|        return result;
42464|  8.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23binary_initial_capacityINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEmRKT_:
29542|  8.35k|{
29543|  8.35k|    return (std::max)(binary_reserve_hint(j), min_vector_sink_capacity);
29544|  8.35k|}
_ZN8nlohmann16json_abi_v3_12_06detail19binary_reserve_hintINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEmRKT_:
29517|  8.35k|{
29518|  8.35k|    if (j.is_array())
  ------------------
  |  Branch (29518:9): [True: 4.45k, False: 3.89k]
  ------------------
29519|  4.45k|    {
29520|  4.45k|        return j.size() + 1;
29521|  4.45k|    }
29522|       |
29523|  3.89k|    if (j.is_object())
  ------------------
  |  Branch (29523:9): [True: 982, False: 2.91k]
  ------------------
29524|    982|    {
29525|    982|        return (j.size() * 2) + 1;
29526|    982|    }
29527|       |
29528|  2.91k|    return 0;
29529|  3.89k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13vector_writerIhEENS0_6detail13binary_writerISE_T_NSG_18output_vector_sinkISI_NS8_ISI_EEEEEERNS4_ISI_SK_EENSG_15error_handler_tE:
39470|  8.35k|    {
39471|  8.35k|        return vector_binary_writer<CharType>(::nlohmann::detail::output_vector_sink<CharType>(v), error_handler);
39472|  8.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEEC2ERNS3_6vectorIhS5_EE:
28977|  8.35k|        : v(&vec), cursor(vec.data() + vec.size()), limit(cursor)
28978|  8.35k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEEC2ESI_NS1_15error_handler_tE:
29574|  8.35k|        : oa(std::move(sink)), error_handler(error_handler_)
29575|  8.35k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEEC2EOS6_:
28985|  8.35k|        : v(other.v), cursor(other.cursor), limit(other.limit)
28986|  8.35k|    {
28987|  8.35k|        other.v = nullptr;
28988|  8.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEED2Ev:
28991|  16.7k|    {
28992|  16.7k|        if (v != nullptr)
  ------------------
  |  Branch (28992:13): [True: 8.35k, False: 8.35k]
  ------------------
28993|  8.35k|        {
28994|  8.35k|            v->resize(position());
28995|  8.35k|        }
28996|  16.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE8positionEv:
29094|  22.2k|    {
29095|  22.2k|        return static_cast<std::size_t>(cursor - v->data());
29096|  22.2k|    }
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE7to_bon8ERKSE_ENKUlRNS0_6detail13binary_writerISE_hNSH_18output_vector_sinkIhSC_EEEEE_clESM_:
45819|  8.35k|        {
45820|  8.35k|            w.write_bon8(j);
45821|  8.35k|        });
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE10write_bon8ERKSG_:
30178|  8.35k|    {
30179|  8.35k|        bool string_open = false;
30180|  8.35k|        write_bon8_value(j, string_open);
30181|       |
30182|       |        // the last string of a message must be terminated
30183|  8.35k|        if (string_open)
  ------------------
  |  Branch (30183:13): [True: 984, False: 7.36k]
  ------------------
30184|    984|        {
30185|    984|            oa.write_character(to_char_type(0xFF));
30186|    984|        }
30187|  8.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_valueERKSG_Rbm:
33946|   230k|    {
33947|   230k|        if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()) && (j.is_array() || j.is_object()))
  ------------------
  |  | 1697|   461k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 4.11k, False: 226k]
  |  |  ------------------
  ------------------
  |  Branch (33947:72): [True: 1.39k, False: 2.71k]
  |  Branch (33947:88): [True: 1.45k, False: 1.26k]
  ------------------
33948|  2.85k|        {
33949|  2.85k|            write_bon8_iterative(j, string_open);
33950|  2.85k|            return;
33951|  2.85k|        }
33952|       |
33953|   227k|        switch (j.type())
33954|   227k|        {
33955|  3.32k|            case value_t::null:
  ------------------
  |  Branch (33955:13): [True: 3.32k, False: 224k]
  ------------------
33956|  3.32k|            {
33957|  3.32k|                write_bon8_marker(0xFA, string_open);
33958|  3.32k|                break;
33959|      0|            }
33960|       |
33961|  32.6k|            case value_t::boolean:
  ------------------
  |  Branch (33961:13): [True: 32.6k, False: 194k]
  ------------------
33962|  32.6k|            {
33963|  32.6k|                write_bon8_marker(j.m_data.m_value.boolean ? 0xF9 : 0xF8, string_open);
  ------------------
  |  Branch (33963:35): [True: 2.75k, False: 29.9k]
  ------------------
33964|  32.6k|                break;
33965|      0|            }
33966|       |
33967|  9.32k|            case value_t::number_unsigned:
  ------------------
  |  Branch (33967:13): [True: 9.32k, False: 218k]
  ------------------
33968|  9.32k|            {
33969|  9.32k|                if (JSON_HEDLEY_UNLIKELY(!integer_fits_max<std::int64_t>(j.m_data.m_value.number_unsigned)))
  ------------------
  |  | 1697|  9.32k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 9.32k]
  |  |  ------------------
  ------------------
33970|      0|                {
33971|      0|                    throw_integer_out_of_range(j, input_format_t::bon8, "int64");
33972|      0|                }
33973|  9.32k|                write_bon8_integer(static_cast<std::int64_t>(j.m_data.m_value.number_unsigned));
33974|  9.32k|                string_open = false;
33975|  9.32k|                break;
33976|      0|            }
33977|       |
33978|  6.46k|            case value_t::number_integer:
  ------------------
  |  Branch (33978:13): [True: 6.46k, False: 221k]
  ------------------
33979|  6.46k|            {
33980|  6.46k|                if (JSON_HEDLEY_UNLIKELY(!integer_fits<std::int64_t>(j.m_data.m_value.number_integer)))
  ------------------
  |  | 1697|  6.46k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 6.46k]
  |  |  ------------------
  ------------------
33981|      0|                {
33982|      0|                    throw_integer_out_of_range(j, input_format_t::bon8, "int64");
33983|      0|                }
33984|  6.46k|                write_bon8_integer(static_cast<std::int64_t>(j.m_data.m_value.number_integer));
33985|  6.46k|                string_open = false;
33986|  6.46k|                break;
33987|      0|            }
33988|       |
33989|  6.41k|            case value_t::number_float:
  ------------------
  |  Branch (33989:13): [True: 6.41k, False: 221k]
  ------------------
33990|  6.41k|            {
33991|  6.41k|                write_bon8_float(j.m_data.m_value.number_float);
33992|  6.41k|                string_open = false;
33993|  6.41k|                break;
33994|      0|            }
33995|       |
33996|  48.8k|            case value_t::string:
  ------------------
  |  Branch (33996:13): [True: 48.8k, False: 178k]
  ------------------
33997|  48.8k|            {
33998|  48.8k|                write_bon8_string(*j.m_data.m_value.string, string_open, j);
33999|  48.8k|                break;
34000|      0|            }
34001|       |
34002|   109k|            case value_t::array:
  ------------------
  |  Branch (34002:13): [True: 109k, False: 117k]
  ------------------
34003|   109k|            {
34004|   109k|                const auto N = j.m_data.m_value.array->size();
34005|       |                // 0x80..0x84: array with 0..4 elements; 0x85: array ended by 0xFE
34006|   109k|                write_bon8_marker(static_cast<std::uint8_t>(N <= 4 ? 0x80 + N : 0x85), string_open);
  ------------------
  |  Branch (34006:61): [True: 106k, False: 3.75k]
  ------------------
34007|       |
34008|   109k|                if (N != 0 && j.m_data.m_value.array->front().is_number())
  ------------------
  |  Branch (34008:21): [True: 105k, False: 4.79k]
  |  Branch (34008:31): [True: 4.97k, False: 100k]
  ------------------
34009|  4.97k|                {
34010|  4.97k|                    write_bon8_array_elements(*j.m_data.m_value.array, string_open, depth);
34011|  4.97k|                }
34012|   104k|                else
34013|   104k|                {
34014|   104k|                    for (const auto& el : *j.m_data.m_value.array)
  ------------------
  |  Branch (34014:41): [True: 193k, False: 104k]
  ------------------
34015|   193k|                    {
34016|   193k|                        write_bon8_value(el, string_open, depth + 1);
34017|   193k|                    }
34018|   104k|                }
34019|       |
34020|   109k|                if (N > 4)
  ------------------
  |  Branch (34020:21): [True: 3.75k, False: 106k]
  ------------------
34021|  3.75k|                {
34022|  3.75k|                    write_bon8_marker(0xFE, string_open);
34023|  3.75k|                }
34024|   109k|                break;
34025|      0|            }
34026|       |
34027|  10.7k|            case value_t::object:
  ------------------
  |  Branch (34027:13): [True: 10.7k, False: 216k]
  ------------------
34028|  10.7k|            {
34029|  10.7k|                const auto N = j.m_data.m_value.object->size();
34030|       |                // 0x86..0x8A: object with 0..4 members; 0x8B: object ended by 0xFE
34031|  10.7k|                write_bon8_marker(static_cast<std::uint8_t>(N <= 4 ? 0x86 + N : 0x8B), string_open);
  ------------------
  |  Branch (34031:61): [True: 10.2k, False: 450]
  ------------------
34032|       |
34033|  10.7k|                write_bon8_members(j, string_open, depth);
34034|       |
34035|  10.7k|                if (N > 4)
  ------------------
  |  Branch (34035:21): [True: 450, False: 10.2k]
  ------------------
34036|    450|                {
34037|    450|                    write_bon8_marker(0xFE, string_open);
34038|    450|                }
34039|  10.7k|                break;
34040|      0|            }
34041|       |
34042|      0|            case value_t::binary:
  ------------------
  |  Branch (34042:13): [True: 0, False: 227k]
  ------------------
34043|      0|            {
34044|      0|                write_bon8_binary(*j.m_data.m_value.binary, string_open);
34045|      0|                break;
34046|      0|            }
34047|       |
34048|      0|            case value_t::discarded:
  ------------------
  |  Branch (34048:13): [True: 0, False: 227k]
  ------------------
34049|      0|            default:
  ------------------
  |  Branch (34049:13): [True: 0, False: 227k]
  ------------------
34050|      0|                throw_on_discarded(j, input_format_t::bon8);
34051|   227k|        }
34052|   227k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20write_bon8_iterativeERKSG_Rb:
34091|  2.85k|    {
34092|       |        // only a container with elements is ever pushed; see write_bon8_value_or_push
34093|  2.85k|        std::vector<binary_container_frame> stack;
34094|  2.85k|        write_bon8_value_or_push(root, string_open, stack);
34095|       |
34096|   130k|        while (!stack.empty())
  ------------------
  |  Branch (34096:16): [True: 127k, False: 2.85k]
  ------------------
34097|   127k|        {
34098|   127k|            const binary_container_frame current = stack.back();
34099|   127k|            const bool is_array = current.value->is_array();
34100|   127k|            const bool at_end = is_array
  ------------------
  |  Branch (34100:33): [True: 114k, False: 12.4k]
  ------------------
34101|   127k|                                ? current.array_it == current.value->m_data.m_value.array->cend()
34102|   127k|                                : current.object_it == current.value->m_data.m_value.object->cend();
34103|       |
34104|   127k|            if (at_end)
  ------------------
  |  Branch (34104:17): [True: 55.2k, False: 71.9k]
  ------------------
34105|  55.2k|            {
34106|  55.2k|                if (current.value->size() > 4)
  ------------------
  |  Branch (34106:21): [True: 424, False: 54.8k]
  ------------------
34107|    424|                {
34108|    424|                    write_bon8_marker(0xFE, string_open);
34109|    424|                }
34110|  55.2k|                stack.pop_back();
34111|  55.2k|                continue;
34112|  55.2k|            }
34113|       |
34114|       |            // read the child before pushing: entering it can move every frame
34115|  71.9k|            const BasicJsonType* child = nullptr;
34116|  71.9k|            if (is_array)
  ------------------
  |  Branch (34116:17): [True: 62.5k, False: 9.30k]
  ------------------
34117|  62.5k|            {
34118|  62.5k|                child = &(*current.array_it);
34119|  62.5k|                ++stack.back().array_it;
34120|  62.5k|            }
34121|  9.30k|            else
34122|  9.30k|            {
34123|  9.30k|                write_bon8_string(current.object_it->first, string_open, *current.value);
34124|  9.30k|                child = &(current.object_it->second);
34125|  9.30k|                ++stack.back().object_it;
34126|  9.30k|            }
34127|  71.9k|            write_bon8_value_or_push(*child, string_open, stack);
34128|  71.9k|        }
34129|  2.85k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE24write_bon8_value_or_pushERKSG_RbRNS6_INSJ_22binary_container_frameENSA_ISN_EEEE:
34064|  74.7k|    {
34065|  74.7k|        if (j.is_array() || j.is_object())
  ------------------
  |  Branch (34065:13): [True: 53.7k, False: 20.9k]
  |  Branch (34065:29): [True: 6.88k, False: 14.1k]
  ------------------
34066|  60.6k|        {
34067|       |            // arrays use the markers 0x80..0x85, objects 0x86..0x8B; the last
34068|       |            // one stands for more than four elements, closed later with 0xFE
34069|  60.6k|            const auto N = j.size();
34070|  60.6k|            const std::size_t base = j.is_array() ? 0x80 : 0x86;
  ------------------
  |  Branch (34070:38): [True: 53.7k, False: 6.88k]
  ------------------
34071|  60.6k|            write_bon8_marker(static_cast<std::uint8_t>(base + (N <= 4 ? N : 5)), string_open);
  ------------------
  |  Branch (34071:65): [True: 60.2k, False: 424]
  ------------------
34072|  60.6k|            if (N != 0)
  ------------------
  |  Branch (34072:17): [True: 55.2k, False: 5.37k]
  ------------------
34073|  55.2k|            {
34074|  55.2k|                stack.emplace_back(&j);
34075|  55.2k|            }
34076|  60.6k|            return;
34077|  60.6k|        }
34078|       |
34079|  14.1k|        write_bon8_value(j, string_open);
34080|  14.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE22binary_container_frameC2EPKSG_:
30431|  55.2k|            : value(value_)
30432|  55.2k|        {
30433|  55.2k|            if (value->is_object())
  ------------------
  |  Branch (30433:17): [True: 3.10k, False: 52.1k]
  ------------------
30434|  3.10k|            {
30435|  3.10k|                object_it = value->m_data.m_value.object->cbegin();
30436|  3.10k|            }
30437|  52.1k|            else
30438|  52.1k|            {
30439|  52.1k|                array_it = value->m_data.m_value.array->cbegin();
30440|  52.1k|            }
30441|  55.2k|        }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4typeEv:
42051|   246k|    {
42052|   246k|        return m_data.m_type;
42053|   246k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_bon8_markerEhRb:
34412|   224k|    {
34413|   224k|        oa.write_character(to_char_type(marker));
34414|   224k|        string_open = false;
34415|   224k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16integer_fits_maxIlmEEbT0_:
30223|  21.1k|    {
30224|  21.1k|        return integer_fits_max<TargetType>(n, std::integral_constant<bool, integer_range<TargetType, NumberType>::may_exceed_max>());
30225|  21.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16integer_fits_maxIlmEEbT0_NS4_17integral_constantIbLb1EEE:
30235|  21.1k|    {
30236|       |        // NumberType has more digits than TargetType, so it can hold its maximum
30237|  21.1k|        return n <= static_cast<NumberType>((std::numeric_limits<TargetType>::max)());
30238|  21.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE18write_bon8_integerEl:
34577|  21.4k|    {
34578|  21.4k|        if (value < (std::numeric_limits<std::int32_t>::min)() || value > (std::numeric_limits<std::int32_t>::max)())
  ------------------
  |  Branch (34578:13): [True: 500, False: 20.9k]
  |  Branch (34578:67): [True: 290, False: 20.6k]
  ------------------
34579|    790|        {
34580|    790|            oa.write_character(to_char_type(0x8D));
34581|    790|            write_number(value);
34582|    790|        }
34583|  20.6k|        else if (value < -33818506 || value > 67637031)
  ------------------
  |  Branch (34583:18): [True: 620, False: 20.0k]
  |  Branch (34583:39): [True: 482, False: 19.5k]
  ------------------
34584|  1.10k|        {
34585|  1.10k|            oa.write_character(to_char_type(0x8C));
34586|  1.10k|            write_number(static_cast<std::int32_t>(value));
34587|  1.10k|        }
34588|  19.5k|        else if (value <= -264075)
  ------------------
  |  Branch (34588:18): [True: 616, False: 18.9k]
  ------------------
34589|    616|        {
34590|    616|            value = -(value + 264075);
34591|    616|            write_bon8_bytes(0xF0 + ((value >> 22) & 0x07), 0xC0 + ((value >> 16) & 0x3F), value >> 8, value);
34592|    616|        }
34593|  18.9k|        else if (value <= -1931)
  ------------------
  |  Branch (34593:18): [True: 814, False: 18.1k]
  ------------------
34594|    814|        {
34595|    814|            value = -(value + 1931);
34596|    814|            write_bon8_bytes(0xE0 + ((value >> 14) & 0x0F), 0xC0 + ((value >> 8) & 0x3F), value);
34597|    814|        }
34598|  18.1k|        else if (value <= -11)
  ------------------
  |  Branch (34598:18): [True: 1.08k, False: 17.0k]
  ------------------
34599|  1.08k|        {
34600|  1.08k|            value = -(value + 11);
34601|  1.08k|            write_bon8_bytes(0xC2 + ((value >> 6) & 0x1F), 0xC0 + (value & 0x3F));
34602|  1.08k|        }
34603|  17.0k|        else if (value <= -1)
  ------------------
  |  Branch (34603:18): [True: 5.11k, False: 11.9k]
  ------------------
34604|  5.11k|        {
34605|  5.11k|            write_bon8_bytes(0xB8 - (value + 1));
34606|  5.11k|        }
34607|  11.9k|        else if (value <= 39)
  ------------------
  |  Branch (34607:18): [True: 9.19k, False: 2.74k]
  ------------------
34608|  9.19k|        {
34609|  9.19k|            write_bon8_bytes(0x90 + value);
34610|  9.19k|        }
34611|  2.74k|        else if (value <= 3879)
  ------------------
  |  Branch (34611:18): [True: 1.18k, False: 1.56k]
  ------------------
34612|  1.18k|        {
34613|  1.18k|            value -= 40;
34614|  1.18k|            write_bon8_bytes(0xC2 + ((value >> 7) & 0x1F), value & 0x7F);
34615|  1.18k|        }
34616|  1.56k|        else if (value <= 528167)
  ------------------
  |  Branch (34616:18): [True: 770, False: 792]
  ------------------
34617|    770|        {
34618|    770|            value -= 3880;
34619|    770|            write_bon8_bytes(0xE0 + ((value >> 15) & 0x0F), (value >> 8) & 0x7F, value);
34620|    770|        }
34621|    792|        else
34622|    792|        {
34623|    792|            value -= 528168;
34624|    792|            write_bon8_bytes(0xF0 + ((value >> 23) & 0x07), (value >> 16) & 0x7F, value >> 8, value);
34625|    792|        }
34626|  21.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIlEEvT_b:
34737|    790|    {
34738|       |        // step 1: write the number to an array of length NumberType
34739|    790|        std::array<CharType, sizeof(NumberType)> vec{};
34740|    790|        std::memcpy(vec.data(), &n, sizeof(NumberType));
34741|       |
34742|       |        // step 2: write the array to output (with possible reordering)
34743|    790|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (34743:13): [True: 790, False: 0]
  ------------------
34744|    790|        {
34745|       |            // reverse byte order prior to conversion if necessary
34746|    790|            reverse_bytes(vec);
34747|    790|        }
34748|       |
34749|    790|        oa.write_characters(vec.data(), sizeof(NumberType));
34750|    790|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesERNS4_5arrayIhLm8EEE:
34712|  3.85k|    {
34713|  3.85k|        byte_swap_buffer<std::uint64_t>(a);
34714|  3.85k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16byte_swap_bufferImLm8EEEvRNS4_5arrayIhXT0_EEE:
34691|  3.85k|    {
34692|  3.85k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
34693|  3.85k|        UIntType v{};
34694|  3.85k|        std::memcpy(&v, a.data(), sizeof(v));
34695|  3.85k|        v = byteswap(v);
34696|  3.85k|        std::memcpy(a.data(), &v, sizeof(v));
34697|  3.85k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE16write_charactersEPKhm:
29015|  93.0k|    {
29016|  93.0k|        if (JSON_HEDLEY_UNLIKELY(space() < length))
  ------------------
  |  | 1697|  93.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2.43k, False: 90.6k]
  |  |  ------------------
  ------------------
29017|  2.43k|        {
29018|  2.43k|            if (length >= max_reserve_size)
  ------------------
  |  Branch (29018:17): [True: 90, False: 2.34k]
  ------------------
29019|     90|            {
29020|     90|                append(s, length);
29021|     90|                return;
29022|     90|            }
29023|  2.34k|            grow(length);
29024|  2.34k|        }
29025|  92.9k|        if (length <= 32)
  ------------------
  |  Branch (29025:13): [True: 92.5k, False: 396]
  ------------------
29026|  92.5k|        {
29027|  92.5k|            copy_short(cursor, s, length, std::integral_constant<bool, sizeof(CharType) == 1>());
29028|  92.5k|            cursor += length;
29029|  92.5k|        }
29030|    396|        else
29031|    396|        {
29032|    396|            std::memcpy(cursor, s, length * sizeof(CharType));
29033|    396|            cursor += length;
29034|    396|        }
29035|  92.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE5spaceEv:
29100|  99.9k|    {
29101|  99.9k|        return static_cast<std::size_t>(limit - cursor);
29102|  99.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE6appendEPKhm:
29136|     90|    {
29137|     90|        const std::size_t written = position();
29138|     90|        v->resize(written);
29139|     90|        if (v->capacity() - written < length)
  ------------------
  |  Branch (29139:13): [True: 90, False: 0]
  ------------------
29140|     90|        {
29141|       |            // grow geometrically, with room for the writes that follow, so
29142|       |            // that the next grow() need not reallocate right away
29143|     90|            v->reserve((std::max)(v->capacity() * 2, written + length + max_reserve_size));
29144|     90|        }
29145|     90|        v->insert(v->end(), s, s + length);
29146|     90|        cursor = v->data() + v->size();
29147|     90|        limit = cursor;
29148|     90|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE4growEm:
29109|  13.8k|    {
29110|       |        // use the capacity the vector already has, else at least double it;
29111|       |        // never less than min_vector_sink_capacity, so that a small value does not
29112|       |        // reallocate for every few bytes
29113|  13.8k|        const std::size_t written = position();
29114|  13.8k|        const std::size_t needed = written + length;
29115|  13.8k|        const std::size_t capacity = (std::max)(min_vector_sink_capacity, needed <= v->capacity()
  ------------------
  |  Branch (29115:75): [True: 8.38k, False: 5.46k]
  ------------------
29116|  13.8k|                                                ? v->capacity()
29117|  13.8k|                                                : (std::max)(needed, v->capacity() * 2));
29118|  13.8k|        v->reserve(capacity);
29119|       |        // resize() zeroes the characters it adds. Zeroing all of a doubled
29120|       |        // capacity, megabytes of a fresh allocation, at once faults in its
29121|       |        // pages and evicts them from the cache before the writer gets there,
29122|       |        // so its stores miss again; a window ahead of the position is still
29123|       |        // cached when they come (the binary writers on a long array of
29124|       |        // numbers: 4-26 % faster on x86, 1-2.5 % on Apple M1)
29125|  13.8k|        v->resize((std::min)(capacity, (std::max)(needed, written + vector_sink_window)));
29126|  13.8k|        cursor = v->data() + written;
29127|  13.8k|        limit = v->data() + v->size();
29128|  13.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10copy_shortIhEEvPT_PKS3_mNSt3__117integral_constantIbLb1EEE:
28898|  92.5k|{
28899|  92.5k|    JSON_ASSERT(length <= 32);
  ------------------
  |  | 2643|  92.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28899:5): [True: 92.5k, False: 0]
  ------------------
28900|  92.5k|    if (length >= 16)
  ------------------
  |  Branch (28900:9): [True: 1.23k, False: 91.3k]
  ------------------
28901|  1.23k|    {
28902|  1.23k|        std::array<char, 16> first; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28903|  1.23k|        std::array<char, 16> last; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28904|  1.23k|        std::memcpy(first.data(), src, 16);
28905|  1.23k|        std::memcpy(last.data(), src + (length - 16), 16);
28906|  1.23k|        std::memcpy(dst, first.data(), 16);
28907|  1.23k|        std::memcpy(dst + (length - 16), last.data(), 16);
28908|  1.23k|    }
28909|  91.3k|    else if (length >= 8)
  ------------------
  |  Branch (28909:14): [True: 3.56k, False: 87.7k]
  ------------------
28910|  3.56k|    {
28911|  3.56k|        std::array<char, 8> first; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28912|  3.56k|        std::array<char, 8> last; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28913|  3.56k|        std::memcpy(first.data(), src, 8);
28914|  3.56k|        std::memcpy(last.data(), src + (length - 8), 8);
28915|  3.56k|        std::memcpy(dst, first.data(), 8);
28916|  3.56k|        std::memcpy(dst + (length - 8), last.data(), 8);
28917|  3.56k|    }
28918|  87.7k|    else if (length >= 4)
  ------------------
  |  Branch (28918:14): [True: 7.26k, False: 80.4k]
  ------------------
28919|  7.26k|    {
28920|  7.26k|        std::array<char, 4> first; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28921|  7.26k|        std::array<char, 4> last; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28922|  7.26k|        std::memcpy(first.data(), src, 4);
28923|  7.26k|        std::memcpy(last.data(), src + (length - 4), 4);
28924|  7.26k|        std::memcpy(dst, first.data(), 4);
28925|  7.26k|        std::memcpy(dst + (length - 4), last.data(), 4);
28926|  7.26k|    }
28927|  80.4k|    else if (length != 0)
  ------------------
  |  Branch (28927:14): [True: 80.4k, False: 0]
  ------------------
28928|  80.4k|    {
28929|       |        // 1 to 3: the first, the middle, and the last character
28930|  80.4k|        const CharType a = src[0];
28931|  80.4k|        const CharType b = src[length >> 1];
28932|  80.4k|        const CharType c = src[length - 1];
28933|  80.4k|        dst[0] = a;
28934|  80.4k|        dst[length >> 1] = b;
28935|  80.4k|        dst[length - 1] = c;
28936|  80.4k|    }
28937|  92.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIiEEvT_b:
34737|  1.10k|    {
34738|       |        // step 1: write the number to an array of length NumberType
34739|  1.10k|        std::array<CharType, sizeof(NumberType)> vec{};
34740|  1.10k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
34741|       |
34742|       |        // step 2: write the array to output (with possible reordering)
34743|  1.10k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (34743:13): [True: 1.10k, False: 0]
  ------------------
34744|  1.10k|        {
34745|       |            // reverse byte order prior to conversion if necessary
34746|  1.10k|            reverse_bytes(vec);
34747|  1.10k|        }
34748|       |
34749|  1.10k|        oa.write_characters(vec.data(), sizeof(NumberType));
34750|  1.10k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesERNS4_5arrayIhLm4EEE:
34707|  5.81k|    {
34708|  5.81k|        byte_swap_buffer<std::uint32_t>(a);
34709|  5.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16byte_swap_bufferIjLm4EEEvRNS4_5arrayIhXT0_EEE:
34691|  5.81k|    {
34692|  5.81k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
34693|  5.81k|        UIntType v{};
34694|  5.81k|        std::memcpy(&v, a.data(), sizeof(v));
34695|  5.81k|        v = byteswap(v);
34696|  5.81k|        std::memcpy(a.data(), &v, sizeof(v));
34697|  5.81k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJllllEEEvDpKT_:
34631|  1.40k|    {
34632|  1.40k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34633|  1.40k|        oa.write_characters(buffer.data(), buffer.size());
34634|  1.40k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJlllEEEvDpKT_:
34631|  1.58k|    {
34632|  1.58k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34633|  1.58k|        oa.write_characters(buffer.data(), buffer.size());
34634|  1.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJllEEEvDpKT_:
34631|  2.26k|    {
34632|  2.26k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34633|  2.26k|        oa.write_characters(buffer.data(), buffer.size());
34634|  2.26k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJlEEEvDpKT_:
34631|  14.3k|    {
34632|  14.3k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34633|  14.3k|        oa.write_characters(buffer.data(), buffer.size());
34634|  14.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12integer_fitsIllEEbT0_:
30269|  13.4k|    {
30270|  13.4k|        return integer_fits_min<TargetType>(n) && integer_fits_max<TargetType>(n);
  ------------------
  |  Branch (30270:16): [True: 13.4k, False: 0]
  |  Branch (30270:51): [True: 13.4k, False: 0]
  ------------------
30271|  13.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16integer_fits_minIllEEbT0_:
30246|  13.4k|    {
30247|  13.4k|        return integer_fits_min<TargetType>(n, std::integral_constant<bool, integer_range<TargetType, NumberType>::may_fall_below_min>());
30248|  13.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16integer_fits_minIllEEbT0_NS4_17integral_constantIbLb0EEE:
30252|  13.4k|    {
30253|  13.4k|        return true;
30254|  13.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16integer_fits_maxIllEEbT0_:
30223|  13.4k|    {
30224|  13.4k|        return integer_fits_max<TargetType>(n, std::integral_constant<bool, integer_range<TargetType, NumberType>::may_exceed_max>());
30225|  13.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16integer_fits_maxIllEEbT0_NS4_17integral_constantIbLb0EEE:
30229|  13.4k|    {
30230|  13.4k|        return true;
30231|  13.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_floatEd:
34646|  8.45k|    {
34647|  8.45k|#ifdef __GNUC__
34648|  8.45k|        JSON_HEDLEY_DIAGNOSTIC_PUSH
34649|  8.45k|        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
34650|  8.45k|#endif
34651|  8.45k|        if (n == static_cast<number_float_t>(-1))
  ------------------
  |  Branch (34651:13): [True: 2.13k, False: 6.31k]
  ------------------
34652|  2.13k|        {
34653|  2.13k|            oa.write_character(to_char_type(0xFB));
34654|  2.13k|        }
34655|  6.31k|        else if (n == static_cast<number_float_t>(0) && !std::signbit(n))
  ------------------
  |  Branch (34655:18): [True: 1.73k, False: 4.57k]
  |  Branch (34655:57): [True: 1.54k, False: 196]
  ------------------
34656|  1.54k|        {
34657|  1.54k|            oa.write_character(to_char_type(0xFC));
34658|  1.54k|        }
34659|  4.77k|        else if (n == static_cast<number_float_t>(1))
  ------------------
  |  Branch (34659:18): [True: 1.63k, False: 3.14k]
  ------------------
34660|  1.63k|        {
34661|  1.63k|            oa.write_character(to_char_type(0xFD));
34662|  1.63k|        }
34663|  3.14k|        else if (std::isnan(n))
  ------------------
  |  Branch (34663:18): [True: 240, False: 2.90k]
  ------------------
34664|    240|        {
34665|    240|            write_bon8_bytes(0x8E, 0x7F, 0x80, 0x00, 0x01);
34666|    240|        }
34667|  2.90k|        else
34668|  2.90k|        {
34669|  2.90k|            write_compact_float(n, to_char_type(0x8E), to_char_type(0x8F));
34670|  2.90k|        }
34671|  8.45k|#ifdef __GNUC__
34672|  8.45k|        JSON_HEDLEY_DIAGNOSTIC_POP
34673|  8.45k|#endif
34674|  8.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_bon8_bytesIJiiiiiEEEvDpKT_:
34631|    240|    {
34632|    240|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34633|    240|        oa.write_characters(buffer.data(), buffer.size());
34634|    240|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE19write_compact_floatEdhh:
34821|  2.90k|    {
34822|  2.90k|        if (fits_float32(n))
  ------------------
  |  Branch (34822:13): [True: 1.77k, False: 1.12k]
  ------------------
34823|  1.77k|        {
34824|  1.77k|            oa.write_character(float32_marker);
34825|  1.77k|            write_number(static_cast<float>(n));
34826|  1.77k|        }
34827|  1.12k|        else
34828|  1.12k|        {
34829|  1.12k|            oa.write_character(float64_marker);
34830|  1.12k|            write_number(n);
34831|  1.12k|        }
34832|  2.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12fits_float32Ed:
34754|  5.58k|    {
34755|  5.58k|        static_assert(std::is_same<number_float_t, float>::value || std::is_same<number_float_t, double>::value,
34756|  5.58k|                      "number_float_t must be float or double for the CBOR/MessagePack/BON8 writer");
34757|  5.58k|#ifdef __GNUC__
34758|  5.58k|        JSON_HEDLEY_DIAGNOSTIC_PUSH
34759|  5.58k|        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
34760|  5.58k|#endif
34761|       |#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 7)
34762|       |        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wduplicated-branches")
34763|       |#endif
34764|  5.58k|        return !std::isfinite(n) || ((static_cast<double>(n) >= static_cast<double>(std::numeric_limits<float>::lowest()) &&
  ------------------
  |  Branch (34764:16): [True: 558, False: 5.02k]
  |  Branch (34764:39): [True: 4.82k, False: 202]
  ------------------
34765|  4.82k|                                      static_cast<double>(n) <= static_cast<double>((std::numeric_limits<float>::max)()) &&
  ------------------
  |  Branch (34765:39): [True: 4.57k, False: 250]
  ------------------
34766|  4.57k|                                      static_cast<double>(static_cast<float>(n)) == static_cast<double>(n)));
  ------------------
  |  Branch (34766:39): [True: 2.82k, False: 1.75k]
  ------------------
34767|  5.58k|#ifdef __GNUC__
34768|  5.58k|        JSON_HEDLEY_DIAGNOSTIC_POP
34769|  5.58k|#endif
34770|  5.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIfEEvT_b:
34737|  1.77k|    {
34738|       |        // step 1: write the number to an array of length NumberType
34739|  1.77k|        std::array<CharType, sizeof(NumberType)> vec{};
34740|  1.77k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
34741|       |
34742|       |        // step 2: write the array to output (with possible reordering)
34743|  1.77k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (34743:13): [True: 1.77k, False: 0]
  ------------------
34744|  1.77k|        {
34745|       |            // reverse byte order prior to conversion if necessary
34746|  1.77k|            reverse_bytes(vec);
34747|  1.77k|        }
34748|       |
34749|  1.77k|        oa.write_characters(vec.data(), sizeof(NumberType));
34750|  1.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIdEEvT_b:
34737|  1.12k|    {
34738|       |        // step 1: write the number to an array of length NumberType
34739|  1.12k|        std::array<CharType, sizeof(NumberType)> vec{};
34740|  1.12k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
34741|       |
34742|       |        // step 2: write the array to output (with possible reordering)
34743|  1.12k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (34743:13): [True: 1.12k, False: 0]
  ------------------
34744|  1.12k|        {
34745|       |            // reverse byte order prior to conversion if necessary
34746|  1.12k|            reverse_bytes(vec);
34747|  1.12k|        }
34748|       |
34749|  1.12k|        oa.write_characters(vec.data(), sizeof(NumberType));
34750|  1.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_bon8_stringERKSC_RbRKSG_:
34428|  78.5k|    {
34429|  78.5k|        check_utf8(s, context);
34430|       |
34431|       |        // a string that follows another string terminates it
34432|  78.5k|        if (string_open)
  ------------------
  |  Branch (34432:13): [True: 2.51k, False: 76.0k]
  ------------------
34433|  2.51k|        {
34434|  2.51k|            oa.write_character(to_char_type(0xFF));
34435|  2.51k|        }
34436|       |
34437|  78.5k|        if (s.empty())
  ------------------
  |  Branch (34437:13): [True: 10.1k, False: 68.4k]
  ------------------
34438|  10.1k|        {
34439|       |            // the empty string is just the end-of-string marker
34440|  10.1k|            oa.write_character(to_char_type(0xFF));
34441|  10.1k|            string_open = false;
34442|  10.1k|        }
34443|  68.4k|        else
34444|  68.4k|        {
34445|  68.4k|            write_bytes(s.data(), s.size());
34446|  68.4k|            string_open = true;
34447|  68.4k|        }
34448|  78.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE10check_utf8ERKSC_RKSG_:
34460|  78.5k|    {
34461|  78.5k|        const auto* data = reinterpret_cast<const unsigned char*>(s.data());
34462|  78.5k|        if (JSON_HEDLEY_UNLIKELY(!valid_utf8_string(data, s.size())))
  ------------------
  |  | 1697|  78.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 78.5k]
  |  |  ------------------
  ------------------
34463|      0|        {
34464|      0|            throw_invalid_utf8(data, valid_utf8_prefix(data, s.size()), context);
34465|      0|        }
34466|  78.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE11write_bytesEPKvm:
30381|  68.4k|    {
30382|  68.4k|        oa.write_characters(static_cast<const CharType*>(data), size);
30383|  68.4k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9is_numberEv:
42091|   144k|    {
42092|   144k|        return is_number_integer() || is_number_float();
  ------------------
  |  Branch (42092:16): [True: 20.0k, False: 124k]
  |  Branch (42092:39): [True: 12.6k, False: 111k]
  ------------------
42093|   144k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE17is_number_integerEv:
42099|   144k|    {
42100|   144k|        return m_data.m_type == value_t::number_integer || m_data.m_type == value_t::number_unsigned;
  ------------------
  |  Branch (42100:16): [True: 7.88k, False: 136k]
  |  Branch (42100:60): [True: 12.1k, False: 124k]
  ------------------
42101|   144k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE15is_number_floatEv:
42115|   144k|    {
42116|   144k|        return m_data.m_type == value_t::number_float;
42117|   144k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE25write_bon8_array_elementsINS6_ISG_NSA_ISG_EEEEEEvRKT_Rbm:
34244|  4.97k|    {
34245|  4.97k|        constexpr std::size_t max_run = max_reserve_size / 9;
34246|  4.97k|        auto it = array.begin();
34247|  4.97k|        const auto end = array.end();
34248|  19.0k|        while (it != end)
  ------------------
  |  Branch (34248:16): [True: 14.1k, False: 4.97k]
  ------------------
34249|  14.1k|        {
34250|  14.1k|            if (!it->is_number())
  ------------------
  |  Branch (34250:17): [True: 7.21k, False: 6.90k]
  ------------------
34251|  7.21k|            {
34252|  7.21k|                write_bon8_value(*it, string_open, depth + 1);
34253|  7.21k|                ++it;
34254|  7.21k|                continue;
34255|  7.21k|            }
34256|       |
34257|  6.90k|            CharType* const start = oa.reserve(max_run * 9);
34258|  6.90k|            CharType* out = start;
34259|  6.90k|            bool unencodable = false;
34260|  27.6k|            for (std::size_t n = 0; n < max_run && it != end && it->is_number(); ++n)
  ------------------
  |  Branch (34260:37): [True: 27.3k, False: 274]
  |  Branch (34260:52): [True: 24.9k, False: 2.48k]
  |  Branch (34260:65): [True: 20.7k, False: 4.14k]
  ------------------
34261|  20.7k|            {
34262|  20.7k|                if (it->is_number_float())
  ------------------
  |  Branch (34262:21): [True: 7.64k, False: 13.1k]
  ------------------
34263|  7.64k|                {
34264|  7.64k|                    out = encode_bon8_float(out, it->m_data.m_value.number_float);
34265|  7.64k|                }
34266|  13.1k|                else if (JSON_HEDLEY_UNLIKELY((it->m_data.m_type == value_t::number_unsigned
  ------------------
  |  | 1697|  65.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 13.1k]
  |  |  |  Branch (1697:94): [True: 8.39k, False: 4.72k]
  |  |  |  Branch (1697:94): [True: 0, False: 8.39k]
  |  |  |  Branch (1697:94): [True: 4.72k, False: 8.39k]
  |  |  |  Branch (1697:94): [True: 0, False: 4.72k]
  |  |  ------------------
  ------------------
34267|  13.1k|                                               && !integer_fits_max<std::int64_t>(it->m_data.m_value.number_unsigned))
34268|  13.1k|                                              || (it->m_data.m_type == value_t::number_integer
34269|  13.1k|                                                  && !integer_fits<std::int64_t>(it->m_data.m_value.number_integer))))
34270|      0|                {
34271|      0|                    unencodable = true;
34272|      0|                    break;
34273|      0|                }
34274|  13.1k|                else
34275|  13.1k|                {
34276|  13.1k|                    out = encode_bon8_integer(out, it->m_data.m_type == value_t::number_integer
  ------------------
  |  Branch (34276:52): [True: 4.72k, False: 8.39k]
  ------------------
34277|  13.1k|                                              ? static_cast<std::int64_t>(it->m_data.m_value.number_integer)
34278|  13.1k|                                              : static_cast<std::int64_t>(it->m_data.m_value.number_unsigned));
34279|  13.1k|                }
34280|  20.7k|                ++it;
34281|  20.7k|            }
34282|  6.90k|            oa.commit(static_cast<std::size_t>(out - start));
34283|  6.90k|            if (out != start)
  ------------------
  |  Branch (34283:17): [True: 6.90k, False: 0]
  ------------------
34284|  6.90k|            {
34285|       |                // a number follows a string without terminating it
34286|  6.90k|                string_open = false;
34287|  6.90k|            }
34288|       |
34289|  6.90k|            if (JSON_HEDLEY_UNLIKELY(unencodable))
  ------------------
  |  | 1697|  6.90k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 6.90k]
  |  |  ------------------
  ------------------
34290|      0|            {
34291|       |                // an integer beyond the int64 range, as write_bon8_value would report it
34292|      0|                throw_integer_out_of_range(*it, input_format_t::bon8, "int64");
34293|      0|            }
34294|  6.90k|        }
34295|  4.97k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE7reserveEm:
29046|  6.90k|    {
29047|  6.90k|        JSON_ASSERT(length <= max_reserve_size);
  ------------------
  |  | 2643|  6.90k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29047:9): [True: 6.90k, False: 0]
  ------------------
29048|  6.90k|        if (JSON_HEDLEY_UNLIKELY(space() < length))
  ------------------
  |  | 1697|  6.90k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2.25k, False: 4.64k]
  |  |  ------------------
  ------------------
29049|  2.25k|        {
29050|  2.25k|            grow(length);
29051|  2.25k|        }
29052|  6.90k|        return cursor;
29053|  6.90k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17encode_bon8_floatEPhd:
34200|  7.64k|    {
34201|  7.64k|#ifdef __GNUC__
34202|  7.64k|        JSON_HEDLEY_DIAGNOSTIC_PUSH
34203|  7.64k|        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
34204|  7.64k|#endif
34205|  7.64k|        if (n == static_cast<number_float_t>(-1))
  ------------------
  |  Branch (34205:13): [True: 994, False: 6.64k]
  ------------------
34206|    994|        {
34207|    994|            *out++ = to_char_type(0xFB);
34208|    994|            return out;
34209|    994|        }
34210|  6.64k|        if (n == static_cast<number_float_t>(0) && !std::signbit(n))
  ------------------
  |  Branch (34210:13): [True: 2.61k, False: 4.03k]
  |  Branch (34210:52): [True: 2.42k, False: 190]
  ------------------
34211|  2.42k|        {
34212|  2.42k|            *out++ = to_char_type(0xFC);
34213|  2.42k|            return out;
34214|  2.42k|        }
34215|  4.22k|        if (n == static_cast<number_float_t>(1))
  ------------------
  |  Branch (34215:13): [True: 1.28k, False: 2.93k]
  ------------------
34216|  1.28k|        {
34217|  1.28k|            *out++ = to_char_type(0xFD);
34218|  1.28k|            return out;
34219|  1.28k|        }
34220|  2.93k|        if (std::isnan(n))
  ------------------
  |  Branch (34220:13): [True: 256, False: 2.67k]
  ------------------
34221|    256|        {
34222|    256|            return put_bon8_bytes(out, 0x8E, 0x7F, 0x80, 0x00, 0x01);
34223|    256|        }
34224|  2.67k|        return out + encode_compact_float(out, n, to_char_type(0x8E), to_char_type(0x8F));
34225|  2.93k|#ifdef __GNUC__
34226|  2.93k|        JSON_HEDLEY_DIAGNOSTIC_POP
34227|  2.93k|#endif
34228|  2.93k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE14put_bon8_bytesIJiiiiiEEEPhSL_DpKT_:
34188|    256|    {
34189|    256|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34190|    256|        std::memcpy(out, buffer.data(), buffer.size());
34191|    256|        return out + buffer.size();
34192|    256|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20encode_compact_floatEPhdhh:
34777|  2.67k|    {
34778|  2.67k|        if (fits_float32(n))
  ------------------
  |  Branch (34778:13): [True: 1.60k, False: 1.07k]
  ------------------
34779|  1.60k|        {
34780|  1.60k|            *out = float32_marker;
34781|  1.60k|            store_number(out + 1, static_cast<float>(n), false);
34782|  1.60k|            return 1 + sizeof(float);
34783|  1.60k|        }
34784|  1.07k|        *out = float64_marker;
34785|  1.07k|        store_number(out + 1, n, false);
34786|  1.07k|        return 1 + sizeof(number_float_t);
34787|  2.67k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12store_numberIfEEPhSL_T_b:
33311|  1.60k|    {
33312|  1.60k|        std::array<CharType, sizeof(NumberType)> vec{};
33313|  1.60k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
33314|  1.60k|        if (is_little_endian != output_little_endian)
  ------------------
  |  Branch (33314:13): [True: 1.60k, False: 0]
  ------------------
33315|  1.60k|        {
33316|  1.60k|            reverse_bytes(vec);
33317|  1.60k|        }
33318|  1.60k|        std::memcpy(out, vec.data(), sizeof(NumberType));
33319|  1.60k|        return out + sizeof(NumberType);
33320|  1.60k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12store_numberIdEEPhSL_T_b:
33311|  1.07k|    {
33312|  1.07k|        std::array<CharType, sizeof(NumberType)> vec{};
33313|  1.07k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
33314|  1.07k|        if (is_little_endian != output_little_endian)
  ------------------
  |  Branch (33314:13): [True: 1.07k, False: 0]
  ------------------
33315|  1.07k|        {
33316|  1.07k|            reverse_bytes(vec);
33317|  1.07k|        }
33318|  1.07k|        std::memcpy(out, vec.data(), sizeof(NumberType));
33319|  1.07k|        return out + sizeof(NumberType);
33320|  1.07k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE19encode_bon8_integerEPhl:
34137|  13.1k|    {
34138|  13.1k|        if (value < (std::numeric_limits<std::int32_t>::min)() || value > (std::numeric_limits<std::int32_t>::max)())
  ------------------
  |  Branch (34138:13): [True: 550, False: 12.5k]
  |  Branch (34138:67): [True: 310, False: 12.2k]
  ------------------
34139|    860|        {
34140|    860|            *out++ = to_char_type(0x8D);
34141|    860|            return store_number(out, value, false);
34142|    860|        }
34143|  12.2k|        if (value < -33818506 || value > 67637031)
  ------------------
  |  Branch (34143:13): [True: 608, False: 11.6k]
  |  Branch (34143:34): [True: 728, False: 10.9k]
  ------------------
34144|  1.33k|        {
34145|  1.33k|            *out++ = to_char_type(0x8C);
34146|  1.33k|            return store_number(out, static_cast<std::int32_t>(value), false);
34147|  1.33k|        }
34148|  10.9k|        if (value <= -264075)
  ------------------
  |  Branch (34148:13): [True: 348, False: 10.5k]
  ------------------
34149|    348|        {
34150|    348|            value = -(value + 264075);
34151|    348|            return put_bon8_bytes(out, 0xF0 + ((value >> 22) & 0x07), 0xC0 + ((value >> 16) & 0x3F), value >> 8, value);
34152|    348|        }
34153|  10.5k|        if (value <= -1931)
  ------------------
  |  Branch (34153:13): [True: 356, False: 10.2k]
  ------------------
34154|    356|        {
34155|    356|            value = -(value + 1931);
34156|    356|            return put_bon8_bytes(out, 0xE0 + ((value >> 14) & 0x0F), 0xC0 + ((value >> 8) & 0x3F), value);
34157|    356|        }
34158|  10.2k|        if (value <= -11)
  ------------------
  |  Branch (34158:13): [True: 312, False: 9.91k]
  ------------------
34159|    312|        {
34160|    312|            value = -(value + 11);
34161|    312|            return put_bon8_bytes(out, 0xC2 + ((value >> 6) & 0x1F), 0xC0 + (value & 0x3F));
34162|    312|        }
34163|  9.91k|        if (value <= -1)
  ------------------
  |  Branch (34163:13): [True: 2.55k, False: 7.36k]
  ------------------
34164|  2.55k|        {
34165|  2.55k|            return put_bon8_bytes(out, 0xB8 - (value + 1));
34166|  2.55k|        }
34167|  7.36k|        if (value <= 39)
  ------------------
  |  Branch (34167:13): [True: 6.16k, False: 1.19k]
  ------------------
34168|  6.16k|        {
34169|  6.16k|            return put_bon8_bytes(out, 0x90 + value);
34170|  6.16k|        }
34171|  1.19k|        if (value <= 3879)
  ------------------
  |  Branch (34171:13): [True: 604, False: 588]
  ------------------
34172|    604|        {
34173|    604|            value -= 40;
34174|    604|            return put_bon8_bytes(out, 0xC2 + ((value >> 7) & 0x1F), value & 0x7F);
34175|    604|        }
34176|    588|        if (value <= 528167)
  ------------------
  |  Branch (34176:13): [True: 278, False: 310]
  ------------------
34177|    278|        {
34178|    278|            value -= 3880;
34179|    278|            return put_bon8_bytes(out, 0xE0 + ((value >> 15) & 0x0F), (value >> 8) & 0x7F, value);
34180|    278|        }
34181|    310|        value -= 528168;
34182|    310|        return put_bon8_bytes(out, 0xF0 + ((value >> 23) & 0x07), (value >> 16) & 0x7F, value >> 8, value);
34183|    588|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12store_numberIlEEPhSL_T_b:
33311|    860|    {
33312|    860|        std::array<CharType, sizeof(NumberType)> vec{};
33313|    860|        std::memcpy(vec.data(), &n, sizeof(NumberType));
33314|    860|        if (is_little_endian != output_little_endian)
  ------------------
  |  Branch (33314:13): [True: 860, False: 0]
  ------------------
33315|    860|        {
33316|    860|            reverse_bytes(vec);
33317|    860|        }
33318|    860|        std::memcpy(out, vec.data(), sizeof(NumberType));
33319|    860|        return out + sizeof(NumberType);
33320|    860|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12store_numberIiEEPhSL_T_b:
33311|  1.33k|    {
33312|  1.33k|        std::array<CharType, sizeof(NumberType)> vec{};
33313|  1.33k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
33314|  1.33k|        if (is_little_endian != output_little_endian)
  ------------------
  |  Branch (33314:13): [True: 1.33k, False: 0]
  ------------------
33315|  1.33k|        {
33316|  1.33k|            reverse_bytes(vec);
33317|  1.33k|        }
33318|  1.33k|        std::memcpy(out, vec.data(), sizeof(NumberType));
33319|  1.33k|        return out + sizeof(NumberType);
33320|  1.33k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE14put_bon8_bytesIJllllEEEPhSL_DpKT_:
34188|    658|    {
34189|    658|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34190|    658|        std::memcpy(out, buffer.data(), buffer.size());
34191|    658|        return out + buffer.size();
34192|    658|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE14put_bon8_bytesIJlllEEEPhSL_DpKT_:
34188|    634|    {
34189|    634|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34190|    634|        std::memcpy(out, buffer.data(), buffer.size());
34191|    634|        return out + buffer.size();
34192|    634|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE14put_bon8_bytesIJllEEEPhSL_DpKT_:
34188|    916|    {
34189|    916|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34190|    916|        std::memcpy(out, buffer.data(), buffer.size());
34191|    916|        return out + buffer.size();
34192|    916|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE14put_bon8_bytesIJlEEEPhSL_DpKT_:
34188|  8.72k|    {
34189|  8.72k|        const std::array<CharType, sizeof...(Bytes)> buffer{{to_char_type(static_cast<std::uint8_t>(bytes & 0xFF))...}};
34190|  8.72k|        std::memcpy(out, buffer.data(), buffer.size());
34191|  8.72k|        return out + buffer.size();
34192|  8.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE6commitEm:
29058|  6.90k|    {
29059|  6.90k|        cursor += length;
29060|  6.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE18write_bon8_membersERKSG_Rbm:
34306|  10.7k|    {
34307|  10.7k|        for (const auto& el : *j.m_data.m_value.object)
  ------------------
  |  Branch (34307:29): [True: 18.7k, False: 10.7k]
  ------------------
34308|  18.7k|        {
34309|  18.7k|            write_bon8_string(el.first, string_open, j);
34310|       |
34311|  18.7k|            const BasicJsonType& value = el.second;
34312|  18.7k|            switch (value.type())
34313|  18.7k|            {
34314|  1.20k|                case value_t::null:
  ------------------
  |  Branch (34314:17): [True: 1.20k, False: 17.5k]
  ------------------
34315|  1.20k|                    write_bon8_marker(0xFA, string_open);
34316|  1.20k|                    break;
34317|       |
34318|  1.23k|                case value_t::boolean:
  ------------------
  |  Branch (34318:17): [True: 1.23k, False: 17.5k]
  ------------------
34319|  1.23k|                    write_bon8_marker(value.m_data.m_value.boolean ? 0xF9 : 0xF8, string_open);
  ------------------
  |  Branch (34319:39): [True: 128, False: 1.10k]
  ------------------
34320|  1.23k|                    break;
34321|       |
34322|  1.60k|                case value_t::string:
  ------------------
  |  Branch (34322:17): [True: 1.60k, False: 17.1k]
  ------------------
34323|  1.60k|                    write_bon8_string(*value.m_data.m_value.string, string_open, value);
34324|  1.60k|                    break;
34325|       |
34326|  2.28k|                case value_t::number_integer:
  ------------------
  |  Branch (34326:17): [True: 2.28k, False: 16.4k]
  ------------------
34327|  2.28k|                    if (JSON_HEDLEY_UNLIKELY(!integer_fits<std::int64_t>(value.m_data.m_value.number_integer)))
  ------------------
  |  | 1697|  2.28k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.28k]
  |  |  ------------------
  ------------------
34328|      0|                    {
34329|       |                        // beyond 64 bits (number types wider than that)
34330|      0|                        throw_integer_out_of_range(value, input_format_t::bon8, "int64");
34331|      0|                    }
34332|  2.28k|                    write_bon8_integer(static_cast<std::int64_t>(value.m_data.m_value.number_integer));
34333|  2.28k|                    string_open = false;
34334|  2.28k|                    break;
34335|       |
34336|  2.03k|                case value_t::number_float:
  ------------------
  |  Branch (34336:17): [True: 2.03k, False: 16.7k]
  ------------------
34337|  2.03k|                    write_bon8_float(value.m_data.m_value.number_float);
34338|  2.03k|                    string_open = false;
34339|  2.03k|                    break;
34340|       |
34341|  3.38k|                case value_t::number_unsigned:
  ------------------
  |  Branch (34341:17): [True: 3.38k, False: 15.3k]
  ------------------
34342|  3.38k|                    if (JSON_HEDLEY_UNLIKELY(!integer_fits_max<std::int64_t>(value.m_data.m_value.number_unsigned)))
  ------------------
  |  | 1697|  3.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 3.38k]
  |  |  ------------------
  ------------------
34343|      0|                    {
34344|       |                        // too large for BON8
34345|      0|                        throw_integer_out_of_range(value, input_format_t::bon8, "int64");
34346|      0|                    }
34347|  3.38k|                    write_bon8_integer(static_cast<std::int64_t>(value.m_data.m_value.number_unsigned));
34348|  3.38k|                    string_open = false;
34349|  3.38k|                    break;
34350|       |
34351|  4.92k|                case value_t::object:
  ------------------
  |  Branch (34351:17): [True: 4.92k, False: 13.8k]
  ------------------
34352|  7.00k|                case value_t::array:
  ------------------
  |  Branch (34352:17): [True: 2.07k, False: 16.6k]
  ------------------
34353|  7.00k|                case value_t::binary:
  ------------------
  |  Branch (34353:17): [True: 0, False: 18.7k]
  ------------------
34354|  7.00k|                case value_t::discarded:
  ------------------
  |  Branch (34354:17): [True: 0, False: 18.7k]
  ------------------
34355|  7.00k|                default:
  ------------------
  |  Branch (34355:17): [True: 0, False: 18.7k]
  ------------------
34356|  7.00k|                    write_bon8_value(value, string_open, depth + 1);
34357|  7.00k|                    break;
34358|  18.7k|            }
34359|  18.7k|        }
34360|  10.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE15write_characterEh:
29002|   248k|    {
29003|   248k|        if (JSON_HEDLEY_UNLIKELY(cursor == limit))
  ------------------
  |  | 1697|   248k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 9.24k, False: 238k]
  |  |  ------------------
  ------------------
29004|  9.24k|        {
29005|  9.24k|            grow(1);
29006|  9.24k|        }
29007|   248k|        *cursor++ = c;
29008|   248k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12to_char_typeIhTnPNS4_9enable_ifIXsr3std11is_unsignedIT_EE5valueEvE4typeELPv0EEEhh:
34871|   309k|    {
34872|   309k|        return x;
34873|   309k|    }
_ZN8nlohmann16json_abi_v3_12_06detail35binary_writer_default_error_handlerEv:
 6168|  8.35k|{
 6169|       |#if JSON_STRICT_BINARY_UTF8
 6170|       |    return error_handler_t::strict;
 6171|       |#else
 6172|  8.35k|    return error_handler_t::keep;
 6173|  8.35k|#endif
 6174|  8.35k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8IPKhSH_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SJ_SK_bb:
46060|  5.72k|    {
46061|  5.72k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::bon8, strict, allow_exceptions);
46062|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8IRNS2_19basic_istringstreamIcS7_S9_EEEESE_OT_bb:
46048|  5.72k|    {
46049|  5.72k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bon8, strict, allow_exceptions);
46050|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail20input_stream_adapterEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
45629|  5.72k|    {
45630|  5.72k|        basic_json result;
45631|  5.72k|        detail::json_sax_dom_binary_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
45632|  5.72k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
45633|  5.72k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (45633:13): [True: 0, False: 5.72k]
  ------------------
45634|      0|        {
45635|      0|            result = value_t::discarded;
45636|      0|        }
45637|  5.72k|        return result;
45638|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEEC2ERSG_bPNS1_5lexerISG_SH_Lb0EEE:
17426|  5.72k|        : json_sax_dom_error_state(allow_exceptions_), root(r), m_lexer_ref(lexer_)
17427|  5.72k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
18477|  5.72k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
18478|  5.72k|    {
18479|  5.72k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
18480|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2EOS2_:
 9663|  5.72k|        : is(rhs.is), sb(rhs.sb)
 9664|       |#if JSON_PRECISE_STREAM_POSITION
 9665|       |        , lookahead(rhs.lookahead)
 9666|       |#endif
 9667|       |#if !JSON_DISABLE_STREAM_BULK_SCAN
 9668|  5.72k|        , token_carry(std::move(rhs.token_carry))
 9669|  5.72k|        , token_segment(rhs.token_segment)
 9670|  5.72k|        , current_in_get_area(rhs.current_in_get_area)
 9671|  5.72k|        , tracking_token(rhs.tracking_token)
 9672|  5.72k|        , no_get_area(rhs.no_get_area)
 9673|       |#endif
 9674|  5.72k|    {
 9675|  5.72k|        rhs.is = nullptr;
 9676|  5.72k|        rhs.sb = nullptr;
 9677|       |#if JSON_PRECISE_STREAM_POSITION
 9678|       |        rhs.lookahead = false;
 9679|       |#endif
 9680|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18token_carry_bufferC2EOS2_:
 9309|  11.4k|        : m_data(std::move(rhs.m_data)), m_end(rhs.m_end), m_capacity_end(rhs.m_capacity_end)
 9310|  11.4k|    {
 9311|  11.4k|        rhs.m_end = rhs.m_capacity_end = nullptr;
 9312|  11.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
18502|  5.72k|    {
18503|  5.72k|        sax = sax_;
18504|  5.72k|        container_stack.clear();
18505|  5.72k|        bon8_pushback_size = 0;
18506|  5.72k|        bool result = false;
18507|       |
18508|  5.72k|        switch (input_format)
18509|  5.72k|        {
18510|      0|            case input_format_t::bson:
  ------------------
  |  Branch (18510:13): [True: 0, False: 5.72k]
  ------------------
18511|      0|                result = parse_bson_internal();
18512|      0|                break;
18513|       |
18514|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (18514:13): [True: 0, False: 5.72k]
  ------------------
18515|      0|                result = parse_cbor_internal(tag_handler);
18516|      0|                break;
18517|       |
18518|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (18518:13): [True: 0, False: 5.72k]
  ------------------
18519|      0|                result = parse_msgpack_internal();
18520|      0|                break;
18521|       |
18522|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (18522:13): [True: 0, False: 5.72k]
  ------------------
18523|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (18523:13): [True: 0, False: 5.72k]
  ------------------
18524|      0|                result = parse_ubjson_internal();
18525|      0|                break;
18526|       |
18527|  5.72k|            case input_format_t::bon8:
  ------------------
  |  Branch (18527:13): [True: 5.72k, False: 0]
  ------------------
18528|  5.72k|                result = parse_bon8_internal();
18529|  5.72k|                break;
18530|       |
18531|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (18531:13): [True: 0, False: 5.72k]
  ------------------
18532|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (18532:13): [True: 0, False: 5.72k]
  ------------------
18533|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18533:17): [Folded, False: 0]
  ------------------
18534|  5.72k|        }
18535|       |
18536|       |        // strict mode: next byte must be EOF
18537|  4.27k|        if (result && strict)
  ------------------
  |  Branch (18537:13): [True: 4.27k, False: 0]
  |  Branch (18537:23): [True: 4.27k, False: 0]
  ------------------
18538|  4.27k|        {
18539|  4.27k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (18539:17): [True: 0, False: 4.27k]
  |  Branch (18539:59): [True: 0, False: 4.27k]
  ------------------
18540|      0|            {
18541|      0|                get_ignore_noop();
18542|      0|            }
18543|  4.27k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (18543:22): [True: 4.27k, False: 0]
  ------------------
18544|  4.27k|            {
18545|       |                // a string that ends a container hands back the byte after it
18546|  4.27k|                get_bon8();
18547|  4.27k|            }
18548|      0|            else
18549|      0|            {
18550|      0|                get();
18551|      0|            }
18552|       |
18553|  4.27k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  4.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 103, False: 4.17k]
  |  |  ------------------
  ------------------
18554|    103|            {
18555|    103|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
18556|    103|            }
18557|  4.27k|        }
18558|       |
18559|  4.17k|        return result;
18560|  4.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE6get_toIiEEbRT_PKc:
22855|  1.53k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.53k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.53k|        chars_read += new_chars_read;
22860|  1.53k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.53k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 1.51k]
  |  |  ------------------
  ------------------
22861|     17|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     17|            ++chars_read;
22864|     17|            static_cast<void>(report_eof(context));
22865|     17|            return false;
22866|     17|        }
22867|  1.51k|        return true;
22868|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIiEEmPT_m:
 9778|  1.53k|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|  1.53k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9783|       |        // the elements are in the get area: copy them, as sgetn() does, but
 9784|       |        // without the virtual call
 9785|  1.53k|        const char* const first = streambuf_access::get_ptr(sb);
 9786|  1.53k|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|  1.53k|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  3.04k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 1.51k, False: 17]
  |  |  |  Branch (1696:94): [True: 1.51k, False: 17]
  |  |  |  Branch (1696:94): [True: 1.51k, False: 0]
  |  |  ------------------
  ------------------
 9788|  1.51k|        {
 9789|  1.51k|            std::memcpy(dest, first, count * sizeof(T));
 9790|  1.51k|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|  1.51k|            return count * sizeof(T);
 9792|  1.51k|        }
 9793|     17|#endif
 9794|     17|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|     17|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|     17|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 0]
  |  |  ------------------
  ------------------
 9796|     17|        {
 9797|     17|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|     17|        }
 9799|     17|        return res;
 9800|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter16streambuf_access7get_ptrEPNSt3__115basic_streambufIcNS4_11char_traitsIcEEEE:
 9935|   370k|        {
 9936|   370k|            return (s->*(&streambuf_access::gptr))();
 9937|   370k|        }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter16streambuf_access7get_endEPNSt3__115basic_streambufIcNS4_11char_traitsIcEEEE:
 9939|   324k|        {
 9940|   324k|            return (s->*(&streambuf_access::egptr))();
 9941|   324k|        }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter16streambuf_access4bumpEPNSt3__115basic_streambufIcNS4_11char_traitsIcEEEEi:
 9947|   273k|        {
 9948|   273k|            (s->*(&streambuf_access::gbump))(n);
 9949|   273k|        }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10report_eofEPKc:
23343|  1.25k|    {
23344|  1.25k|        return sax->parse_error(chars_read, "<end of file>",
23345|  1.25k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
23346|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE17exception_messageERKSC_SM_:
23454|  1.54k|    {
23455|  1.54k|        std::string error_msg = "syntax error while parsing ";
23456|  1.54k|        error_msg += input_format_name(input_format);
23457|       |
23458|  1.54k|        return concat(error_msg, ' ', context, ": ", detail);
23459|  1.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9byte_swapIiEEvRT_:
22907|  1.51k|    {
22908|  1.51k|        constexpr std::size_t sz = sizeof(number);
22909|       |#ifdef __cpp_lib_byteswap
22910|       |        if constexpr (sz == 1)
22911|       |        {
22912|       |            return;
22913|       |        }
22914|       |        else if constexpr(std::is_integral_v<NumberType>)
22915|       |        {
22916|       |            number = std::byteswap(number);
22917|       |            return;
22918|       |        }
22919|       |        else
22920|       |        {
22921|       |#endif
22922|  1.51k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  4.54k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 3.03k, False: 1.51k]
  ------------------
22924|  3.03k|            {
22925|  3.03k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  3.03k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  1.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15enter_containerEbmi:
18618|   115k|    {
18619|   115k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1697|   231k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 115k]
  |  |  |  Branch (1697:94): [True: 12.6k, False: 103k]
  |  |  ------------------
  ------------------
18620|      0|        {
18621|      0|            return false;
18622|      0|        }
18623|       |
18624|   115k|        container_stack.emplace_back(len, is_object, type_marker);
18625|   115k|        return true;
18626|   115k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12start_objectEm:
17483|  12.6k|    {
17484|  12.6k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
17485|       |
17486|       |#if JSON_DIAGNOSTIC_POSITIONS
17487|       |        // Ensure this is after the call to handle_value to ensure correct start position.
17488|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
17489|       |#endif
17490|       |
17491|  12.6k|        return check_container_size(*this, len, "object", ref_stack.back());
17492|  12.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
17566|   115k|    {
17567|   115k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3.84k, False: 112k]
  ------------------
17568|  3.84k|        {
17569|  3.84k|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|  3.84k|            return &root;
17576|  3.84k|        }
17577|       |
17578|   112k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   112k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 103k, False: 8.61k]
  |  Branch (17578:9): [True: 8.61k, False: 0]
  |  Branch (17578:9): [True: 112k, False: 0]
  ------------------
17579|       |
17580|   112k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 103k, False: 8.61k]
  ------------------
17581|   103k|        {
17582|   103k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|   103k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   103k|        }
17590|       |
17591|  8.61k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 8.61k, False: 0]
  ------------------
17592|  8.61k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 8.61k, False: 0]
  ------------------
17593|  8.61k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  8.61k|        return object_element;
17600|  8.61k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_20input_stream_adapterEEESH_EEbRT_mPKcPT0_:
16179|   115k|{
16180|   115k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1697|   222k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 115k]
  |  |  |  Branch (1697:94): [True: 106k, False: 9.56k]
  |  |  |  Branch (1697:94): [True: 0, False: 106k]
  |  |  ------------------
  ------------------
16181|      0|    {
16182|      0|        return container_too_large_error(sax, len, kind, ref);
16183|      0|    }
16184|   115k|    return true;
16185|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11start_arrayEm:
17520|   103k|    {
17521|   103k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
17522|       |
17523|       |#if JSON_DIAGNOSTIC_POSITIONS
17524|       |        // Ensure this is after the call to handle_value to ensure correct start position.
17525|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
17526|       |#endif
17527|       |
17528|   103k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1697|   103k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 103k]
  |  |  ------------------
  ------------------
17529|      0|        {
17530|      0|            return false;
17531|      0|        }
17532|       |
17533|   103k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (17533:13): [True: 95.8k, False: 7.40k]
  ------------------
17534|  95.8k|        {
17535|  95.8k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
17536|  95.8k|        }
17537|       |
17538|   103k|        return true;
17539|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15container_frameC2Embi:
18584|   115k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15leave_containerEv:
18650|  96.5k|    {
18651|  96.5k|        const bool is_object = container_stack.back().is_object;
18652|  96.5k|        container_stack.pop_back();
18653|  96.5k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (18653:16): [True: 10.5k, False: 85.9k]
  ------------------
18654|  96.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE10end_objectEv:
17506|  10.5k|    {
17507|  10.5k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  10.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17507:9): [True: 10.5k, False: 0]
  ------------------
17508|  10.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  10.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17508:9): [True: 10.5k, False: 0]
  ------------------
17509|       |
17510|       |#if JSON_DIAGNOSTIC_POSITIONS
17511|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17512|       |#endif
17513|       |
17514|  10.5k|        ref_stack.back()->set_parents();
17515|  10.5k|        ref_stack.pop_back();
17516|  10.5k|        return true;
17517|  10.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE9end_arrayEv:
17542|  85.9k|    {
17543|  85.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  85.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17543:9): [True: 85.9k, False: 0]
  ------------------
17544|  85.9k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2643|  85.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17544:9): [True: 85.9k, False: 0]
  ------------------
17545|       |
17546|       |#if JSON_DIAGNOSTIC_POSITIONS
17547|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17548|       |#endif
17549|       |
17550|  85.9k|        ref_stack.back()->set_parents();
17551|  85.9k|        ref_stack.pop_back();
17552|  85.9k|        return true;
17553|  85.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE12unexpect_eofEPKc:
23326|  6.48k|    {
23327|  6.48k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  6.48k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1.17k, False: 5.31k]
  |  |  ------------------
  ------------------
23328|  1.17k|        {
23329|  1.17k|            return report_eof(context);
23330|  1.17k|        }
23331|  5.31k|        return true;
23332|  6.48k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail20input_stream_adapter14bulk_remainingEv:
 9822|  53.8k|    {
 9823|  53.8k|        if (!current_in_get_area)
  ------------------
  |  Branch (9823:13): [True: 0, False: 53.8k]
  ------------------
 9824|      0|        {
 9825|      0|            return 0;
 9826|      0|        }
 9827|  53.8k|        return static_cast<std::size_t>(streambuf_access::get_end(sb) - current_end());
 9828|  53.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail20input_stream_adapter11current_endEv:
 9960|  99.7k|    {
 9961|       |#if JSON_PRECISE_STREAM_POSITION
 9962|       |        // the character is peeked at gptr() and not stepped over yet, unless
 9963|       |        // it was given back with release_lookahead()
 9964|       |        return streambuf_access::get_ptr(sb) + (lookahead ? 1 : 0);
 9965|       |#else
 9966|  99.7k|        return streambuf_access::get_ptr(sb);
 9967|  99.7k|#endif
 9968|  99.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail20input_stream_adapter9bulk_dataEv:
 9816|  45.9k|    {
 9817|  45.9k|        return current_end();
 9818|  45.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter9bulk_skipEm:
 9833|  7.84k|    {
 9834|  7.84k|        JSON_ASSERT(n <= bulk_remaining());
  ------------------
  |  | 2643|  7.84k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (9834:9): [True: 7.84k, False: 0]
  ------------------
 9835|       |        // gbump() takes an int, but a get area (e.g., of a std::stringbuf) can
 9836|       |        // be larger
 9837|  7.84k|        constexpr auto max_bump = static_cast<std::size_t>((std::numeric_limits<int>::max)());
 9838|  7.84k|        for (; n > max_bump; n -= max_bump)
  ------------------
  |  Branch (9838:16): [True: 0, False: 7.84k]
  ------------------
 9839|      0|        {
 9840|      0|            streambuf_access::bump(sb, static_cast<int>(max_bump));
 9841|      0|        }
 9842|  7.84k|        streambuf_access::bump(sb, static_cast<int>(n));
 9843|  7.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE3keyERSC_:
17495|  27.4k|    {
17496|  27.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  27.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17496:9): [True: 27.4k, False: 0]
  ------------------
17497|  27.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  27.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17497:9): [True: 27.4k, False: 0]
  ------------------
17498|       |
17499|       |        // add null at the given key and store the reference for later; the
17500|       |        // key is moved, as the lexer starts the next token with reset()
17501|  27.4k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](std::move(val)));
17502|  27.4k|        return true;
17503|  27.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE6get_toIdEEbRT_PKc:
22855|  1.27k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.27k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.27k|        chars_read += new_chars_read;
22860|  1.27k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 24, False: 1.25k]
  |  |  ------------------
  ------------------
22861|     24|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     24|            ++chars_read;
22864|     24|            static_cast<void>(report_eof(context));
22865|     24|            return false;
22866|     24|        }
22867|  1.25k|        return true;
22868|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIdEEmPT_m:
 9778|  1.27k|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|  1.27k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9783|       |        // the elements are in the get area: copy them, as sgetn() does, but
 9784|       |        // without the virtual call
 9785|  1.27k|        const char* const first = streambuf_access::get_ptr(sb);
 9786|  1.27k|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|  1.27k|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  2.52k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 1.25k, False: 24]
  |  |  |  Branch (1696:94): [True: 1.25k, False: 24]
  |  |  |  Branch (1696:94): [True: 1.25k, False: 0]
  |  |  ------------------
  ------------------
 9788|  1.25k|        {
 9789|  1.25k|            std::memcpy(dest, first, count * sizeof(T));
 9790|  1.25k|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|  1.25k|            return count * sizeof(T);
 9792|  1.25k|        }
 9793|     24|#endif
 9794|     24|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|     24|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|     24|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 24, False: 0]
  |  |  ------------------
  ------------------
 9796|     24|        {
 9797|     24|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|     24|        }
 9799|     24|        return res;
 9800|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9byte_swapERd:
22887|  1.25k|    {
22888|  1.25k|        static_assert(sizeof(double) == sizeof(std::uint64_t), "double must have 64 bits");
22889|  1.25k|        std::uint64_t bits{};
22890|  1.25k|        std::memcpy(&bits, &number, sizeof(bits));
22891|  1.25k|        bits = byteswap(bits);
22892|  1.25k|        std::memcpy(&number, &bits, sizeof(bits));
22893|  1.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10emit_floatIdEEbT_:
23034|  1.25k|    {
23035|  1.25k|        const auto result = static_cast<number_float_t>(number);
23036|  1.25k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  2.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.25k]
  |  |  |  Branch (1697:94): [True: 1.24k, False: 5]
  |  |  |  Branch (1697:94): [True: 0, False: 1.24k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  1.25k|        return sax->number_float(result, no_source);
23041|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE16get_token_stringEv:
23443|    590|    {
23444|    590|        return hex_byte(static_cast<std::uint8_t>(current));
23445|    590|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12number_floatEdRKSC_:
17461|  11.5k|    {
17462|  11.5k|        handle_value(val);
17463|  11.5k|        return true;
17464|  11.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRdEEPSG_OT_:
17566|  11.5k|    {
17567|  11.5k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 558, False: 11.0k]
  ------------------
17568|    558|        {
17569|    558|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    558|            return &root;
17576|    558|        }
17577|       |
17578|  11.0k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  11.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 7.59k, False: 3.41k]
  |  Branch (17578:9): [True: 3.41k, False: 0]
  |  Branch (17578:9): [True: 11.0k, False: 0]
  ------------------
17579|       |
17580|  11.0k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 7.59k, False: 3.41k]
  ------------------
17581|  7.59k|        {
17582|  7.59k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  7.59k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  7.59k|        }
17590|       |
17591|  3.41k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.41k, False: 0]
  ------------------
17592|  3.41k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.41k, False: 0]
  ------------------
17593|  3.41k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  3.41k|        return object_element;
17600|  3.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE6stringERSC_:
17467|  32.4k|    {
17468|       |        // json_sax documents that the passed value may be moved from,
17469|       |        // so hand the buffer over instead of copying it
17470|  32.4k|        handle_value(std::move(val));
17471|  32.4k|        return true;
17472|  32.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueISC_EEPSG_OT_:
17566|  32.4k|    {
17567|  32.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 360, False: 32.1k]
  ------------------
17568|    360|        {
17569|    360|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    360|            return &root;
17576|    360|        }
17577|       |
17578|  32.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  32.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 27.7k, False: 4.40k]
  |  Branch (17578:9): [True: 4.40k, False: 0]
  |  Branch (17578:9): [True: 32.1k, False: 0]
  ------------------
17579|       |
17580|  32.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 27.7k, False: 4.40k]
  ------------------
17581|  27.7k|        {
17582|  27.7k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  27.7k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  27.7k|        }
17590|       |
17591|  4.40k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.40k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.40k, False: 0]
  ------------------
17592|  4.40k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.40k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.40k, False: 0]
  ------------------
17593|  4.40k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  4.40k|        return object_element;
17600|  4.40k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE7booleanEb:
17443|  19.2k|    {
17444|  19.2k|        handle_value(val);
17445|  19.2k|        return true;
17446|  19.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRbEEPSG_OT_:
17566|  19.2k|    {
17567|  19.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3, False: 19.2k]
  ------------------
17568|      3|        {
17569|      3|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|      3|            return &root;
17576|      3|        }
17577|       |
17578|  19.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  19.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 17.8k, False: 1.38k]
  |  Branch (17578:9): [True: 1.38k, False: 0]
  |  Branch (17578:9): [True: 19.2k, False: 0]
  ------------------
17579|       |
17580|  19.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 17.8k, False: 1.38k]
  ------------------
17581|  17.8k|        {
17582|  17.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  17.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  17.8k|        }
17590|       |
17591|  1.38k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.38k, False: 0]
  ------------------
17592|  1.38k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.38k, False: 0]
  ------------------
17593|  1.38k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  1.38k|        return object_element;
17600|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE4nullEv:
17437|  4.16k|    {
17438|  4.16k|        handle_value(nullptr);
17439|  4.16k|        return true;
17440|  4.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIDnEEPSG_OT_:
17566|  4.16k|    {
17567|  4.16k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 2, False: 4.16k]
  ------------------
17568|      2|        {
17569|      2|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|      2|            return &root;
17576|      2|        }
17577|       |
17578|  4.16k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 2.44k, False: 1.72k]
  |  Branch (17578:9): [True: 1.72k, False: 0]
  |  Branch (17578:9): [True: 4.16k, False: 0]
  ------------------
17579|       |
17580|  4.16k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 2.44k, False: 1.72k]
  ------------------
17581|  2.44k|        {
17582|  2.44k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  2.44k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  2.44k|        }
17590|       |
17591|  1.72k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.72k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.72k, False: 0]
  ------------------
17592|  1.72k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.72k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.72k, False: 0]
  ------------------
17593|  1.72k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  1.72k|        return object_element;
17600|  1.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE14number_integerEl:
17449|  11.0k|    {
17450|  11.0k|        handle_value(val);
17451|  11.0k|        return true;
17452|  11.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRlEEPSG_OT_:
17566|  11.0k|    {
17567|  11.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 379, False: 10.6k]
  ------------------
17568|    379|        {
17569|    379|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    379|            return &root;
17576|    379|        }
17577|       |
17578|  10.6k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  10.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 7.27k, False: 3.35k]
  |  Branch (17578:9): [True: 3.35k, False: 0]
  |  Branch (17578:9): [True: 10.6k, False: 0]
  ------------------
17579|       |
17580|  10.6k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 7.27k, False: 3.35k]
  ------------------
17581|  7.27k|        {
17582|  7.27k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  7.27k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  7.27k|        }
17590|       |
17591|  3.35k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.35k, False: 0]
  ------------------
17592|  3.35k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.35k, False: 0]
  ------------------
17593|  3.35k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  3.35k|        return object_element;
17600|  3.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE15number_unsignedEm:
17455|  14.8k|    {
17456|  14.8k|        handle_value(val);
17457|  14.8k|        return true;
17458|  14.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRmEEPSG_OT_:
17566|  14.8k|    {
17567|  14.8k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 253, False: 14.6k]
  ------------------
17568|    253|        {
17569|    253|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    253|            return &root;
17576|    253|        }
17577|       |
17578|  14.6k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  14.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 10.2k, False: 4.41k]
  |  Branch (17578:9): [True: 4.41k, False: 0]
  |  Branch (17578:9): [True: 14.6k, False: 0]
  ------------------
17579|       |
17580|  14.6k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 10.2k, False: 4.41k]
  ------------------
17581|  10.2k|        {
17582|  10.2k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  10.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  10.2k|        }
17590|       |
17591|  4.41k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.41k, False: 0]
  ------------------
17592|  4.41k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.41k, False: 0]
  ------------------
17593|  4.41k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  4.41k|        return object_element;
17600|  4.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE6get_toIlEEbRT_PKc:
22855|  1.05k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.05k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.05k|        chars_read += new_chars_read;
22860|  1.05k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.05k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 1.03k]
  |  |  ------------------
  ------------------
22861|     17|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     17|            ++chars_read;
22864|     17|            static_cast<void>(report_eof(context));
22865|     17|            return false;
22866|     17|        }
22867|  1.03k|        return true;
22868|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIlEEmPT_m:
 9778|  1.05k|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|  1.05k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9783|       |        // the elements are in the get area: copy them, as sgetn() does, but
 9784|       |        // without the virtual call
 9785|  1.05k|        const char* const first = streambuf_access::get_ptr(sb);
 9786|  1.05k|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|  1.05k|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  2.09k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 1.03k, False: 17]
  |  |  |  Branch (1696:94): [True: 1.03k, False: 17]
  |  |  |  Branch (1696:94): [True: 1.03k, False: 0]
  |  |  ------------------
  ------------------
 9788|  1.03k|        {
 9789|  1.03k|            std::memcpy(dest, first, count * sizeof(T));
 9790|  1.03k|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|  1.03k|            return count * sizeof(T);
 9792|  1.03k|        }
 9793|     17|#endif
 9794|     17|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|     17|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|     17|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 0]
  |  |  ------------------
  ------------------
 9796|     17|        {
 9797|     17|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|     17|        }
 9799|     17|        return res;
 9800|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9byte_swapIlEEvRT_:
22907|  1.03k|    {
22908|  1.03k|        constexpr std::size_t sz = sizeof(number);
22909|       |#ifdef __cpp_lib_byteswap
22910|       |        if constexpr (sz == 1)
22911|       |        {
22912|       |            return;
22913|       |        }
22914|       |        else if constexpr(std::is_integral_v<NumberType>)
22915|       |        {
22916|       |            number = std::byteswap(number);
22917|       |            return;
22918|       |        }
22919|       |        else
22920|       |        {
22921|       |#endif
22922|  1.03k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  5.19k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.15k, False: 1.03k]
  ------------------
22924|  4.15k|            {
22925|  4.15k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.15k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  1.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE11emit_signedIlEEbT_:
22980|  4.29k|    {
22981|  4.29k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  4.29k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 4.29k, False: 0]
  |  |  ------------------
  ------------------
22982|  4.29k|        {
22983|  4.29k|            return sax->number_integer(static_cast<number_integer_t>(number));
22984|  4.29k|        }
22985|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (22985:13): [True: 0, False: 0]
  ------------------
22986|      0|        {
22987|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
22988|      0|        }
22989|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
22990|      0|        return emit_float(static_cast<long double>(number));
22991|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE13emit_unsignedImEEbT_:
23008|  3.54k|    {
23009|  3.54k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|  3.54k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.54k, False: 0]
  |  |  ------------------
  ------------------
23010|  3.54k|        {
23011|  3.54k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|  3.54k|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE25leave_container_and_checkERb:
18667|  96.5k|    {
18668|  96.5k|        if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1697|  96.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 96.5k]
  |  |  ------------------
  ------------------
18669|      0|        {
18670|      0|            return false;
18671|      0|        }
18672|  96.5k|        value_complete = container_stack.empty();
18673|  96.5k|        return true;
18674|  96.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10emit_floatIfEEbT_:
23034|  2.13k|    {
23035|  2.13k|        const auto result = static_cast<number_float_t>(number);
23036|  2.13k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  3.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.13k]
  |  |  |  Branch (1697:94): [True: 1.60k, False: 530]
  |  |  |  Branch (1697:94): [True: 0, False: 1.60k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  2.13k|        return sax->number_float(result, no_source);
23041|  2.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9byte_swapERf:
22897|  2.13k|    {
22898|  2.13k|        static_assert(sizeof(float) == sizeof(std::uint32_t), "float must have 32 bits");
22899|  2.13k|        std::uint32_t bits{};
22900|  2.13k|        std::memcpy(&bits, &number, sizeof(bits));
22901|  2.13k|        bits = byteswap(bits);
22902|  2.13k|        std::memcpy(&number, &bits, sizeof(bits));
22903|  2.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE11enter_arrayEmi:
18630|   103k|    {
18631|   103k|        return enter_container(/*is_object*/false, len, type_marker);
18632|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE12enter_objectEmi:
18636|  12.6k|    {
18637|  12.6k|        return enter_container(/*is_object*/true, len, type_marker);
18638|  12.6k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15unexpected_byteEPKcSM_:
23421|    192|    {
23422|    192|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
23423|    192|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10get_numberIfLb0EEEbRT_:
22948|  2.14k|    {
22949|       |        // read in the original format
22950|       |
22951|  2.14k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  2.14k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.14k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  2.14k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 2.13k, False: 16]
  |  Branch (22955:34): [Folded, False: 2.13k]
  |  Branch (22955:57): [True: 0, False: 2.13k]
  ------------------
22956|  2.13k|        {
22957|  2.13k|            byte_swap(result);
22958|  2.13k|        }
22959|  2.14k|        return true;
22960|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE6get_toIfEEbRT_PKc:
22855|  2.14k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  2.14k|        auto new_chars_read = ia.get_elements(&dest);
22859|  2.14k|        chars_read += new_chars_read;
22860|  2.14k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  2.14k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 2.13k]
  |  |  ------------------
  ------------------
22861|     16|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     16|            ++chars_read;
22864|     16|            static_cast<void>(report_eof(context));
22865|     16|            return false;
22866|     16|        }
22867|  2.13k|        return true;
22868|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIfEEmPT_m:
 9778|  2.14k|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|  2.14k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9783|       |        // the elements are in the get area: copy them, as sgetn() does, but
 9784|       |        // without the virtual call
 9785|  2.14k|        const char* const first = streambuf_access::get_ptr(sb);
 9786|  2.14k|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|  2.14k|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  4.27k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 2.13k, False: 16]
  |  |  |  Branch (1696:94): [True: 2.13k, False: 16]
  |  |  |  Branch (1696:94): [True: 2.13k, False: 0]
  |  |  ------------------
  ------------------
 9788|  2.13k|        {
 9789|  2.13k|            std::memcpy(dest, first, count * sizeof(T));
 9790|  2.13k|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|  2.13k|            return count * sizeof(T);
 9792|  2.13k|        }
 9793|     16|#endif
 9794|     16|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|     16|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|     16|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 0]
  |  |  ------------------
  ------------------
 9796|     16|        {
 9797|     16|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|     16|        }
 9799|     16|        return res;
 9800|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10get_numberIdLb0EEEbRT_:
22948|  1.27k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.27k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.27k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.27k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.25k, False: 24]
  |  Branch (22955:34): [Folded, False: 1.25k]
  |  Branch (22955:57): [True: 0, False: 1.25k]
  ------------------
22956|  1.25k|        {
22957|  1.25k|            byte_swap(result);
22958|  1.25k|        }
22959|  1.27k|        return true;
22960|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10get_numberIiLb0EEEbRT_:
22948|  1.53k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.53k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.53k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.53k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.53k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.51k, False: 17]
  |  Branch (22955:34): [Folded, False: 1.51k]
  |  Branch (22955:57): [True: 0, False: 1.51k]
  ------------------
22956|  1.51k|        {
22957|  1.51k|            byte_swap(result);
22958|  1.51k|        }
22959|  1.53k|        return true;
22960|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10get_numberIlLb0EEEbRT_:
22948|  1.05k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.05k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.05k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.05k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.05k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.03k, False: 17]
  |  Branch (22955:34): [Folded, False: 1.03k]
  |  Branch (22955:57): [True: 0, False: 1.03k]
  ------------------
22956|  1.03k|        {
22957|  1.03k|            byte_swap(result);
22958|  1.03k|        }
22959|  1.05k|        return true;
22960|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE19parse_bon8_internalEv:
22346|  5.72k|    {
22347|       |        // the key currently being read; hoisted out of the loop so that its
22348|       |        // capacity is reused across elements and across nesting levels
22349|  5.72k|        string_t key;
22350|       |
22351|   308k|        while (true)
  ------------------
  |  Branch (22351:16): [True: 307k, Folded]
  ------------------
22352|   307k|        {
22353|   307k|            if (!container_stack.empty())
  ------------------
  |  Branch (22353:17): [True: 301k, False: 5.72k]
  ------------------
22354|   301k|            {
22355|       |                // a copy, not a reference: it must stay valid across the
22356|       |                // pop_back() below, which destroys the container_stack element
22357|       |                // it would otherwise alias
22358|   301k|                const container_frame top = container_stack.back();
22359|   301k|                bool at_end = false;
22360|       |
22361|   301k|                if (top.remaining != npos)
  ------------------
  |  Branch (22361:21): [True: 194k, False: 107k]
  ------------------
22362|   194k|                {
22363|       |                    // counted container (0x80..0x84, 0x86..0x8A): it ends once
22364|       |                    // its elements have been read
22365|   194k|                    at_end = (top.remaining == 0);
22366|   194k|                    if (!at_end)
  ------------------
  |  Branch (22366:25): [True: 102k, False: 92.2k]
  ------------------
22367|   102k|                    {
22368|       |                        // claim the element about to be read
22369|   102k|                        --container_stack.back().remaining;
22370|   102k|                    }
22371|   194k|                }
22372|   107k|                else
22373|   107k|                {
22374|       |                    // container 0x85 or 0x8B: it ends at an end-of-container
22375|       |                    // marker (0xFE); any other byte begins the next element
22376|   107k|                    at_end = (get_bon8() == 0xFE);
22377|   107k|                    if (!at_end)
  ------------------
  |  Branch (22377:25): [True: 102k, False: 4.31k]
  ------------------
22378|   102k|                    {
22379|   102k|                        unget_bon8(current);
22380|   102k|                    }
22381|   107k|                }
22382|       |
22383|   301k|                if (at_end)
  ------------------
  |  Branch (22383:21): [True: 96.5k, False: 205k]
  ------------------
22384|  96.5k|                {
22385|  96.5k|                    bool value_complete = false;
22386|  96.5k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container_and_check(value_complete)))
  ------------------
  |  | 1697|  96.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 96.5k]
  |  |  ------------------
  ------------------
22387|      0|                    {
22388|      0|                        return false;
22389|      0|                    }
22390|  96.5k|                    if (value_complete)
  ------------------
  |  Branch (22390:25): [True: 2.72k, False: 93.8k]
  ------------------
22391|  2.72k|                    {
22392|  2.72k|                        return true;
22393|  2.72k|                    }
22394|  93.8k|                    continue;
22395|  96.5k|                }
22396|       |
22397|   205k|                if (top.is_object)
  ------------------
  |  Branch (22397:21): [True: 27.8k, False: 177k]
  ------------------
22398|  27.8k|                {
22399|  27.8k|                    if (JSON_HEDLEY_UNLIKELY(!read_object_key<&binary_reader::get_bon8_key>(key)))
  ------------------
  |  | 1697|  27.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 27.8k]
  |  |  ------------------
  ------------------
22400|      0|                    {
22401|      0|                        return false;
22402|      0|                    }
22403|  27.8k|                }
22404|   205k|            }
22405|       |
22406|   210k|            if (JSON_HEDLEY_UNLIKELY(!parse_bon8_value()))
  ------------------
  |  | 1697|   210k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 210k]
  |  |  ------------------
  ------------------
22407|      0|            {
22408|      0|                return false;
22409|      0|            }
22410|       |
22411|       |            // a value that opened a container left it on the stack; one that
22412|       |            // did not, and that was not inside a container, was the whole value
22413|   210k|            if (container_stack.empty())
  ------------------
  |  Branch (22413:17): [True: 1.55k, False: 209k]
  ------------------
22414|  1.55k|            {
22415|  1.55k|                return true;
22416|  1.55k|            }
22417|   210k|        }
22418|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10unget_bon8Ei:
22315|   198k|    {
22316|       |        // At most two bytes are ever handed back: a byte is only handed back
22317|       |        // right after it was read with get_bon8(), and the only place that
22318|       |        // hands back two bytes (a lead byte and the byte after it) read both
22319|       |        // of them in a row, which emptied the buffer first. This is an
22320|       |        // invariant of the reader rather than a property of the input, so
22321|       |        // an assertion suffices (the fuzzers are built with assertions).
22322|   198k|        JSON_ASSERT(bon8_pushback_size < bon8_pushback.size());
  ------------------
  |  | 2643|   198k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (22322:9): [True: 198k, False: 0]
  ------------------
22323|   198k|        bon8_pushback[bon8_pushback_size++] = c;
22324|   198k|        --chars_read;
22325|   198k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15read_object_keyIXadL_ZNSK_12get_bon8_keyERSC_EEEEbSM_:
18685|  27.8k|    {
18686|  27.8k|        key.clear();
18687|  27.8k|        return (this->*GetKey)(key) && sax->key(key);
  ------------------
  |  Branch (18687:16): [True: 27.4k, False: 425]
  |  Branch (18687:40): [True: 27.4k, False: 0]
  ------------------
18688|  27.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE12get_bon8_keyERSC_:
22640|  27.8k|    {
22641|  27.8k|        const auto byte = get_bon8();
22642|       |
22643|  27.8k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22643:13): [True: 320, False: 27.5k]
  ------------------
22644|    320|        {
22645|    320|            return unexpect_eof("key");
22646|    320|        }
22647|       |
22648|  27.5k|        if (byte == 0xFF)
  ------------------
  |  Branch (22648:13): [True: 5.26k, False: 22.2k]
  ------------------
22649|  5.26k|        {
22650|  5.26k|            return true;
22651|  5.26k|        }
22652|       |
22653|  22.2k|        if (byte <= 0x7F)
  ------------------
  |  Branch (22653:13): [True: 21.1k, False: 1.17k]
  ------------------
22654|  21.1k|        {
22655|  21.1k|            unget_bon8(byte);
22656|  21.1k|            return get_bon8_string(result);
22657|  21.1k|        }
22658|       |
22659|  1.17k|        if (0xC2 <= byte && byte <= 0xF7)
  ------------------
  |  Branch (22659:13): [True: 1.15k, False: 16]
  |  Branch (22659:29): [True: 1.14k, False: 10]
  ------------------
22660|  1.14k|        {
22661|  1.14k|            const auto second = get_bon8();
22662|  1.14k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (22662:17): [True: 7, False: 1.13k]
  ------------------
22663|      7|            {
22664|       |                // the input ends inside a character or an integer
22665|      7|                return unexpect_eof("key");
22666|      7|            }
22667|  1.13k|            unget_bon8(second);
22668|  1.13k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (22668:17): [True: 1.12k, False: 17]
  ------------------
22669|  1.12k|            {
22670|  1.12k|                unget_bon8(byte);
22671|  1.12k|                return get_bon8_string(result);
22672|  1.12k|            }
22673|       |            // an integer: report its first byte rather than the one after it
22674|     17|            current = byte;
22675|     17|        }
22676|       |
22677|     43|        return unexpected_byte("expected a string; last byte", "key");
22678|  1.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15get_bon8_stringERSC_:
22729|  46.0k|    {
22730|  92.0k|        while (true)
  ------------------
  |  Branch (22730:16): [True: 92.0k, Folded]
  ------------------
22731|  92.0k|        {
22732|  92.0k|            get_bon8_string_bulk(result, std::integral_constant<bool, bulk_scan> {});
22733|       |
22734|  92.0k|            const auto byte = get_bon8();
22735|       |
22736|  92.0k|            if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22736:17): [True: 159, False: 91.8k]
  ------------------
22737|    159|            {
22738|    159|                return unexpect_eof("string");
22739|    159|            }
22740|       |
22741|       |            // end of string
22742|  91.8k|            if (byte == 0xFF)
  ------------------
  |  Branch (22742:17): [True: 1.92k, False: 89.9k]
  ------------------
22743|  1.92k|            {
22744|  1.92k|                return true;
22745|  1.92k|            }
22746|       |
22747|       |            // ASCII character
22748|  89.9k|            if (byte <= 0x7F)
  ------------------
  |  Branch (22748:17): [True: 42.4k, False: 47.5k]
  ------------------
22749|  42.4k|            {
22750|  42.4k|                result.push_back(static_cast<typename string_t::value_type>(byte));
22751|  42.4k|                continue;
22752|  42.4k|            }
22753|       |
22754|       |            // a byte that cannot begin a character ends the string and begins
22755|       |            // the next value
22756|  47.5k|            if (byte < 0xC2 || byte > 0xF7)
  ------------------
  |  Branch (22756:17): [True: 20.5k, False: 26.9k]
  |  Branch (22756:32): [True: 21.2k, False: 5.71k]
  ------------------
22757|  41.8k|            {
22758|  41.8k|                unget_bon8(byte);
22759|  41.8k|                return true;
22760|  41.8k|            }
22761|       |
22762|       |            // a lead byte ends the string if no continuation byte follows: it
22763|       |            // is then the first byte of an integer
22764|  5.71k|            const auto second = get_bon8();
22765|  5.71k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (22765:17): [True: 18, False: 5.69k]
  ------------------
22766|     18|            {
22767|       |                // the input ends inside a character or an integer: either
22768|       |                // way, the message is incomplete
22769|     18|                return unexpect_eof("string");
22770|     18|            }
22771|  5.69k|            if (!is_bon8_continuation(second))
  ------------------
  |  Branch (22771:17): [True: 1.93k, False: 3.76k]
  ------------------
22772|  1.93k|            {
22773|  1.93k|                unget_bon8(second);
22774|  1.93k|                unget_bon8(byte);
22775|  1.93k|                return true;
22776|  1.93k|            }
22777|       |
22778|       |            // the valid range of the second byte excludes overlong forms,
22779|       |            // surrogates, and code points above U+10FFFF
22780|       |            // (RFC 3629, section 4)
22781|  3.76k|            int continuation_bytes = 0;
22782|  3.76k|            bool valid_second = true;
22783|  3.76k|            if (byte <= 0xDF)
  ------------------
  |  Branch (22783:17): [True: 1.88k, False: 1.88k]
  ------------------
22784|  1.88k|            {
22785|  1.88k|                continuation_bytes = 1;
22786|  1.88k|            }
22787|  1.88k|            else if (byte <= 0xEF)
  ------------------
  |  Branch (22787:22): [True: 807, False: 1.07k]
  ------------------
22788|    807|            {
22789|    807|                continuation_bytes = 2;
22790|    807|                valid_second = (byte != 0xE0 || second >= 0xA0) && (byte != 0xED || second <= 0x9F);
  ------------------
  |  Branch (22790:33): [True: 358, False: 449]
  |  Branch (22790:49): [True: 434, False: 15]
  |  Branch (22790:69): [True: 515, False: 277]
  |  Branch (22790:85): [True: 274, False: 3]
  ------------------
22791|    807|            }
22792|  1.07k|            else
22793|  1.07k|            {
22794|  1.07k|                continuation_bytes = 3;
22795|  1.07k|                valid_second = byte <= 0xF4 && (byte != 0xF0 || second >= 0x90) && (byte != 0xF4 || second <= 0x8F);
  ------------------
  |  Branch (22795:32): [True: 1.07k, False: 3]
  |  Branch (22795:49): [True: 758, False: 314]
  |  Branch (22795:65): [True: 304, False: 10]
  |  Branch (22795:85): [True: 714, False: 348]
  |  Branch (22795:101): [True: 343, False: 5]
  ------------------
22796|  1.07k|            }
22797|       |
22798|  3.76k|            if (JSON_HEDLEY_UNLIKELY(!valid_second))
  ------------------
  |  | 1697|  3.76k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 36, False: 3.73k]
  |  |  ------------------
  ------------------
22799|     36|            {
22800|     36|                return unexpected_byte("invalid UTF-8 byte", "string");
22801|     36|            }
22802|       |
22803|  3.73k|            result.push_back(static_cast<typename string_t::value_type>(byte));
22804|  3.73k|            result.push_back(static_cast<typename string_t::value_type>(second));
22805|       |
22806|  6.40k|            for (int i = 1; i < continuation_bytes; ++i)
  ------------------
  |  Branch (22806:29): [True: 2.84k, False: 3.56k]
  ------------------
22807|  2.84k|            {
22808|  2.84k|                if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  2.84k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 98, False: 2.74k]
  |  |  ------------------
  ------------------
22809|     98|                {
22810|     98|                    return unexpect_eof("string");
22811|     98|                }
22812|  2.74k|                if (JSON_HEDLEY_UNLIKELY(!is_bon8_continuation(current)))
  ------------------
  |  | 1697|  2.74k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 67, False: 2.67k]
  |  |  ------------------
  ------------------
22813|     67|                {
22814|     67|                    return unexpected_byte("invalid UTF-8 byte", "string");
22815|     67|                }
22816|  2.67k|                result.push_back(static_cast<typename string_t::value_type>(current));
22817|  2.67k|            }
22818|  3.73k|        }
22819|  46.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE20get_bon8_string_bulkERSC_NS4_17integral_constantIbLb1EEE:
22692|  92.0k|    {
22693|       |        // bytes handed back must be read through get_bon8() first
22694|  92.0k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (22694:13): [True: 46.0k, False: 45.9k]
  ------------------
22695|  46.0k|        {
22696|  46.0k|            return;
22697|  46.0k|        }
22698|  45.9k|        const std::size_t remaining = ia.bulk_remaining();
22699|  45.9k|        if (remaining == 0)
  ------------------
  |  Branch (22699:13): [True: 66, False: 45.9k]
  ------------------
22700|     66|        {
22701|     66|            return;
22702|     66|        }
22703|  45.9k|        const auto* const data = reinterpret_cast<const unsigned char*>(ia.bulk_data());
22704|  45.9k|        const std::size_t length = valid_utf8_prefix(data, remaining);
22705|  45.9k|        if (length != 0)
  ------------------
  |  Branch (22705:13): [True: 7.84k, False: 38.0k]
  ------------------
22706|  7.84k|        {
22707|  7.84k|            result.append(reinterpret_cast<const typename string_t::value_type*>(data), length);
22708|  7.84k|            ia.bulk_skip(length);
22709|  7.84k|            chars_read += length;
22710|  7.84k|        }
22711|  45.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE20is_bon8_continuationEi:
22332|  17.4k|    {
22333|  17.4k|        return 0x80 <= c && c <= 0xBF;
  ------------------
  |  Branch (22333:16): [True: 13.6k, False: 3.82k]
  |  Branch (22333:29): [True: 10.0k, False: 3.52k]
  ------------------
22334|  17.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE16parse_bon8_valueEv:
22431|   210k|    {
22432|   210k|        const auto byte = get_bon8();
22433|       |
22434|   210k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22434:13): [True: 522, False: 209k]
  ------------------
22435|    522|        {
22436|    522|            return unexpect_eof("value");
22437|    522|        }
22438|       |
22439|       |        // string: ASCII character
22440|   209k|        if (byte <= 0x7F)
  ------------------
  |  Branch (22440:13): [True: 21.3k, False: 188k]
  ------------------
22441|  21.3k|        {
22442|  21.3k|            string_t s;
22443|  21.3k|            unget_bon8(byte);
22444|  21.3k|            return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (22444:20): [True: 21.1k, False: 151]
  |  Branch (22444:42): [True: 21.1k, False: 0]
  ------------------
22445|  21.3k|        }
22446|       |
22447|       |        // array with 0..4 elements
22448|   188k|        if (byte <= 0x84)
  ------------------
  |  Branch (22448:13): [True: 95.8k, False: 92.6k]
  ------------------
22449|  95.8k|        {
22450|  95.8k|            return enter_array(static_cast<std::size_t>(byte - 0x80));
22451|  95.8k|        }
22452|       |
22453|       |        // array terminated by 0xFE
22454|  92.6k|        if (byte == 0x85)
  ------------------
  |  Branch (22454:13): [True: 7.40k, False: 85.2k]
  ------------------
22455|  7.40k|        {
22456|  7.40k|            return enter_array(npos);
22457|  7.40k|        }
22458|       |
22459|       |        // object with 0..4 members
22460|  85.2k|        if (byte <= 0x8A)
  ------------------
  |  Branch (22460:13): [True: 10.5k, False: 74.6k]
  ------------------
22461|  10.5k|        {
22462|  10.5k|            return enter_object(static_cast<std::size_t>(byte - 0x86));
22463|  10.5k|        }
22464|       |
22465|  74.6k|        switch (byte)
22466|  74.6k|        {
22467|  2.15k|            case 0x8B: // object terminated by 0xFE
  ------------------
  |  Branch (22467:13): [True: 2.15k, False: 72.5k]
  ------------------
22468|  2.15k|                return enter_object(npos);
22469|       |
22470|  1.53k|            case 0x8C: // int32
  ------------------
  |  Branch (22470:13): [True: 1.53k, False: 73.1k]
  ------------------
22471|  1.53k|            {
22472|  1.53k|                std::int32_t number{};
22473|  1.53k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (22473:24): [True: 1.51k, False: 17]
  |  Branch (22473:46): [True: 1.51k, False: 0]
  ------------------
22474|      0|            }
22475|       |
22476|  1.05k|            case 0x8D: // int64
  ------------------
  |  Branch (22476:13): [True: 1.05k, False: 73.6k]
  ------------------
22477|  1.05k|            {
22478|  1.05k|                std::int64_t number{};
22479|  1.05k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (22479:24): [True: 1.03k, False: 17]
  |  Branch (22479:46): [True: 1.03k, False: 0]
  ------------------
22480|      0|            }
22481|       |
22482|  2.14k|            case 0x8E: // binary32
  ------------------
  |  Branch (22482:13): [True: 2.14k, False: 72.5k]
  ------------------
22483|  2.14k|            {
22484|  2.14k|                float number{};
22485|  2.14k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (22485:24): [True: 2.13k, False: 16]
  |  Branch (22485:46): [True: 2.13k, False: 0]
  ------------------
22486|      0|            }
22487|       |
22488|  1.27k|            case 0x8F: // binary64
  ------------------
  |  Branch (22488:13): [True: 1.27k, False: 73.4k]
  ------------------
22489|  1.27k|            {
22490|  1.27k|                double number{};
22491|  1.27k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (22491:24): [True: 1.25k, False: 24]
  |  Branch (22491:46): [True: 1.25k, False: 0]
  ------------------
22492|      0|            }
22493|       |
22494|  17.1k|            case 0xF8:
  ------------------
  |  Branch (22494:13): [True: 17.1k, False: 57.5k]
  ------------------
22495|  17.1k|                return sax->boolean(false);
22496|       |
22497|  2.07k|            case 0xF9:
  ------------------
  |  Branch (22497:13): [True: 2.07k, False: 72.6k]
  ------------------
22498|  2.07k|                return sax->boolean(true);
22499|       |
22500|  4.16k|            case 0xFA:
  ------------------
  |  Branch (22500:13): [True: 4.16k, False: 70.5k]
  ------------------
22501|  4.16k|                return sax->null();
22502|       |
22503|  3.00k|            case 0xFB:
  ------------------
  |  Branch (22503:13): [True: 3.00k, False: 71.6k]
  ------------------
22504|  3.00k|                return sax->number_float(static_cast<number_float_t>(-1.0), no_source);
22505|       |
22506|  2.77k|            case 0xFC:
  ------------------
  |  Branch (22506:13): [True: 2.77k, False: 71.9k]
  ------------------
22507|  2.77k|                return sax->number_float(static_cast<number_float_t>(0.0), no_source);
22508|       |
22509|  2.40k|            case 0xFD:
  ------------------
  |  Branch (22509:13): [True: 2.40k, False: 72.2k]
  ------------------
22510|  2.40k|                return sax->number_float(static_cast<number_float_t>(1.0), no_source);
22511|       |
22512|  8.99k|            case 0xFF: // empty string
  ------------------
  |  Branch (22512:13): [True: 8.99k, False: 65.7k]
  ------------------
22513|  8.99k|            {
22514|  8.99k|                string_t s;
22515|  8.99k|                return sax->string(s);
22516|      0|            }
22517|       |
22518|  25.9k|            default:
  ------------------
  |  Branch (22518:13): [True: 25.9k, False: 48.7k]
  ------------------
22519|  25.9k|                break;
22520|  74.6k|        }
22521|       |
22522|       |        // integer 0..39
22523|  25.9k|        if (byte <= 0xB7)
  ------------------
  |  Branch (22523:13): [True: 11.3k, False: 14.6k]
  ------------------
22524|  11.3k|        {
22525|  11.3k|            return sax->number_unsigned(static_cast<number_unsigned_t>(byte - 0x90));
22526|  11.3k|        }
22527|       |
22528|       |        // integer -1..-10
22529|  14.6k|        if (byte <= 0xC1)
  ------------------
  |  Branch (22529:13): [True: 6.70k, False: 7.90k]
  ------------------
22530|  6.70k|        {
22531|  6.70k|            return sax->number_integer(conditional_static_cast<number_integer_t>(-1 - static_cast<number_integer_t>(byte - 0xB8)));
22532|  6.70k|        }
22533|       |
22534|       |        // 0xC2..0xF7: a UTF-8 lead byte begins a string if a continuation
22535|       |        // byte follows and an integer otherwise
22536|  7.90k|        if (byte <= 0xF7)
  ------------------
  |  Branch (22536:13): [True: 7.85k, False: 46]
  ------------------
22537|  7.85k|        {
22538|  7.85k|            const auto second = get_bon8();
22539|  7.85k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (22539:17): [True: 2.52k, False: 5.33k]
  ------------------
22540|  2.52k|            {
22541|  2.52k|                string_t s;
22542|  2.52k|                unget_bon8(second);
22543|  2.52k|                unget_bon8(byte);
22544|  2.52k|                return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (22544:24): [True: 2.34k, False: 172]
  |  Branch (22544:46): [True: 2.34k, False: 0]
  ------------------
22545|  2.52k|            }
22546|  5.33k|            return get_bon8_integer(byte, second);
22547|  7.85k|        }
22548|       |
22549|       |        // 0xFE: end of container where a value is expected
22550|     46|        return unexpected_byte("invalid byte", "value");
22551|  7.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE17emit_bon8_integerEl:
22565|  7.83k|    {
22566|  7.83k|        if (number >= 0)
  ------------------
  |  Branch (22566:13): [True: 3.54k, False: 4.29k]
  ------------------
22567|  3.54k|        {
22568|  3.54k|            return emit_unsigned(static_cast<std::uint64_t>(number));
22569|  3.54k|        }
22570|  4.29k|        return emit_signed(number);
22571|  7.83k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE16get_bon8_integerEii:
22589|  5.33k|    {
22590|  5.33k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.33k]
  |  |  ------------------
  ------------------
22591|      0|        {
22592|      0|            return false;
22593|      0|        }
22594|       |
22595|  5.33k|        const bool negative = second >= 0xC0;
22596|  5.33k|        auto value = static_cast<std::int64_t>(negative ? (second & 0x3F) : second);
  ------------------
  |  Branch (22596:48): [True: 2.75k, False: 2.58k]
  ------------------
22597|  5.33k|        std::int64_t offset = 0;
22598|  5.33k|        int extra_bytes = 0;
22599|       |
22600|  5.33k|        if (lead <= 0xDF)
  ------------------
  |  Branch (22600:13): [True: 2.68k, False: 2.64k]
  ------------------
22601|  2.68k|        {
22602|  2.68k|            value |= static_cast<std::int64_t>(lead - 0xC2) << (negative ? 6 : 7);
  ------------------
  |  Branch (22602:65): [True: 1.26k, False: 1.42k]
  ------------------
22603|  2.68k|            offset = negative ? 11 : 40;
  ------------------
  |  Branch (22603:22): [True: 1.26k, False: 1.42k]
  ------------------
22604|  2.68k|        }
22605|  2.64k|        else if (lead <= 0xEF)
  ------------------
  |  Branch (22605:18): [True: 1.39k, False: 1.25k]
  ------------------
22606|  1.39k|        {
22607|  1.39k|            value |= static_cast<std::int64_t>(lead & 0x0F) << (negative ? 6 : 7);
  ------------------
  |  Branch (22607:65): [True: 813, False: 582]
  ------------------
22608|  1.39k|            offset = negative ? 1931 : 3880;
  ------------------
  |  Branch (22608:22): [True: 813, False: 582]
  ------------------
22609|  1.39k|            extra_bytes = 1;
22610|  1.39k|        }
22611|  1.25k|        else
22612|  1.25k|        {
22613|  1.25k|            value |= static_cast<std::int64_t>(lead & 0x07) << (negative ? 6 : 7);
  ------------------
  |  Branch (22613:65): [True: 681, False: 571]
  ------------------
22614|  1.25k|            offset = negative ? 264075 : 528168;
  ------------------
  |  Branch (22614:22): [True: 681, False: 571]
  ------------------
22615|  1.25k|            extra_bytes = 2;
22616|  1.25k|        }
22617|       |
22618|  9.14k|        for (int i = 0; i < extra_bytes; ++i)
  ------------------
  |  Branch (22618:25): [True: 3.84k, False: 5.30k]
  ------------------
22619|  3.84k|        {
22620|  3.84k|            if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  3.84k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 29, False: 3.81k]
  |  |  ------------------
  ------------------
22621|     29|            {
22622|     29|                return unexpect_eof("number");
22623|     29|            }
22624|  3.81k|            value = (value << 8) | static_cast<std::int64_t>(current);
22625|  3.81k|        }
22626|       |
22627|  5.30k|        return emit_bon8_integer(negative ? -(value + offset) : value + offset);
  ------------------
  |  Branch (22627:34): [True: 2.73k, False: 2.56k]
  ------------------
22628|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE8get_bon8Ev:
22299|   463k|    {
22300|   463k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (22300:13): [True: 198k, False: 264k]
  ------------------
22301|   198k|        {
22302|   198k|            ++chars_read;
22303|   198k|            return current = bon8_pushback[--bon8_pushback_size];
22304|   198k|        }
22305|   264k|        return get();
22306|   463k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE3getEv:
22840|   264k|    {
22841|   264k|        ++chars_read;
22842|   264k|        return current = ia.get_character();
22843|   264k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter13get_characterEv:
 9757|   264k|    {
 9758|   264k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9759|       |        // the character is in the get area: step over it, as sbumpc() does
 9760|   264k|        const char* const next = streambuf_access::get_ptr(sb);
 9761|   264k|        if (JSON_HEDLEY_LIKELY(next != streambuf_access::get_end(sb)))
  ------------------
  |  | 1696|   264k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 259k, False: 5.35k]
  |  |  ------------------
  ------------------
 9762|   259k|        {
 9763|   259k|            current_in_get_area = true;
 9764|   259k|            streambuf_access::bump(sb, 1);
 9765|   259k|            return std::char_traits<char>::to_int_type(*next);
 9766|   259k|        }
 9767|  5.35k|        if (no_get_area)
  ------------------
  |  Branch (9767:13): [True: 0, False: 5.35k]
  ------------------
 9768|      0|        {
 9769|      0|            return get_character_no_get_area();
 9770|      0|        }
 9771|  5.35k|#endif
 9772|  5.35k|        return get_character_slow();
 9773|  5.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter18get_character_slowEv:
 9899|  5.35k|    {
 9900|  5.35k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9901|       |        // the get area is exhausted (get_character() handles the other case),
 9902|       |        // so sbumpc() refills it
 9903|  5.35k|        save_token_segment();
 9904|  5.35k|#endif
 9905|       |
 9906|  5.35k|        auto res = sb->sbumpc();
 9907|       |        // set eof manually, as we don't use the istream interface.
 9908|  5.35k|        if (JSON_HEDLEY_UNLIKELY(res == std::char_traits<char>::eof()))
  ------------------
  |  | 1697|  5.35k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 5.35k, False: 0]
  |  |  ------------------
  ------------------
 9909|  5.35k|        {
 9910|  5.35k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9911|  5.35k|            current_in_get_area = false;
 9912|  5.35k|#endif
 9913|  5.35k|            is->clear(is->rdstate() | std::ios::eofbit);
 9914|  5.35k|        }
 9915|      0|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9916|      0|        else
 9917|      0|        {
 9918|       |            // the consumed character is at gptr() - 1, unless the streambuf
 9919|       |            // has no get area and returned it from uflow()
 9920|      0|            const char* const next = streambuf_access::get_ptr(sb);
 9921|      0|            after_refill(res, next != nullptr && next != streambuf_access::get_begin(sb));
  ------------------
  |  Branch (9921:31): [True: 0, False: 0]
  |  Branch (9921:50): [True: 0, False: 0]
  ------------------
 9922|      0|        }
 9923|  5.35k|#endif
 9924|  5.35k|        return res;
 9925|  5.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter18save_token_segmentEv:
 9972|  5.35k|    {
 9973|  5.35k|        if (token_segment != nullptr)
  ------------------
  |  Branch (9973:13): [True: 0, False: 5.35k]
  ------------------
 9974|      0|        {
 9975|      0|            token_carry.append(token_segment, streambuf_access::get_end(sb));
 9976|      0|            token_segment = nullptr;
 9977|      0|        }
 9978|  5.35k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
23407|    295|    {
23408|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
23409|    295|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
23410|    295|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (23410:51): [True: 192, False: 103]
  ------------------
23411|    295|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEED2Ev:
18487|  5.72k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEED2Ev:
17434|  5.72k|    ~json_sax_dom_binary_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEE:
10719|  5.72k|{
10720|  5.72k|    if (stream.rdbuf() == nullptr)
  ------------------
  |  Branch (10720:9): [True: 0, False: 5.72k]
  ------------------
10721|      0|    {
10722|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, empty_input_message(), nullptr));
  ------------------
  |  | 2608|      0|    #define JSON_THROW(exception) throw exception
  ------------------
10723|      0|    }
10724|  5.72k|    return input_stream_adapter(stream);
10725|  5.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2ERNSt3__113basic_istreamIcNS3_11char_traitsIcEEEE:
 9654|  5.72k|        : is(&i), sb(i.rdbuf())
 9655|  5.72k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail18token_carry_bufferC2Ev:
 9305|  11.4k|    token_carry_buffer() = default;
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterD2Ev:
 9633|  11.4k|    {
 9634|       |        // clear stream flags; we use underlying streambuf I/O, do not
 9635|       |        // maintain ifstream flags, except eof
 9636|  11.4k|        if (is != nullptr)
  ------------------
  |  Branch (9636:13): [True: 5.72k, False: 5.72k]
  ------------------
 9637|  5.72k|        {
 9638|       |#if JSON_PRECISE_STREAM_POSITION
 9639|       |            // consume the character last returned by get_character() unless it
 9640|       |            // was given back with release_lookahead()
 9641|       |            commit_lookahead();
 9642|       |#endif
 9643|       |            // only call clear() if there is something to clear: it throws
 9644|       |            // std::ios_base::failure if the stream has exceptions() enabled
 9645|       |            // for a state bit that remains set, and a destructor must not throw
 9646|  5.72k|            if ((is->rdstate() & ~std::ios::eofbit) != 0)
  ------------------
  |  Branch (9646:17): [True: 0, False: 5.72k]
  ------------------
 9647|      0|            {
 9648|      0|                is->clear(is->rdstate() & std::ios::eofbit);
 9649|      0|            }
 9650|  5.72k|        }
 9651|  11.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18token_carry_bufferD2Ev:
 9314|  22.8k|    ~token_carry_buffer() = default;
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8INS2_21__list_const_iteratorIhPvEESI_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SK_SL_bb:
46060|  5.72k|    {
46061|  5.72k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::bon8, strict, allow_exceptions);
46062|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterINS2_21__list_const_iteratorIhPvEESK_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
45629|  5.72k|    {
45630|  5.72k|        basic_json result;
45631|  5.72k|        detail::json_sax_dom_binary_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
45632|  5.72k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
45633|  5.72k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (45633:13): [True: 0, False: 5.72k]
  ------------------
45634|      0|        {
45635|      0|            result = value_t::discarded;
45636|      0|        }
45637|  5.72k|        return result;
45638|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEEC2ERSG_bPNS1_5lexerISG_SL_Lb0EEE:
17426|  5.72k|        : json_sax_dom_error_state(allow_exceptions_), root(r), m_lexer_ref(lexer_)
17427|  5.72k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEEC2EOSL_NS1_14input_format_tENS1_15error_handler_tE:
18477|  5.72k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
18478|  5.72k|    {
18479|  5.72k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
18480|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE9sax_parseEPSN_bNS1_18cbor_tag_handler_tE:
18502|  5.72k|    {
18503|  5.72k|        sax = sax_;
18504|  5.72k|        container_stack.clear();
18505|  5.72k|        bon8_pushback_size = 0;
18506|  5.72k|        bool result = false;
18507|       |
18508|  5.72k|        switch (input_format)
18509|  5.72k|        {
18510|      0|            case input_format_t::bson:
  ------------------
  |  Branch (18510:13): [True: 0, False: 5.72k]
  ------------------
18511|      0|                result = parse_bson_internal();
18512|      0|                break;
18513|       |
18514|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (18514:13): [True: 0, False: 5.72k]
  ------------------
18515|      0|                result = parse_cbor_internal(tag_handler);
18516|      0|                break;
18517|       |
18518|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (18518:13): [True: 0, False: 5.72k]
  ------------------
18519|      0|                result = parse_msgpack_internal();
18520|      0|                break;
18521|       |
18522|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (18522:13): [True: 0, False: 5.72k]
  ------------------
18523|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (18523:13): [True: 0, False: 5.72k]
  ------------------
18524|      0|                result = parse_ubjson_internal();
18525|      0|                break;
18526|       |
18527|  5.72k|            case input_format_t::bon8:
  ------------------
  |  Branch (18527:13): [True: 5.72k, False: 0]
  ------------------
18528|  5.72k|                result = parse_bon8_internal();
18529|  5.72k|                break;
18530|       |
18531|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (18531:13): [True: 0, False: 5.72k]
  ------------------
18532|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (18532:13): [True: 0, False: 5.72k]
  ------------------
18533|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18533:17): [Folded, False: 0]
  ------------------
18534|  5.72k|        }
18535|       |
18536|       |        // strict mode: next byte must be EOF
18537|  4.27k|        if (result && strict)
  ------------------
  |  Branch (18537:13): [True: 4.27k, False: 0]
  |  Branch (18537:23): [True: 4.27k, False: 0]
  ------------------
18538|  4.27k|        {
18539|  4.27k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (18539:17): [True: 0, False: 4.27k]
  |  Branch (18539:59): [True: 0, False: 4.27k]
  ------------------
18540|      0|            {
18541|      0|                get_ignore_noop();
18542|      0|            }
18543|  4.27k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (18543:22): [True: 4.27k, False: 0]
  ------------------
18544|  4.27k|            {
18545|       |                // a string that ends a container hands back the byte after it
18546|  4.27k|                get_bon8();
18547|  4.27k|            }
18548|      0|            else
18549|      0|            {
18550|      0|                get();
18551|      0|            }
18552|       |
18553|  4.27k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  4.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 103, False: 4.17k]
  |  |  ------------------
  ------------------
18554|    103|            {
18555|    103|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
18556|    103|            }
18557|  4.27k|        }
18558|       |
18559|  4.17k|        return result;
18560|  4.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE6get_toIiEEbRT_PKc:
22855|  1.53k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.53k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.53k|        chars_read += new_chars_read;
22860|  1.53k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.53k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 1.51k]
  |  |  ------------------
  ------------------
22861|     17|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     17|            ++chars_read;
22864|     17|            static_cast<void>(report_eof(context));
22865|     17|            return false;
22866|     17|        }
22867|  1.51k|        return true;
22868|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIiEEmPT_m:
10174|  1.53k|    {
10175|  1.53k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIiEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  1.53k|    {
10255|  1.53k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  7.61k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 6.09k, False: 1.51k]
  ------------------
10257|  6.09k|        {
10258|  6.09k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  6.09k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 6.07k, False: 17]
  |  |  ------------------
  ------------------
10259|  6.07k|            {
10260|  6.07k|                ptr[read_index] = static_cast<char>(*current);
10261|  6.07k|                std::advance(current, 1);
10262|  6.07k|            }
10263|     17|            else
10264|     17|            {
10265|     17|                return read_index;
10266|     17|            }
10267|  6.09k|        }
10268|  1.51k|        return count * sizeof(T);
10269|  1.53k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE10report_eofEPKc:
23343|  1.25k|    {
23344|  1.25k|        return sax->parse_error(chars_read, "<end of file>",
23345|  1.25k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
23346|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE17exception_messageERKSC_SQ_:
23454|  1.54k|    {
23455|  1.54k|        std::string error_msg = "syntax error while parsing ";
23456|  1.54k|        error_msg += input_format_name(input_format);
23457|       |
23458|  1.54k|        return concat(error_msg, ' ', context, ": ", detail);
23459|  1.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE9byte_swapIiEEvRT_:
22907|  1.51k|    {
22908|  1.51k|        constexpr std::size_t sz = sizeof(number);
22909|       |#ifdef __cpp_lib_byteswap
22910|       |        if constexpr (sz == 1)
22911|       |        {
22912|       |            return;
22913|       |        }
22914|       |        else if constexpr(std::is_integral_v<NumberType>)
22915|       |        {
22916|       |            number = std::byteswap(number);
22917|       |            return;
22918|       |        }
22919|       |        else
22920|       |        {
22921|       |#endif
22922|  1.51k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  4.54k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 3.03k, False: 1.51k]
  ------------------
22924|  3.03k|            {
22925|  3.03k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  3.03k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  1.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE15enter_containerEbmm:
18618|   115k|    {
18619|   115k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1697|   231k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 115k]
  |  |  |  Branch (1697:94): [True: 12.6k, False: 103k]
  |  |  ------------------
  ------------------
18620|      0|        {
18621|      0|            return false;
18622|      0|        }
18623|       |
18624|   115k|        container_stack.emplace_back(len, is_object, type_marker);
18625|   115k|        return true;
18626|   115k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12start_objectEm:
17483|  12.6k|    {
17484|  12.6k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
17485|       |
17486|       |#if JSON_DIAGNOSTIC_POSITIONS
17487|       |        // Ensure this is after the call to handle_value to ensure correct start position.
17488|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
17489|       |#endif
17490|       |
17491|  12.6k|        return check_container_size(*this, len, "object", ref_stack.back());
17492|  12.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
17566|   115k|    {
17567|   115k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3.84k, False: 112k]
  ------------------
17568|  3.84k|        {
17569|  3.84k|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|  3.84k|            return &root;
17576|  3.84k|        }
17577|       |
17578|   112k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   112k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 103k, False: 8.61k]
  |  Branch (17578:9): [True: 8.61k, False: 0]
  |  Branch (17578:9): [True: 112k, False: 0]
  ------------------
17579|       |
17580|   112k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 103k, False: 8.61k]
  ------------------
17581|   103k|        {
17582|   103k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|   103k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   103k|        }
17590|       |
17591|  8.61k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 8.61k, False: 0]
  ------------------
17592|  8.61k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 8.61k, False: 0]
  ------------------
17593|  8.61k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  8.61k|        return object_element;
17600|  8.61k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterINS5_21__list_const_iteratorIhPvEESL_EEEESH_EEbRT_mPKcPT0_:
16179|   115k|{
16180|   115k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1697|   222k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 115k]
  |  |  |  Branch (1697:94): [True: 106k, False: 9.56k]
  |  |  |  Branch (1697:94): [True: 0, False: 106k]
  |  |  ------------------
  ------------------
16181|      0|    {
16182|      0|        return container_too_large_error(sax, len, kind, ref);
16183|      0|    }
16184|   115k|    return true;
16185|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11start_arrayEm:
17520|   103k|    {
17521|   103k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
17522|       |
17523|       |#if JSON_DIAGNOSTIC_POSITIONS
17524|       |        // Ensure this is after the call to handle_value to ensure correct start position.
17525|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
17526|       |#endif
17527|       |
17528|   103k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1697|   103k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 103k]
  |  |  ------------------
  ------------------
17529|      0|        {
17530|      0|            return false;
17531|      0|        }
17532|       |
17533|   103k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (17533:13): [True: 95.8k, False: 7.40k]
  ------------------
17534|  95.8k|        {
17535|  95.8k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
17536|  95.8k|        }
17537|       |
17538|   103k|        return true;
17539|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE15container_frameC2Embm:
18584|   115k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE15leave_containerEv:
18650|  96.5k|    {
18651|  96.5k|        const bool is_object = container_stack.back().is_object;
18652|  96.5k|        container_stack.pop_back();
18653|  96.5k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (18653:16): [True: 10.5k, False: 85.9k]
  ------------------
18654|  96.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE10end_objectEv:
17506|  10.5k|    {
17507|  10.5k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  10.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17507:9): [True: 10.5k, False: 0]
  ------------------
17508|  10.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  10.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17508:9): [True: 10.5k, False: 0]
  ------------------
17509|       |
17510|       |#if JSON_DIAGNOSTIC_POSITIONS
17511|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17512|       |#endif
17513|       |
17514|  10.5k|        ref_stack.back()->set_parents();
17515|  10.5k|        ref_stack.pop_back();
17516|  10.5k|        return true;
17517|  10.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE9end_arrayEv:
17542|  85.9k|    {
17543|  85.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  85.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17543:9): [True: 85.9k, False: 0]
  ------------------
17544|  85.9k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2643|  85.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17544:9): [True: 85.9k, False: 0]
  ------------------
17545|       |
17546|       |#if JSON_DIAGNOSTIC_POSITIONS
17547|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17548|       |#endif
17549|       |
17550|  85.9k|        ref_stack.back()->set_parents();
17551|  85.9k|        ref_stack.pop_back();
17552|  85.9k|        return true;
17553|  85.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE12unexpect_eofEPKc:
23326|  6.48k|    {
23327|  6.48k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  6.48k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1.17k, False: 5.31k]
  |  |  ------------------
  ------------------
23328|  1.17k|        {
23329|  1.17k|            return report_eof(context);
23330|  1.17k|        }
23331|  5.31k|        return true;
23332|  6.48k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE3keyERSC_:
17495|  27.4k|    {
17496|  27.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  27.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17496:9): [True: 27.4k, False: 0]
  ------------------
17497|  27.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  27.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17497:9): [True: 27.4k, False: 0]
  ------------------
17498|       |
17499|       |        // add null at the given key and store the reference for later; the
17500|       |        // key is moved, as the lexer starts the next token with reset()
17501|  27.4k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](std::move(val)));
17502|  27.4k|        return true;
17503|  27.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE6get_toIdEEbRT_PKc:
22855|  1.27k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.27k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.27k|        chars_read += new_chars_read;
22860|  1.27k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 24, False: 1.25k]
  |  |  ------------------
  ------------------
22861|     24|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     24|            ++chars_read;
22864|     24|            static_cast<void>(report_eof(context));
22865|     24|            return false;
22866|     24|        }
22867|  1.25k|        return true;
22868|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIdEEmPT_m:
10174|  1.27k|    {
10175|  1.27k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIdEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  1.27k|    {
10255|  1.27k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  11.3k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 10.0k, False: 1.25k]
  ------------------
10257|  10.0k|        {
10258|  10.0k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  10.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 10.0k, False: 24]
  |  |  ------------------
  ------------------
10259|  10.0k|            {
10260|  10.0k|                ptr[read_index] = static_cast<char>(*current);
10261|  10.0k|                std::advance(current, 1);
10262|  10.0k|            }
10263|     24|            else
10264|     24|            {
10265|     24|                return read_index;
10266|     24|            }
10267|  10.0k|        }
10268|  1.25k|        return count * sizeof(T);
10269|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE9byte_swapERd:
22887|  1.25k|    {
22888|  1.25k|        static_assert(sizeof(double) == sizeof(std::uint64_t), "double must have 64 bits");
22889|  1.25k|        std::uint64_t bits{};
22890|  1.25k|        std::memcpy(&bits, &number, sizeof(bits));
22891|  1.25k|        bits = byteswap(bits);
22892|  1.25k|        std::memcpy(&number, &bits, sizeof(bits));
22893|  1.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE10emit_floatIdEEbT_:
23034|  1.25k|    {
23035|  1.25k|        const auto result = static_cast<number_float_t>(number);
23036|  1.25k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  2.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.25k]
  |  |  |  Branch (1697:94): [True: 1.24k, False: 5]
  |  |  |  Branch (1697:94): [True: 0, False: 1.24k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  1.25k|        return sax->number_float(result, no_source);
23041|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE16get_token_stringEv:
23443|    590|    {
23444|    590|        return hex_byte(static_cast<std::uint8_t>(current));
23445|    590|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12number_floatEdRKSC_:
17461|  11.5k|    {
17462|  11.5k|        handle_value(val);
17463|  11.5k|        return true;
17464|  11.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRdEEPSG_OT_:
17566|  11.5k|    {
17567|  11.5k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 558, False: 11.0k]
  ------------------
17568|    558|        {
17569|    558|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    558|            return &root;
17576|    558|        }
17577|       |
17578|  11.0k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  11.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 7.59k, False: 3.41k]
  |  Branch (17578:9): [True: 3.41k, False: 0]
  |  Branch (17578:9): [True: 11.0k, False: 0]
  ------------------
17579|       |
17580|  11.0k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 7.59k, False: 3.41k]
  ------------------
17581|  7.59k|        {
17582|  7.59k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  7.59k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  7.59k|        }
17590|       |
17591|  3.41k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.41k, False: 0]
  ------------------
17592|  3.41k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.41k, False: 0]
  ------------------
17593|  3.41k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  3.41k|        return object_element;
17600|  3.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE6stringERSC_:
17467|  32.4k|    {
17468|       |        // json_sax documents that the passed value may be moved from,
17469|       |        // so hand the buffer over instead of copying it
17470|  32.4k|        handle_value(std::move(val));
17471|  32.4k|        return true;
17472|  32.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueISC_EEPSG_OT_:
17566|  32.4k|    {
17567|  32.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 360, False: 32.1k]
  ------------------
17568|    360|        {
17569|    360|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    360|            return &root;
17576|    360|        }
17577|       |
17578|  32.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  32.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 27.7k, False: 4.40k]
  |  Branch (17578:9): [True: 4.40k, False: 0]
  |  Branch (17578:9): [True: 32.1k, False: 0]
  ------------------
17579|       |
17580|  32.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 27.7k, False: 4.40k]
  ------------------
17581|  27.7k|        {
17582|  27.7k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  27.7k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  27.7k|        }
17590|       |
17591|  4.40k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.40k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.40k, False: 0]
  ------------------
17592|  4.40k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.40k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.40k, False: 0]
  ------------------
17593|  4.40k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  4.40k|        return object_element;
17600|  4.40k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE7booleanEb:
17443|  19.2k|    {
17444|  19.2k|        handle_value(val);
17445|  19.2k|        return true;
17446|  19.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRbEEPSG_OT_:
17566|  19.2k|    {
17567|  19.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3, False: 19.2k]
  ------------------
17568|      3|        {
17569|      3|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|      3|            return &root;
17576|      3|        }
17577|       |
17578|  19.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  19.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 17.8k, False: 1.38k]
  |  Branch (17578:9): [True: 1.38k, False: 0]
  |  Branch (17578:9): [True: 19.2k, False: 0]
  ------------------
17579|       |
17580|  19.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 17.8k, False: 1.38k]
  ------------------
17581|  17.8k|        {
17582|  17.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  17.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  17.8k|        }
17590|       |
17591|  1.38k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.38k, False: 0]
  ------------------
17592|  1.38k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.38k, False: 0]
  ------------------
17593|  1.38k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  1.38k|        return object_element;
17600|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE4nullEv:
17437|  4.16k|    {
17438|  4.16k|        handle_value(nullptr);
17439|  4.16k|        return true;
17440|  4.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIDnEEPSG_OT_:
17566|  4.16k|    {
17567|  4.16k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 2, False: 4.16k]
  ------------------
17568|      2|        {
17569|      2|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|      2|            return &root;
17576|      2|        }
17577|       |
17578|  4.16k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 2.44k, False: 1.72k]
  |  Branch (17578:9): [True: 1.72k, False: 0]
  |  Branch (17578:9): [True: 4.16k, False: 0]
  ------------------
17579|       |
17580|  4.16k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 2.44k, False: 1.72k]
  ------------------
17581|  2.44k|        {
17582|  2.44k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  2.44k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  2.44k|        }
17590|       |
17591|  1.72k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.72k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.72k, False: 0]
  ------------------
17592|  1.72k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.72k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.72k, False: 0]
  ------------------
17593|  1.72k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  1.72k|        return object_element;
17600|  1.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE14number_integerEl:
17449|  11.0k|    {
17450|  11.0k|        handle_value(val);
17451|  11.0k|        return true;
17452|  11.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRlEEPSG_OT_:
17566|  11.0k|    {
17567|  11.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 379, False: 10.6k]
  ------------------
17568|    379|        {
17569|    379|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    379|            return &root;
17576|    379|        }
17577|       |
17578|  10.6k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  10.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 7.27k, False: 3.35k]
  |  Branch (17578:9): [True: 3.35k, False: 0]
  |  Branch (17578:9): [True: 10.6k, False: 0]
  ------------------
17579|       |
17580|  10.6k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 7.27k, False: 3.35k]
  ------------------
17581|  7.27k|        {
17582|  7.27k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  7.27k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  7.27k|        }
17590|       |
17591|  3.35k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.35k, False: 0]
  ------------------
17592|  3.35k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.35k, False: 0]
  ------------------
17593|  3.35k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  3.35k|        return object_element;
17600|  3.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE15number_unsignedEm:
17455|  14.8k|    {
17456|  14.8k|        handle_value(val);
17457|  14.8k|        return true;
17458|  14.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12handle_valueIRmEEPSG_OT_:
17566|  14.8k|    {
17567|  14.8k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 253, False: 14.6k]
  ------------------
17568|    253|        {
17569|    253|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    253|            return &root;
17576|    253|        }
17577|       |
17578|  14.6k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  14.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 10.2k, False: 4.41k]
  |  Branch (17578:9): [True: 4.41k, False: 0]
  |  Branch (17578:9): [True: 14.6k, False: 0]
  ------------------
17579|       |
17580|  14.6k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 10.2k, False: 4.41k]
  ------------------
17581|  10.2k|        {
17582|  10.2k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  10.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  10.2k|        }
17590|       |
17591|  4.41k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.41k, False: 0]
  ------------------
17592|  4.41k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.41k, False: 0]
  ------------------
17593|  4.41k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  4.41k|        return object_element;
17600|  4.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE6get_toIlEEbRT_PKc:
22855|  1.05k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.05k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.05k|        chars_read += new_chars_read;
22860|  1.05k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.05k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 1.03k]
  |  |  ------------------
  ------------------
22861|     17|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     17|            ++chars_read;
22864|     17|            static_cast<void>(report_eof(context));
22865|     17|            return false;
22866|     17|        }
22867|  1.03k|        return true;
22868|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIlEEmPT_m:
10174|  1.05k|    {
10175|  1.05k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIlEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  1.05k|    {
10255|  1.05k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  9.39k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 8.36k, False: 1.03k]
  ------------------
10257|  8.36k|        {
10258|  8.36k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  8.36k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 8.34k, False: 17]
  |  |  ------------------
  ------------------
10259|  8.34k|            {
10260|  8.34k|                ptr[read_index] = static_cast<char>(*current);
10261|  8.34k|                std::advance(current, 1);
10262|  8.34k|            }
10263|     17|            else
10264|     17|            {
10265|     17|                return read_index;
10266|     17|            }
10267|  8.36k|        }
10268|  1.03k|        return count * sizeof(T);
10269|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE9byte_swapIlEEvRT_:
22907|  1.03k|    {
22908|  1.03k|        constexpr std::size_t sz = sizeof(number);
22909|       |#ifdef __cpp_lib_byteswap
22910|       |        if constexpr (sz == 1)
22911|       |        {
22912|       |            return;
22913|       |        }
22914|       |        else if constexpr(std::is_integral_v<NumberType>)
22915|       |        {
22916|       |            number = std::byteswap(number);
22917|       |            return;
22918|       |        }
22919|       |        else
22920|       |        {
22921|       |#endif
22922|  1.03k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  5.19k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.15k, False: 1.03k]
  ------------------
22924|  4.15k|            {
22925|  4.15k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.15k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  1.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE11emit_signedIlEEbT_:
22980|  4.29k|    {
22981|  4.29k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  4.29k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 4.29k, False: 0]
  |  |  ------------------
  ------------------
22982|  4.29k|        {
22983|  4.29k|            return sax->number_integer(static_cast<number_integer_t>(number));
22984|  4.29k|        }
22985|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (22985:13): [True: 0, False: 0]
  ------------------
22986|      0|        {
22987|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
22988|      0|        }
22989|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
22990|      0|        return emit_float(static_cast<long double>(number));
22991|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE13emit_unsignedImEEbT_:
23008|  3.54k|    {
23009|  3.54k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|  3.54k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.54k, False: 0]
  |  |  ------------------
  ------------------
23010|  3.54k|        {
23011|  3.54k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|  3.54k|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE25leave_container_and_checkERb:
18667|  96.5k|    {
18668|  96.5k|        if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1697|  96.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 96.5k]
  |  |  ------------------
  ------------------
18669|      0|        {
18670|      0|            return false;
18671|      0|        }
18672|  96.5k|        value_complete = container_stack.empty();
18673|  96.5k|        return true;
18674|  96.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE11enter_arrayEmm:
18630|   103k|    {
18631|   103k|        return enter_container(/*is_object*/false, len, type_marker);
18632|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE12enter_objectEmm:
18636|  12.6k|    {
18637|  12.6k|        return enter_container(/*is_object*/true, len, type_marker);
18638|  12.6k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE15unexpected_byteEPKcSQ_:
23421|    192|    {
23422|    192|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
23423|    192|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE10get_numberIfLb0EEEbRT_:
22948|  2.14k|    {
22949|       |        // read in the original format
22950|       |
22951|  2.14k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  2.14k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.14k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  2.14k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 2.13k, False: 16]
  |  Branch (22955:34): [Folded, False: 2.13k]
  |  Branch (22955:57): [True: 0, False: 2.13k]
  ------------------
22956|  2.13k|        {
22957|  2.13k|            byte_swap(result);
22958|  2.13k|        }
22959|  2.14k|        return true;
22960|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE6get_toIfEEbRT_PKc:
22855|  2.14k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  2.14k|        auto new_chars_read = ia.get_elements(&dest);
22859|  2.14k|        chars_read += new_chars_read;
22860|  2.14k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  2.14k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 2.13k]
  |  |  ------------------
  ------------------
22861|     16|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     16|            ++chars_read;
22864|     16|            static_cast<void>(report_eof(context));
22865|     16|            return false;
22866|     16|        }
22867|  2.13k|        return true;
22868|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIfEEmPT_m:
10174|  2.14k|    {
10175|  2.14k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIfEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  2.14k|    {
10255|  2.14k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  10.6k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 8.55k, False: 2.13k]
  ------------------
10257|  8.55k|        {
10258|  8.55k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  8.55k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 8.53k, False: 16]
  |  |  ------------------
  ------------------
10259|  8.53k|            {
10260|  8.53k|                ptr[read_index] = static_cast<char>(*current);
10261|  8.53k|                std::advance(current, 1);
10262|  8.53k|            }
10263|     16|            else
10264|     16|            {
10265|     16|                return read_index;
10266|     16|            }
10267|  8.55k|        }
10268|  2.13k|        return count * sizeof(T);
10269|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE9byte_swapERf:
22897|  2.13k|    {
22898|  2.13k|        static_assert(sizeof(float) == sizeof(std::uint32_t), "float must have 32 bits");
22899|  2.13k|        std::uint32_t bits{};
22900|  2.13k|        std::memcpy(&bits, &number, sizeof(bits));
22901|  2.13k|        bits = byteswap(bits);
22902|  2.13k|        std::memcpy(&number, &bits, sizeof(bits));
22903|  2.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE10emit_floatIfEEbT_:
23034|  2.13k|    {
23035|  2.13k|        const auto result = static_cast<number_float_t>(number);
23036|  2.13k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  3.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.13k]
  |  |  |  Branch (1697:94): [True: 1.60k, False: 530]
  |  |  |  Branch (1697:94): [True: 0, False: 1.60k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  2.13k|        return sax->number_float(result, no_source);
23041|  2.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE10get_numberIdLb0EEEbRT_:
22948|  1.27k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.27k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.27k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.27k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.25k, False: 24]
  |  Branch (22955:34): [Folded, False: 1.25k]
  |  Branch (22955:57): [True: 0, False: 1.25k]
  ------------------
22956|  1.25k|        {
22957|  1.25k|            byte_swap(result);
22958|  1.25k|        }
22959|  1.27k|        return true;
22960|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE10get_numberIiLb0EEEbRT_:
22948|  1.53k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.53k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.53k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.53k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.53k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.51k, False: 17]
  |  Branch (22955:34): [Folded, False: 1.51k]
  |  Branch (22955:57): [True: 0, False: 1.51k]
  ------------------
22956|  1.51k|        {
22957|  1.51k|            byte_swap(result);
22958|  1.51k|        }
22959|  1.53k|        return true;
22960|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE10get_numberIlLb0EEEbRT_:
22948|  1.05k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.05k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.05k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.05k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.05k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.03k, False: 17]
  |  Branch (22955:34): [Folded, False: 1.03k]
  |  Branch (22955:57): [True: 0, False: 1.03k]
  ------------------
22956|  1.03k|        {
22957|  1.03k|            byte_swap(result);
22958|  1.03k|        }
22959|  1.05k|        return true;
22960|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE19parse_bon8_internalEv:
22346|  5.72k|    {
22347|       |        // the key currently being read; hoisted out of the loop so that its
22348|       |        // capacity is reused across elements and across nesting levels
22349|  5.72k|        string_t key;
22350|       |
22351|   308k|        while (true)
  ------------------
  |  Branch (22351:16): [True: 307k, Folded]
  ------------------
22352|   307k|        {
22353|   307k|            if (!container_stack.empty())
  ------------------
  |  Branch (22353:17): [True: 301k, False: 5.72k]
  ------------------
22354|   301k|            {
22355|       |                // a copy, not a reference: it must stay valid across the
22356|       |                // pop_back() below, which destroys the container_stack element
22357|       |                // it would otherwise alias
22358|   301k|                const container_frame top = container_stack.back();
22359|   301k|                bool at_end = false;
22360|       |
22361|   301k|                if (top.remaining != npos)
  ------------------
  |  Branch (22361:21): [True: 194k, False: 107k]
  ------------------
22362|   194k|                {
22363|       |                    // counted container (0x80..0x84, 0x86..0x8A): it ends once
22364|       |                    // its elements have been read
22365|   194k|                    at_end = (top.remaining == 0);
22366|   194k|                    if (!at_end)
  ------------------
  |  Branch (22366:25): [True: 102k, False: 92.2k]
  ------------------
22367|   102k|                    {
22368|       |                        // claim the element about to be read
22369|   102k|                        --container_stack.back().remaining;
22370|   102k|                    }
22371|   194k|                }
22372|   107k|                else
22373|   107k|                {
22374|       |                    // container 0x85 or 0x8B: it ends at an end-of-container
22375|       |                    // marker (0xFE); any other byte begins the next element
22376|   107k|                    at_end = (get_bon8() == 0xFE);
22377|   107k|                    if (!at_end)
  ------------------
  |  Branch (22377:25): [True: 102k, False: 4.31k]
  ------------------
22378|   102k|                    {
22379|   102k|                        unget_bon8(current);
22380|   102k|                    }
22381|   107k|                }
22382|       |
22383|   301k|                if (at_end)
  ------------------
  |  Branch (22383:21): [True: 96.5k, False: 205k]
  ------------------
22384|  96.5k|                {
22385|  96.5k|                    bool value_complete = false;
22386|  96.5k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container_and_check(value_complete)))
  ------------------
  |  | 1697|  96.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 96.5k]
  |  |  ------------------
  ------------------
22387|      0|                    {
22388|      0|                        return false;
22389|      0|                    }
22390|  96.5k|                    if (value_complete)
  ------------------
  |  Branch (22390:25): [True: 2.72k, False: 93.8k]
  ------------------
22391|  2.72k|                    {
22392|  2.72k|                        return true;
22393|  2.72k|                    }
22394|  93.8k|                    continue;
22395|  96.5k|                }
22396|       |
22397|   205k|                if (top.is_object)
  ------------------
  |  Branch (22397:21): [True: 27.8k, False: 177k]
  ------------------
22398|  27.8k|                {
22399|  27.8k|                    if (JSON_HEDLEY_UNLIKELY(!read_object_key<&binary_reader::get_bon8_key>(key)))
  ------------------
  |  | 1697|  27.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 27.8k]
  |  |  ------------------
  ------------------
22400|      0|                    {
22401|      0|                        return false;
22402|      0|                    }
22403|  27.8k|                }
22404|   205k|            }
22405|       |
22406|   210k|            if (JSON_HEDLEY_UNLIKELY(!parse_bon8_value()))
  ------------------
  |  | 1697|   210k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 210k]
  |  |  ------------------
  ------------------
22407|      0|            {
22408|      0|                return false;
22409|      0|            }
22410|       |
22411|       |            // a value that opened a container left it on the stack; one that
22412|       |            // did not, and that was not inside a container, was the whole value
22413|   210k|            if (container_stack.empty())
  ------------------
  |  Branch (22413:17): [True: 1.55k, False: 209k]
  ------------------
22414|  1.55k|            {
22415|  1.55k|                return true;
22416|  1.55k|            }
22417|   210k|        }
22418|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE10unget_bon8Em:
22315|   198k|    {
22316|       |        // At most two bytes are ever handed back: a byte is only handed back
22317|       |        // right after it was read with get_bon8(), and the only place that
22318|       |        // hands back two bytes (a lead byte and the byte after it) read both
22319|       |        // of them in a row, which emptied the buffer first. This is an
22320|       |        // invariant of the reader rather than a property of the input, so
22321|       |        // an assertion suffices (the fuzzers are built with assertions).
22322|   198k|        JSON_ASSERT(bon8_pushback_size < bon8_pushback.size());
  ------------------
  |  | 2643|   198k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (22322:9): [True: 198k, False: 0]
  ------------------
22323|   198k|        bon8_pushback[bon8_pushback_size++] = c;
22324|   198k|        --chars_read;
22325|   198k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE15read_object_keyIXadL_ZNSO_12get_bon8_keyERSC_EEEEbSQ_:
18685|  27.8k|    {
18686|  27.8k|        key.clear();
18687|  27.8k|        return (this->*GetKey)(key) && sax->key(key);
  ------------------
  |  Branch (18687:16): [True: 27.4k, False: 425]
  |  Branch (18687:40): [True: 27.4k, False: 0]
  ------------------
18688|  27.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE12get_bon8_keyERSC_:
22640|  27.8k|    {
22641|  27.8k|        const auto byte = get_bon8();
22642|       |
22643|  27.8k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22643:13): [True: 320, False: 27.5k]
  ------------------
22644|    320|        {
22645|    320|            return unexpect_eof("key");
22646|    320|        }
22647|       |
22648|  27.5k|        if (byte == 0xFF)
  ------------------
  |  Branch (22648:13): [True: 5.26k, False: 22.2k]
  ------------------
22649|  5.26k|        {
22650|  5.26k|            return true;
22651|  5.26k|        }
22652|       |
22653|  22.2k|        if (byte <= 0x7F)
  ------------------
  |  Branch (22653:13): [True: 21.1k, False: 1.17k]
  ------------------
22654|  21.1k|        {
22655|  21.1k|            unget_bon8(byte);
22656|  21.1k|            return get_bon8_string(result);
22657|  21.1k|        }
22658|       |
22659|  1.17k|        if (0xC2 <= byte && byte <= 0xF7)
  ------------------
  |  Branch (22659:13): [True: 1.15k, False: 16]
  |  Branch (22659:29): [True: 1.14k, False: 10]
  ------------------
22660|  1.14k|        {
22661|  1.14k|            const auto second = get_bon8();
22662|  1.14k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (22662:17): [True: 7, False: 1.13k]
  ------------------
22663|      7|            {
22664|       |                // the input ends inside a character or an integer
22665|      7|                return unexpect_eof("key");
22666|      7|            }
22667|  1.13k|            unget_bon8(second);
22668|  1.13k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (22668:17): [True: 1.12k, False: 17]
  ------------------
22669|  1.12k|            {
22670|  1.12k|                unget_bon8(byte);
22671|  1.12k|                return get_bon8_string(result);
22672|  1.12k|            }
22673|       |            // an integer: report its first byte rather than the one after it
22674|     17|            current = byte;
22675|     17|        }
22676|       |
22677|     43|        return unexpected_byte("expected a string; last byte", "key");
22678|  1.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE15get_bon8_stringERSC_:
22729|  46.0k|    {
22730|   146k|        while (true)
  ------------------
  |  Branch (22730:16): [True: 146k, Folded]
  ------------------
22731|   146k|        {
22732|   146k|            get_bon8_string_bulk(result, std::integral_constant<bool, bulk_scan> {});
22733|       |
22734|   146k|            const auto byte = get_bon8();
22735|       |
22736|   146k|            if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22736:17): [True: 159, False: 146k]
  ------------------
22737|    159|            {
22738|    159|                return unexpect_eof("string");
22739|    159|            }
22740|       |
22741|       |            // end of string
22742|   146k|            if (byte == 0xFF)
  ------------------
  |  Branch (22742:17): [True: 1.92k, False: 144k]
  ------------------
22743|  1.92k|            {
22744|  1.92k|                return true;
22745|  1.92k|            }
22746|       |
22747|       |            // ASCII character
22748|   144k|            if (byte <= 0x7F)
  ------------------
  |  Branch (22748:17): [True: 92.7k, False: 51.6k]
  ------------------
22749|  92.7k|            {
22750|  92.7k|                result.push_back(static_cast<typename string_t::value_type>(byte));
22751|  92.7k|                continue;
22752|  92.7k|            }
22753|       |
22754|       |            // a byte that cannot begin a character ends the string and begins
22755|       |            // the next value
22756|  51.6k|            if (byte < 0xC2 || byte > 0xF7)
  ------------------
  |  Branch (22756:17): [True: 20.5k, False: 31.1k]
  |  Branch (22756:32): [True: 21.2k, False: 9.84k]
  ------------------
22757|  41.8k|            {
22758|  41.8k|                unget_bon8(byte);
22759|  41.8k|                return true;
22760|  41.8k|            }
22761|       |
22762|       |            // a lead byte ends the string if no continuation byte follows: it
22763|       |            // is then the first byte of an integer
22764|  9.84k|            const auto second = get_bon8();
22765|  9.84k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (22765:17): [True: 18, False: 9.82k]
  ------------------
22766|     18|            {
22767|       |                // the input ends inside a character or an integer: either
22768|       |                // way, the message is incomplete
22769|     18|                return unexpect_eof("string");
22770|     18|            }
22771|  9.82k|            if (!is_bon8_continuation(second))
  ------------------
  |  Branch (22771:17): [True: 1.93k, False: 7.89k]
  ------------------
22772|  1.93k|            {
22773|  1.93k|                unget_bon8(second);
22774|  1.93k|                unget_bon8(byte);
22775|  1.93k|                return true;
22776|  1.93k|            }
22777|       |
22778|       |            // the valid range of the second byte excludes overlong forms,
22779|       |            // surrogates, and code points above U+10FFFF
22780|       |            // (RFC 3629, section 4)
22781|  7.89k|            int continuation_bytes = 0;
22782|  7.89k|            bool valid_second = true;
22783|  7.89k|            if (byte <= 0xDF)
  ------------------
  |  Branch (22783:17): [True: 4.03k, False: 3.86k]
  ------------------
22784|  4.03k|            {
22785|  4.03k|                continuation_bytes = 1;
22786|  4.03k|            }
22787|  3.86k|            else if (byte <= 0xEF)
  ------------------
  |  Branch (22787:22): [True: 1.97k, False: 1.88k]
  ------------------
22788|  1.97k|            {
22789|  1.97k|                continuation_bytes = 2;
22790|  1.97k|                valid_second = (byte != 0xE0 || second >= 0xA0) && (byte != 0xED || second <= 0x9F);
  ------------------
  |  Branch (22790:33): [True: 1.06k, False: 916]
  |  Branch (22790:49): [True: 901, False: 15]
  |  Branch (22790:69): [True: 1.26k, False: 699]
  |  Branch (22790:85): [True: 696, False: 3]
  ------------------
22791|  1.97k|            }
22792|  1.88k|            else
22793|  1.88k|            {
22794|  1.88k|                continuation_bytes = 3;
22795|  1.88k|                valid_second = byte <= 0xF4 && (byte != 0xF0 || second >= 0x90) && (byte != 0xF4 || second <= 0x8F);
  ------------------
  |  Branch (22795:32): [True: 1.88k, False: 3]
  |  Branch (22795:49): [True: 1.31k, False: 571]
  |  Branch (22795:65): [True: 561, False: 10]
  |  Branch (22795:85): [True: 1.24k, False: 633]
  |  Branch (22795:101): [True: 628, False: 5]
  ------------------
22796|  1.88k|            }
22797|       |
22798|  7.89k|            if (JSON_HEDLEY_UNLIKELY(!valid_second))
  ------------------
  |  | 1697|  7.89k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 36, False: 7.86k]
  |  |  ------------------
  ------------------
22799|     36|            {
22800|     36|                return unexpected_byte("invalid UTF-8 byte", "string");
22801|     36|            }
22802|       |
22803|  7.86k|            result.push_back(static_cast<typename string_t::value_type>(byte));
22804|  7.86k|            result.push_back(static_cast<typename string_t::value_type>(second));
22805|       |
22806|  13.3k|            for (int i = 1; i < continuation_bytes; ++i)
  ------------------
  |  Branch (22806:29): [True: 5.64k, False: 7.69k]
  ------------------
22807|  5.64k|            {
22808|  5.64k|                if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  5.64k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 98, False: 5.54k]
  |  |  ------------------
  ------------------
22809|     98|                {
22810|     98|                    return unexpect_eof("string");
22811|     98|                }
22812|  5.54k|                if (JSON_HEDLEY_UNLIKELY(!is_bon8_continuation(current)))
  ------------------
  |  | 1697|  5.54k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 67, False: 5.47k]
  |  |  ------------------
  ------------------
22813|     67|                {
22814|     67|                    return unexpected_byte("invalid UTF-8 byte", "string");
22815|     67|                }
22816|  5.47k|                result.push_back(static_cast<typename string_t::value_type>(current));
22817|  5.47k|            }
22818|  7.86k|        }
22819|  46.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE20get_bon8_string_bulkERSC_NS4_17integral_constantIbLb0EEE:
22714|   146k|    void get_bon8_string_bulk(string_t& /*result*/, std::false_type /*bulk*/) const noexcept {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE20is_bon8_continuationEm:
22332|  24.3k|    {
22333|  24.3k|        return 0x80 <= c && c <= 0xBF;
  ------------------
  |  Branch (22333:16): [True: 20.5k, False: 3.80k]
  |  Branch (22333:29): [True: 17.0k, False: 3.55k]
  ------------------
22334|  24.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE16parse_bon8_valueEv:
22431|   210k|    {
22432|   210k|        const auto byte = get_bon8();
22433|       |
22434|   210k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22434:13): [True: 522, False: 209k]
  ------------------
22435|    522|        {
22436|    522|            return unexpect_eof("value");
22437|    522|        }
22438|       |
22439|       |        // string: ASCII character
22440|   209k|        if (byte <= 0x7F)
  ------------------
  |  Branch (22440:13): [True: 21.3k, False: 188k]
  ------------------
22441|  21.3k|        {
22442|  21.3k|            string_t s;
22443|  21.3k|            unget_bon8(byte);
22444|  21.3k|            return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (22444:20): [True: 21.1k, False: 151]
  |  Branch (22444:42): [True: 21.1k, False: 0]
  ------------------
22445|  21.3k|        }
22446|       |
22447|       |        // array with 0..4 elements
22448|   188k|        if (byte <= 0x84)
  ------------------
  |  Branch (22448:13): [True: 95.8k, False: 92.6k]
  ------------------
22449|  95.8k|        {
22450|  95.8k|            return enter_array(static_cast<std::size_t>(byte - 0x80));
22451|  95.8k|        }
22452|       |
22453|       |        // array terminated by 0xFE
22454|  92.6k|        if (byte == 0x85)
  ------------------
  |  Branch (22454:13): [True: 7.40k, False: 85.2k]
  ------------------
22455|  7.40k|        {
22456|  7.40k|            return enter_array(npos);
22457|  7.40k|        }
22458|       |
22459|       |        // object with 0..4 members
22460|  85.2k|        if (byte <= 0x8A)
  ------------------
  |  Branch (22460:13): [True: 10.5k, False: 74.6k]
  ------------------
22461|  10.5k|        {
22462|  10.5k|            return enter_object(static_cast<std::size_t>(byte - 0x86));
22463|  10.5k|        }
22464|       |
22465|  74.6k|        switch (byte)
22466|  74.6k|        {
22467|  2.15k|            case 0x8B: // object terminated by 0xFE
  ------------------
  |  Branch (22467:13): [True: 2.15k, False: 72.5k]
  ------------------
22468|  2.15k|                return enter_object(npos);
22469|       |
22470|  1.53k|            case 0x8C: // int32
  ------------------
  |  Branch (22470:13): [True: 1.53k, False: 73.1k]
  ------------------
22471|  1.53k|            {
22472|  1.53k|                std::int32_t number{};
22473|  1.53k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (22473:24): [True: 1.51k, False: 17]
  |  Branch (22473:46): [True: 1.51k, False: 0]
  ------------------
22474|      0|            }
22475|       |
22476|  1.05k|            case 0x8D: // int64
  ------------------
  |  Branch (22476:13): [True: 1.05k, False: 73.6k]
  ------------------
22477|  1.05k|            {
22478|  1.05k|                std::int64_t number{};
22479|  1.05k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (22479:24): [True: 1.03k, False: 17]
  |  Branch (22479:46): [True: 1.03k, False: 0]
  ------------------
22480|      0|            }
22481|       |
22482|  2.14k|            case 0x8E: // binary32
  ------------------
  |  Branch (22482:13): [True: 2.14k, False: 72.5k]
  ------------------
22483|  2.14k|            {
22484|  2.14k|                float number{};
22485|  2.14k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (22485:24): [True: 2.13k, False: 16]
  |  Branch (22485:46): [True: 2.13k, False: 0]
  ------------------
22486|      0|            }
22487|       |
22488|  1.27k|            case 0x8F: // binary64
  ------------------
  |  Branch (22488:13): [True: 1.27k, False: 73.4k]
  ------------------
22489|  1.27k|            {
22490|  1.27k|                double number{};
22491|  1.27k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (22491:24): [True: 1.25k, False: 24]
  |  Branch (22491:46): [True: 1.25k, False: 0]
  ------------------
22492|      0|            }
22493|       |
22494|  17.1k|            case 0xF8:
  ------------------
  |  Branch (22494:13): [True: 17.1k, False: 57.5k]
  ------------------
22495|  17.1k|                return sax->boolean(false);
22496|       |
22497|  2.07k|            case 0xF9:
  ------------------
  |  Branch (22497:13): [True: 2.07k, False: 72.6k]
  ------------------
22498|  2.07k|                return sax->boolean(true);
22499|       |
22500|  4.16k|            case 0xFA:
  ------------------
  |  Branch (22500:13): [True: 4.16k, False: 70.5k]
  ------------------
22501|  4.16k|                return sax->null();
22502|       |
22503|  3.00k|            case 0xFB:
  ------------------
  |  Branch (22503:13): [True: 3.00k, False: 71.6k]
  ------------------
22504|  3.00k|                return sax->number_float(static_cast<number_float_t>(-1.0), no_source);
22505|       |
22506|  2.77k|            case 0xFC:
  ------------------
  |  Branch (22506:13): [True: 2.77k, False: 71.9k]
  ------------------
22507|  2.77k|                return sax->number_float(static_cast<number_float_t>(0.0), no_source);
22508|       |
22509|  2.40k|            case 0xFD:
  ------------------
  |  Branch (22509:13): [True: 2.40k, False: 72.2k]
  ------------------
22510|  2.40k|                return sax->number_float(static_cast<number_float_t>(1.0), no_source);
22511|       |
22512|  8.99k|            case 0xFF: // empty string
  ------------------
  |  Branch (22512:13): [True: 8.99k, False: 65.7k]
  ------------------
22513|  8.99k|            {
22514|  8.99k|                string_t s;
22515|  8.99k|                return sax->string(s);
22516|      0|            }
22517|       |
22518|  25.9k|            default:
  ------------------
  |  Branch (22518:13): [True: 25.9k, False: 48.7k]
  ------------------
22519|  25.9k|                break;
22520|  74.6k|        }
22521|       |
22522|       |        // integer 0..39
22523|  25.9k|        if (byte <= 0xB7)
  ------------------
  |  Branch (22523:13): [True: 11.3k, False: 14.6k]
  ------------------
22524|  11.3k|        {
22525|  11.3k|            return sax->number_unsigned(static_cast<number_unsigned_t>(byte - 0x90));
22526|  11.3k|        }
22527|       |
22528|       |        // integer -1..-10
22529|  14.6k|        if (byte <= 0xC1)
  ------------------
  |  Branch (22529:13): [True: 6.70k, False: 7.90k]
  ------------------
22530|  6.70k|        {
22531|  6.70k|            return sax->number_integer(conditional_static_cast<number_integer_t>(-1 - static_cast<number_integer_t>(byte - 0xB8)));
22532|  6.70k|        }
22533|       |
22534|       |        // 0xC2..0xF7: a UTF-8 lead byte begins a string if a continuation
22535|       |        // byte follows and an integer otherwise
22536|  7.90k|        if (byte <= 0xF7)
  ------------------
  |  Branch (22536:13): [True: 7.85k, False: 46]
  ------------------
22537|  7.85k|        {
22538|  7.85k|            const auto second = get_bon8();
22539|  7.85k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (22539:17): [True: 2.52k, False: 5.33k]
  ------------------
22540|  2.52k|            {
22541|  2.52k|                string_t s;
22542|  2.52k|                unget_bon8(second);
22543|  2.52k|                unget_bon8(byte);
22544|  2.52k|                return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (22544:24): [True: 2.34k, False: 172]
  |  Branch (22544:46): [True: 2.34k, False: 0]
  ------------------
22545|  2.52k|            }
22546|  5.33k|            return get_bon8_integer(byte, second);
22547|  7.85k|        }
22548|       |
22549|       |        // 0xFE: end of container where a value is expected
22550|     46|        return unexpected_byte("invalid byte", "value");
22551|  7.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE17emit_bon8_integerEl:
22565|  7.83k|    {
22566|  7.83k|        if (number >= 0)
  ------------------
  |  Branch (22566:13): [True: 3.54k, False: 4.29k]
  ------------------
22567|  3.54k|        {
22568|  3.54k|            return emit_unsigned(static_cast<std::uint64_t>(number));
22569|  3.54k|        }
22570|  4.29k|        return emit_signed(number);
22571|  7.83k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE16get_bon8_integerEmm:
22589|  5.33k|    {
22590|  5.33k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.33k]
  |  |  ------------------
  ------------------
22591|      0|        {
22592|      0|            return false;
22593|      0|        }
22594|       |
22595|  5.33k|        const bool negative = second >= 0xC0;
22596|  5.33k|        auto value = static_cast<std::int64_t>(negative ? (second & 0x3F) : second);
  ------------------
  |  Branch (22596:48): [True: 2.75k, False: 2.58k]
  ------------------
22597|  5.33k|        std::int64_t offset = 0;
22598|  5.33k|        int extra_bytes = 0;
22599|       |
22600|  5.33k|        if (lead <= 0xDF)
  ------------------
  |  Branch (22600:13): [True: 2.68k, False: 2.64k]
  ------------------
22601|  2.68k|        {
22602|  2.68k|            value |= static_cast<std::int64_t>(lead - 0xC2) << (negative ? 6 : 7);
  ------------------
  |  Branch (22602:65): [True: 1.26k, False: 1.42k]
  ------------------
22603|  2.68k|            offset = negative ? 11 : 40;
  ------------------
  |  Branch (22603:22): [True: 1.26k, False: 1.42k]
  ------------------
22604|  2.68k|        }
22605|  2.64k|        else if (lead <= 0xEF)
  ------------------
  |  Branch (22605:18): [True: 1.39k, False: 1.25k]
  ------------------
22606|  1.39k|        {
22607|  1.39k|            value |= static_cast<std::int64_t>(lead & 0x0F) << (negative ? 6 : 7);
  ------------------
  |  Branch (22607:65): [True: 813, False: 582]
  ------------------
22608|  1.39k|            offset = negative ? 1931 : 3880;
  ------------------
  |  Branch (22608:22): [True: 813, False: 582]
  ------------------
22609|  1.39k|            extra_bytes = 1;
22610|  1.39k|        }
22611|  1.25k|        else
22612|  1.25k|        {
22613|  1.25k|            value |= static_cast<std::int64_t>(lead & 0x07) << (negative ? 6 : 7);
  ------------------
  |  Branch (22613:65): [True: 681, False: 571]
  ------------------
22614|  1.25k|            offset = negative ? 264075 : 528168;
  ------------------
  |  Branch (22614:22): [True: 681, False: 571]
  ------------------
22615|  1.25k|            extra_bytes = 2;
22616|  1.25k|        }
22617|       |
22618|  9.14k|        for (int i = 0; i < extra_bytes; ++i)
  ------------------
  |  Branch (22618:25): [True: 3.84k, False: 5.30k]
  ------------------
22619|  3.84k|        {
22620|  3.84k|            if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  3.84k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 29, False: 3.81k]
  |  |  ------------------
  ------------------
22621|     29|            {
22622|     29|                return unexpect_eof("number");
22623|     29|            }
22624|  3.81k|            value = (value << 8) | static_cast<std::int64_t>(current);
22625|  3.81k|        }
22626|       |
22627|  5.30k|        return emit_bon8_integer(negative ? -(value + offset) : value + offset);
  ------------------
  |  Branch (22627:34): [True: 2.73k, False: 2.56k]
  ------------------
22628|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE8get_bon8Ev:
22299|   524k|    {
22300|   524k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (22300:13): [True: 198k, False: 326k]
  ------------------
22301|   198k|        {
22302|   198k|            ++chars_read;
22303|   198k|            return current = bon8_pushback[--bon8_pushback_size];
22304|   198k|        }
22305|   326k|        return get();
22306|   524k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE3getEv:
22840|   326k|    {
22841|   326k|        ++chars_read;
22842|   326k|        return current = ia.get_character();
22843|   326k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E13get_characterEv:
10120|   326k|    {
10121|   326k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|   326k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 320k, False: 5.35k]
  |  |  ------------------
  ------------------
10122|   320k|        {
10123|   320k|            auto result = char_traits<char_type>::to_int_type(*current);
10124|   320k|            std::advance(current, 1);
10125|   320k|            return result;
10126|   320k|        }
10127|       |
10128|  5.35k|        ++eof_reads;
10129|  5.35k|        return char_traits<char_type>::eof();
10130|   326k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEE15last_byte_errorENS1_12exception_idERKSC_PKcST_:
23407|    295|    {
23408|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
23409|    295|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
23410|    295|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (23410:51): [True: 192, False: 103]
  ------------------
23411|    295|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_26json_sax_dom_binary_parserISG_SL_EEED2Ev:
18487|  5.72k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEED2Ev:
17434|  5.72k|    ~json_sax_dom_binary_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__121__list_const_iteratorIhPvEES6_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES8_S9_:
10603|  5.72k|{
10604|  5.72k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
10605|  5.72k|    return factory_type::create(first, last);
10606|  5.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryINSt3__121__list_const_iteratorIhPvEES6_vE6createES6_S6_:
10465|  5.72k|    {
10466|  5.72k|        return adapter_type(std::move(first), std::move(last));
10467|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_EC2ES6_S6_:
10116|  5.72k|        : begin(first), current(std::move(first)), end(std::move(last))
10117|  5.72k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_bon8IRP8_IO_FILEEESE_OT_bb:
46048|  5.72k|    {
46049|  5.72k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::bon8, strict, allow_exceptions);
46050|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail18file_input_adapterEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
45629|  5.72k|    {
45630|  5.72k|        basic_json result;
45631|  5.72k|        detail::json_sax_dom_binary_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
45632|  5.72k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
45633|  5.72k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (45633:13): [True: 0, False: 5.72k]
  ------------------
45634|      0|        {
45635|      0|            result = value_t::discarded;
45636|      0|        }
45637|  5.72k|        return result;
45638|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEEC2ERSG_bPNS1_5lexerISG_SH_Lb0EEE:
17426|  5.72k|        : json_sax_dom_error_state(allow_exceptions_), root(r), m_lexer_ref(lexer_)
17427|  5.72k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
18477|  5.72k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
18478|  5.72k|    {
18479|  5.72k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
18480|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterC2EOS2_:
 9396|  5.72k|        : m_file(rhs.m_file)
 9397|       |#if JSON_FILE_WINDOW
 9398|  5.72k|        , token_carry(std::move(rhs.token_carry))
 9399|  5.72k|        , token_segment(rhs.token_segment)
 9400|  5.72k|        , current_in_buffer(rhs.current_in_buffer)
 9401|  5.72k|        , tracking_token(rhs.tracking_token)
 9402|       |#endif
 9403|  5.72k|    {
 9404|       |        // the lock is owned by the thread, not the adapter: hand it over
 9405|  5.72k|        rhs.m_file = nullptr;
 9406|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
18502|  5.72k|    {
18503|  5.72k|        sax = sax_;
18504|  5.72k|        container_stack.clear();
18505|  5.72k|        bon8_pushback_size = 0;
18506|  5.72k|        bool result = false;
18507|       |
18508|  5.72k|        switch (input_format)
18509|  5.72k|        {
18510|      0|            case input_format_t::bson:
  ------------------
  |  Branch (18510:13): [True: 0, False: 5.72k]
  ------------------
18511|      0|                result = parse_bson_internal();
18512|      0|                break;
18513|       |
18514|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (18514:13): [True: 0, False: 5.72k]
  ------------------
18515|      0|                result = parse_cbor_internal(tag_handler);
18516|      0|                break;
18517|       |
18518|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (18518:13): [True: 0, False: 5.72k]
  ------------------
18519|      0|                result = parse_msgpack_internal();
18520|      0|                break;
18521|       |
18522|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (18522:13): [True: 0, False: 5.72k]
  ------------------
18523|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (18523:13): [True: 0, False: 5.72k]
  ------------------
18524|      0|                result = parse_ubjson_internal();
18525|      0|                break;
18526|       |
18527|  5.72k|            case input_format_t::bon8:
  ------------------
  |  Branch (18527:13): [True: 5.72k, False: 0]
  ------------------
18528|  5.72k|                result = parse_bon8_internal();
18529|  5.72k|                break;
18530|       |
18531|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (18531:13): [True: 0, False: 5.72k]
  ------------------
18532|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (18532:13): [True: 0, False: 5.72k]
  ------------------
18533|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (18533:17): [Folded, False: 0]
  ------------------
18534|  5.72k|        }
18535|       |
18536|       |        // strict mode: next byte must be EOF
18537|  4.27k|        if (result && strict)
  ------------------
  |  Branch (18537:13): [True: 4.27k, False: 0]
  |  Branch (18537:23): [True: 4.27k, False: 0]
  ------------------
18538|  4.27k|        {
18539|  4.27k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (18539:17): [True: 0, False: 4.27k]
  |  Branch (18539:59): [True: 0, False: 4.27k]
  ------------------
18540|      0|            {
18541|      0|                get_ignore_noop();
18542|      0|            }
18543|  4.27k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (18543:22): [True: 4.27k, False: 0]
  ------------------
18544|  4.27k|            {
18545|       |                // a string that ends a container hands back the byte after it
18546|  4.27k|                get_bon8();
18547|  4.27k|            }
18548|      0|            else
18549|      0|            {
18550|      0|                get();
18551|      0|            }
18552|       |
18553|  4.27k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  4.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 103, False: 4.17k]
  |  |  ------------------
  ------------------
18554|    103|            {
18555|    103|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
18556|    103|            }
18557|  4.27k|        }
18558|       |
18559|  4.17k|        return result;
18560|  4.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE6get_toIiEEbRT_PKc:
22855|  1.53k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.53k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.53k|        chars_read += new_chars_read;
22860|  1.53k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.53k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 1.51k]
  |  |  ------------------
  ------------------
22861|     17|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     17|            ++chars_read;
22864|     17|            static_cast<void>(report_eof(context));
22865|     17|            return false;
22866|     17|        }
22867|  1.51k|        return true;
22868|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIiEEmPT_m:
 9445|  1.53k|    {
 9446|  1.53k|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|  1.53k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10report_eofEPKc:
23343|  1.25k|    {
23344|  1.25k|        return sax->parse_error(chars_read, "<end of file>",
23345|  1.25k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
23346|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE17exception_messageERKSC_SM_:
23454|  1.54k|    {
23455|  1.54k|        std::string error_msg = "syntax error while parsing ";
23456|  1.54k|        error_msg += input_format_name(input_format);
23457|       |
23458|  1.54k|        return concat(error_msg, ' ', context, ": ", detail);
23459|  1.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9byte_swapIiEEvRT_:
22907|  1.51k|    {
22908|  1.51k|        constexpr std::size_t sz = sizeof(number);
22909|       |#ifdef __cpp_lib_byteswap
22910|       |        if constexpr (sz == 1)
22911|       |        {
22912|       |            return;
22913|       |        }
22914|       |        else if constexpr(std::is_integral_v<NumberType>)
22915|       |        {
22916|       |            number = std::byteswap(number);
22917|       |            return;
22918|       |        }
22919|       |        else
22920|       |        {
22921|       |#endif
22922|  1.51k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  4.54k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 3.03k, False: 1.51k]
  ------------------
22924|  3.03k|            {
22925|  3.03k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  3.03k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  1.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15enter_containerEbmi:
18618|   115k|    {
18619|   115k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1697|   231k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 115k]
  |  |  |  Branch (1697:94): [True: 12.6k, False: 103k]
  |  |  ------------------
  ------------------
18620|      0|        {
18621|      0|            return false;
18622|      0|        }
18623|       |
18624|   115k|        container_stack.emplace_back(len, is_object, type_marker);
18625|   115k|        return true;
18626|   115k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12start_objectEm:
17483|  12.6k|    {
17484|  12.6k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
17485|       |
17486|       |#if JSON_DIAGNOSTIC_POSITIONS
17487|       |        // Ensure this is after the call to handle_value to ensure correct start position.
17488|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
17489|       |#endif
17490|       |
17491|  12.6k|        return check_container_size(*this, len, "object", ref_stack.back());
17492|  12.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
17566|   115k|    {
17567|   115k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3.84k, False: 112k]
  ------------------
17568|  3.84k|        {
17569|  3.84k|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|  3.84k|            return &root;
17576|  3.84k|        }
17577|       |
17578|   112k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   112k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 103k, False: 8.61k]
  |  Branch (17578:9): [True: 8.61k, False: 0]
  |  Branch (17578:9): [True: 112k, False: 0]
  ------------------
17579|       |
17580|   112k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 103k, False: 8.61k]
  ------------------
17581|   103k|        {
17582|   103k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|   103k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   103k|        }
17590|       |
17591|  8.61k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 8.61k, False: 0]
  ------------------
17592|  8.61k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 8.61k, False: 0]
  ------------------
17593|  8.61k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  8.61k|        return object_element;
17600|  8.61k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_18file_input_adapterEEESH_EEbRT_mPKcPT0_:
16179|   115k|{
16180|   115k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1697|   222k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 115k]
  |  |  |  Branch (1697:94): [True: 106k, False: 9.56k]
  |  |  |  Branch (1697:94): [True: 0, False: 106k]
  |  |  ------------------
  ------------------
16181|      0|    {
16182|      0|        return container_too_large_error(sax, len, kind, ref);
16183|      0|    }
16184|   115k|    return true;
16185|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11start_arrayEm:
17520|   103k|    {
17521|   103k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
17522|       |
17523|       |#if JSON_DIAGNOSTIC_POSITIONS
17524|       |        // Ensure this is after the call to handle_value to ensure correct start position.
17525|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
17526|       |#endif
17527|       |
17528|   103k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1697|   103k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 103k]
  |  |  ------------------
  ------------------
17529|      0|        {
17530|      0|            return false;
17531|      0|        }
17532|       |
17533|   103k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (17533:13): [True: 95.8k, False: 7.40k]
  ------------------
17534|  95.8k|        {
17535|  95.8k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
17536|  95.8k|        }
17537|       |
17538|   103k|        return true;
17539|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15container_frameC2Embi:
18584|   115k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15leave_containerEv:
18650|  96.5k|    {
18651|  96.5k|        const bool is_object = container_stack.back().is_object;
18652|  96.5k|        container_stack.pop_back();
18653|  96.5k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (18653:16): [True: 10.5k, False: 85.9k]
  ------------------
18654|  96.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE10end_objectEv:
17506|  10.5k|    {
17507|  10.5k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  10.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17507:9): [True: 10.5k, False: 0]
  ------------------
17508|  10.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  10.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17508:9): [True: 10.5k, False: 0]
  ------------------
17509|       |
17510|       |#if JSON_DIAGNOSTIC_POSITIONS
17511|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17512|       |#endif
17513|       |
17514|  10.5k|        ref_stack.back()->set_parents();
17515|  10.5k|        ref_stack.pop_back();
17516|  10.5k|        return true;
17517|  10.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE9end_arrayEv:
17542|  85.9k|    {
17543|  85.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  85.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17543:9): [True: 85.9k, False: 0]
  ------------------
17544|  85.9k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2643|  85.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17544:9): [True: 85.9k, False: 0]
  ------------------
17545|       |
17546|       |#if JSON_DIAGNOSTIC_POSITIONS
17547|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17548|       |#endif
17549|       |
17550|  85.9k|        ref_stack.back()->set_parents();
17551|  85.9k|        ref_stack.pop_back();
17552|  85.9k|        return true;
17553|  85.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE12unexpect_eofEPKc:
23326|  6.48k|    {
23327|  6.48k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  6.48k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1.17k, False: 5.31k]
  |  |  ------------------
  ------------------
23328|  1.17k|        {
23329|  1.17k|            return report_eof(context);
23330|  1.17k|        }
23331|  5.31k|        return true;
23332|  6.48k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18file_input_adapter14bulk_remainingEv:
 9464|  53.8k|    {
 9465|  53.8k|        if (!current_in_buffer)
  ------------------
  |  Branch (9465:13): [True: 0, False: 53.8k]
  ------------------
 9466|      0|        {
 9467|      0|            return 0;
 9468|      0|        }
 9469|  53.8k|        return static_cast<std::size_t>(buffer_end() - buffer_ptr());
 9470|  53.8k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18file_input_adapter10buffer_endEv:
 9529|   318k|    {
 9530|   318k|        return m_file->_IO_read_end;
 9531|   318k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18file_input_adapter10buffer_ptrEv:
 9525|   364k|    {
 9526|   364k|        return m_file->_IO_read_ptr;
 9527|   364k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18file_input_adapter9bulk_dataEv:
 9458|  45.9k|    {
 9459|  45.9k|        return buffer_ptr();
 9460|  45.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter9bulk_skipEm:
 9474|  7.84k|    {
 9475|  7.84k|        JSON_ASSERT(n <= bulk_remaining());
  ------------------
  |  | 2643|  7.84k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (9475:9): [True: 7.84k, False: 0]
  ------------------
 9476|  7.84k|        buffer_bump(n);
 9477|  7.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter11buffer_bumpEm:
 9533|   261k|    {
 9534|   261k|        m_file->_IO_read_ptr += n;
 9535|   261k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE3keyERSC_:
17495|  27.4k|    {
17496|  27.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  27.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17496:9): [True: 27.4k, False: 0]
  ------------------
17497|  27.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  27.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17497:9): [True: 27.4k, False: 0]
  ------------------
17498|       |
17499|       |        // add null at the given key and store the reference for later; the
17500|       |        // key is moved, as the lexer starts the next token with reset()
17501|  27.4k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](std::move(val)));
17502|  27.4k|        return true;
17503|  27.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE6get_toIdEEbRT_PKc:
22855|  1.27k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.27k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.27k|        chars_read += new_chars_read;
22860|  1.27k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 24, False: 1.25k]
  |  |  ------------------
  ------------------
22861|     24|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     24|            ++chars_read;
22864|     24|            static_cast<void>(report_eof(context));
22865|     24|            return false;
22866|     24|        }
22867|  1.25k|        return true;
22868|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIdEEmPT_m:
 9445|  1.27k|    {
 9446|  1.27k|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9byte_swapERd:
22887|  1.25k|    {
22888|  1.25k|        static_assert(sizeof(double) == sizeof(std::uint64_t), "double must have 64 bits");
22889|  1.25k|        std::uint64_t bits{};
22890|  1.25k|        std::memcpy(&bits, &number, sizeof(bits));
22891|  1.25k|        bits = byteswap(bits);
22892|  1.25k|        std::memcpy(&number, &bits, sizeof(bits));
22893|  1.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10emit_floatIdEEbT_:
23034|  1.25k|    {
23035|  1.25k|        const auto result = static_cast<number_float_t>(number);
23036|  1.25k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  2.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.25k]
  |  |  |  Branch (1697:94): [True: 1.24k, False: 5]
  |  |  |  Branch (1697:94): [True: 0, False: 1.24k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  1.25k|        return sax->number_float(result, no_source);
23041|  1.25k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE16get_token_stringEv:
23443|    590|    {
23444|    590|        return hex_byte(static_cast<std::uint8_t>(current));
23445|    590|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12number_floatEdRKSC_:
17461|  11.5k|    {
17462|  11.5k|        handle_value(val);
17463|  11.5k|        return true;
17464|  11.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRdEEPSG_OT_:
17566|  11.5k|    {
17567|  11.5k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 558, False: 11.0k]
  ------------------
17568|    558|        {
17569|    558|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    558|            return &root;
17576|    558|        }
17577|       |
17578|  11.0k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  11.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 7.59k, False: 3.41k]
  |  Branch (17578:9): [True: 3.41k, False: 0]
  |  Branch (17578:9): [True: 11.0k, False: 0]
  ------------------
17579|       |
17580|  11.0k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 7.59k, False: 3.41k]
  ------------------
17581|  7.59k|        {
17582|  7.59k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  7.59k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  7.59k|        }
17590|       |
17591|  3.41k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.41k, False: 0]
  ------------------
17592|  3.41k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.41k, False: 0]
  ------------------
17593|  3.41k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  3.41k|        return object_element;
17600|  3.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE6stringERSC_:
17467|  32.4k|    {
17468|       |        // json_sax documents that the passed value may be moved from,
17469|       |        // so hand the buffer over instead of copying it
17470|  32.4k|        handle_value(std::move(val));
17471|  32.4k|        return true;
17472|  32.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueISC_EEPSG_OT_:
17566|  32.4k|    {
17567|  32.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 360, False: 32.1k]
  ------------------
17568|    360|        {
17569|    360|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    360|            return &root;
17576|    360|        }
17577|       |
17578|  32.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  32.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 27.7k, False: 4.40k]
  |  Branch (17578:9): [True: 4.40k, False: 0]
  |  Branch (17578:9): [True: 32.1k, False: 0]
  ------------------
17579|       |
17580|  32.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 27.7k, False: 4.40k]
  ------------------
17581|  27.7k|        {
17582|  27.7k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  27.7k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  27.7k|        }
17590|       |
17591|  4.40k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.40k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.40k, False: 0]
  ------------------
17592|  4.40k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.40k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.40k, False: 0]
  ------------------
17593|  4.40k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  4.40k|        return object_element;
17600|  4.40k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE7booleanEb:
17443|  19.2k|    {
17444|  19.2k|        handle_value(val);
17445|  19.2k|        return true;
17446|  19.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRbEEPSG_OT_:
17566|  19.2k|    {
17567|  19.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3, False: 19.2k]
  ------------------
17568|      3|        {
17569|      3|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|      3|            return &root;
17576|      3|        }
17577|       |
17578|  19.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  19.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 17.8k, False: 1.38k]
  |  Branch (17578:9): [True: 1.38k, False: 0]
  |  Branch (17578:9): [True: 19.2k, False: 0]
  ------------------
17579|       |
17580|  19.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 17.8k, False: 1.38k]
  ------------------
17581|  17.8k|        {
17582|  17.8k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  17.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  17.8k|        }
17590|       |
17591|  1.38k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.38k, False: 0]
  ------------------
17592|  1.38k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.38k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.38k, False: 0]
  ------------------
17593|  1.38k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  1.38k|        return object_element;
17600|  1.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE4nullEv:
17437|  4.16k|    {
17438|  4.16k|        handle_value(nullptr);
17439|  4.16k|        return true;
17440|  4.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIDnEEPSG_OT_:
17566|  4.16k|    {
17567|  4.16k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 2, False: 4.16k]
  ------------------
17568|      2|        {
17569|      2|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|      2|            return &root;
17576|      2|        }
17577|       |
17578|  4.16k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 2.44k, False: 1.72k]
  |  Branch (17578:9): [True: 1.72k, False: 0]
  |  Branch (17578:9): [True: 4.16k, False: 0]
  ------------------
17579|       |
17580|  4.16k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 2.44k, False: 1.72k]
  ------------------
17581|  2.44k|        {
17582|  2.44k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  2.44k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  2.44k|        }
17590|       |
17591|  1.72k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.72k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.72k, False: 0]
  ------------------
17592|  1.72k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.72k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.72k, False: 0]
  ------------------
17593|  1.72k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  1.72k|        return object_element;
17600|  1.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE14number_integerEl:
17449|  11.0k|    {
17450|  11.0k|        handle_value(val);
17451|  11.0k|        return true;
17452|  11.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRlEEPSG_OT_:
17566|  11.0k|    {
17567|  11.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 379, False: 10.6k]
  ------------------
17568|    379|        {
17569|    379|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    379|            return &root;
17576|    379|        }
17577|       |
17578|  10.6k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  10.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 7.27k, False: 3.35k]
  |  Branch (17578:9): [True: 3.35k, False: 0]
  |  Branch (17578:9): [True: 10.6k, False: 0]
  ------------------
17579|       |
17580|  10.6k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 7.27k, False: 3.35k]
  ------------------
17581|  7.27k|        {
17582|  7.27k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  7.27k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  7.27k|        }
17590|       |
17591|  3.35k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.35k, False: 0]
  ------------------
17592|  3.35k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.35k, False: 0]
  ------------------
17593|  3.35k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  3.35k|        return object_element;
17600|  3.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE15number_unsignedEm:
17455|  14.8k|    {
17456|  14.8k|        handle_value(val);
17457|  14.8k|        return true;
17458|  14.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRmEEPSG_OT_:
17566|  14.8k|    {
17567|  14.8k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 253, False: 14.6k]
  ------------------
17568|    253|        {
17569|    253|            root = BasicJsonType(std::forward<Value>(v));
17570|       |
17571|       |#if JSON_DIAGNOSTIC_POSITIONS
17572|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
17573|       |#endif
17574|       |
17575|    253|            return &root;
17576|    253|        }
17577|       |
17578|  14.6k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  14.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 10.2k, False: 4.41k]
  |  Branch (17578:9): [True: 4.41k, False: 0]
  |  Branch (17578:9): [True: 14.6k, False: 0]
  ------------------
17579|       |
17580|  14.6k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 10.2k, False: 4.41k]
  ------------------
17581|  10.2k|        {
17582|  10.2k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
17583|       |
17584|       |#if JSON_DIAGNOSTIC_POSITIONS
17585|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
17586|       |#endif
17587|       |
17588|  10.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  10.2k|        }
17590|       |
17591|  4.41k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.41k, False: 0]
  ------------------
17592|  4.41k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.41k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.41k, False: 0]
  ------------------
17593|  4.41k|        *object_element = BasicJsonType(std::forward<Value>(v));
17594|       |
17595|       |#if JSON_DIAGNOSTIC_POSITIONS
17596|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
17597|       |#endif
17598|       |
17599|  4.41k|        return object_element;
17600|  4.41k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE6get_toIlEEbRT_PKc:
22855|  1.05k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.05k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.05k|        chars_read += new_chars_read;
22860|  1.05k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.05k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 17, False: 1.03k]
  |  |  ------------------
  ------------------
22861|     17|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     17|            ++chars_read;
22864|     17|            static_cast<void>(report_eof(context));
22865|     17|            return false;
22866|     17|        }
22867|  1.03k|        return true;
22868|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIlEEmPT_m:
 9445|  1.05k|    {
 9446|  1.05k|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9byte_swapIlEEvRT_:
22907|  1.03k|    {
22908|  1.03k|        constexpr std::size_t sz = sizeof(number);
22909|       |#ifdef __cpp_lib_byteswap
22910|       |        if constexpr (sz == 1)
22911|       |        {
22912|       |            return;
22913|       |        }
22914|       |        else if constexpr(std::is_integral_v<NumberType>)
22915|       |        {
22916|       |            number = std::byteswap(number);
22917|       |            return;
22918|       |        }
22919|       |        else
22920|       |        {
22921|       |#endif
22922|  1.03k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  5.19k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.15k, False: 1.03k]
  ------------------
22924|  4.15k|            {
22925|  4.15k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.15k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  1.03k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE11emit_signedIlEEbT_:
22980|  4.29k|    {
22981|  4.29k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  4.29k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 4.29k, False: 0]
  |  |  ------------------
  ------------------
22982|  4.29k|        {
22983|  4.29k|            return sax->number_integer(static_cast<number_integer_t>(number));
22984|  4.29k|        }
22985|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (22985:13): [True: 0, False: 0]
  ------------------
22986|      0|        {
22987|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
22988|      0|        }
22989|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
22990|      0|        return emit_float(static_cast<long double>(number));
22991|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE13emit_unsignedImEEbT_:
23008|  3.54k|    {
23009|  3.54k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|  3.54k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.54k, False: 0]
  |  |  ------------------
  ------------------
23010|  3.54k|        {
23011|  3.54k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|  3.54k|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|  3.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE25leave_container_and_checkERb:
18667|  96.5k|    {
18668|  96.5k|        if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1697|  96.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 96.5k]
  |  |  ------------------
  ------------------
18669|      0|        {
18670|      0|            return false;
18671|      0|        }
18672|  96.5k|        value_complete = container_stack.empty();
18673|  96.5k|        return true;
18674|  96.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10emit_floatIfEEbT_:
23034|  2.13k|    {
23035|  2.13k|        const auto result = static_cast<number_float_t>(number);
23036|  2.13k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  3.73k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.13k]
  |  |  |  Branch (1697:94): [True: 1.60k, False: 530]
  |  |  |  Branch (1697:94): [True: 0, False: 1.60k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  2.13k|        return sax->number_float(result, no_source);
23041|  2.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE9byte_swapERf:
22897|  2.13k|    {
22898|  2.13k|        static_assert(sizeof(float) == sizeof(std::uint32_t), "float must have 32 bits");
22899|  2.13k|        std::uint32_t bits{};
22900|  2.13k|        std::memcpy(&bits, &number, sizeof(bits));
22901|  2.13k|        bits = byteswap(bits);
22902|  2.13k|        std::memcpy(&number, &bits, sizeof(bits));
22903|  2.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE11enter_arrayEmi:
18630|   103k|    {
18631|   103k|        return enter_container(/*is_object*/false, len, type_marker);
18632|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE12enter_objectEmi:
18636|  12.6k|    {
18637|  12.6k|        return enter_container(/*is_object*/true, len, type_marker);
18638|  12.6k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15unexpected_byteEPKcSM_:
23421|    192|    {
23422|    192|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
23423|    192|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10get_numberIfLb0EEEbRT_:
22948|  2.14k|    {
22949|       |        // read in the original format
22950|       |
22951|  2.14k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  2.14k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.14k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  2.14k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 2.13k, False: 16]
  |  Branch (22955:34): [Folded, False: 2.13k]
  |  Branch (22955:57): [True: 0, False: 2.13k]
  ------------------
22956|  2.13k|        {
22957|  2.13k|            byte_swap(result);
22958|  2.13k|        }
22959|  2.14k|        return true;
22960|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE6get_toIfEEbRT_PKc:
22855|  2.14k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  2.14k|        auto new_chars_read = ia.get_elements(&dest);
22859|  2.14k|        chars_read += new_chars_read;
22860|  2.14k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  2.14k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 2.13k]
  |  |  ------------------
  ------------------
22861|     16|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     16|            ++chars_read;
22864|     16|            static_cast<void>(report_eof(context));
22865|     16|            return false;
22866|     16|        }
22867|  2.13k|        return true;
22868|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIfEEmPT_m:
 9445|  2.14k|    {
 9446|  2.14k|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|  2.14k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10get_numberIdLb0EEEbRT_:
22948|  1.27k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.27k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.27k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.27k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.27k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.25k, False: 24]
  |  Branch (22955:34): [Folded, False: 1.25k]
  |  Branch (22955:57): [True: 0, False: 1.25k]
  ------------------
22956|  1.25k|        {
22957|  1.25k|            byte_swap(result);
22958|  1.25k|        }
22959|  1.27k|        return true;
22960|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10get_numberIiLb0EEEbRT_:
22948|  1.53k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.53k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.53k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.53k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.53k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.51k, False: 17]
  |  Branch (22955:34): [Folded, False: 1.51k]
  |  Branch (22955:57): [True: 0, False: 1.51k]
  ------------------
22956|  1.51k|        {
22957|  1.51k|            byte_swap(result);
22958|  1.51k|        }
22959|  1.53k|        return true;
22960|  1.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10get_numberIlLb0EEEbRT_:
22948|  1.05k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.05k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.05k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.05k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.05k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.03k, False: 17]
  |  Branch (22955:34): [Folded, False: 1.03k]
  |  Branch (22955:57): [True: 0, False: 1.03k]
  ------------------
22956|  1.03k|        {
22957|  1.03k|            byte_swap(result);
22958|  1.03k|        }
22959|  1.05k|        return true;
22960|  1.05k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE19parse_bon8_internalEv:
22346|  5.72k|    {
22347|       |        // the key currently being read; hoisted out of the loop so that its
22348|       |        // capacity is reused across elements and across nesting levels
22349|  5.72k|        string_t key;
22350|       |
22351|   308k|        while (true)
  ------------------
  |  Branch (22351:16): [True: 307k, Folded]
  ------------------
22352|   307k|        {
22353|   307k|            if (!container_stack.empty())
  ------------------
  |  Branch (22353:17): [True: 301k, False: 5.72k]
  ------------------
22354|   301k|            {
22355|       |                // a copy, not a reference: it must stay valid across the
22356|       |                // pop_back() below, which destroys the container_stack element
22357|       |                // it would otherwise alias
22358|   301k|                const container_frame top = container_stack.back();
22359|   301k|                bool at_end = false;
22360|       |
22361|   301k|                if (top.remaining != npos)
  ------------------
  |  Branch (22361:21): [True: 194k, False: 107k]
  ------------------
22362|   194k|                {
22363|       |                    // counted container (0x80..0x84, 0x86..0x8A): it ends once
22364|       |                    // its elements have been read
22365|   194k|                    at_end = (top.remaining == 0);
22366|   194k|                    if (!at_end)
  ------------------
  |  Branch (22366:25): [True: 102k, False: 92.2k]
  ------------------
22367|   102k|                    {
22368|       |                        // claim the element about to be read
22369|   102k|                        --container_stack.back().remaining;
22370|   102k|                    }
22371|   194k|                }
22372|   107k|                else
22373|   107k|                {
22374|       |                    // container 0x85 or 0x8B: it ends at an end-of-container
22375|       |                    // marker (0xFE); any other byte begins the next element
22376|   107k|                    at_end = (get_bon8() == 0xFE);
22377|   107k|                    if (!at_end)
  ------------------
  |  Branch (22377:25): [True: 102k, False: 4.31k]
  ------------------
22378|   102k|                    {
22379|   102k|                        unget_bon8(current);
22380|   102k|                    }
22381|   107k|                }
22382|       |
22383|   301k|                if (at_end)
  ------------------
  |  Branch (22383:21): [True: 96.5k, False: 205k]
  ------------------
22384|  96.5k|                {
22385|  96.5k|                    bool value_complete = false;
22386|  96.5k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container_and_check(value_complete)))
  ------------------
  |  | 1697|  96.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 96.5k]
  |  |  ------------------
  ------------------
22387|      0|                    {
22388|      0|                        return false;
22389|      0|                    }
22390|  96.5k|                    if (value_complete)
  ------------------
  |  Branch (22390:25): [True: 2.72k, False: 93.8k]
  ------------------
22391|  2.72k|                    {
22392|  2.72k|                        return true;
22393|  2.72k|                    }
22394|  93.8k|                    continue;
22395|  96.5k|                }
22396|       |
22397|   205k|                if (top.is_object)
  ------------------
  |  Branch (22397:21): [True: 27.8k, False: 177k]
  ------------------
22398|  27.8k|                {
22399|  27.8k|                    if (JSON_HEDLEY_UNLIKELY(!read_object_key<&binary_reader::get_bon8_key>(key)))
  ------------------
  |  | 1697|  27.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 27.8k]
  |  |  ------------------
  ------------------
22400|      0|                    {
22401|      0|                        return false;
22402|      0|                    }
22403|  27.8k|                }
22404|   205k|            }
22405|       |
22406|   210k|            if (JSON_HEDLEY_UNLIKELY(!parse_bon8_value()))
  ------------------
  |  | 1697|   210k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 210k]
  |  |  ------------------
  ------------------
22407|      0|            {
22408|      0|                return false;
22409|      0|            }
22410|       |
22411|       |            // a value that opened a container left it on the stack; one that
22412|       |            // did not, and that was not inside a container, was the whole value
22413|   210k|            if (container_stack.empty())
  ------------------
  |  Branch (22413:17): [True: 1.55k, False: 209k]
  ------------------
22414|  1.55k|            {
22415|  1.55k|                return true;
22416|  1.55k|            }
22417|   210k|        }
22418|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE10unget_bon8Ei:
22315|   198k|    {
22316|       |        // At most two bytes are ever handed back: a byte is only handed back
22317|       |        // right after it was read with get_bon8(), and the only place that
22318|       |        // hands back two bytes (a lead byte and the byte after it) read both
22319|       |        // of them in a row, which emptied the buffer first. This is an
22320|       |        // invariant of the reader rather than a property of the input, so
22321|       |        // an assertion suffices (the fuzzers are built with assertions).
22322|   198k|        JSON_ASSERT(bon8_pushback_size < bon8_pushback.size());
  ------------------
  |  | 2643|   198k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (22322:9): [True: 198k, False: 0]
  ------------------
22323|   198k|        bon8_pushback[bon8_pushback_size++] = c;
22324|   198k|        --chars_read;
22325|   198k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15read_object_keyIXadL_ZNSK_12get_bon8_keyERSC_EEEEbSM_:
18685|  27.8k|    {
18686|  27.8k|        key.clear();
18687|  27.8k|        return (this->*GetKey)(key) && sax->key(key);
  ------------------
  |  Branch (18687:16): [True: 27.4k, False: 425]
  |  Branch (18687:40): [True: 27.4k, False: 0]
  ------------------
18688|  27.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE12get_bon8_keyERSC_:
22640|  27.8k|    {
22641|  27.8k|        const auto byte = get_bon8();
22642|       |
22643|  27.8k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22643:13): [True: 320, False: 27.5k]
  ------------------
22644|    320|        {
22645|    320|            return unexpect_eof("key");
22646|    320|        }
22647|       |
22648|  27.5k|        if (byte == 0xFF)
  ------------------
  |  Branch (22648:13): [True: 5.26k, False: 22.2k]
  ------------------
22649|  5.26k|        {
22650|  5.26k|            return true;
22651|  5.26k|        }
22652|       |
22653|  22.2k|        if (byte <= 0x7F)
  ------------------
  |  Branch (22653:13): [True: 21.1k, False: 1.17k]
  ------------------
22654|  21.1k|        {
22655|  21.1k|            unget_bon8(byte);
22656|  21.1k|            return get_bon8_string(result);
22657|  21.1k|        }
22658|       |
22659|  1.17k|        if (0xC2 <= byte && byte <= 0xF7)
  ------------------
  |  Branch (22659:13): [True: 1.15k, False: 16]
  |  Branch (22659:29): [True: 1.14k, False: 10]
  ------------------
22660|  1.14k|        {
22661|  1.14k|            const auto second = get_bon8();
22662|  1.14k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (22662:17): [True: 7, False: 1.13k]
  ------------------
22663|      7|            {
22664|       |                // the input ends inside a character or an integer
22665|      7|                return unexpect_eof("key");
22666|      7|            }
22667|  1.13k|            unget_bon8(second);
22668|  1.13k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (22668:17): [True: 1.12k, False: 17]
  ------------------
22669|  1.12k|            {
22670|  1.12k|                unget_bon8(byte);
22671|  1.12k|                return get_bon8_string(result);
22672|  1.12k|            }
22673|       |            // an integer: report its first byte rather than the one after it
22674|     17|            current = byte;
22675|     17|        }
22676|       |
22677|     43|        return unexpected_byte("expected a string; last byte", "key");
22678|  1.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15get_bon8_stringERSC_:
22729|  46.0k|    {
22730|  92.0k|        while (true)
  ------------------
  |  Branch (22730:16): [True: 92.0k, Folded]
  ------------------
22731|  92.0k|        {
22732|  92.0k|            get_bon8_string_bulk(result, std::integral_constant<bool, bulk_scan> {});
22733|       |
22734|  92.0k|            const auto byte = get_bon8();
22735|       |
22736|  92.0k|            if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22736:17): [True: 159, False: 91.8k]
  ------------------
22737|    159|            {
22738|    159|                return unexpect_eof("string");
22739|    159|            }
22740|       |
22741|       |            // end of string
22742|  91.8k|            if (byte == 0xFF)
  ------------------
  |  Branch (22742:17): [True: 1.92k, False: 89.9k]
  ------------------
22743|  1.92k|            {
22744|  1.92k|                return true;
22745|  1.92k|            }
22746|       |
22747|       |            // ASCII character
22748|  89.9k|            if (byte <= 0x7F)
  ------------------
  |  Branch (22748:17): [True: 42.4k, False: 47.5k]
  ------------------
22749|  42.4k|            {
22750|  42.4k|                result.push_back(static_cast<typename string_t::value_type>(byte));
22751|  42.4k|                continue;
22752|  42.4k|            }
22753|       |
22754|       |            // a byte that cannot begin a character ends the string and begins
22755|       |            // the next value
22756|  47.5k|            if (byte < 0xC2 || byte > 0xF7)
  ------------------
  |  Branch (22756:17): [True: 20.5k, False: 26.9k]
  |  Branch (22756:32): [True: 21.2k, False: 5.71k]
  ------------------
22757|  41.8k|            {
22758|  41.8k|                unget_bon8(byte);
22759|  41.8k|                return true;
22760|  41.8k|            }
22761|       |
22762|       |            // a lead byte ends the string if no continuation byte follows: it
22763|       |            // is then the first byte of an integer
22764|  5.71k|            const auto second = get_bon8();
22765|  5.71k|            if (second == char_traits<char_type>::eof())
  ------------------
  |  Branch (22765:17): [True: 18, False: 5.69k]
  ------------------
22766|     18|            {
22767|       |                // the input ends inside a character or an integer: either
22768|       |                // way, the message is incomplete
22769|     18|                return unexpect_eof("string");
22770|     18|            }
22771|  5.69k|            if (!is_bon8_continuation(second))
  ------------------
  |  Branch (22771:17): [True: 1.93k, False: 3.76k]
  ------------------
22772|  1.93k|            {
22773|  1.93k|                unget_bon8(second);
22774|  1.93k|                unget_bon8(byte);
22775|  1.93k|                return true;
22776|  1.93k|            }
22777|       |
22778|       |            // the valid range of the second byte excludes overlong forms,
22779|       |            // surrogates, and code points above U+10FFFF
22780|       |            // (RFC 3629, section 4)
22781|  3.76k|            int continuation_bytes = 0;
22782|  3.76k|            bool valid_second = true;
22783|  3.76k|            if (byte <= 0xDF)
  ------------------
  |  Branch (22783:17): [True: 1.88k, False: 1.88k]
  ------------------
22784|  1.88k|            {
22785|  1.88k|                continuation_bytes = 1;
22786|  1.88k|            }
22787|  1.88k|            else if (byte <= 0xEF)
  ------------------
  |  Branch (22787:22): [True: 807, False: 1.07k]
  ------------------
22788|    807|            {
22789|    807|                continuation_bytes = 2;
22790|    807|                valid_second = (byte != 0xE0 || second >= 0xA0) && (byte != 0xED || second <= 0x9F);
  ------------------
  |  Branch (22790:33): [True: 358, False: 449]
  |  Branch (22790:49): [True: 434, False: 15]
  |  Branch (22790:69): [True: 515, False: 277]
  |  Branch (22790:85): [True: 274, False: 3]
  ------------------
22791|    807|            }
22792|  1.07k|            else
22793|  1.07k|            {
22794|  1.07k|                continuation_bytes = 3;
22795|  1.07k|                valid_second = byte <= 0xF4 && (byte != 0xF0 || second >= 0x90) && (byte != 0xF4 || second <= 0x8F);
  ------------------
  |  Branch (22795:32): [True: 1.07k, False: 3]
  |  Branch (22795:49): [True: 758, False: 314]
  |  Branch (22795:65): [True: 304, False: 10]
  |  Branch (22795:85): [True: 714, False: 348]
  |  Branch (22795:101): [True: 343, False: 5]
  ------------------
22796|  1.07k|            }
22797|       |
22798|  3.76k|            if (JSON_HEDLEY_UNLIKELY(!valid_second))
  ------------------
  |  | 1697|  3.76k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 36, False: 3.73k]
  |  |  ------------------
  ------------------
22799|     36|            {
22800|     36|                return unexpected_byte("invalid UTF-8 byte", "string");
22801|     36|            }
22802|       |
22803|  3.73k|            result.push_back(static_cast<typename string_t::value_type>(byte));
22804|  3.73k|            result.push_back(static_cast<typename string_t::value_type>(second));
22805|       |
22806|  6.40k|            for (int i = 1; i < continuation_bytes; ++i)
  ------------------
  |  Branch (22806:29): [True: 2.84k, False: 3.56k]
  ------------------
22807|  2.84k|            {
22808|  2.84k|                if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  2.84k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 98, False: 2.74k]
  |  |  ------------------
  ------------------
22809|     98|                {
22810|     98|                    return unexpect_eof("string");
22811|     98|                }
22812|  2.74k|                if (JSON_HEDLEY_UNLIKELY(!is_bon8_continuation(current)))
  ------------------
  |  | 1697|  2.74k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 67, False: 2.67k]
  |  |  ------------------
  ------------------
22813|     67|                {
22814|     67|                    return unexpected_byte("invalid UTF-8 byte", "string");
22815|     67|                }
22816|  2.67k|                result.push_back(static_cast<typename string_t::value_type>(current));
22817|  2.67k|            }
22818|  3.73k|        }
22819|  46.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE20get_bon8_string_bulkERSC_NS4_17integral_constantIbLb1EEE:
22692|  92.0k|    {
22693|       |        // bytes handed back must be read through get_bon8() first
22694|  92.0k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (22694:13): [True: 46.0k, False: 45.9k]
  ------------------
22695|  46.0k|        {
22696|  46.0k|            return;
22697|  46.0k|        }
22698|  45.9k|        const std::size_t remaining = ia.bulk_remaining();
22699|  45.9k|        if (remaining == 0)
  ------------------
  |  Branch (22699:13): [True: 66, False: 45.9k]
  ------------------
22700|     66|        {
22701|     66|            return;
22702|     66|        }
22703|  45.9k|        const auto* const data = reinterpret_cast<const unsigned char*>(ia.bulk_data());
22704|  45.9k|        const std::size_t length = valid_utf8_prefix(data, remaining);
22705|  45.9k|        if (length != 0)
  ------------------
  |  Branch (22705:13): [True: 7.84k, False: 38.0k]
  ------------------
22706|  7.84k|        {
22707|  7.84k|            result.append(reinterpret_cast<const typename string_t::value_type*>(data), length);
22708|  7.84k|            ia.bulk_skip(length);
22709|  7.84k|            chars_read += length;
22710|  7.84k|        }
22711|  45.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE20is_bon8_continuationEi:
22332|  17.4k|    {
22333|  17.4k|        return 0x80 <= c && c <= 0xBF;
  ------------------
  |  Branch (22333:16): [True: 13.6k, False: 3.82k]
  |  Branch (22333:29): [True: 10.0k, False: 3.52k]
  ------------------
22334|  17.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE16parse_bon8_valueEv:
22431|   210k|    {
22432|   210k|        const auto byte = get_bon8();
22433|       |
22434|   210k|        if (byte == char_traits<char_type>::eof())
  ------------------
  |  Branch (22434:13): [True: 522, False: 209k]
  ------------------
22435|    522|        {
22436|    522|            return unexpect_eof("value");
22437|    522|        }
22438|       |
22439|       |        // string: ASCII character
22440|   209k|        if (byte <= 0x7F)
  ------------------
  |  Branch (22440:13): [True: 21.3k, False: 188k]
  ------------------
22441|  21.3k|        {
22442|  21.3k|            string_t s;
22443|  21.3k|            unget_bon8(byte);
22444|  21.3k|            return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (22444:20): [True: 21.1k, False: 151]
  |  Branch (22444:42): [True: 21.1k, False: 0]
  ------------------
22445|  21.3k|        }
22446|       |
22447|       |        // array with 0..4 elements
22448|   188k|        if (byte <= 0x84)
  ------------------
  |  Branch (22448:13): [True: 95.8k, False: 92.6k]
  ------------------
22449|  95.8k|        {
22450|  95.8k|            return enter_array(static_cast<std::size_t>(byte - 0x80));
22451|  95.8k|        }
22452|       |
22453|       |        // array terminated by 0xFE
22454|  92.6k|        if (byte == 0x85)
  ------------------
  |  Branch (22454:13): [True: 7.40k, False: 85.2k]
  ------------------
22455|  7.40k|        {
22456|  7.40k|            return enter_array(npos);
22457|  7.40k|        }
22458|       |
22459|       |        // object with 0..4 members
22460|  85.2k|        if (byte <= 0x8A)
  ------------------
  |  Branch (22460:13): [True: 10.5k, False: 74.6k]
  ------------------
22461|  10.5k|        {
22462|  10.5k|            return enter_object(static_cast<std::size_t>(byte - 0x86));
22463|  10.5k|        }
22464|       |
22465|  74.6k|        switch (byte)
22466|  74.6k|        {
22467|  2.15k|            case 0x8B: // object terminated by 0xFE
  ------------------
  |  Branch (22467:13): [True: 2.15k, False: 72.5k]
  ------------------
22468|  2.15k|                return enter_object(npos);
22469|       |
22470|  1.53k|            case 0x8C: // int32
  ------------------
  |  Branch (22470:13): [True: 1.53k, False: 73.1k]
  ------------------
22471|  1.53k|            {
22472|  1.53k|                std::int32_t number{};
22473|  1.53k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (22473:24): [True: 1.51k, False: 17]
  |  Branch (22473:46): [True: 1.51k, False: 0]
  ------------------
22474|      0|            }
22475|       |
22476|  1.05k|            case 0x8D: // int64
  ------------------
  |  Branch (22476:13): [True: 1.05k, False: 73.6k]
  ------------------
22477|  1.05k|            {
22478|  1.05k|                std::int64_t number{};
22479|  1.05k|                return get_number(number) && emit_bon8_integer(number);
  ------------------
  |  Branch (22479:24): [True: 1.03k, False: 17]
  |  Branch (22479:46): [True: 1.03k, False: 0]
  ------------------
22480|      0|            }
22481|       |
22482|  2.14k|            case 0x8E: // binary32
  ------------------
  |  Branch (22482:13): [True: 2.14k, False: 72.5k]
  ------------------
22483|  2.14k|            {
22484|  2.14k|                float number{};
22485|  2.14k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (22485:24): [True: 2.13k, False: 16]
  |  Branch (22485:46): [True: 2.13k, False: 0]
  ------------------
22486|      0|            }
22487|       |
22488|  1.27k|            case 0x8F: // binary64
  ------------------
  |  Branch (22488:13): [True: 1.27k, False: 73.4k]
  ------------------
22489|  1.27k|            {
22490|  1.27k|                double number{};
22491|  1.27k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (22491:24): [True: 1.25k, False: 24]
  |  Branch (22491:46): [True: 1.25k, False: 0]
  ------------------
22492|      0|            }
22493|       |
22494|  17.1k|            case 0xF8:
  ------------------
  |  Branch (22494:13): [True: 17.1k, False: 57.5k]
  ------------------
22495|  17.1k|                return sax->boolean(false);
22496|       |
22497|  2.07k|            case 0xF9:
  ------------------
  |  Branch (22497:13): [True: 2.07k, False: 72.6k]
  ------------------
22498|  2.07k|                return sax->boolean(true);
22499|       |
22500|  4.16k|            case 0xFA:
  ------------------
  |  Branch (22500:13): [True: 4.16k, False: 70.5k]
  ------------------
22501|  4.16k|                return sax->null();
22502|       |
22503|  3.00k|            case 0xFB:
  ------------------
  |  Branch (22503:13): [True: 3.00k, False: 71.6k]
  ------------------
22504|  3.00k|                return sax->number_float(static_cast<number_float_t>(-1.0), no_source);
22505|       |
22506|  2.77k|            case 0xFC:
  ------------------
  |  Branch (22506:13): [True: 2.77k, False: 71.9k]
  ------------------
22507|  2.77k|                return sax->number_float(static_cast<number_float_t>(0.0), no_source);
22508|       |
22509|  2.40k|            case 0xFD:
  ------------------
  |  Branch (22509:13): [True: 2.40k, False: 72.2k]
  ------------------
22510|  2.40k|                return sax->number_float(static_cast<number_float_t>(1.0), no_source);
22511|       |
22512|  8.99k|            case 0xFF: // empty string
  ------------------
  |  Branch (22512:13): [True: 8.99k, False: 65.7k]
  ------------------
22513|  8.99k|            {
22514|  8.99k|                string_t s;
22515|  8.99k|                return sax->string(s);
22516|      0|            }
22517|       |
22518|  25.9k|            default:
  ------------------
  |  Branch (22518:13): [True: 25.9k, False: 48.7k]
  ------------------
22519|  25.9k|                break;
22520|  74.6k|        }
22521|       |
22522|       |        // integer 0..39
22523|  25.9k|        if (byte <= 0xB7)
  ------------------
  |  Branch (22523:13): [True: 11.3k, False: 14.6k]
  ------------------
22524|  11.3k|        {
22525|  11.3k|            return sax->number_unsigned(static_cast<number_unsigned_t>(byte - 0x90));
22526|  11.3k|        }
22527|       |
22528|       |        // integer -1..-10
22529|  14.6k|        if (byte <= 0xC1)
  ------------------
  |  Branch (22529:13): [True: 6.70k, False: 7.90k]
  ------------------
22530|  6.70k|        {
22531|  6.70k|            return sax->number_integer(conditional_static_cast<number_integer_t>(-1 - static_cast<number_integer_t>(byte - 0xB8)));
22532|  6.70k|        }
22533|       |
22534|       |        // 0xC2..0xF7: a UTF-8 lead byte begins a string if a continuation
22535|       |        // byte follows and an integer otherwise
22536|  7.90k|        if (byte <= 0xF7)
  ------------------
  |  Branch (22536:13): [True: 7.85k, False: 46]
  ------------------
22537|  7.85k|        {
22538|  7.85k|            const auto second = get_bon8();
22539|  7.85k|            if (is_bon8_continuation(second))
  ------------------
  |  Branch (22539:17): [True: 2.52k, False: 5.33k]
  ------------------
22540|  2.52k|            {
22541|  2.52k|                string_t s;
22542|  2.52k|                unget_bon8(second);
22543|  2.52k|                unget_bon8(byte);
22544|  2.52k|                return get_bon8_string(s) && sax->string(s);
  ------------------
  |  Branch (22544:24): [True: 2.34k, False: 172]
  |  Branch (22544:46): [True: 2.34k, False: 0]
  ------------------
22545|  2.52k|            }
22546|  5.33k|            return get_bon8_integer(byte, second);
22547|  7.85k|        }
22548|       |
22549|       |        // 0xFE: end of container where a value is expected
22550|     46|        return unexpected_byte("invalid byte", "value");
22551|  7.90k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE17emit_bon8_integerEl:
22565|  7.83k|    {
22566|  7.83k|        if (number >= 0)
  ------------------
  |  Branch (22566:13): [True: 3.54k, False: 4.29k]
  ------------------
22567|  3.54k|        {
22568|  3.54k|            return emit_unsigned(static_cast<std::uint64_t>(number));
22569|  3.54k|        }
22570|  4.29k|        return emit_signed(number);
22571|  7.83k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE16get_bon8_integerEii:
22589|  5.33k|    {
22590|  5.33k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.33k]
  |  |  ------------------
  ------------------
22591|      0|        {
22592|      0|            return false;
22593|      0|        }
22594|       |
22595|  5.33k|        const bool negative = second >= 0xC0;
22596|  5.33k|        auto value = static_cast<std::int64_t>(negative ? (second & 0x3F) : second);
  ------------------
  |  Branch (22596:48): [True: 2.75k, False: 2.58k]
  ------------------
22597|  5.33k|        std::int64_t offset = 0;
22598|  5.33k|        int extra_bytes = 0;
22599|       |
22600|  5.33k|        if (lead <= 0xDF)
  ------------------
  |  Branch (22600:13): [True: 2.68k, False: 2.64k]
  ------------------
22601|  2.68k|        {
22602|  2.68k|            value |= static_cast<std::int64_t>(lead - 0xC2) << (negative ? 6 : 7);
  ------------------
  |  Branch (22602:65): [True: 1.26k, False: 1.42k]
  ------------------
22603|  2.68k|            offset = negative ? 11 : 40;
  ------------------
  |  Branch (22603:22): [True: 1.26k, False: 1.42k]
  ------------------
22604|  2.68k|        }
22605|  2.64k|        else if (lead <= 0xEF)
  ------------------
  |  Branch (22605:18): [True: 1.39k, False: 1.25k]
  ------------------
22606|  1.39k|        {
22607|  1.39k|            value |= static_cast<std::int64_t>(lead & 0x0F) << (negative ? 6 : 7);
  ------------------
  |  Branch (22607:65): [True: 813, False: 582]
  ------------------
22608|  1.39k|            offset = negative ? 1931 : 3880;
  ------------------
  |  Branch (22608:22): [True: 813, False: 582]
  ------------------
22609|  1.39k|            extra_bytes = 1;
22610|  1.39k|        }
22611|  1.25k|        else
22612|  1.25k|        {
22613|  1.25k|            value |= static_cast<std::int64_t>(lead & 0x07) << (negative ? 6 : 7);
  ------------------
  |  Branch (22613:65): [True: 681, False: 571]
  ------------------
22614|  1.25k|            offset = negative ? 264075 : 528168;
  ------------------
  |  Branch (22614:22): [True: 681, False: 571]
  ------------------
22615|  1.25k|            extra_bytes = 2;
22616|  1.25k|        }
22617|       |
22618|  9.14k|        for (int i = 0; i < extra_bytes; ++i)
  ------------------
  |  Branch (22618:25): [True: 3.84k, False: 5.30k]
  ------------------
22619|  3.84k|        {
22620|  3.84k|            if (JSON_HEDLEY_UNLIKELY(get_bon8() == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  3.84k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 29, False: 3.81k]
  |  |  ------------------
  ------------------
22621|     29|            {
22622|     29|                return unexpect_eof("number");
22623|     29|            }
22624|  3.81k|            value = (value << 8) | static_cast<std::int64_t>(current);
22625|  3.81k|        }
22626|       |
22627|  5.30k|        return emit_bon8_integer(negative ? -(value + offset) : value + offset);
  ------------------
  |  Branch (22627:34): [True: 2.73k, False: 2.56k]
  ------------------
22628|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE8get_bon8Ev:
22299|   463k|    {
22300|   463k|        if (bon8_pushback_size != 0)
  ------------------
  |  Branch (22300:13): [True: 198k, False: 264k]
  ------------------
22301|   198k|        {
22302|   198k|            ++chars_read;
22303|   198k|            return current = bon8_pushback[--bon8_pushback_size];
22304|   198k|        }
22305|   264k|        return get();
22306|   463k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE3getEv:
22840|   264k|    {
22841|   264k|        ++chars_read;
22842|   264k|        return current = ia.get_character();
22843|   264k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter13get_characterEv:
 9416|   264k|    {
 9417|       |        // what getc_unlocked() does, while the buffer has characters
 9418|   264k|        const char* const next = buffer_ptr();
 9419|   264k|        if (JSON_HEDLEY_LIKELY(next != buffer_end()))
  ------------------
  |  | 1696|   264k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 253k, False: 11.0k]
  |  |  ------------------
  ------------------
 9420|   253k|        {
 9421|   253k|            current_in_buffer = true;
 9422|   253k|            buffer_bump(1);
 9423|   253k|            return std::char_traits<char>::to_int_type(*next);
 9424|   253k|        }
 9425|  11.0k|        return get_character_slow();
 9426|   264k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter18get_character_slowEv:
 9554|  11.0k|    {
 9555|  11.0k|        if (token_segment != nullptr)
  ------------------
  |  Branch (9555:13): [True: 0, False: 11.0k]
  ------------------
 9556|      0|        {
 9557|      0|            token_carry.append(token_segment, buffer_end());
 9558|      0|            token_segment = nullptr;
 9559|      0|        }
 9560|  11.0k|        const auto res = getc_unlocked(m_file);
 9561|  11.0k|        if (res == EOF)
  ------------------
  |  Branch (9561:13): [True: 5.35k, False: 5.72k]
  ------------------
 9562|  5.35k|        {
 9563|  5.35k|            current_in_buffer = false;
 9564|  5.35k|            return std::char_traits<char>::eof();
 9565|  5.35k|        }
 9566|       |        // the character was taken from the refilled buffer, at buffer_ptr() - 1
 9567|  5.72k|        current_in_buffer = true;
 9568|  5.72k|        if (tracking_token)
  ------------------
  |  Branch (9568:13): [True: 0, False: 5.72k]
  ------------------
 9569|      0|        {
 9570|      0|            token_segment = buffer_ptr() - 1;
 9571|      0|        }
 9572|  5.72k|        return res;
 9573|  11.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
23407|    295|    {
23408|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
23409|    295|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
23410|    295|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (23410:51): [True: 192, False: 103]
  ------------------
23411|    295|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_26json_sax_dom_binary_parserISG_SH_EEED2Ev:
18487|  5.72k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEED2Ev:
17434|  5.72k|    ~json_sax_dom_binary_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterEP8_IO_FILE:
10710|  5.72k|{
10711|  5.72k|    if (file == nullptr)
  ------------------
  |  Branch (10711:9): [True: 0, False: 5.72k]
  ------------------
10712|      0|    {
10713|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, empty_input_message(), nullptr));
  ------------------
  |  | 2608|      0|    #define JSON_THROW(exception) throw exception
  ------------------
10714|      0|    }
10715|  5.72k|    return file_input_adapter(file);
10716|  5.72k|}
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterC2EP8_IO_FILE:
 9387|  5.72k|        : m_file(f)
 9388|  5.72k|    {
 9389|  5.72k|        JSON_ASSERT(m_file != nullptr);
  ------------------
  |  | 2643|  5.72k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (9389:9): [True: 5.72k, False: 0]
  ------------------
 9390|  5.72k|        lock();
 9391|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter4lockEv:
 9581|  5.72k|    {
 9582|  5.72k|#if JSON_UNLOCKED_FILE_IO == 1
 9583|  5.72k|        flockfile(m_file);
 9584|       |#elif JSON_UNLOCKED_FILE_IO == 2
 9585|       |        _lock_file(m_file);
 9586|       |#endif
 9587|  5.72k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterD2Ev:
 9410|  11.4k|    {
 9411|  11.4k|        unlock();
 9412|  11.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter6unlockEv:
 9590|  11.4k|    {
 9591|       |        // a moved-from adapter has no file and holds no lock
 9592|  11.4k|        if (m_file == nullptr)
  ------------------
  |  Branch (9592:13): [True: 5.72k, False: 5.72k]
  ------------------
 9593|  5.72k|        {
 9594|  5.72k|            return;
 9595|  5.72k|        }
 9596|  5.72k|#if JSON_UNLOCKED_FILE_IO == 1
 9597|  5.72k|        funlockfile(m_file);
 9598|       |#elif JSON_UNLOCKED_FILE_IO == 2
 9599|       |        _unlock_file(m_file);
 9600|       |#endif
 9601|  5.72k|    }

LLVMFuzzerTestOneInput:
   46|  5.72k|{
   47|  5.72k|    std::vector<uint8_t> const vec1(data, data + size);
   48|       |
   49|       |    // step 0: parse input without exceptions
   50|  5.72k|    bool noexcept_threw = false;
   51|  5.72k|    json const j_noexcept = parse_without_exceptions([&] { return json::from_bon8(vec1, true, false); }, noexcept_threw);
   52|       |    // whether step 1 succeeded; if not, the catch blocks below check that
   53|       |    // step 0 failed, too
   54|  5.72k|    bool parsed = false;
   55|       |
   56|  5.72k|    try
   57|  5.72k|    {
   58|       |        // step 1: parse input
   59|  5.72k|        json const j1 = json::from_bon8(vec1);
   60|  5.72k|        parsed = true;
   61|       |
   62|       |        // without exceptions, the same input must give the same value
   63|  5.72k|        assert(!noexcept_threw && !j_noexcept.is_discarded() && same_value(j_noexcept, j1));
  ------------------
  |  Branch (63:9): [True: 4.17k, False: 1.54k]
  |  Branch (63:9): [True: 4.17k, False: 0]
  |  Branch (63:9): [True: 4.17k, False: 0]
  |  Branch (63:9): [True: 4.17k, False: 1.54k]
  ------------------
   64|       |
   65|  4.17k|        try
   66|  4.17k|        {
   67|       |            // step 2: round trip
   68|  4.17k|            std::vector<uint8_t> const vec2 = json::to_bon8(j1);
   69|       |
   70|       |            // parse serialization
   71|  4.17k|            json const j2 = json::from_bon8(vec2);
   72|       |
   73|       |            // serializations must match
   74|  4.17k|            assert(json::to_bon8(j2) == vec2);
  ------------------
  |  Branch (74:13): [True: 4.17k, False: 0]
  ------------------
   75|  4.17k|        }
   76|  4.17k|        catch (const json::parse_error&)
   77|  4.17k|        {
   78|       |            // parsing a BON8 serialization must not fail
   79|      0|            assert(false);
  ------------------
  |  Branch (79:13): [Folded, False: 0]
  ------------------
   80|      0|        }
   81|  4.17k|    }
   82|  5.72k|    catch (const json::parse_error&)
   83|  5.72k|    {
   84|       |        // parse errors are ok, because input may be random bytes
   85|  1.54k|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (85:9): [True: 0, False: 1.54k]
  |  Branch (85:9): [True: 0, False: 1.54k]
  |  Branch (85:9): [True: 1.54k, False: 0]
  |  Branch (85:9): [True: 1.54k, False: 0]
  ------------------
   86|  1.54k|    }
   87|  5.72k|    catch (const json::type_error&)
   88|  5.72k|    {
   89|       |        // type errors can occur during parsing, too
   90|      0|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  |  Branch (90:9): [True: 0, False: 0]
  ------------------
   91|      0|    }
   92|  5.72k|    catch (const json::out_of_range&)
   93|  5.72k|    {
   94|       |        // out of range errors may happen if provided sizes are excessive
   95|      0|        assert(parsed || noexcept_threw || j_noexcept.is_discarded());
  ------------------
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  |  Branch (95:9): [True: 0, False: 0]
  ------------------
   96|      0|    }
   97|       |
   98|       |    // step 3: the other input adapters must read the data alike
   99|  5.72k|    check_input_adapters(data, size, read_bon8());
  100|       |
  101|       |    // return 0 - non-zero return values are reserved for future use
  102|  5.72k|    return 0;
  103|  5.72k|}
fuzzer-parse_bon8.cpp:_ZZ22LLVMFuzzerTestOneInputENK3$_0clEv:
   51|  5.72k|    json const j_noexcept = parse_without_exceptions([&] { return json::from_bon8(vec1, true, false); }, noexcept_threw);
fuzzer-parse_bon8.cpp:_ZNK12_GLOBAL__N_19read_bon8clIJRPKhS3_EEEN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS8_6vectorENS8_12basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEEblmdSE_NS6_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  5.72k|    {
   39|  5.72k|        return json::from_bon8(std::forward<Args>(args)...);
   40|  5.72k|    }
fuzzer-parse_bon8.cpp:_ZNK12_GLOBAL__N_19read_bon8clIJRNSt3__119basic_istringstreamIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEEEN8nlohmann16json_abi_v3_12_010basic_jsonINS2_3mapENS2_6vectorENS2_12basic_stringIcS5_S7_EEblmdS6_NSB_14adl_serializerENSE_IhNS6_IhEEEEvEEDpOT_:
   38|  5.72k|    {
   39|  5.72k|        return json::from_bon8(std::forward<Args>(args)...);
   40|  5.72k|    }
fuzzer-parse_bon8.cpp:_ZNK12_GLOBAL__N_19read_bon8clIJNSt3__121__list_const_iteratorIhPvEES5_EEEN8nlohmann16json_abi_v3_12_010basic_jsonINS2_3mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdSE_NS7_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  5.72k|    {
   39|  5.72k|        return json::from_bon8(std::forward<Args>(args)...);
   40|  5.72k|    }
fuzzer-parse_bon8.cpp:_ZNK12_GLOBAL__N_19read_bon8clIJRP8_IO_FILEEEEN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS8_6vectorENS8_12basic_stringIcNS8_11char_traitsIcEENS8_9allocatorIcEEEEblmdSE_NS6_14adl_serializerENSA_IhNSE_IhEEEEvEEDpOT_:
   38|  5.72k|    {
   39|  5.72k|        return json::from_bon8(std::forward<Args>(args)...);
   40|  5.72k|    }

_Z10same_valueRKN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEESG_:
   34|  4.17k|{
   35|  4.17k|    return lhs.dump(-1, ' ', false, json::error_handler_t::keep) == rhs.dump(-1, ' ', false, json::error_handler_t::keep);
   36|  4.17k|}
fuzzer-parse_bon8.cpp:_Z24parse_without_exceptionsIZ22LLVMFuzzerTestOneInputE3$_0EN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS2_14adl_serializerENS6_IhNSA_IhEEEEvEET_Rb:
   44|  5.72k|{
   45|  5.72k|    threw = false;
   46|  5.72k|    try
   47|  5.72k|    {
   48|  5.72k|        return parse();
   49|  5.72k|    }
   50|  5.72k|    catch (const json::parse_error&)
   51|  5.72k|    {
   52|      0|        assert(false);
  ------------------
  |  Branch (52:9): [Folded, False: 0]
  ------------------
   53|      0|    }
   54|  5.72k|    catch (const json::exception&)
   55|  5.72k|    {
   56|      0|        threw = true;
   57|      0|    }
   58|      0|    return {};
   59|  5.72k|}
fuzzer-parse_bon8.cpp:_Z20check_input_adaptersIN12_GLOBAL__N_19read_bon8EEvPKhmRKT_:
  117|  5.72k|{
  118|  5.72k|    const read_outcome expected = read_with(parse, data, data + size);
  119|       |
  120|       |    // stream adapter
  121|  5.72k|    {
  122|  5.72k|        std::istringstream stream(std::string(reinterpret_cast<const char*>(data), size));
  123|  5.72k|        assert(read_with(parse, stream) == expected);
  ------------------
  |  Branch (123:9): [True: 5.72k, False: 0]
  ------------------
  124|  5.72k|    }
  125|       |
  126|       |    // iterator adapter on a non-contiguous range
  127|  5.72k|    {
  128|  5.72k|        const std::list<std::uint8_t> list(data, data + size);
  129|  5.72k|        assert(read_with(parse, list.begin(), list.end()) == expected);
  ------------------
  |  Branch (129:9): [True: 5.72k, False: 0]
  ------------------
  130|  5.72k|    }
  131|       |
  132|  5.72k|#if defined(__unix__) || defined(__APPLE__)
  133|       |    // FILE* adapter; fmemopen may refuse an empty buffer
  134|  5.72k|    {
  135|  5.72k|        std::vector<std::uint8_t> buffer(data, data + size);
  136|  5.72k|        std::FILE* file = buffer.empty() ? nullptr : fmemopen(buffer.data(), buffer.size(), "rb");
  ------------------
  |  Branch (136:27): [True: 0, False: 5.72k]
  ------------------
  137|  5.72k|        if (file != nullptr)
  ------------------
  |  Branch (137:13): [True: 5.72k, False: 0]
  ------------------
  138|  5.72k|        {
  139|  5.72k|            const read_outcome actual = read_with(parse, file);
  140|  5.72k|            std::fclose(file);
  141|       |            assert(actual == expected);
  ------------------
  |  Branch (141:13): [True: 5.72k, False: 0]
  ------------------
  142|  5.72k|        }
  143|  5.72k|    }
  144|  5.72k|#endif
  145|  5.72k|}
fuzzer-parse_bon8.cpp:_Z9read_withIN12_GLOBAL__N_19read_bon8EJRPKhS3_EE12read_outcomeRKT_DpOT0_:
   88|  5.72k|{
   89|  5.72k|    read_outcome result;
   90|  5.72k|    try
   91|  5.72k|    {
   92|  5.72k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  5.72k|    }
   94|  5.72k|    catch (const json::parse_error& e)
   95|  5.72k|    {
   96|  1.54k|        result.id = e.id;
   97|  1.54k|        result.what = e.what();
   98|  1.54k|        result.byte = e.byte;
   99|  1.54k|    }
  100|  5.72k|    catch (const json::exception& e)
  101|  5.72k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  5.72k|    return result;
  106|  5.72k|}
_Z13outcome_valueRKN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEE:
   77|  16.7k|{
   78|  16.7k|    return j.dump(-1, ' ', false, json::error_handler_t::keep);
   79|  16.7k|}
fuzzer-parse_bon8.cpp:_Z9read_withIN12_GLOBAL__N_19read_bon8EJRNSt3__119basic_istringstreamIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEEE12read_outcomeRKT_DpOT0_:
   88|  5.72k|{
   89|  5.72k|    read_outcome result;
   90|  5.72k|    try
   91|  5.72k|    {
   92|  5.72k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  5.72k|    }
   94|  5.72k|    catch (const json::parse_error& e)
   95|  5.72k|    {
   96|  1.54k|        result.id = e.id;
   97|  1.54k|        result.what = e.what();
   98|  1.54k|        result.byte = e.byte;
   99|  1.54k|    }
  100|  5.72k|    catch (const json::exception& e)
  101|  5.72k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  5.72k|    return result;
  106|  5.72k|}
_ZNK12read_outcomeeqERKS_:
   71|  17.1k|    {
   72|  17.1k|        return value == rhs.value && id == rhs.id && what == rhs.what && byte == rhs.byte;
  ------------------
  |  Branch (72:16): [True: 17.1k, False: 0]
  |  Branch (72:38): [True: 17.1k, False: 0]
  |  Branch (72:54): [True: 17.1k, False: 0]
  |  Branch (72:74): [True: 17.1k, False: 0]
  ------------------
   73|  17.1k|    }
fuzzer-parse_bon8.cpp:_Z9read_withIN12_GLOBAL__N_19read_bon8EJNSt3__121__list_const_iteratorIhPvEES5_EE12read_outcomeRKT_DpOT0_:
   88|  5.72k|{
   89|  5.72k|    read_outcome result;
   90|  5.72k|    try
   91|  5.72k|    {
   92|  5.72k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  5.72k|    }
   94|  5.72k|    catch (const json::parse_error& e)
   95|  5.72k|    {
   96|  1.54k|        result.id = e.id;
   97|  1.54k|        result.what = e.what();
   98|  1.54k|        result.byte = e.byte;
   99|  1.54k|    }
  100|  5.72k|    catch (const json::exception& e)
  101|  5.72k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  5.72k|    return result;
  106|  5.72k|}
fuzzer-parse_bon8.cpp:_Z9read_withIN12_GLOBAL__N_19read_bon8EJRP8_IO_FILEEE12read_outcomeRKT_DpOT0_:
   88|  5.72k|{
   89|  5.72k|    read_outcome result;
   90|  5.72k|    try
   91|  5.72k|    {
   92|  5.72k|        result.value = outcome_value(parse(std::forward<Args>(args)...));
   93|  5.72k|    }
   94|  5.72k|    catch (const json::parse_error& e)
   95|  5.72k|    {
   96|  1.54k|        result.id = e.id;
   97|  1.54k|        result.what = e.what();
   98|  1.54k|        result.byte = e.byte;
   99|  1.54k|    }
  100|  5.72k|    catch (const json::exception& e)
  101|  5.72k|    {
  102|      0|        result.id = e.id;
  103|      0|        result.what = e.what();
  104|      0|    }
  105|  5.72k|    return result;
  106|  5.72k|}

