_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12is_discardedEv:
42155|  8.58k|    {
42156|  8.58k|        return m_data.m_type == value_t::discarded;
42157|  8.58k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dumpEicbNS0_6detail15error_handler_tE:
42027|  25.6k|    {
42028|  25.6k|        string_t result;
42029|  25.6k|        detail::output_string_adapter<char, string_t> string_adapter(result);
42030|       |
42031|  25.6k|        if (indent >= 0)
  ------------------
  |  Branch (42031:13): [True: 0, False: 25.6k]
  ------------------
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.6k|        else
42038|  25.6k|        {
42039|  25.6k|            serializer s(string_adapter, indent_char,
42040|  25.6k|                         false, ensure_ascii, 0, error_handler);
42041|  25.6k|            s.dump(*this);
42042|  25.6k|        }
42043|       |
42044|  25.6k|        return result;
42045|  25.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEC2ERS9_:
29216|  25.6k|        : str(s)
29217|  25.6k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcEC2Ev:
28874|  25.6k|    output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcED2Ev:
28872|  25.6k|    virtual ~output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEE16write_charactersEPKcm:
29225|  29.2k|    {
29226|  29.2k|        str.append(s, length);
29227|  29.2k|    }
_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.6k|        : o(&s)
36768|  25.6k|        , number_buffer() // NOLINT(readability-redundant-member-init)
36769|  25.6k|        , string_buffer() // NOLINT(readability-redundant-member-init)
36770|  25.6k|        , indent_char(ichar)
36771|  25.6k|        , pretty_print(pretty_print_)
36772|  25.6k|        , ensure_ascii(ensure_ascii_)
36773|  25.6k|        , indent_step(indent_step_)
36774|  25.6k|        , error_handler(error_handler_)
36775|  25.6k|        , write_buffer() // NOLINT(readability-redundant-member-init)
36776|  25.6k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE20uninitialized_bufferILm64EEC2Ev:
38864|  25.6k|        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.6k|        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.6k|        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.6k|    {
36806|  25.6k|        dump_element(val, current_indent, 0);
36807|  25.6k|        flush();
36808|  25.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_elementERKSG_mm:
36956|   680k|    {
36957|   680k|        if (val.m_data.m_type == value_t::object || val.m_data.m_type == value_t::array)
  ------------------
  |  Branch (36957:13): [True: 42.0k, False: 638k]
  |  Branch (36957:53): [True: 321k, False: 317k]
  ------------------
36958|   363k|        {
36959|   363k|            dump_container(val, current_indent, depth);
36960|   363k|        }
36961|   317k|        else
36962|   317k|        {
36963|   317k|            dump_scalar(val, current_indent);
36964|   317k|        }
36965|   680k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE14dump_containerERKSG_mm:
36831|   363k|    {
36832|   363k|        JSON_ASSERT(val.m_data.m_type == value_t::object || val.m_data.m_type == value_t::array);
  ------------------
  |  | 2643|   363k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36832:9): [True: 42.0k, False: 321k]
  |  Branch (36832:9): [True: 321k, False: 0]
  |  Branch (36832:9): [True: 363k, False: 0]
  ------------------
36833|       |
36834|   363k|        if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1697|   363k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 12.4k, False: 351k]
  |  |  ------------------
  ------------------
36835|  12.4k|        {
36836|  12.4k|            dump_iteratively(val, current_indent);
36837|  12.4k|            return;
36838|  12.4k|        }
36839|       |
36840|   351k|        if (val.m_data.m_type == value_t::object)
  ------------------
  |  Branch (36840:13): [True: 33.8k, False: 317k]
  ------------------
36841|  33.8k|        {
36842|  33.8k|            if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (36842:17): [True: 9.94k, False: 23.8k]
  ------------------
36843|  9.94k|            {
36844|  9.94k|                put_literal("{}");
36845|  9.94k|                return;
36846|  9.94k|            }
36847|       |
36848|  23.8k|            if (pretty_print)
  ------------------
  |  Branch (36848:17): [True: 0, False: 23.8k]
  ------------------
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.8k|            else
36874|  23.8k|            {
36875|  23.8k|                put_char('{');
36876|       |
36877|       |                // first n-1 elements
36878|  23.8k|                auto i = val.m_data.m_value.object->cbegin();
36879|  48.6k|                for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (36879:43): [True: 24.7k, False: 23.8k]
  ------------------
36880|  24.7k|                {
36881|  24.7k|                    put_object_key(i->first, "\":");
36882|  24.7k|                    dump_element(i->second, 0, depth + 1);
36883|  24.7k|                    put_char(',');
36884|  24.7k|                }
36885|       |
36886|       |                // last element
36887|  23.8k|                JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2643|  23.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36887:17): [True: 23.8k, False: 0]
  ------------------
36888|  23.8k|                JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2643|  23.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36888:17): [True: 23.8k, False: 0]
  ------------------
36889|  23.8k|                put_object_key(i->first, "\":");
36890|  23.8k|                dump_element(i->second, 0, depth + 1);
36891|       |
36892|  23.8k|                put_char('}');
36893|  23.8k|            }
36894|  23.8k|            return;
36895|  23.8k|        }
36896|       |
36897|   317k|        if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (36897:13): [True: 9.01k, False: 308k]
  ------------------
36898|  9.01k|        {
36899|  9.01k|            put_literal("[]");
36900|  9.01k|            return;
36901|  9.01k|        }
36902|       |
36903|   308k|        if (pretty_print)
  ------------------
  |  Branch (36903:13): [True: 0, False: 308k]
  ------------------
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|   308k|        else
36926|   308k|        {
36927|   308k|            put_char('[');
36928|       |
36929|       |            // first n-1 elements
36930|   308k|            for (auto i = val.m_data.m_value.array->cbegin();
36931|   606k|                    i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (36931:21): [True: 298k, False: 308k]
  ------------------
36932|   298k|            {
36933|   298k|                dump_element(*i, 0, depth + 1);
36934|   298k|                put_char(',');
36935|   298k|            }
36936|       |
36937|       |            // last element
36938|   308k|            JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2643|   308k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36938:13): [True: 308k, False: 0]
  ------------------
36939|   308k|            dump_element(val.m_data.m_value.array->back(), 0, depth + 1);
36940|       |
36941|   308k|            put_char(']');
36942|   308k|        }
36943|   308k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21recursion_depth_limitEv:
 8688|  1.23M|{
 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.23M|    static_assert(std::is_integral<decltype(JSON_RECURSION_DEPTH_LIMIT)>::value
 8693|  1.23M|                  && !recursion_depth_limit_is_char_or_bool<typename std::remove_cv<decltype(JSON_RECURSION_DEPTH_LIMIT)>::type>::value,
 8694|  1.23M|                  "JSON_RECURSION_DEPTH_LIMIT must be an integer constant (not bool or a character type)");
 8695|  1.23M|    static_assert(JSON_RECURSION_DEPTH_LIMIT >= 0 && JSON_RECURSION_DEPTH_LIMIT <= 254,
 8696|  1.23M|                  "JSON_RECURSION_DEPTH_LIMIT must be between 0 and 254: the nesting depth is counted in a byte per thread "
 8697|  1.23M|                  "and may exceed the limit by one (see https://json.nlohmann.me/api/macros/json_recursion_depth_limit/)");
 8698|  1.23M|    return static_cast<std::size_t>(JSON_RECURSION_DEPTH_LIMIT);
  ------------------
  |  | 8623|  1.23M|    #define JSON_RECURSION_DEPTH_LIMIT 128
  ------------------
 8699|  1.23M|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16dump_iterativelyERKSG_m:
36978|  12.4k|    {
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|  12.4k|        std::vector<dump_frame> stack;
36983|       |
36984|  12.4k|        dump_value(val, current_indent, stack);
36985|       |
36986|   462k|        while (!stack.empty())
  ------------------
  |  Branch (36986:16): [True: 450k, False: 12.4k]
  ------------------
36987|   450k|        {
36988|   450k|            dump_frame& frame = stack.back();
36989|       |
36990|   450k|            if (frame.value->m_data.m_type == value_t::object)
  ------------------
  |  Branch (36990:17): [True: 83.6k, False: 366k]
  ------------------
36991|  83.6k|            {
36992|  83.6k|                const auto* object = frame.value->m_data.m_value.object;
36993|       |
36994|  83.6k|                if (frame.object_it == object->cend())
  ------------------
  |  Branch (36994:21): [True: 36.8k, False: 46.7k]
  ------------------
36995|  36.8k|                {
36996|  36.8k|                    if (pretty_print)
  ------------------
  |  Branch (36996:25): [True: 0, False: 36.8k]
  ------------------
36997|      0|                    {
36998|      0|                        put_literal_indent("\n", frame.current_indent);
36999|      0|                    }
37000|       |
37001|  36.8k|                    put_char('}');
37002|  36.8k|                    stack.pop_back();
37003|  36.8k|                    continue;
37004|  36.8k|                }
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|  46.7k|                if (frame.object_it != object->cbegin())
  ------------------
  |  Branch (37008:21): [True: 9.84k, False: 36.8k]
  ------------------
37009|  9.84k|                {
37010|  9.84k|                    if (pretty_print)
  ------------------
  |  Branch (37010:25): [True: 0, False: 9.84k]
  ------------------
37011|      0|                    {
37012|      0|                        put_literal(",\n");
37013|      0|                    }
37014|  9.84k|                    else
37015|  9.84k|                    {
37016|  9.84k|                        put_char(',');
37017|  9.84k|                    }
37018|  9.84k|                }
37019|       |
37020|  46.7k|                if (pretty_print)
  ------------------
  |  Branch (37020:21): [True: 0, False: 46.7k]
  ------------------
37021|      0|                {
37022|      0|                    put_indent(frame.child_indent);
37023|      0|                }
37024|       |
37025|  46.7k|                if (pretty_print)
  ------------------
  |  Branch (37025:21): [True: 0, False: 46.7k]
  ------------------
37026|      0|                {
37027|      0|                    put_object_key(frame.object_it->first, "\": ");
37028|      0|                }
37029|  46.7k|                else
37030|  46.7k|                {
37031|  46.7k|                    put_object_key(frame.object_it->first, "\":");
37032|  46.7k|                }
37033|       |
37034|  46.7k|                const BasicJsonType& element = frame.object_it->second;
37035|  46.7k|                ++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|  46.7k|                const std::size_t element_indent = frame.child_indent;
37040|  46.7k|                dump_value(element, element_indent, stack);
37041|  46.7k|            }
37042|   366k|            else
37043|   366k|            {
37044|   366k|                const auto* array = frame.value->m_data.m_value.array;
37045|       |
37046|   366k|                if (frame.array_it == array->cend())
  ------------------
  |  Branch (37046:21): [True: 171k, False: 194k]
  ------------------
37047|   171k|                {
37048|   171k|                    if (pretty_print)
  ------------------
  |  Branch (37048:25): [True: 0, False: 171k]
  ------------------
37049|      0|                    {
37050|      0|                        put_literal_indent("\n", frame.current_indent);
37051|      0|                    }
37052|       |
37053|   171k|                    put_char(']');
37054|   171k|                    stack.pop_back();
37055|   171k|                    continue;
37056|   171k|                }
37057|       |
37058|   194k|                if (frame.array_it != array->cbegin())
  ------------------
  |  Branch (37058:21): [True: 23.1k, False: 171k]
  ------------------
37059|  23.1k|                {
37060|  23.1k|                    if (pretty_print)
  ------------------
  |  Branch (37060:25): [True: 0, False: 23.1k]
  ------------------
37061|      0|                    {
37062|      0|                        put_literal(",\n");
37063|      0|                    }
37064|  23.1k|                    else
37065|  23.1k|                    {
37066|  23.1k|                        put_char(',');
37067|  23.1k|                    }
37068|  23.1k|                }
37069|       |
37070|   194k|                if (pretty_print)
  ------------------
  |  Branch (37070:21): [True: 0, False: 194k]
  ------------------
37071|      0|                {
37072|      0|                    put_indent(frame.child_indent);
37073|      0|                }
37074|       |
37075|   194k|                const BasicJsonType& element = *frame.array_it;
37076|   194k|                ++frame.array_it;
37077|       |
37078|       |                // see above
37079|   194k|                const std::size_t element_indent = frame.child_indent;
37080|   194k|                dump_value(element, element_indent, stack);
37081|   194k|            }
37082|   450k|        }
37083|  12.4k|    }
_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|   254k|    {
37122|   254k|        switch (val.m_data.m_type)
37123|   254k|        {
37124|  46.0k|            case value_t::object:
  ------------------
  |  Branch (37124:13): [True: 46.0k, False: 208k]
  ------------------
37125|  46.0k|            {
37126|  46.0k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (37126:21): [True: 9.12k, False: 36.8k]
  ------------------
37127|  9.12k|                {
37128|  9.12k|                    put_literal("{}");
37129|  9.12k|                    return;
37130|  9.12k|                }
37131|       |
37132|  36.8k|                std::size_t child_indent = current_indent;
37133|       |
37134|  36.8k|                if (pretty_print)
  ------------------
  |  Branch (37134:21): [True: 0, False: 36.8k]
  ------------------
37135|      0|                {
37136|      0|                    put_literal("{\n");
37137|      0|                    child_indent = next_indent(current_indent, indent_step);
37138|      0|                }
37139|  36.8k|                else
37140|  36.8k|                {
37141|  36.8k|                    put_char('{');
37142|  36.8k|                }
37143|       |
37144|  36.8k|                stack.emplace_back(&val, current_indent, child_indent);
37145|  36.8k|                stack.back().object_it = val.m_data.m_value.object->cbegin();
37146|  36.8k|                return;
37147|  46.0k|            }
37148|       |
37149|   178k|            case value_t::array:
  ------------------
  |  Branch (37149:13): [True: 178k, False: 75.9k]
  ------------------
37150|   178k|            {
37151|   178k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (37151:21): [True: 6.28k, False: 171k]
  ------------------
37152|  6.28k|                {
37153|  6.28k|                    put_literal("[]");
37154|  6.28k|                    return;
37155|  6.28k|                }
37156|       |
37157|   171k|                std::size_t child_indent = current_indent;
37158|       |
37159|   171k|                if (pretty_print)
  ------------------
  |  Branch (37159:21): [True: 0, False: 171k]
  ------------------
37160|      0|                {
37161|      0|                    put_literal("[\n");
37162|      0|                    child_indent = next_indent(current_indent, indent_step);
37163|      0|                }
37164|   171k|                else
37165|   171k|                {
37166|   171k|                    put_char('[');
37167|   171k|                }
37168|       |
37169|   171k|                stack.emplace_back(&val, current_indent, child_indent);
37170|   171k|                stack.back().array_it = val.m_data.m_value.array->cbegin();
37171|   171k|                return;
37172|   178k|            }
37173|       |
37174|  3.33k|            case value_t::string:
  ------------------
  |  Branch (37174:13): [True: 3.33k, False: 250k]
  ------------------
37175|  11.8k|            case value_t::binary:
  ------------------
  |  Branch (37175:13): [True: 8.50k, False: 245k]
  ------------------
37176|  12.5k|            case value_t::boolean:
  ------------------
  |  Branch (37176:13): [True: 720, False: 253k]
  ------------------
37177|  19.4k|            case value_t::number_integer:
  ------------------
  |  Branch (37177:13): [True: 6.85k, False: 247k]
  ------------------
37178|  28.3k|            case value_t::number_unsigned:
  ------------------
  |  Branch (37178:13): [True: 8.92k, False: 245k]
  ------------------
37179|  29.6k|            case value_t::number_float:
  ------------------
  |  Branch (37179:13): [True: 1.27k, False: 252k]
  ------------------
37180|  29.6k|            case value_t::discarded:
  ------------------
  |  Branch (37180:13): [True: 0, False: 254k]
  ------------------
37181|  29.9k|            case value_t::null:
  ------------------
  |  Branch (37181:13): [True: 360, False: 253k]
  ------------------
37182|  29.9k|            default:
  ------------------
  |  Branch (37182:13): [True: 0, False: 254k]
  ------------------
37183|  29.9k|                dump_scalar(val, current_indent);
37184|  29.9k|                return;
37185|   254k|        }
37186|   254k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_frameC2EPKSG_mm:
37091|   208k|            : value(value_)
37092|   208k|            , current_indent(current_indent_)
37093|   208k|            , child_indent(child_indent_)
37094|   208k|        {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm3EEEvRAT__Kc:
38134|  50.6k|    {
38135|  50.6k|        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|  50.6k|        constexpr std::size_t length = N - 1;
38138|  50.6k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
38139|       |
38140|  50.6k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|  50.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 288, False: 50.3k]
  |  |  ------------------
  ------------------
38141|    288|        {
38142|    288|            flush();
38143|    288|        }
38144|  50.6k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38145|  50.6k|        write_buffer_pos += length;
38146|  50.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE18copy_plain_vectorsEPcPKcm:
37552|  5.06k|    {
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|  5.06k|        const __m128i a = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(p))); // NOLINT(bugprone-casting-through-void)
37571|  5.06k|        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|  5.06k|        const __m128i backslash = _mm_set1_epi8('\\');
37575|  5.06k|        const __m128i del = _mm_set1_epi8(0x7F);
37576|  5.06k|        const __m128i flip = _mm_set1_epi8(2);
37577|  5.06k|        const __m128i limit = _mm_set1_epi8(33);
37578|  5.06k|        const __m128i special = _mm_or_si128(_mm_or_si128(_mm_or_si128(_mm_cmpeq_epi8(a, backslash), _mm_cmpeq_epi8(b, backslash)),
37579|  5.06k|                                             _mm_or_si128(_mm_cmpeq_epi8(a, del), _mm_cmpeq_epi8(b, del))),
37580|  5.06k|                                             _mm_or_si128(_mm_cmplt_epi8(_mm_xor_si128(a, flip), limit), _mm_cmplt_epi8(_mm_xor_si128(b, flip), limit)));
37581|  5.06k|        if (_mm_movemask_epi8(special) != 0)
  ------------------
  |  Branch (37581:13): [True: 4.50k, False: 564]
  ------------------
37582|  4.50k|        {
37583|  4.50k|            return false;
37584|  4.50k|        }
37585|    564|        _mm_storeu_si128(static_cast<__m128i*>(static_cast<void*>(d)), a); // NOLINT(bugprone-casting-through-void)
37586|    564|        _mm_storeu_si128(static_cast<__m128i*>(static_cast<void*>(d + n - 16)), b); // NOLINT(bugprone-casting-through-void)
37587|    564|#endif
37588|    564|        return true;
37589|  5.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17copy_plain_halvesEPcPKcm:
37517|  6.22k|    {
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|  6.22k|        const __m128i lo = _mm_loadl_epi64(static_cast<const __m128i*>(static_cast<const void*>(p))); // NOLINT(bugprone-casting-through-void)
37534|  6.22k|        const __m128i hi = _mm_loadl_epi64(static_cast<const __m128i*>(static_cast<const void*>(p + n - 8))); // NOLINT(bugprone-casting-through-void)
37535|  6.22k|        const __m128i in = _mm_unpacklo_epi64(lo, hi);
37536|  6.22k|        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|  6.22k|                                             _mm_cmplt_epi8(_mm_xor_si128(in, _mm_set1_epi8(2)), _mm_set1_epi8(33)));
37538|  6.22k|        if (_mm_movemask_epi8(special) != 0)
  ------------------
  |  Branch (37538:13): [True: 4.71k, False: 1.51k]
  ------------------
37539|  4.71k|        {
37540|  4.71k|            return false;
37541|  4.71k|        }
37542|  1.51k|        _mm_storel_epi64(static_cast<__m128i*>(static_cast<void*>(d)), lo); // NOLINT(bugprone-casting-through-void)
37543|  1.51k|        _mm_storel_epi64(static_cast<__m128i*>(static_cast<void*>(d + n - 8)), hi); // NOLINT(bugprone-casting-through-void)
37544|  1.51k|#endif
37545|  1.51k|        return true;
37546|  6.22k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9load_wordIjEET_PKc:
37418|  18.0k|    {
37419|  18.0k|        WordType w;
37420|  18.0k|        std::memcpy(&w, p, sizeof(w));
37421|  18.0k|        return w;
37422|  18.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE14swar_not_plainEm:
37408|  52.2k|    {
37409|  52.2k|        constexpr std::uint64_t ones = 0x0101010101010101ull;
37410|  52.2k|        const std::uint64_t q = v ^ 0x2222222222222222ull; // '"'
37411|  52.2k|        const std::uint64_t b = v ^ 0x5C5C5C5C5C5C5C5Cull; // '\\'
37412|       |        // (see swar_string_special(): the bytes from 0x80 are flagged anyway)
37413|  52.2k|        return ((q - ones) | (b - ones) | (v - 0x2020202020202020ull) | v | (v + ones)) & 0x8080808080808080ull;
37414|  52.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10store_wordIjEEvPcT_:
37426|  4.64k|    {
37427|  4.64k|        std::memcpy(p, &w, sizeof(w));
37428|  4.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9load_wordItEET_PKc:
37418|  10.4k|    {
37419|  10.4k|        WordType w;
37420|  10.4k|        std::memcpy(&w, p, sizeof(w));
37421|  10.4k|        return w;
37422|  10.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10store_wordItEEvPcT_:
37426|  3.21k|    {
37427|  3.21k|        std::memcpy(p, &w, sizeof(w));
37428|  3.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_escapedERKSC_:
37611|  36.9k|    {
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|  36.9k|        if (ensure_ascii)
  ------------------
  |  Branch (37648:13): [True: 0, False: 36.9k]
  ------------------
37649|      0|        {
37650|      0|            dump_escaped_impl<true>(s);
37651|      0|        }
37652|  36.9k|        else
37653|  36.9k|        {
37654|  36.9k|            dump_escaped_impl<false>(s);
37655|  36.9k|        }
37656|  36.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail16read_eight_bytesEPKh:
 9148|   115k|{
 9149|   115k|#if JSON_LITTLE_ENDIAN_TARGET
 9150|       |    // the byte order already matches
 9151|   115k|    std::uint64_t result = 0;
 9152|   115k|    std::memcpy(&result, b, sizeof(result));
 9153|   115k|    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|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail20count_trailing_zerosEm:
 9020|   138k|{
 9021|   138k|#if defined(__GNUC__) || defined(__clang__)
 9022|   138k|    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|   138k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12emit_pendingERm:
37660|   112k|    {
37661|   112k|        if (bytes != 0)
  ------------------
  |  Branch (37661:13): [True: 31.1k, False: 81.1k]
  ------------------
37662|  31.1k|        {
37663|  31.1k|            put_buffer(string_buffer, bytes);
37664|  31.1k|            bytes = 0;
37665|  31.1k|        }
37666|   112k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE7put_runISC_EEvRKT_mm:
38158|  43.9k|    {
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.9k|        if (JSON_HEDLEY_UNLIKELY(length <= 16 && start + 16 <= str.size() && write_buffer_pos + 16 <= write_buffer.size()))
  ------------------
  |  | 1697|   145k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 14.7k, False: 29.1k]
  |  |  |  Branch (1697:94): [True: 42.8k, False: 1.07k]
  |  |  |  Branch (1697:94): [True: 14.8k, False: 27.9k]
  |  |  |  Branch (1697:94): [True: 14.7k, False: 132]
  |  |  ------------------
  ------------------
38162|  14.7k|        {
38163|  14.7k|            std::memcpy(write_buffer.data() + write_buffer_pos, str.data() + start, 16);
38164|  14.7k|            write_buffer_pos += length;
38165|  14.7k|            return;
38166|  14.7k|        }
38167|  29.1k|        put_string(str, start, start + length);
38168|  29.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringISC_EEvRKT_mm:
38181|  29.1k|    {
38182|  29.1k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2643|  29.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38182:9): [True: 29.1k, False: 0]
  ------------------
38183|  29.1k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2643|  29.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38183:9): [True: 29.1k, False: 0]
  ------------------
38184|       |
38185|  29.1k|        const char* const s = str.data() + start;
38186|  29.1k|        const std::size_t length = end - start;
38187|       |
38188|  29.1k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1697|  29.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 29.1k]
  |  |  ------------------
  ------------------
38189|      0|        {
38190|      0|            flush();
38191|      0|            o->write_characters(s, length);
38192|      0|            return;
38193|      0|        }
38194|  29.1k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|  29.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 108, False: 29.0k]
  |  |  ------------------
  ------------------
38195|    108|        {
38196|    108|            flush();
38197|    108|        }
38198|  29.1k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38199|  29.1k|        write_buffer_pos += length;
38200|  29.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13ascii_escapesEv:
38294|  68.3k|    {
38295|  68.3k|        static const std::array<std::array<char, 8>, 0x60> escapes =
38296|  68.3k|        {
38297|  68.3k|            {
38298|  68.3k|                {{'\\', 'u', '0', '0', '0', '0', 0, 6}}, // 0x00
38299|  68.3k|                {{'\\', 'u', '0', '0', '0', '1', 0, 6}}, // 0x01
38300|  68.3k|                {{'\\', 'u', '0', '0', '0', '2', 0, 6}}, // 0x02
38301|  68.3k|                {{'\\', 'u', '0', '0', '0', '3', 0, 6}}, // 0x03
38302|  68.3k|                {{'\\', 'u', '0', '0', '0', '4', 0, 6}}, // 0x04
38303|  68.3k|                {{'\\', 'u', '0', '0', '0', '5', 0, 6}}, // 0x05
38304|  68.3k|                {{'\\', 'u', '0', '0', '0', '6', 0, 6}}, // 0x06
38305|  68.3k|                {{'\\', 'u', '0', '0', '0', '7', 0, 6}}, // 0x07
38306|  68.3k|                {{'\\', 'b', 0, 0, 0, 0, 0, 2}}, // 0x08
38307|  68.3k|                {{'\\', 't', 0, 0, 0, 0, 0, 2}}, // 0x09
38308|  68.3k|                {{'\\', 'n', 0, 0, 0, 0, 0, 2}}, // 0x0A
38309|  68.3k|                {{'\\', 'u', '0', '0', '0', 'b', 0, 6}}, // 0x0B
38310|  68.3k|                {{'\\', 'f', 0, 0, 0, 0, 0, 2}}, // 0x0C
38311|  68.3k|                {{'\\', 'r', 0, 0, 0, 0, 0, 2}}, // 0x0D
38312|  68.3k|                {{'\\', 'u', '0', '0', '0', 'e', 0, 6}}, // 0x0E
38313|  68.3k|                {{'\\', 'u', '0', '0', '0', 'f', 0, 6}}, // 0x0F
38314|  68.3k|                {{'\\', 'u', '0', '0', '1', '0', 0, 6}}, // 0x10
38315|  68.3k|                {{'\\', 'u', '0', '0', '1', '1', 0, 6}}, // 0x11
38316|  68.3k|                {{'\\', 'u', '0', '0', '1', '2', 0, 6}}, // 0x12
38317|  68.3k|                {{'\\', 'u', '0', '0', '1', '3', 0, 6}}, // 0x13
38318|  68.3k|                {{'\\', 'u', '0', '0', '1', '4', 0, 6}}, // 0x14
38319|  68.3k|                {{'\\', 'u', '0', '0', '1', '5', 0, 6}}, // 0x15
38320|  68.3k|                {{'\\', 'u', '0', '0', '1', '6', 0, 6}}, // 0x16
38321|  68.3k|                {{'\\', 'u', '0', '0', '1', '7', 0, 6}}, // 0x17
38322|  68.3k|                {{'\\', 'u', '0', '0', '1', '8', 0, 6}}, // 0x18
38323|  68.3k|                {{'\\', 'u', '0', '0', '1', '9', 0, 6}}, // 0x19
38324|  68.3k|                {{'\\', 'u', '0', '0', '1', 'a', 0, 6}}, // 0x1A
38325|  68.3k|                {{'\\', 'u', '0', '0', '1', 'b', 0, 6}}, // 0x1B
38326|  68.3k|                {{'\\', 'u', '0', '0', '1', 'c', 0, 6}}, // 0x1C
38327|  68.3k|                {{'\\', 'u', '0', '0', '1', 'd', 0, 6}}, // 0x1D
38328|  68.3k|                {{'\\', 'u', '0', '0', '1', 'e', 0, 6}}, // 0x1E
38329|  68.3k|                {{'\\', 'u', '0', '0', '1', 'f', 0, 6}}, // 0x1F
38330|  68.3k|                {{' ', 0, 0, 0, 0, 0, 0, 1}}, // 0x20
38331|  68.3k|                {{'!', 0, 0, 0, 0, 0, 0, 1}}, // 0x21
38332|  68.3k|                {{'\\', '"', 0, 0, 0, 0, 0, 2}}, // 0x22
38333|  68.3k|                {{'#', 0, 0, 0, 0, 0, 0, 1}}, // 0x23
38334|  68.3k|                {{'$', 0, 0, 0, 0, 0, 0, 1}}, // 0x24
38335|  68.3k|                {{'%', 0, 0, 0, 0, 0, 0, 1}}, // 0x25
38336|  68.3k|                {{'&', 0, 0, 0, 0, 0, 0, 1}}, // 0x26
38337|  68.3k|                {{'\'', 0, 0, 0, 0, 0, 0, 1}}, // 0x27
38338|  68.3k|                {{'(', 0, 0, 0, 0, 0, 0, 1}}, // 0x28
38339|  68.3k|                {{')', 0, 0, 0, 0, 0, 0, 1}}, // 0x29
38340|  68.3k|                {{'*', 0, 0, 0, 0, 0, 0, 1}}, // 0x2A
38341|  68.3k|                {{'+', 0, 0, 0, 0, 0, 0, 1}}, // 0x2B
38342|  68.3k|                {{',', 0, 0, 0, 0, 0, 0, 1}}, // 0x2C
38343|  68.3k|                {{'-', 0, 0, 0, 0, 0, 0, 1}}, // 0x2D
38344|  68.3k|                {{'.', 0, 0, 0, 0, 0, 0, 1}}, // 0x2E
38345|  68.3k|                {{'/', 0, 0, 0, 0, 0, 0, 1}}, // 0x2F
38346|  68.3k|                {{'0', 0, 0, 0, 0, 0, 0, 1}}, // 0x30
38347|  68.3k|                {{'1', 0, 0, 0, 0, 0, 0, 1}}, // 0x31
38348|  68.3k|                {{'2', 0, 0, 0, 0, 0, 0, 1}}, // 0x32
38349|  68.3k|                {{'3', 0, 0, 0, 0, 0, 0, 1}}, // 0x33
38350|  68.3k|                {{'4', 0, 0, 0, 0, 0, 0, 1}}, // 0x34
38351|  68.3k|                {{'5', 0, 0, 0, 0, 0, 0, 1}}, // 0x35
38352|  68.3k|                {{'6', 0, 0, 0, 0, 0, 0, 1}}, // 0x36
38353|  68.3k|                {{'7', 0, 0, 0, 0, 0, 0, 1}}, // 0x37
38354|  68.3k|                {{'8', 0, 0, 0, 0, 0, 0, 1}}, // 0x38
38355|  68.3k|                {{'9', 0, 0, 0, 0, 0, 0, 1}}, // 0x39
38356|  68.3k|                {{':', 0, 0, 0, 0, 0, 0, 1}}, // 0x3A
38357|  68.3k|                {{';', 0, 0, 0, 0, 0, 0, 1}}, // 0x3B
38358|  68.3k|                {{'<', 0, 0, 0, 0, 0, 0, 1}}, // 0x3C
38359|  68.3k|                {{'=', 0, 0, 0, 0, 0, 0, 1}}, // 0x3D
38360|  68.3k|                {{'>', 0, 0, 0, 0, 0, 0, 1}}, // 0x3E
38361|  68.3k|                {{'?', 0, 0, 0, 0, 0, 0, 1}}, // 0x3F
38362|  68.3k|                {{'@', 0, 0, 0, 0, 0, 0, 1}}, // 0x40
38363|  68.3k|                {{'A', 0, 0, 0, 0, 0, 0, 1}}, // 0x41
38364|  68.3k|                {{'B', 0, 0, 0, 0, 0, 0, 1}}, // 0x42
38365|  68.3k|                {{'C', 0, 0, 0, 0, 0, 0, 1}}, // 0x43
38366|  68.3k|                {{'D', 0, 0, 0, 0, 0, 0, 1}}, // 0x44
38367|  68.3k|                {{'E', 0, 0, 0, 0, 0, 0, 1}}, // 0x45
38368|  68.3k|                {{'F', 0, 0, 0, 0, 0, 0, 1}}, // 0x46
38369|  68.3k|                {{'G', 0, 0, 0, 0, 0, 0, 1}}, // 0x47
38370|  68.3k|                {{'H', 0, 0, 0, 0, 0, 0, 1}}, // 0x48
38371|  68.3k|                {{'I', 0, 0, 0, 0, 0, 0, 1}}, // 0x49
38372|  68.3k|                {{'J', 0, 0, 0, 0, 0, 0, 1}}, // 0x4A
38373|  68.3k|                {{'K', 0, 0, 0, 0, 0, 0, 1}}, // 0x4B
38374|  68.3k|                {{'L', 0, 0, 0, 0, 0, 0, 1}}, // 0x4C
38375|  68.3k|                {{'M', 0, 0, 0, 0, 0, 0, 1}}, // 0x4D
38376|  68.3k|                {{'N', 0, 0, 0, 0, 0, 0, 1}}, // 0x4E
38377|  68.3k|                {{'O', 0, 0, 0, 0, 0, 0, 1}}, // 0x4F
38378|  68.3k|                {{'P', 0, 0, 0, 0, 0, 0, 1}}, // 0x50
38379|  68.3k|                {{'Q', 0, 0, 0, 0, 0, 0, 1}}, // 0x51
38380|  68.3k|                {{'R', 0, 0, 0, 0, 0, 0, 1}}, // 0x52
38381|  68.3k|                {{'S', 0, 0, 0, 0, 0, 0, 1}}, // 0x53
38382|  68.3k|                {{'T', 0, 0, 0, 0, 0, 0, 1}}, // 0x54
38383|  68.3k|                {{'U', 0, 0, 0, 0, 0, 0, 1}}, // 0x55
38384|  68.3k|                {{'V', 0, 0, 0, 0, 0, 0, 1}}, // 0x56
38385|  68.3k|                {{'W', 0, 0, 0, 0, 0, 0, 1}}, // 0x57
38386|  68.3k|                {{'X', 0, 0, 0, 0, 0, 0, 1}}, // 0x58
38387|  68.3k|                {{'Y', 0, 0, 0, 0, 0, 0, 1}}, // 0x59
38388|  68.3k|                {{'Z', 0, 0, 0, 0, 0, 0, 1}}, // 0x5A
38389|  68.3k|                {{'[', 0, 0, 0, 0, 0, 0, 1}}, // 0x5B
38390|  68.3k|                {{'\\', '\\', 0, 0, 0, 0, 0, 2}}, // 0x5C
38391|  68.3k|                {{']', 0, 0, 0, 0, 0, 0, 1}}, // 0x5D
38392|  68.3k|                {{'^', 0, 0, 0, 0, 0, 0, 1}}, // 0x5E
38393|  68.3k|                {{'_', 0, 0, 0, 0, 0, 0, 1}}, // 0x5F
38394|  68.3k|            }
38395|  68.3k|        };
38396|  68.3k|        return escapes;
38397|  68.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_bufferILm512EEEvRKNS4_5arrayIcXT_EEEm:
38207|  49.3k|    {
38208|  49.3k|        put_string(buffer, 0, length);
38209|  49.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringINS4_5arrayIcLm512EEEEEvRKT_mm:
38181|  49.3k|    {
38182|  49.3k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2643|  49.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38182:9): [True: 49.3k, False: 0]
  ------------------
38183|  49.3k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2643|  49.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38183:9): [True: 49.3k, False: 0]
  ------------------
38184|       |
38185|  49.3k|        const char* const s = str.data() + start;
38186|  49.3k|        const std::size_t length = end - start;
38187|       |
38188|  49.3k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1697|  49.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 49.3k]
  |  |  ------------------
  ------------------
38189|      0|        {
38190|      0|            flush();
38191|      0|            o->write_characters(s, length);
38192|      0|            return;
38193|      0|        }
38194|  49.3k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|  49.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 72, False: 49.3k]
  |  |  ------------------
  ------------------
38195|     72|        {
38196|     72|            flush();
38197|     72|        }
38198|  49.3k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38199|  49.3k|        write_buffer_pos += length;
38200|  49.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17validate_one_utf8EPKhm:
12968|   118k|{
12969|   118k|    const unsigned char c0 = data[0];
12970|   118k|    if (c0 >= 0xC2 && c0 <= 0xDF)  // U+0080..U+07FF
  ------------------
  |  Branch (12970:9): [True: 85.5k, False: 33.0k]
  |  Branch (12970:23): [True: 9.60k, False: 75.9k]
  ------------------
12971|  9.60k|    {
12972|  9.60k|        if (avail >= 2 && data[1] >= 0x80 && data[1] <= 0xBF)
  ------------------
  |  Branch (12972:13): [True: 7.21k, False: 2.38k]
  |  Branch (12972:27): [True: 5.16k, False: 2.05k]
  |  Branch (12972:46): [True: 1.30k, False: 3.86k]
  ------------------
12973|  1.30k|        {
12974|  1.30k|            return 2;
12975|  1.30k|        }
12976|  9.60k|    }
12977|   108k|    else if (c0 == 0xE0)  // U+0800..U+0FFF
  ------------------
  |  Branch (12977:14): [True: 5.28k, False: 103k]
  ------------------
12978|  5.28k|    {
12979|  5.28k|        if (avail >= 3 && data[1] >= 0xA0 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (12979:13): [True: 4.65k, False: 624]
  |  Branch (12979:27): [True: 3.51k, False: 1.14k]
  |  Branch (12979:46): [True: 1.57k, False: 1.93k]
  |  Branch (12979:65): [True: 1.09k, False: 486]
  |  Branch (12979:84): [True: 600, False: 492]
  ------------------
12980|    600|        {
12981|    600|            return 3;
12982|    600|        }
12983|  5.28k|    }
12984|   103k|    else if ((c0 >= 0xE1 && c0 <= 0xEC) || c0 == 0xEE || c0 == 0xEF)  // U+1000..U+CFFF, U+E000..U+FFFF
  ------------------
  |  Branch (12984:15): [True: 70.6k, False: 33.0k]
  |  Branch (12984:29): [True: 7.34k, False: 63.3k]
  |  Branch (12984:44): [True: 1.38k, False: 94.9k]
  |  Branch (12984:58): [True: 2.84k, False: 92.1k]
  ------------------
12985|  11.5k|    {
12986|  11.5k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (12986:13): [True: 9.28k, False: 2.28k]
  |  Branch (12986:27): [True: 7.90k, False: 1.38k]
  |  Branch (12986:46): [True: 1.83k, False: 6.07k]
  |  Branch (12986:65): [True: 1.27k, False: 564]
  |  Branch (12986:84): [True: 630, False: 642]
  ------------------
12987|    630|        {
12988|    630|            return 3;
12989|    630|        }
12990|  11.5k|    }
12991|  92.1k|    else if (c0 == 0xED)  // U+D000..U+D7FF (excludes surrogates)
  ------------------
  |  Branch (12991:14): [True: 5.67k, False: 86.4k]
  ------------------
12992|  5.67k|    {
12993|  5.67k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0x9F && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (12993:13): [True: 4.98k, False: 690]
  |  Branch (12993:27): [True: 4.19k, False: 792]
  |  Branch (12993:46): [True: 2.32k, False: 1.87k]
  |  Branch (12993:65): [True: 1.83k, False: 492]
  |  Branch (12993:84): [True: 1.24k, False: 582]
  ------------------
12994|  1.24k|        {
12995|  1.24k|            return 3;
12996|  1.24k|        }
12997|  5.67k|    }
12998|  86.4k|    else if (c0 == 0xF0)  // U+10000..U+3FFFF
  ------------------
  |  Branch (12998:14): [True: 4.96k, False: 81.4k]
  ------------------
12999|  4.96k|    {
13000|  4.96k|        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: 4.29k, False: 672]
  |  Branch (13000:27): [True: 3.63k, False: 666]
  |  Branch (13000:46): [True: 2.76k, False: 864]
  |  Branch (13000:65): [True: 2.17k, False: 588]
  |  Branch (13000:84): [True: 1.60k, False: 576]
  |  Branch (13000:103): [True: 1.08k, False: 522]
  |  Branch (13000:122): [True: 582, False: 498]
  ------------------
13001|    582|        {
13002|    582|            return 4;
13003|    582|        }
13004|  4.96k|    }
13005|  81.4k|    else if (c0 >= 0xF1 && c0 <= 0xF3)  // U+40000..U+FFFFF
  ------------------
  |  Branch (13005:14): [True: 48.4k, False: 33.0k]
  |  Branch (13005:28): [True: 8.08k, False: 40.3k]
  ------------------
13006|  8.08k|    {
13007|  8.08k|        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: 6.28k, False: 1.79k]
  |  Branch (13007:27): [True: 5.19k, False: 1.09k]
  |  Branch (13007:46): [True: 3.56k, False: 1.63k]
  |  Branch (13007:65): [True: 2.91k, False: 648]
  |  Branch (13007:84): [True: 2.49k, False: 420]
  |  Branch (13007:103): [True: 2.25k, False: 246]
  |  Branch (13007:122): [True: 1.46k, False: 786]
  ------------------
13008|  1.46k|        {
13009|  1.46k|            return 4;
13010|  1.46k|        }
13011|  8.08k|    }
13012|  73.4k|    else if (c0 == 0xF4)  // U+100000..U+10FFFF
  ------------------
  |  Branch (13012:14): [True: 10.8k, False: 62.5k]
  ------------------
13013|  10.8k|    {
13014|  10.8k|        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: 7.83k, False: 3.00k]
  |  Branch (13014:27): [True: 6.25k, False: 1.57k]
  |  Branch (13014:46): [True: 2.74k, False: 3.51k]
  |  Branch (13014:65): [True: 2.20k, False: 546]
  |  Branch (13014:84): [True: 1.61k, False: 588]
  |  Branch (13014:103): [True: 1.08k, False: 528]
  |  Branch (13014:122): [True: 546, False: 540]
  ------------------
13015|    546|        {
13016|    546|            return 4;
13017|    546|        }
13018|  10.8k|    }
13019|   112k|    return 0; // invalid, incomplete, or must be diagnosed by the byte path
13020|   118k|}
_ZN8nlohmann16json_abi_v3_12_06detail6decodeERhRjh:
 7362|   167k|{
 7363|   167k|    static const std::array<std::uint8_t, 400> utf8d =
 7364|   167k|    {
 7365|   167k|        {
 7366|   167k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 00..1F
 7367|   167k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 20..3F
 7368|   167k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 40..5F
 7369|   167k|            0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, // 60..7F
 7370|   167k|            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, // 80..9F
 7371|   167k|            7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, // A0..BF
 7372|   167k|            8, 8, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, // C0..DF
 7373|   167k|            0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
 7374|   167k|            0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
 7375|   167k|            0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
 7376|   167k|            1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, // s1..s2
 7377|   167k|            1, 2, 1, 1, 1, 1, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, // s3..s4
 7378|   167k|            1, 2, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, // s5..s6
 7379|   167k|            1, 3, 1, 1, 1, 1, 1, 3, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 // s7..s8
 7380|   167k|        }
 7381|   167k|    };
 7382|       |
 7383|   167k|    JSON_ASSERT(static_cast<std::size_t>(byte) < utf8d.size());
  ------------------
  |  | 2643|   167k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (7383:5): [True: 167k, False: 0]
  ------------------
 7384|   167k|    const std::uint8_t type = utf8d[byte];
 7385|       |
 7386|   167k|    codep = (state != UTF8_ACCEPT)
  ------------------
  |  Branch (7386:13): [True: 55.5k, False: 112k]
  ------------------
 7387|   167k|            ? (byte & 0x3fu) | (codep << 6u)
 7388|   167k|            : (0xFFu >> type) & (byte);
 7389|       |
 7390|   167k|    const std::size_t index = 256u + (static_cast<std::size_t>(state) * 16u) + static_cast<std::size_t>(type);
 7391|   167k|    JSON_ASSERT(index < utf8d.size());
  ------------------
  |  | 2643|   167k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (7391:5): [True: 167k, False: 0]
  ------------------
 7392|   167k|    state = utf8d[index];
 7393|   167k|    return state;
 7394|   167k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE21reserve_string_bufferERm:
37672|   104k|    {
37673|   104k|        if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (37673:13): [True: 0, False: 104k]
  ------------------
37674|      0|        {
37675|      0|            put_buffer(string_buffer, bytes);
37676|      0|            bytes = 0;
37677|      0|        }
37678|   104k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exception9what_implIDnEENSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEERKSA_iSC_T_:
 5655|     12|    {
 5656|     12|        return concat(name(ename, id_), diagnostics(context), what_arg);
 5657|     12|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_S9_RKS9_EEET_DpOT0_:
 5516|  1.69k|{
 5517|  1.69k|    OutStringType str;
 5518|  1.69k|    str.reserve(concat_length(args...));
 5519|  1.69k|    concat_into(str, std::forward<Args>(args)...);
 5520|  1.69k|    return str;
 5521|  1.69k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_S9_EEEmRKT_DpRKT0_:
 5426|  1.69k|{
 5427|  1.69k|    return str.size() + concat_length(rest...);
 5428|  1.69k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_EEEmRKT_DpRKT0_:
 5426|  25.8k|{
 5427|  25.8k|    return str.size() + concat_length(rest...);
 5428|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJEEEmRKT_DpRKT0_:
 5426|  77.7k|{
 5427|  77.7k|    return str.size() + concat_length(rest...);
 5428|  77.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthEv:
 5402|   103k|{
 5403|   103k|    return 0;
 5404|   103k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5479|  1.69k|{
 5480|  1.69k|    out.append(std::forward<Arg>(arg));
 5481|  1.69k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.69k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5479|  25.8k|{
 5480|  25.8k|    out.append(std::forward<Arg>(arg));
 5481|  25.8k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5479|  50.0k|{
 5480|  50.0k|    out.append(std::forward<Arg>(arg));
 5481|  50.0k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  50.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvRT_:
 5432|   103k|{}
_ZN8nlohmann16json_abi_v3_12_06detail9exception4nameERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEi:
 5648|  25.8k|    {
 5649|  25.8k|        return concat("[json.exception.", ename, '.', std::to_string(id_), "] ");
 5650|  25.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA17_KcRKS9_cS9_RA3_SA_EEET_DpOT0_:
 5516|  25.8k|{
 5517|  25.8k|    OutStringType str;
 5518|  25.8k|    str.reserve(concat_length(args...));
 5519|  25.8k|    concat_into(str, std::forward<Args>(args)...);
 5520|  25.8k|    return str;
 5521|  25.8k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcS9_A3_cEEEmPKcDpRKT_:
 5420|  25.8k|{
 5421|  25.8k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cEEEmRKT_DpRKT0_:
 5426|  25.8k|{
 5427|  25.8k|    return str.size() + concat_length(rest...);
 5428|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cEEEmcDpRKT_:
 5414|  25.8k|{
 5415|  25.8k|    return 1 + concat_length(rest...);
 5416|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cEEEmRKT_DpRKT0_:
 5426|  25.8k|{
 5427|  25.8k|    return str.size() + concat_length(rest...);
 5428|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJEEEmPKcDpRKT_:
 5420|  25.8k|{
 5421|  25.8k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  25.8k|}
_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|  25.8k|{
 5480|  25.8k|    out.append(std::forward<Arg>(arg));
 5481|  25.8k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JcS9_RA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  25.8k|{
 5480|  25.8k|    out.append(std::forward<Arg>(arg));
 5481|  25.8k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  25.8k|}
_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|  25.8k|{
 5489|  25.8k|    out += std::forward<Arg>(arg);
 5490|  25.8k|    concat_into(out, std::forward<Args>(rest)...);
 5491|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|  25.8k|{
 5480|  25.8k|    out.append(std::forward<Arg>(arg));
 5481|  25.8k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|  25.8k|{
 5480|  25.8k|    out.append(std::forward<Arg>(arg));
 5481|  25.8k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  25.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail9exception11diagnosticsEDn:
 5660|  24.1k|    {
 5661|  24.1k|        return "";
 5662|  24.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exceptionC2EiPKc:
 5645|  25.8k|    exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing)
_ZNK8nlohmann16json_abi_v3_12_06detail9exception4whatEv:
 5636|  17.2k|    {
 5637|  17.2k|        return m.what();
 5638|  17.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEmPKcDpRKT_:
 5420|  51.8k|{
 5421|  51.8k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  51.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA5_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|    504|{
 5480|    504|    out.append(std::forward<Arg>(arg));
 5481|    504|    concat_into(out, std::forward<Args>(rest)...);
 5482|    504|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSB_OSC_DpOT1_:
 5479|  27.6k|{
 5480|  27.6k|    out.append(std::forward<Arg>(arg));
 5481|  27.6k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  27.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail8hex_byteEh:
 7173|  3.70k|{
 7174|  3.70k|    std::string result = "00";
 7175|  3.70k|    constexpr const char* nibble_to_hex = "0123456789ABCDEF";
 7176|  3.70k|    result[0] = nibble_to_hex[byte / 16];
 7177|  3.70k|    result[1] = nibble_to_hex[byte % 16];
 7178|  3.70k|    return result;
 7179|  3.70k|} // 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|  36.9k|    {
37694|  36.9k|        std::uint32_t codepoint{};
37695|  36.9k|        std::uint8_t state = UTF8_ACCEPT;
37696|  36.9k|        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|  36.9k|        std::size_t bytes_after_last_accept = 0;
37700|  36.9k|        std::size_t undumped_chars = 0;
37701|       |
37702|   273k|        for (std::size_t i = 0; i < s.size(); ++i)
  ------------------
  |  Branch (37702:33): [True: 245k, False: 27.4k]
  ------------------
37703|   245k|        {
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|   245k|            if (state == UTF8_ACCEPT)
  ------------------
  |  Branch (37717:17): [True: 190k, False: 55.5k]
  ------------------
37718|   190k|            {
37719|   190k|                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|   190k|                std::size_t run = 0;
37726|   190k|                if (!EnsureAscii)
  ------------------
  |  Branch (37726:21): [True: 190k, Folded]
  ------------------
37727|   190k|                {
37728|   190k|                    run = string_bulk_run(data + i, s.size() - i);
37729|   190k|                }
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|   190k|                if (run != 0)
  ------------------
  |  Branch (37734:21): [True: 43.9k, False: 146k]
  ------------------
37735|  43.9k|                {
37736|       |                    // emit any bytes still pending in string_buffer first to
37737|       |                    // preserve output order, then write the run directly
37738|  43.9k|                    emit_pending(bytes);
37739|  43.9k|                    put_run(s, i, run);
37740|  43.9k|                    bytes_after_last_accept = 0;
37741|  43.9k|                    undumped_chars = 0;
37742|  43.9k|                    i += run;
37743|  43.9k|                    if (i >= s.size())
  ------------------
  |  Branch (37743:25): [True: 9.55k, False: 34.3k]
  ------------------
37744|  9.55k|                    {
37745|  9.55k|                        break;
37746|  9.55k|                    }
37747|  43.9k|                }
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|   180k|                if (data[i] < 0x60)
  ------------------
  |  Branch (37755:21): [True: 68.3k, False: 112k]
  ------------------
37756|  68.3k|                {
37757|       |                    // emit any bytes still pending in string_buffer first to
37758|       |                    // preserve output order
37759|  68.3k|                    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|  68.3k|                    const auto& escape = ascii_escapes()[data[i]];
37764|  68.3k|                    if (JSON_HEDLEY_UNLIKELY(write_buffer.size() - write_buffer_pos < escape.size()))
  ------------------
  |  | 1697|  68.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 144, False: 68.2k]
  |  |  ------------------
  ------------------
37765|    144|                    {
37766|    144|                        flush();
37767|    144|                    }
37768|  68.3k|                    std::memcpy(write_buffer.data() + write_buffer_pos, escape.data(), escape.size());
37769|  68.3k|                    write_buffer_pos += static_cast<std::size_t>(escape[7]);
37770|  68.3k|                    bytes_after_last_accept = 0;
37771|  68.3k|                    undumped_chars = 0;
37772|  68.3k|                    continue;
37773|  68.3k|                }
37774|   180k|            }
37775|       |
37776|   167k|            const auto byte = static_cast<std::uint8_t>(s[i]);
37777|       |
37778|   167k|            if (EnsureAscii && state == UTF8_ACCEPT && byte >= 0x80)
  ------------------
  |  Branch (37778:17): [Folded, False: 167k]
  |  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|   167k|            switch (decode(state, codepoint, byte))
37800|   167k|            {
37801|      0|                case UTF8_ACCEPT:  // decode found a new code point
  ------------------
  |  Branch (37801:17): [True: 0, False: 167k]
  ------------------
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|   104k|                case UTF8_REJECT:  // decode found invalid UTF-8 byte
  ------------------
  |  Branch (37830:17): [True: 104k, False: 63.0k]
  ------------------
37831|   104k|                {
37832|   104k|                    switch (error_handler)
37833|   104k|                    {
37834|      0|                        case error_handler_t::strict:
  ------------------
  |  Branch (37834:25): [True: 0, False: 104k]
  ------------------
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: 104k]
  ------------------
37840|      0|                        case error_handler_t::replace:
  ------------------
  |  Branch (37840:25): [True: 0, False: 104k]
  ------------------
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|   104k|                        case error_handler_t::keep:
  ------------------
  |  Branch (37886:25): [True: 104k, False: 0]
  ------------------
37887|   104k|                        {
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|   104k|                            if (undumped_chars > 0)
  ------------------
  |  Branch (37891:33): [True: 42.1k, False: 62.5k]
  ------------------
37892|  42.1k|                            {
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|  42.1k|                                --i;
37898|  42.1k|                            }
37899|  62.5k|                            else
37900|  62.5k|                            {
37901|       |                                // a byte that cannot start a sequence (e.g.,
37902|       |                                // 0xFF or a stray continuation byte) is kept
37903|       |                                // as well
37904|  62.5k|                                string_buffer[bytes++] = s[i];
37905|  62.5k|                            }
37906|       |
37907|   104k|                            reserve_string_buffer(bytes);
37908|       |
37909|   104k|                            bytes_after_last_accept = bytes;
37910|   104k|                            undumped_chars = 0;
37911|       |
37912|       |                            // continue processing the string
37913|   104k|                            state = UTF8_ACCEPT;
37914|   104k|                            break;
37915|      0|                        }
37916|       |
37917|      0|                        default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (37917:25): [True: 0, False: 104k]
  ------------------
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|   104k|                    }
37920|   104k|                    break;
37921|   104k|                }
37922|       |
37923|   104k|                default:  // decode found yet incomplete multibyte code point
  ------------------
  |  Branch (37923:17): [True: 63.0k, False: 104k]
  ------------------
37924|  63.0k|                {
37925|  63.0k|                    if (!EnsureAscii || error_handler == error_handler_t::keep)
  ------------------
  |  Branch (37925:25): [True: 63.0k, Folded]
  |  Branch (37925:41): [True: 0, False: 0]
  ------------------
37926|  63.0k|                    {
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|  63.0k|                        string_buffer[bytes++] = s[i];
37932|  63.0k|                    }
37933|  63.0k|                    ++undumped_chars;
37934|  63.0k|                    break;
37935|   104k|                }
37936|   167k|            }
37937|   167k|        }
37938|       |
37939|       |        // we finished processing the string
37940|  36.9k|        if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
  ------------------
  |  | 1696|  36.9k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 29.4k, False: 7.54k]
  |  |  ------------------
  ------------------
37941|  29.4k|        {
37942|       |            // write buffer
37943|  29.4k|            if (bytes > 0)
  ------------------
  |  Branch (37943:17): [True: 10.6k, False: 18.7k]
  ------------------
37944|  10.6k|            {
37945|  10.6k|                put_buffer(string_buffer, bytes);
37946|  10.6k|            }
37947|  29.4k|        }
37948|  7.54k|        else
37949|  7.54k|        {
37950|       |            // we finish reading, but do not accept: string was incomplete
37951|  7.54k|            switch (error_handler)
37952|  7.54k|            {
37953|      0|                case error_handler_t::strict:
  ------------------
  |  Branch (37953:17): [True: 0, False: 7.54k]
  ------------------
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: 7.54k]
  ------------------
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: 7.54k]
  ------------------
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|  7.54k|                case error_handler_t::keep:
  ------------------
  |  Branch (37981:17): [True: 7.54k, False: 0]
  ------------------
37982|  7.54k|                {
37983|       |                    // write the ill-formed trailing bytes as is; they were
37984|       |                    // buffered above regardless of EnsureAscii
37985|  7.54k|                    put_buffer(string_buffer, bytes);
37986|  7.54k|                    break;
37987|      0|                }
37988|       |
37989|      0|                default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (37989:17): [True: 0, False: 7.54k]
  ------------------
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|  7.54k|            }
37992|  7.54k|        }
37993|  36.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail15string_bulk_runEPKhm:
13295|   190k|{
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|   190k|    return scalar_string_bulk_run(data, n);
13304|   190k|}
_ZN8nlohmann16json_abi_v3_12_06detail22scalar_string_bulk_runEPKhm:
13216|   190k|{
13217|   190k|    const unsigned char* const e = data + n;
13218|   190k|    const unsigned char* p = data;
13219|   190k|    while (p != e)
  ------------------
  |  Branch (13219:12): [True: 190k, False: 0]
  ------------------
13220|   190k|    {
13221|   190k|#if JSON_SCAN_VECTOR
13222|   190k|        p = plain_run_end(p, e);
13223|       |#else
13224|       |        p += find_string_special(p, static_cast<std::size_t>(e - p));
13225|       |#endif
13226|   190k|        if (p == e || *p < 0x80u)
  ------------------
  |  Branch (13226:13): [True: 7.24k, False: 182k]
  |  Branch (13226:23): [True: 66.3k, False: 116k]
  ------------------
13227|  73.6k|        {
13228|  73.6k|            break; // end of buffer, or a quote/escape/control byte
13229|  73.6k|        }
13230|   116k|#if JSON_SCAN_VECTOR_UTF8
13231|   116k|#if JSON_SCAN_SSSE3_DISPATCH
13232|   116k|        if (JSON_HEDLEY_LIKELY(cpu_has_ssse3()))
  ------------------
  |  | 1696|   116k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 116k, False: 0]
  |  |  ------------------
  ------------------
13233|   116k|#endif
13234|   116k|        {
13235|   116k|            return static_cast<std::size_t>(scan_string_vector(p, e) - data);
13236|   116k|        }
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|  73.6k|    return static_cast<std::size_t>(p - data);
13254|   190k|}
_ZN8nlohmann16json_abi_v3_12_06detail13plain_run_endEPKhS3_:
13181|   190k|{
13182|   190k|    constexpr int prefix_words = JSON_SCAN_NEON ? 4 : 1;
  ------------------
  |  |12448|   190k|    #define JSON_SCAN_NEON 0
  |  |  ------------------
  |  |  |  Branch (12448:28): [Folded, False: 190k]
  |  |  ------------------
  ------------------
13183|   193k|    for (int words = prefix_words; words > 0 && e - p >= 8; --words)
  ------------------
  |  Branch (13183:36): [True: 190k, False: 3.13k]
  |  Branch (13183:49): [True: 114k, False: 75.5k]
  ------------------
13184|   114k|    {
13185|   114k|        const std::uint64_t special = swar_string_special(read_eight_bytes(p));
13186|   114k|        if (special != 0)
  ------------------
  |  Branch (13186:13): [True: 111k, False: 3.13k]
  ------------------
13187|   111k|        {
13188|   111k|            return p + (static_cast<std::size_t>(count_trailing_zeros(special)) / 8);
13189|   111k|        }
13190|  3.13k|        p += 8;
13191|  3.13k|    }
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|  78.7k|    if (e - p >= 16)
  ------------------
  |  Branch (13196:9): [True: 1.63k, False: 77.0k]
  ------------------
13197|  1.63k|    {
13198|  1.63k|        p = vector_plain_run_long(p, e);
13199|  1.63k|        if (e - p >= 16)
  ------------------
  |  Branch (13199:13): [True: 1.26k, False: 378]
  ------------------
13200|  1.26k|        {
13201|  1.26k|            return p; // the vector loop stopped at a special byte
13202|  1.26k|        }
13203|  1.63k|    }
13204|  77.4k|    return p + find_string_special(p, static_cast<std::size_t>(e - p));
13205|  78.7k|}
_ZN8nlohmann16json_abi_v3_12_06detail19swar_string_specialEm:
12852|   115k|{
12853|   115k|    constexpr std::uint64_t ones = 0x0101010101010101ull;
12854|   115k|    constexpr std::uint64_t high = 0x8080808080808080ull;
12855|   115k|    const std::uint64_t q = v ^ 0x2222222222222222ull; // '"'  (0x22)
12856|   115k|    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|   115k|    return ((q - ones) | (b - ones) | (v - 0x2020202020202020ull) | v) & high;
12861|   115k|}
_ZN8nlohmann16json_abi_v3_12_06detail21vector_plain_run_longEPKhS3_:
12547|  1.63k|{
12548|  1.63k|    return vector_plain_run(p, e);
12549|  1.63k|}
_ZN8nlohmann16json_abi_v3_12_06detail16vector_plain_runEPKhS3_:
12507|  1.63k|{
12508|  2.42k|    while (e - p >= 16)
  ------------------
  |  Branch (12508:12): [True: 2.30k, False: 120]
  ------------------
12509|  2.30k|    {
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|  2.30k|        const __m128i in = _mm_loadu_si128(static_cast<const __m128i*>(static_cast<const void*>(p))); // NOLINT(bugprone-casting-through-void)
12523|  2.30k|        const __m128i special = _mm_or_si128(_mm_cmpeq_epi8(in, _mm_set1_epi8('\\')),
12524|  2.30k|                                             _mm_cmplt_epi8(_mm_xor_si128(in, _mm_set1_epi8(2)), _mm_set1_epi8(33)));
12525|  2.30k|        const auto bits = static_cast<std::uint64_t>(static_cast<unsigned>(_mm_movemask_epi8(special)));
12526|  2.30k|        if (bits != 0)
  ------------------
  |  Branch (12526:13): [True: 1.51k, False: 786]
  ------------------
12527|  1.51k|        {
12528|  1.51k|            return p + count_trailing_zeros(bits);
12529|  1.51k|        }
12530|    786|#endif
12531|    786|        p += 16;
12532|    786|    }
12533|    120|    return p;
12534|  1.63k|}
_ZN8nlohmann16json_abi_v3_12_06detail19find_string_specialEPKhm:
12866|  77.4k|{
12867|  77.4k|    std::size_t i = 0;
12868|  77.6k|    for (; i + 8 <= n; i += 8)
  ------------------
  |  Branch (12868:12): [True: 1.07k, False: 76.5k]
  ------------------
12869|  1.07k|    {
12870|  1.07k|        const std::uint64_t special = swar_string_special(read_eight_bytes(data + i));
12871|  1.07k|        if (special != 0)
  ------------------
  |  Branch (12871:13): [True: 882, False: 192]
  ------------------
12872|    882|        {
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|    882|            return i + (static_cast<std::size_t>(count_trailing_zeros(special)) / 8);
12876|    882|        }
12877|  1.07k|    }
12878|   103k|    for (; i < n; ++i)
  ------------------
  |  Branch (12878:12): [True: 96.3k, False: 7.24k]
  ------------------
12879|  96.3k|    {
12880|  96.3k|        if (is_string_special(data[i]))
  ------------------
  |  Branch (12880:13): [True: 69.3k, False: 26.9k]
  ------------------
12881|  69.3k|        {
12882|  69.3k|            return i;
12883|  69.3k|        }
12884|  96.3k|    }
12885|  7.24k|    return n;
12886|  76.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail17is_string_specialEh:
12845|   101k|{
12846|   101k|    return c == '\"' || c == '\\' || c < 0x20u || c >= 0x80u;
  ------------------
  |  Branch (12846:12): [True: 2.50k, False: 99.0k]
  |  Branch (12846:25): [True: 1.03k, False: 98.0k]
  |  Branch (12846:38): [True: 23.4k, False: 74.6k]
  |  Branch (12846:51): [True: 44.0k, False: 30.5k]
  ------------------
12847|   101k|}
_ZN8nlohmann16json_abi_v3_12_06detail13cpu_has_ssse3Ev:
12574|   116k|{
12575|   116k|    static std::atomic<int> known{0}; // 0: not asked yet, 1: no, 2: yes
12576|   116k|    int state = known.load(std::memory_order_relaxed);
12577|   116k|    if (JSON_HEDLEY_UNLIKELY(state == 0))
  ------------------
  |  | 1697|   116k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1, False: 116k]
  |  |  ------------------
  ------------------
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|   116k|    return state == 2;
12583|   116k|}
_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|   116k|{
13165|   116k|    const unsigned char* block = p;
13166|   116k|    if (vector_utf8_run(p, e, block))
  ------------------
  |  Branch (13166:9): [True: 306, False: 116k]
  ------------------
13167|    306|    {
13168|    306|        return block;
13169|    306|    }
13170|   116k|    return scan_string_finish(p, block, e);
13171|   116k|}
_ZN8nlohmann16json_abi_v3_12_06detail15vector_utf8_runEPKhS3_RS3_:
12650|   116k|{
12651|   116k|    using lookup = utf8_lookup4<>;
12652|   116k|    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|   116k|    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|   116k|    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|   116k|    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|   116k|    const __m128i nibble = _mm_set1_epi8(0x0F);
12697|   116k|    const __m128i zero = _mm_setzero_si128();
12698|   116k|    __m128i prev = zero;
12699|   117k|    while (e - block >= 16)
  ------------------
  |  Branch (12699:12): [True: 53.2k, False: 63.9k]
  ------------------
12700|  53.2k|    {
12701|  53.2k|        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|  53.2k|        const __m128i special = _mm_or_si128(_mm_cmpeq_epi8(in, _mm_set1_epi8('\\')),
12705|  53.2k|                                             _mm_cmpeq_epi8(_mm_subs_epu8(_mm_xor_si128(in, _mm_set1_epi8(2)), _mm_set1_epi8(32)), zero));
12706|  53.2k|        const __m128i prev1 = _mm_alignr_epi8(in, prev, 15);
12707|  53.2k|        const __m128i sc = _mm_and_si128(_mm_and_si128(_mm_shuffle_epi8(t1h, _mm_and_si128(_mm_srli_epi16(prev1, 4), nibble)),
12708|  53.2k|                                         _mm_shuffle_epi8(t1l, _mm_and_si128(prev1, nibble))),
12709|  53.2k|                                         _mm_shuffle_epi8(t2h, _mm_and_si128(_mm_srli_epi16(in, 4), nibble)));
12710|  53.2k|        const __m128i must23 = _mm_or_si128(_mm_subs_epu8(_mm_alignr_epi8(in, prev, 14), _mm_set1_epi8(0xE0 - 0x80)),
12711|  53.2k|                                            _mm_subs_epu8(_mm_alignr_epi8(in, prev, 13), _mm_set1_epi8(0xF0 - 0x80)));
12712|  53.2k|        const __m128i err = _mm_xor_si128(_mm_and_si128(must23, _mm_set1_epi8(static_cast<char>(-128))), sc);
12713|  53.2k|        const auto special_bits = static_cast<unsigned>(_mm_movemask_epi8(special));
12714|  53.2k|        const auto err_bits = ~static_cast<unsigned>(_mm_movemask_epi8(_mm_cmpeq_epi8(err, zero))) & 0xFFFFu;
12715|  53.2k|        if (special_bits != 0)
  ------------------
  |  Branch (12715:13): [True: 22.5k, False: 30.6k]
  ------------------
12716|  22.5k|        {
12717|  22.5k|            const auto k = static_cast<unsigned>(count_trailing_zeros(static_cast<std::uint64_t>(special_bits)));
12718|  22.5k|            if ((err_bits & ((2u << k) - 1u)) == 0)
  ------------------
  |  Branch (12718:17): [True: 306, False: 22.2k]
  ------------------
12719|    306|            {
12720|    306|                block_out = block + k;
12721|    306|                return true;
12722|    306|            }
12723|  22.2k|            break;
12724|  22.5k|        }
12725|  30.6k|        if (err_bits != 0)
  ------------------
  |  Branch (12725:13): [True: 30.0k, False: 612]
  ------------------
12726|  30.0k|        {
12727|  30.0k|            break;
12728|  30.0k|        }
12729|    612|        prev = in;
12730|    612|        block += 16;
12731|    612|    }
12732|   116k|#endif
12733|   116k|    block_out = block;
12734|   116k|    return false;
12735|   116k|}
_ZN8nlohmann16json_abi_v3_12_06detail18scan_string_finishEPKhS3_S3_:
13122|   116k|{
13123|   116k|    for (int i = 1; i <= 3 && block - i >= p; ++i)
  ------------------
  |  Branch (13123:21): [True: 116k, False: 120]
  |  Branch (13123:31): [True: 978, False: 115k]
  ------------------
13124|    978|    {
13125|    978|        const unsigned char c = block[-i];
13126|    978|        if (c < 0x80)
  ------------------
  |  Branch (13126:13): [True: 102, False: 876]
  ------------------
13127|    102|        {
13128|    102|            break;
13129|    102|        }
13130|    876|        if (c >= 0xC0)
  ------------------
  |  Branch (13130:13): [True: 216, False: 660]
  ------------------
13131|    216|        {
13132|    216|            const int len = 2 + static_cast<int>(c >= 0xE0) + static_cast<int>(c >= 0xF0);
13133|    216|            if (len > i)
  ------------------
  |  Branch (13133:17): [True: 108, False: 108]
  ------------------
13134|    108|            {
13135|    108|                block -= i;
13136|    108|            }
13137|    216|            break;
13138|    216|        }
13139|    876|    }
13140|   126k|    for (p = block; p != e;)
  ------------------
  |  Branch (13140:21): [True: 123k, False: 2.30k]
  ------------------
13141|   123k|    {
13142|   123k|        if (*p < 0x80)
  ------------------
  |  Branch (13142:13): [True: 5.26k, False: 118k]
  ------------------
13143|  5.26k|        {
13144|  5.26k|            if (is_string_special(*p))
  ------------------
  |  Branch (13144:17): [True: 1.68k, False: 3.58k]
  ------------------
13145|  1.68k|            {
13146|  1.68k|                return p;
13147|  1.68k|            }
13148|  3.58k|            ++p;
13149|  3.58k|            continue;
13150|  5.26k|        }
13151|   118k|        const std::size_t n = validate_one_utf8(p, static_cast<std::size_t>(e - p));
13152|   118k|        if (n == 0)
  ------------------
  |  Branch (13152:13): [True: 112k, False: 6.37k]
  ------------------
13153|   112k|        {
13154|   112k|            return p;
13155|   112k|        }
13156|  6.37k|        p += n;
13157|  6.37k|    }
13158|  2.30k|    return p;
13159|   116k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE8put_charEc:
38008|  1.61M|    {
38009|  1.61M|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos == write_buffer.size()))
  ------------------
  |  | 1697|  1.61M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1.29k, False: 1.61M]
  |  |  ------------------
  ------------------
38010|  1.29k|        {
38011|  1.29k|            flush();
38012|  1.29k|        }
38013|  1.61M|        write_buffer[write_buffer_pos++] = c;
38014|  1.61M|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE14put_object_keyILm3EEEvRKSC_RAT__Kc:
37388|  95.3k|    {
37389|  95.3k|#if JSON_LITTLE_ENDIAN_TARGET
37390|  95.3k|        if (put_short_quoted(s, tail))
  ------------------
  |  Branch (37390:13): [True: 79.0k, False: 16.2k]
  ------------------
37391|  79.0k|        {
37392|  79.0k|            return;
37393|  79.0k|        }
37394|  16.2k|#endif
37395|  16.2k|        put_char('"');
37396|  16.2k|        dump_escaped(s);
37397|  16.2k|        put_literal(tail);
37398|  16.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16put_short_quotedILm3EEEbRKSC_RAT__Kc:
37442|  95.3k|    {
37443|  95.3k|        const std::size_t n = s.size();
37444|  95.3k|        if (n > short_string_max || write_buffer_pos + n + N > write_buffer.size())
  ------------------
  |  Branch (37444:13): [True: 132, False: 95.2k]
  |  Branch (37444:37): [True: 264, False: 94.9k]
  ------------------
37445|    396|        {
37446|    396|            return false;
37447|    396|        }
37448|       |
37449|  94.9k|        char* d = write_buffer.data() + write_buffer_pos + 1;
37450|  94.9k|        const char* const p = s.data();
37451|       |
37452|  94.9k|        if (n >= 8)
  ------------------
  |  Branch (37452:13): [True: 1.64k, False: 93.3k]
  ------------------
37453|  1.64k|        {
37454|  1.64k|#if JSON_SCAN_VECTOR
37455|  1.64k|            if (!(n >= 16 ? copy_plain_vectors(d, p, n) : copy_plain_halves(d, p, n)))
  ------------------
  |  Branch (37455:17): [True: 1.44k, False: 198]
  |  Branch (37455:19): [True: 756, False: 888]
  ------------------
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|  1.64k|        }
37470|  93.3k|        else if (n >= 4)
  ------------------
  |  Branch (37470:18): [True: 1.76k, False: 91.5k]
  ------------------
37471|  1.76k|        {
37472|  1.76k|            const auto a = load_word<std::uint32_t>(p);
37473|  1.76k|            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.76k|            const std::uint64_t w = a | (static_cast<std::uint64_t>(b) << (8 * (n - 4)))
37476|  1.76k|                                    | (0x4141414141414141ull << (8 * n));
37477|  1.76k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37477:17): [True: 1.02k, False: 744]
  ------------------
37478|  1.02k|            {
37479|  1.02k|                return false;
37480|  1.02k|            }
37481|    744|            store_word(d, a);
37482|    744|            store_word(d + n - 4, b);
37483|    744|        }
37484|  91.5k|        else if (n >= 2)
  ------------------
  |  Branch (37484:18): [True: 1.46k, False: 90.0k]
  ------------------
37485|  1.46k|        {
37486|  1.46k|            const auto a = load_word<std::uint16_t>(p);
37487|  1.46k|            const auto b = load_word<std::uint16_t>(p + n - 2);
37488|  1.46k|            const std::uint64_t w = a | (static_cast<std::uint64_t>(b) << (8 * (n - 2)))
37489|  1.46k|                                    | (0x4141414141414141ull << (8 * n));
37490|  1.46k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37490:17): [True: 888, False: 576]
  ------------------
37491|    888|            {
37492|    888|                return false;
37493|    888|            }
37494|    576|            store_word(d, a);
37495|    576|            store_word(d + n - 2, b);
37496|    576|        }
37497|  90.0k|        else if (n == 1)
  ------------------
  |  Branch (37497:18): [True: 33.1k, False: 56.9k]
  ------------------
37498|  33.1k|        {
37499|  33.1k|            const std::uint64_t w = static_cast<std::uint64_t>(static_cast<unsigned char>(p[0])) | (0x4141414141414141ull << 8u);
37500|  33.1k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37500:17): [True: 12.4k, False: 20.6k]
  ------------------
37501|  12.4k|            {
37502|  12.4k|                return false;
37503|  12.4k|            }
37504|  20.6k|            *d = p[0];
37505|  20.6k|        }
37506|       |
37507|  79.0k|        d[-1] = '"';
37508|  79.0k|        std::memcpy(d + n, tail, N - 1);
37509|  79.0k|        write_buffer_pos += n + N;
37510|  79.0k|        return true;
37511|  94.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11dump_scalarERKSG_m:
37200|   347k|    {
37201|   347k|        switch (val.m_data.m_type)
37202|   347k|        {
37203|  45.2k|            case value_t::string:
  ------------------
  |  Branch (37203:13): [True: 45.2k, False: 302k]
  ------------------
37204|  45.2k|            {
37205|  45.2k|                dump_string_value(*val.m_data.m_value.string);
37206|  45.2k|                return;
37207|      0|            }
37208|       |
37209|   119k|            case value_t::binary:
  ------------------
  |  Branch (37209:13): [True: 119k, False: 228k]
  ------------------
37210|   119k|            {
37211|   119k|                dump_binary_value(current_indent, *val.m_data.m_value.binary);
37212|   119k|                return;
37213|      0|            }
37214|       |
37215|  10.5k|            case value_t::boolean:
  ------------------
  |  Branch (37215:13): [True: 10.5k, False: 336k]
  ------------------
37216|  10.5k|            {
37217|  10.5k|                if (val.m_data.m_value.boolean)
  ------------------
  |  Branch (37217:21): [True: 3.25k, False: 7.26k]
  ------------------
37218|  3.25k|                {
37219|  3.25k|                    put_literal("true");
37220|  3.25k|                }
37221|  7.26k|                else
37222|  7.26k|                {
37223|  7.26k|                    put_literal("false");
37224|  7.26k|                }
37225|  10.5k|                return;
37226|      0|            }
37227|       |
37228|  52.3k|            case value_t::number_integer:
  ------------------
  |  Branch (37228:13): [True: 52.3k, False: 294k]
  ------------------
37229|  52.3k|            {
37230|  52.3k|                dump_signed_value(val.m_data.m_value.number_integer);
37231|  52.3k|                return;
37232|      0|            }
37233|       |
37234|  78.0k|            case value_t::number_unsigned:
  ------------------
  |  Branch (37234:13): [True: 78.0k, False: 269k]
  ------------------
37235|  78.0k|            {
37236|  78.0k|                dump_unsigned_value(val.m_data.m_value.number_unsigned);
37237|  78.0k|                return;
37238|      0|            }
37239|       |
37240|  33.8k|            case value_t::number_float:
  ------------------
  |  Branch (37240:13): [True: 33.8k, False: 313k]
  ------------------
37241|  33.8k|            {
37242|  33.8k|                dump_float_value(val.m_data.m_value.number_float);
37243|  33.8k|                return;
37244|      0|            }
37245|       |
37246|      0|            case value_t::discarded:
  ------------------
  |  Branch (37246:13): [True: 0, False: 347k]
  ------------------
37247|      0|            {
37248|      0|                put_literal("<discarded>");
37249|      0|                return;
37250|      0|            }
37251|       |
37252|  8.26k|            case value_t::null:
  ------------------
  |  Branch (37252:13): [True: 8.26k, False: 339k]
  ------------------
37253|  8.26k|            {
37254|  8.26k|                put_literal("null");
37255|  8.26k|                return;
37256|      0|            }
37257|       |
37258|      0|            case value_t::object: // LCOV_EXCL_LINE
  ------------------
  |  Branch (37258:13): [True: 0, False: 347k]
  ------------------
37259|      0|            case value_t::array:  // LCOV_EXCL_LINE
  ------------------
  |  Branch (37259:13): [True: 0, False: 347k]
  ------------------
37260|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (37260:13): [True: 0, False: 347k]
  ------------------
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|   347k|        }
37263|   347k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_string_valueERKSC_:
37268|  45.2k|    {
37269|  45.2k|#if JSON_LITTLE_ENDIAN_TARGET
37270|  45.2k|        if (s.size() <= short_string_max && put_short_quoted(s, "\""))
  ------------------
  |  Branch (37270:13): [True: 44.3k, False: 912]
  |  Branch (37270:45): [True: 24.5k, False: 19.8k]
  ------------------
37271|  24.5k|        {
37272|  24.5k|            return;
37273|  24.5k|        }
37274|  20.7k|#endif
37275|  20.7k|        put_char('"');
37276|  20.7k|        dump_escaped(s);
37277|  20.7k|        put_char('"');
37278|  20.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16put_short_quotedILm2EEEbRKSC_RAT__Kc:
37442|  44.3k|    {
37443|  44.3k|        const std::size_t n = s.size();
37444|  44.3k|        if (n > short_string_max || write_buffer_pos + n + N > write_buffer.size())
  ------------------
  |  Branch (37444:13): [True: 0, False: 44.3k]
  |  Branch (37444:37): [True: 300, False: 44.0k]
  ------------------
37445|    300|        {
37446|    300|            return false;
37447|    300|        }
37448|       |
37449|  44.0k|        char* d = write_buffer.data() + write_buffer_pos + 1;
37450|  44.0k|        const char* const p = s.data();
37451|       |
37452|  44.0k|        if (n >= 8)
  ------------------
  |  Branch (37452:13): [True: 9.64k, False: 34.3k]
  ------------------
37453|  9.64k|        {
37454|  9.64k|#if JSON_SCAN_VECTOR
37455|  9.64k|            if (!(n >= 16 ? copy_plain_vectors(d, p, n) : copy_plain_halves(d, p, n)))
  ------------------
  |  Branch (37455:17): [True: 7.76k, False: 1.88k]
  |  Branch (37455:19): [True: 4.30k, False: 5.34k]
  ------------------
37456|  7.76k|            {
37457|  7.76k|                return false;
37458|  7.76k|            }
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|  9.64k|        }
37470|  34.3k|        else if (n >= 4)
  ------------------
  |  Branch (37470:18): [True: 7.24k, False: 27.1k]
  ------------------
37471|  7.24k|        {
37472|  7.24k|            const auto a = load_word<std::uint32_t>(p);
37473|  7.24k|            const auto b = load_word<std::uint32_t>(p + n - 4);
37474|       |            // the bytes above the string are filled with a plain character
37475|  7.24k|            const std::uint64_t w = a | (static_cast<std::uint64_t>(b) << (8 * (n - 4)))
37476|  7.24k|                                    | (0x4141414141414141ull << (8 * n));
37477|  7.24k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37477:17): [True: 5.67k, False: 1.57k]
  ------------------
37478|  5.67k|            {
37479|  5.67k|                return false;
37480|  5.67k|            }
37481|  1.57k|            store_word(d, a);
37482|  1.57k|            store_word(d + n - 4, b);
37483|  1.57k|        }
37484|  27.1k|        else if (n >= 2)
  ------------------
  |  Branch (37484:18): [True: 3.73k, False: 23.4k]
  ------------------
37485|  3.73k|        {
37486|  3.73k|            const auto a = load_word<std::uint16_t>(p);
37487|  3.73k|            const auto b = load_word<std::uint16_t>(p + n - 2);
37488|  3.73k|            const std::uint64_t w = a | (static_cast<std::uint64_t>(b) << (8 * (n - 2)))
37489|  3.73k|                                    | (0x4141414141414141ull << (8 * n));
37490|  3.73k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37490:17): [True: 2.70k, False: 1.03k]
  ------------------
37491|  2.70k|            {
37492|  2.70k|                return false;
37493|  2.70k|            }
37494|  1.03k|            store_word(d, a);
37495|  1.03k|            store_word(d + n - 2, b);
37496|  1.03k|        }
37497|  23.4k|        else if (n == 1)
  ------------------
  |  Branch (37497:18): [True: 4.86k, False: 18.5k]
  ------------------
37498|  4.86k|        {
37499|  4.86k|            const std::uint64_t w = static_cast<std::uint64_t>(static_cast<unsigned char>(p[0])) | (0x4141414141414141ull << 8u);
37500|  4.86k|            if (swar_not_plain(w) != 0)
  ------------------
  |  Branch (37500:17): [True: 3.36k, False: 1.50k]
  ------------------
37501|  3.36k|            {
37502|  3.36k|                return false;
37503|  3.36k|            }
37504|  1.50k|            *d = p[0];
37505|  1.50k|        }
37506|       |
37507|  24.5k|        d[-1] = '"';
37508|  24.5k|        std::memcpy(d + n, tail, N - 1);
37509|  24.5k|        write_buffer_pos += n + N;
37510|  24.5k|        return true;
37511|  44.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_binary_valueEmRKNS0_27byte_container_with_subtypeISF_EE:
37300|   119k|    {
37301|   119k|        if (pretty_print)
  ------------------
  |  Branch (37301:13): [True: 0, False: 119k]
  ------------------
37302|      0|        {
37303|       |            // variable to hold indentation for the bytes
37304|      0|            const auto new_indent = next_indent(current_indent, indent_step);
37305|       |
37306|      0|            put_literal_indent("{\n", new_indent);
37307|      0|            put_literal("\"bytes\": [");
37308|       |
37309|      0|            if (!binary.empty())
  ------------------
  |  Branch (37309:17): [True: 0, False: 0]
  ------------------
37310|      0|            {
37311|      0|                for (auto i = binary.cbegin(); i != binary.cend() - 1; ++i)
  ------------------
  |  Branch (37311:48): [True: 0, False: 0]
  ------------------
37312|      0|                {
37313|      0|                    dump_byte(*i);
37314|      0|                    put_literal(", ");
37315|      0|                }
37316|      0|                dump_byte(binary.back());
37317|      0|            }
37318|       |
37319|      0|            put_literal_indent("],\n", new_indent);
37320|       |
37321|      0|            put_literal("\"subtype\": ");
37322|      0|            if (binary.has_subtype())
  ------------------
  |  Branch (37322:17): [True: 0, False: 0]
  ------------------
37323|      0|            {
37324|      0|                dump_integer(binary.subtype());
37325|      0|            }
37326|      0|            else
37327|      0|            {
37328|      0|                put_literal("null");
37329|      0|            }
37330|      0|            put_literal_indent("\n", current_indent);
37331|      0|            put_char('}');
37332|      0|        }
37333|   119k|        else
37334|   119k|        {
37335|   119k|            put_literal("{\"bytes\":[");
37336|       |
37337|   119k|            if (!binary.empty())
  ------------------
  |  Branch (37337:17): [True: 13.7k, False: 105k]
  ------------------
37338|  13.7k|            {
37339|  94.3k|                for (auto i = binary.cbegin(); i != binary.cend() - 1; ++i)
  ------------------
  |  Branch (37339:48): [True: 80.6k, False: 13.7k]
  ------------------
37340|  80.6k|                {
37341|  80.6k|                    dump_byte(*i);
37342|  80.6k|                    put_char(',');
37343|  80.6k|                }
37344|  13.7k|                dump_byte(binary.back());
37345|  13.7k|            }
37346|       |
37347|   119k|            put_literal("],\"subtype\":");
37348|   119k|            if (binary.has_subtype())
  ------------------
  |  Branch (37348:17): [True: 0, False: 119k]
  ------------------
37349|      0|            {
37350|      0|                dump_integer(binary.subtype());
37351|      0|                put_char('}');
37352|      0|            }
37353|   119k|            else
37354|   119k|            {
37355|   119k|                put_literal("null}");
37356|   119k|            }
37357|   119k|        }
37358|   119k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm11EEEvRAT__Kc:
38134|   119k|    {
38135|   119k|        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|   119k|        constexpr std::size_t length = N - 1;
38138|   119k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
38139|       |
38140|   119k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|   119k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 168, False: 118k]
  |  |  ------------------
  ------------------
38141|    168|        {
38142|    168|            flush();
38143|    168|        }
38144|   119k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38145|   119k|        write_buffer_pos += length;
38146|   119k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9dump_byteIhEEvT_:
38528|  94.3k|    {
38529|  94.3k|        dump_byte(value, std::integral_constant < bool,
38530|  94.3k|                  std::is_unsigned<ByteType>::value && sizeof(ByteType) == 1
38531|  94.3k|                  && !std::is_same<ByteType, bool>::value > {});
38532|  94.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9dump_byteIhEEvT_NS4_17integral_constantIbLb1EEE:
38542|  94.3k|    {
38543|  94.3k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + 3 > write_buffer.size()))
  ------------------
  |  | 1697|  94.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 192, False: 94.1k]
  |  |  ------------------
  ------------------
38544|    192|        {
38545|    192|            flush();
38546|    192|        }
38547|       |
38548|  94.3k|        const auto byte = static_cast<unsigned>(value);
38549|       |        // Accumulate the offset in a local and store it back once. Writing
38550|       |        // through write_buffer[] is a char write, which may alias any object,
38551|       |        // so with the member updated in place the compiler has to reload and
38552|       |        // store it around every digit - measured 2.4x slower on a dump of a
38553|       |        // multi-megabyte binary value.
38554|  94.3k|        std::size_t pos = write_buffer_pos;
38555|       |
38556|  94.3k|        if (byte >= 100)
  ------------------
  |  Branch (38556:13): [True: 20.5k, False: 73.7k]
  ------------------
38557|  20.5k|        {
38558|  20.5k|            write_buffer[pos++] = static_cast<char>('0' + (byte / 100));
38559|  20.5k|            write_buffer[pos++] = static_cast<char>('0' + ((byte / 10) % 10));
38560|  20.5k|        }
38561|  73.7k|        else if (byte >= 10)
  ------------------
  |  Branch (38561:18): [True: 58.4k, False: 15.3k]
  ------------------
38562|  58.4k|        {
38563|  58.4k|            write_buffer[pos++] = static_cast<char>('0' + (byte / 10));
38564|  58.4k|        }
38565|       |
38566|  94.3k|        write_buffer[pos++] = static_cast<char>('0' + (byte % 10));
38567|       |
38568|  94.3k|        write_buffer_pos = pos;
38569|  94.3k|    }
_ZNK8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEE11has_subtypeEv:
 8516|   158k|    {
 8517|   158k|        return m_has_subtype;
 8518|   158k|    }
_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|  78.0k|    {
38588|  78.0k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
38589|  78.0k|        {
38590|  78.0k|            {
38591|  78.0k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
38592|  78.0k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
38593|  78.0k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
38594|  78.0k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
38595|  78.0k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
38596|  78.0k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
38597|  78.0k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
38598|  78.0k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
38599|  78.0k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
38600|  78.0k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
38601|  78.0k|            }
38602|  78.0k|        };
38603|       |
38604|       |        // special case for "0"
38605|  78.0k|        if (x == 0)
  ------------------
  |  Branch (38605:13): [True: 40.9k, False: 37.0k]
  ------------------
38606|  40.9k|        {
38607|  40.9k|            put_char('0');
38608|  40.9k|            return;
38609|  40.9k|        }
38610|       |
38611|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
38612|  37.0k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1697|  37.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 150, False: 36.9k]
  |  |  ------------------
  ------------------
38613|    150|        {
38614|    150|            flush();
38615|    150|        }
38616|  37.0k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
38617|       |
38618|  37.0k|        number_magnitude_t abs_value;
38619|       |
38620|       |        // one byte for the minus sign
38621|  37.0k|        unsigned int n_chars = 0;
38622|       |
38623|  37.0k|        if (is_negative_number(x))
  ------------------
  |  Branch (38623:13): [True: 0, False: 37.0k]
  ------------------
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|  37.0k|        else
38630|  37.0k|        {
38631|  37.0k|            abs_value = static_cast<number_magnitude_t>(x);
38632|  37.0k|        }
38633|       |
38634|       |        // up to 16 digits: eight at a time (as the digits of floats), written
38635|       |        // without leading zeros
38636|  37.0k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (38636:13): [True: 34.1k, False: 2.92k]
  ------------------
38637|  34.1k|        {
38638|  34.1k|            const auto value = static_cast<std::uint64_t>(abs_value); // fits: abs_value < 10^16
38639|  34.1k|            const std::uint64_t upper = value / 100000000u;
38640|  34.1k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (38640:70): [True: 1.55k, False: 32.5k]
  ------------------
38641|  34.1k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
38642|  34.1k|            char* const p = buffer_ptr + n_chars;
38643|  34.1k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
38644|  34.1k|            n_chars += 8 - leading;
38645|  34.1k|            if (upper != 0)
  ------------------
  |  Branch (38645:17): [True: 1.55k, False: 32.5k]
  ------------------
38646|  1.55k|            {
38647|  1.55k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
38648|  1.55k|                n_chars += 8;
38649|  1.55k|            }
38650|  34.1k|            write_buffer_pos += n_chars;
38651|  34.1k|            return;
38652|  34.1k|        }
38653|       |
38654|       |        // 17 to 20 digits: the first one to four, then twice eight
38655|  2.92k|        if (magnitude_fits_64_bits(abs_value, std::integral_constant<bool, magnitude_has_at_most_64_bits>()))
  ------------------
  |  Branch (38655:13): [True: 2.92k, False: 0]
  ------------------
38656|  2.92k|        {
38657|  2.92k|            const auto value = static_cast<std::uint64_t>(abs_value);
38658|  2.92k|            const std::uint64_t top = value / 10000000000000000u; // 1 to 1844
38659|  2.92k|            const std::uint64_t low16 = value - (top * 10000000000000000u);
38660|  2.92k|            const std::uint64_t middle = low16 / 100000000u;
38661|  2.92k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(top);
38662|  2.92k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
38663|  2.92k|            char* const p = buffer_ptr + n_chars;
38664|  2.92k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
38665|  2.92k|            dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(middle) + 0x3030303030303030u);
38666|  2.92k|            dtoa_impl::store_msb_first(p + 16 - leading, dtoa_impl::eight_digit_bytes(low16 - (middle * 100000000u)) + 0x3030303030303030u);
38667|  2.92k|            write_buffer_pos += n_chars + 24 - leading;
38668|  2.92k|            return;
38669|  2.92k|        }
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|  37.0k|    {
38510|  37.0k|        return false;
38511|  37.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11remove_signEl:
38847|  52.3k|    {
38848|  52.3k|        JSON_ASSERT(x < 0);
  ------------------
  |  | 2643|  52.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (38848:9): [True: 52.3k, False: 0]
  ------------------
38849|  52.3k|        return static_cast<number_magnitude_t>(-(x + 1)) + 1;
38850|  52.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl17eight_digit_bytesEm:
36226|   108k|{
36227|   108k|    const std::uint64_t abcd_efgh = abcdefgh + (((std::uint64_t{1} << 32u) - 10000u) * ((abcdefgh * (((std::uint64_t{1} << 40u) / 10000u) + 1u)) >> 40u));
36228|   108k|    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|   108k|    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|   108k|}
_ZN8nlohmann16json_abi_v3_12_06detail19count_leading_zerosEm:
 8987|   161k|{
 8988|   161k|#if defined(__GNUC__) || defined(__clang__)
 8989|   161k|    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|   161k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl15store_msb_firstEPcm:
36236|   111k|{
36237|   111k|#if JSON_LITTLE_ENDIAN_TARGET
36238|   111k|    v = byteswap(v);
36239|   111k|    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|   111k|}
_ZN8nlohmann16json_abi_v3_12_06detail8byteswapEm:
 9097|   163k|{
 9098|   163k|#if defined(__GNUC__) || defined(__clang__)
 9099|   163k|    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|   163k|}
_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|  5.26k|    {
38829|  5.26k|        return true;
38830|  5.26k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm13EEEvRAT__Kc:
38134|   119k|    {
38135|   119k|        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|   119k|        constexpr std::size_t length = N - 1;
38138|   119k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
38139|       |
38140|   119k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|   119k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 252, False: 118k]
  |  |  ------------------
  ------------------
38141|    252|        {
38142|    252|            flush();
38143|    252|        }
38144|   119k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38145|   119k|        write_buffer_pos += length;
38146|   119k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm5EEEvRAT__Kc:
38134|  15.9k|    {
38135|  15.9k|        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|  15.9k|        constexpr std::size_t length = N - 1;
38138|  15.9k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
38139|       |
38140|  15.9k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|  15.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 216, False: 15.7k]
  |  |  ------------------
  ------------------
38141|    216|        {
38142|    216|            flush();
38143|    216|        }
38144|  15.9k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38145|  15.9k|        write_buffer_pos += length;
38146|  15.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm6EEEvRAT__Kc:
38134|   126k|    {
38135|   126k|        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|   126k|        constexpr std::size_t length = N - 1;
38138|   126k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
38139|       |
38140|   126k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1697|   126k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 270, False: 126k]
  |  |  ------------------
  ------------------
38141|    270|        {
38142|    270|            flush();
38143|    270|        }
38144|   126k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
38145|   126k|        write_buffer_pos += length;
38146|   126k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_signed_valueEl:
37285|  52.3k|    {
37286|  52.3k|        dump_integer(x);
37287|  52.3k|    }
_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|  52.3k|    {
38588|  52.3k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
38589|  52.3k|        {
38590|  52.3k|            {
38591|  52.3k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
38592|  52.3k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
38593|  52.3k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
38594|  52.3k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
38595|  52.3k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
38596|  52.3k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
38597|  52.3k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
38598|  52.3k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
38599|  52.3k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
38600|  52.3k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
38601|  52.3k|            }
38602|  52.3k|        };
38603|       |
38604|       |        // special case for "0"
38605|  52.3k|        if (x == 0)
  ------------------
  |  Branch (38605:13): [True: 0, False: 52.3k]
  ------------------
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|  52.3k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1697|  52.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 252, False: 52.0k]
  |  |  ------------------
  ------------------
38613|    252|        {
38614|    252|            flush();
38615|    252|        }
38616|  52.3k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
38617|       |
38618|  52.3k|        number_magnitude_t abs_value;
38619|       |
38620|       |        // one byte for the minus sign
38621|  52.3k|        unsigned int n_chars = 0;
38622|       |
38623|  52.3k|        if (is_negative_number(x))
  ------------------
  |  Branch (38623:13): [True: 52.3k, False: 0]
  ------------------
38624|  52.3k|        {
38625|  52.3k|            *buffer_ptr = '-';
38626|  52.3k|            abs_value = remove_sign(static_cast<number_integer_t>(x));
38627|  52.3k|            n_chars = 1;
38628|  52.3k|        }
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|  52.3k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (38636:13): [True: 50.0k, False: 2.33k]
  ------------------
38637|  50.0k|        {
38638|  50.0k|            const auto value = static_cast<std::uint64_t>(abs_value); // fits: abs_value < 10^16
38639|  50.0k|            const std::uint64_t upper = value / 100000000u;
38640|  50.0k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (38640:70): [True: 2.14k, False: 47.8k]
  ------------------
38641|  50.0k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
38642|  50.0k|            char* const p = buffer_ptr + n_chars;
38643|  50.0k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
38644|  50.0k|            n_chars += 8 - leading;
38645|  50.0k|            if (upper != 0)
  ------------------
  |  Branch (38645:17): [True: 2.14k, False: 47.8k]
  ------------------
38646|  2.14k|            {
38647|  2.14k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
38648|  2.14k|                n_chars += 8;
38649|  2.14k|            }
38650|  50.0k|            write_buffer_pos += n_chars;
38651|  50.0k|            return;
38652|  50.0k|        }
38653|       |
38654|       |        // 17 to 20 digits: the first one to four, then twice eight
38655|  2.33k|        if (magnitude_fits_64_bits(abs_value, std::integral_constant<bool, magnitude_has_at_most_64_bits>()))
  ------------------
  |  Branch (38655:13): [True: 2.33k, False: 0]
  ------------------
38656|  2.33k|        {
38657|  2.33k|            const auto value = static_cast<std::uint64_t>(abs_value);
38658|  2.33k|            const std::uint64_t top = value / 10000000000000000u; // 1 to 1844
38659|  2.33k|            const std::uint64_t low16 = value - (top * 10000000000000000u);
38660|  2.33k|            const std::uint64_t middle = low16 / 100000000u;
38661|  2.33k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(top);
38662|  2.33k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
38663|  2.33k|            char* const p = buffer_ptr + n_chars;
38664|  2.33k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
38665|  2.33k|            dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(middle) + 0x3030303030303030u);
38666|  2.33k|            dtoa_impl::store_msb_first(p + 16 - leading, dtoa_impl::eight_digit_bytes(low16 - (middle * 100000000u)) + 0x3030303030303030u);
38667|  2.33k|            write_buffer_pos += n_chars + 24 - leading;
38668|  2.33k|            return;
38669|  2.33k|        }
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|  52.3k|    {
38504|  52.3k|        return x < 0;
38505|  52.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE19dump_unsigned_valueEm:
37290|  78.0k|    {
37291|  78.0k|        dump_integer(x);
37292|  78.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16dump_float_valueEd:
37295|  33.8k|    {
37296|  33.8k|        dump_float(x);
37297|  33.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEd:
38712|  33.8k|    {
38713|       |        // NaN / inf
38714|  33.8k|        if (!std::isfinite(x))
  ------------------
  |  Branch (38714:13): [True: 4.43k, False: 29.4k]
  ------------------
38715|  4.43k|        {
38716|  4.43k|            put_literal("null");
38717|  4.43k|            return;
38718|  4.43k|        }
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|  29.4k|        static constexpr bool is_ieee_single_or_double
38726|  29.4k|            = (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|  29.4k|        dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
38730|  29.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEdNS4_17integral_constantIbLb1EEE:
38733|  29.4k|    {
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|  29.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1697|  29.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 186, False: 29.2k]
  |  |  ------------------
  ------------------
38737|    186|        {
38738|    186|            flush();
38739|    186|        }
38740|  29.4k|        auto* begin = write_buffer.data() + write_buffer_pos;
38741|  29.4k|        auto* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
38742|  29.4k|        write_buffer_pos += static_cast<std::size_t>(end - begin);
38743|  29.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail8to_charsIdEEPcS3_PKcT_:
36669|  29.4k|{
36670|  29.4k|    JSON_ASSERT(std::isfinite(value));
  ------------------
  |  | 2643|  29.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36670:5): [True: 29.4k, False: 0]
  ------------------
36671|       |
36672|       |    // Use signbit(value) instead of (value < 0) since signbit works for -0.
36673|  29.4k|    if (std::signbit(value))
  ------------------
  |  Branch (36673:9): [True: 15.3k, False: 14.0k]
  ------------------
36674|  15.3k|    {
36675|  15.3k|        value = -value;
36676|  15.3k|        *first++ = '-';
36677|  15.3k|    }
36678|       |
36679|  29.4k|#ifdef __GNUC__
36680|  29.4k|    JSON_HEDLEY_DIAGNOSTIC_PUSH
36681|  29.4k|    JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
36682|  29.4k|#endif
36683|  29.4k|    if (value == 0) // +-0
  ------------------
  |  Branch (36683:9): [True: 1.00k, False: 28.4k]
  ------------------
36684|  1.00k|    {
36685|  1.00k|        *first++ = '0';
36686|       |        // Make it look like a floating-point number (#362, #378)
36687|  1.00k|        *first++ = '.';
36688|  1.00k|        *first++ = '0';
36689|  1.00k|        return first;
36690|  1.00k|    }
36691|  28.4k|#ifdef __GNUC__
36692|  28.4k|    JSON_HEDLEY_DIAGNOSTIC_POP
36693|  28.4k|#endif
36694|       |
36695|  28.4k|    return dtoa_impl::write_positive(first, last, value);
36696|  29.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_:
36649|  28.4k|{
36650|  28.4k|    return write_positive(first, last, value, is_binary64<FloatType> {});
36651|  28.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_NSt3__117integral_constantIbLb1EEE:
36631|  28.4k|{
36632|  28.4k|    return write_positive_zmij(first, last, value);
36633|  28.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl19write_positive_zmijIdEEPcS4_PKcT_:
36609|  28.4k|{
36610|  28.4k|    static_assert(is_binary64<FloatType>::value,
36611|  28.4k|                  "internal error: the conversion of Zmij needs IEEE 754 binary64 numbers");
36612|  28.4k|    const auto bits = bit_cast<std::uint64_t>(value);
36613|  28.4k|    const zmij::shortest_decimal d = zmij::to_shortest(bits);
36614|  28.4k|    if (JSON_HEDLEY_LIKELY(last - first >= 41))
  ------------------
  |  | 1696|  28.4k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 28.4k, False: 0]
  |  |  ------------------
  ------------------
36615|  28.4k|    {
36616|  28.4k|        return write_shortest(first, d);
36617|  28.4k|    }
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|  28.4k|{
 9055|  28.4k|    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|  28.4k|    To to {};
 9060|  28.4k|    std::memcpy(&to, &from, sizeof(To));
 9061|  28.4k|    return to;
 9062|  28.4k|#endif
 9063|  28.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11to_shortestEm:
35145|  28.4k|{
35146|  28.4k|    constexpr int extra_shift = 9;
35147|  28.4k|    const auto raw_exp = static_cast<int>((bits >> 52u) & 0x7FFu);
35148|  28.4k|    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|  28.4k|    const bool regular = bin_sig != 0 || raw_exp <= 1;
  ------------------
  |  Branch (35150:26): [True: 26.6k, False: 1.81k]
  |  Branch (35150:42): [True: 0, False: 1.81k]
  ------------------
35151|  28.4k|    const int bin_exp = (raw_exp == 0 ? 1 : raw_exp) - 1075;
  ------------------
  |  Branch (35151:26): [True: 2.60k, False: 25.8k]
  ------------------
35152|  28.4k|    if (raw_exp != 0)
  ------------------
  |  Branch (35152:9): [True: 25.8k, False: 2.60k]
  ------------------
35153|  25.8k|    {
35154|  25.8k|        bin_sig |= std::uint64_t{1} << 52u;
35155|  25.8k|    }
35156|       |    // floor(log10(2^bin_exp)), or floor(log10(3/4 * 2^bin_exp)) for the irregular case
35157|  28.4k|    const int dec_exp = ((bin_exp * 315653) - (regular ? 0 : 131072)) >> 20;
  ------------------
  |  Branch (35157:48): [True: 26.6k, False: 1.81k]
  ------------------
35158|       |    // scaled by 10^(-dec_exp - 1): the integral part is the shorter candidate
35159|  28.4k|    const int shift = bin_exp + ((-(dec_exp + 1) * 217707) >> 16) + 1 + extra_shift;
35160|  28.4k|    const uint128_parts p10 = pow10(-dec_exp - 1);
35161|  28.4k|    const uint128_parts p = umul192_hi128(p10.high, p10.low, bin_sig << static_cast<unsigned>(shift));
35162|  28.4k|    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|  28.4k|    constexpr auto fractional_low_shift = static_cast<unsigned>(extra_shift);
35165|  28.4k|    constexpr unsigned fractional_high_shift = 64u - fractional_low_shift;
35166|  28.4k|    const std::uint64_t fractional = (p.high << fractional_high_shift) | (p.low >> fractional_low_shift);
35167|  28.4k|    std::uint64_t digit = 0;
35168|  28.4k|    bool round_up = false;
35169|  28.4k|    bool round_down = false;
35170|  28.4k|    if (JSON_HEDLEY_LIKELY(regular))
  ------------------
  |  | 1696|  28.4k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 26.6k, False: 1.81k]
  |  |  ------------------
  ------------------
35171|  26.6k|    {
35172|  26.6k|        const std::uint64_t half_ulp = (p10.high >> static_cast<unsigned>(extra_shift + 1 - shift)) + (1 - (bin_sig & 1u));
35173|  26.6k|        round_up = fractional + half_ulp < fractional;
35174|  26.6k|        round_down = half_ulp > fractional;
35175|       |        // the last digit of the longer candidate, rounded to nearest
35176|  26.6k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) + 6);
35177|  26.6k|        if (fractional == (std::uint64_t{1} << 62u))
  ------------------
  |  Branch (35177:13): [True: 1.22k, False: 25.3k]
  ------------------
35178|  1.22k|        {
35179|  1.22k|            digit = 2; // 2.5 rounds to 2
35180|  1.22k|        }
35181|  26.6k|    }
35182|  1.81k|    else
35183|  1.81k|    {
35184|  1.81k|        const std::uint64_t half_ulp = p10.high >> static_cast<unsigned>(extra_shift + 1 - shift);
35185|  1.81k|        round_up = half_ulp > ~std::uint64_t{0} - fractional;
35186|  1.81k|        round_down = (half_ulp >> 1u) > fractional;
35187|  1.81k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) - 1);
35188|  1.81k|        const std::uint64_t lowest = umul128_add_hi64(fractional - (half_ulp >> 1u), 10, ~std::uint64_t{0});
35189|  1.81k|        digit = digit < lowest ? lowest : digit;
  ------------------
  |  Branch (35189:17): [True: 912, False: 900]
  ------------------
35190|  1.81k|    }
35191|  28.4k|    integral += round_up ? 1u : 0u;
  ------------------
  |  Branch (35191:17): [True: 2.93k, False: 25.4k]
  ------------------
35192|       |    // if the shorter candidate is outside the rounding interval: one digit more
35193|  28.4k|    return shortest_decimal{integral, dec_exp, static_cast<unsigned char>(digit), !round_up && !round_down};
  ------------------
  |  Branch (35193:83): [True: 25.4k, False: 2.93k]
  |  Branch (35193:96): [True: 7.63k, False: 17.8k]
  ------------------
35194|  28.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij5pow10Ei:
35099|  28.4k|{
35100|  28.4k|    if (k > pow5_128_largest_power)
  ------------------
  |  Branch (35100:9): [True: 3.13k, False: 25.2k]
  ------------------
35101|  3.13k|    {
35102|  3.13k|        return compute_pow10(k); // (only for the smallest doubles)
35103|  3.13k|    }
35104|  25.2k|    const auto i = 2 * static_cast<std::size_t>(k - pow5_128_smallest_power);
35105|  25.2k|    uint128_parts r{pow5_128()[i + 1], pow5_128()[i]};
35106|  25.2k|    const std::uint64_t adjust = static_cast<unsigned>(k + 27) < 27u ? 1u : 0u;
  ------------------
  |  Branch (35106:34): [True: 2.34k, False: 22.9k]
  ------------------
35107|  25.2k|    r.high -= r.low < adjust ? 1u : 0u;
  ------------------
  |  Branch (35107:15): [True: 0, False: 25.2k]
  ------------------
35108|  25.2k|    r.low -= adjust;
35109|  25.2k|    return r;
35110|  28.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13compute_pow10Ei:
35069|  3.13k|{
35070|  3.13k|    const auto i = static_cast<unsigned>(k + 307);
35071|  3.13k|    const std::uint64_t m = pow10_minor()[(i + 24) % 28];
35072|  3.13k|    const std::size_t j = 2 * static_cast<std::size_t>((i + 24) / 28);
35073|  3.13k|    const std::uint64_t h_hi = pow10_major()[j];
35074|  3.13k|    const std::uint64_t h_lo = pow10_major()[j + 1];
35075|  3.13k|    const std::uint64_t h1 = full_multiplication(h_lo, m).high;
35076|  3.13k|    const std::uint64_t c0 = h_lo * m;
35077|  3.13k|    const std::uint64_t c1 = h1 + (h_hi * m);
35078|  3.13k|    const std::uint64_t c2 = (c1 < h1 ? 1u : 0u) + full_multiplication(h_hi, m).high;
  ------------------
  |  Branch (35078:31): [True: 366, False: 2.76k]
  ------------------
35079|  3.13k|    uint128_parts r{};
35080|  3.13k|    if ((c2 >> 63u) != 0)
  ------------------
  |  Branch (35080:9): [True: 522, False: 2.61k]
  ------------------
35081|    522|    {
35082|    522|        r.high = c2;
35083|    522|        r.low = c1;
35084|    522|    }
35085|  2.61k|    else
35086|  2.61k|    {
35087|  2.61k|        r.high = (c2 << 1u) | (c1 >> 63u);
35088|  2.61k|        r.low = (c1 << 1u) | (c0 >> 63u);
35089|  2.61k|    }
35090|  3.13k|    r.low -= (pow10_fixups()[i >> 5u] >> (i & 31u)) & 1u;
35091|  3.13k|    return r;
35092|  3.13k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_minorEv:
35017|  3.13k|{
35018|  3.13k|    static const std::array<std::uint64_t, 28> table =
35019|  3.13k|    {
35020|  3.13k|        {
35021|  3.13k|            0x8000000000000000u, 0xa000000000000000u, 0xc800000000000000u, 0xfa00000000000000u, 0x9c40000000000000u,
35022|  3.13k|            0xc350000000000000u, 0xf424000000000000u, 0x9896800000000000u, 0xbebc200000000000u, 0xee6b280000000000u,
35023|  3.13k|            0x9502f90000000000u, 0xba43b74000000000u, 0xe8d4a51000000000u, 0x9184e72a00000000u, 0xb5e620f480000000u,
35024|  3.13k|            0xe35fa931a0000000u, 0x8e1bc9bf04000000u, 0xb1a2bc2ec5000000u, 0xde0b6b3a76400000u, 0x8ac7230489e80000u,
35025|  3.13k|            0xad78ebc5ac620000u, 0xd8d726b7177a8000u, 0x878678326eac9000u, 0xa968163f0a57b400u, 0xd3c21bcecceda100u,
35026|  3.13k|            0x84595161401484a0u, 0xa56fa5b99019a5c8u, 0xcecb8f27f4200f3au
35027|  3.13k|        }
35028|  3.13k|    };
35029|  3.13k|    return table;
35030|  3.13k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_majorEv:
35034|  6.26k|{
35035|  6.26k|    static const std::array<std::uint64_t, 50> table =
35036|  6.26k|    {
35037|  6.26k|        {
35038|  6.26k|            0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3eu, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44ddau, 0xb1442798f49ffb4au, 0x99cd11cfdf41779du,
35039|  6.26k|            0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u, 0xb4bca50b065abe63u, 0x0fed077a756b53aau, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d543u,
35040|  6.26k|            0xb84687c269ef3bfbu, 0x3d5d514f40eea742u, 0xba121a4650e4ddebu, 0x92f34d62616ce413u, 0xbbe226efb628afeau, 0x890489f70a55368cu,
35041|  6.26k|            0xbdb6b8e905cb600fu, 0x5400e987bbc1c921u, 0xbf8fdb78849a5f96u, 0xde98520472bdd034u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
35042|  6.26k|            0xc350000000000000u, 0x0000000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef6u,
35043|  6.26k|            0xc913936dd571c84cu, 0x03bc3a19cd1e38eau, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc6u, 0xcd036837130890a1u, 0x36dba887c37a8c10u,
35044|  6.26k|            0xcf02b2c21207ef2eu, 0x94f967e45e03f4bcu, 0xd106f86e69d785c7u, 0xe13336d701beba52u, 0xd31045a8341ca07cu, 0x1ede48111209a051u,
35045|  6.26k|            0xd51ea6fa85785631u, 0x552a74227f3ea566u, 0xd732290fbacaf133u, 0xa97c177947ad4096u, 0xd94ad8b1c7380874u, 0x18375281ae7822bdu,
35046|  6.26k|            0xdb68c2ca82ed2a05u, 0xa67398db9f6820e1u
35047|  6.26k|        }
35048|  6.26k|    };
35049|  6.26k|    return table;
35050|  6.26k|}
_ZN8nlohmann16json_abi_v3_12_06detail19full_multiplicationEmm:
 9120|  93.3k|{
 9121|  93.3k|#if defined(__SIZEOF_INT128__)
 9122|  93.3k|    __extension__ using uint128 = unsigned __int128;
 9123|  93.3k|    const uint128 r = static_cast<uint128>(a) * b;
 9124|  93.3k|    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|  93.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij12pow10_fixupsEv:
35054|  3.13k|{
35055|  3.13k|    static const std::array<std::uint32_t, 21> table =
35056|  3.13k|    {
35057|  3.13k|        {
35058|  3.13k|            0x8d8fc810u, 0x06100293u, 0x19000000u, 0x00100000u, 0x00000908u, 0x00000000u, 0x04e00300u, 0x3807e0b2u, 0x3d83d793u, 0x0006f5ccu,
35059|  3.13k|            0x00000000u, 0xffff0000u, 0x8076337du, 0x4ff45ba0u, 0x09405033u, 0x034376d9u, 0x09000000u, 0x4e100501u, 0x076d14dcu, 0xf964f45eu,
35060|  3.13k|            0x0000003du
35061|  3.13k|        }
35062|  3.13k|    };
35063|  3.13k|    return table;
35064|  3.13k|}
_ZN8nlohmann16json_abi_v3_12_06detail8pow5_128Ev:
10938|  50.5k|{
10939|  50.5k|    static const std::array<std::uint64_t, 1302> table =
10940|  50.5k|    {
10941|  50.5k|        {
10942|  50.5k|            0xeef453d6923bd65au, 0x113faa2906a13b3fu, 0x9558b4661b6565f8u, 0x4ac7ca59a424c507u,
10943|  50.5k|            0xbaaee17fa23ebf76u, 0x5d79bcf00d2df649u, 0xe95a99df8ace6f53u, 0xf4d82c2c107973dcu,
10944|  50.5k|            0x91d8a02bb6c10594u, 0x79071b9b8a4be869u, 0xb64ec836a47146f9u, 0x9748e2826cdee284u,
10945|  50.5k|            0xe3e27a444d8d98b7u, 0xfd1b1b2308169b25u, 0x8e6d8c6ab0787f72u, 0xfe30f0f5e50e20f7u,
10946|  50.5k|            0xb208ef855c969f4fu, 0xbdbd2d335e51a935u, 0xde8b2b66b3bc4723u, 0xad2c788035e61382u,
10947|  50.5k|            0x8b16fb203055ac76u, 0x4c3bcb5021afcc31u, 0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3du,
10948|  50.5k|            0xd953e8624b85dd78u, 0xd71d6dad34a2af0du, 0x87d4713d6f33aa6bu, 0x8672648c40e5ad68u,
10949|  50.5k|            0xa9c98d8ccb009506u, 0x680efdaf511f18c2u, 0xd43bf0effdc0ba48u, 0x0212bd1b2566def2u,
10950|  50.5k|            0x84a57695fe98746du, 0x014bb630f7604b57u, 0xa5ced43b7e3e9188u, 0x419ea3bd35385e2du,
10951|  50.5k|            0xcf42894a5dce35eau, 0x52064cac828675b9u, 0x818995ce7aa0e1b2u, 0x7343efebd1940993u,
10952|  50.5k|            0xa1ebfb4219491a1fu, 0x1014ebe6c5f90bf8u, 0xca66fa129f9b60a6u, 0xd41a26e077774ef6u,
10953|  50.5k|            0xfd00b897478238d0u, 0x8920b098955522b4u, 0x9e20735e8cb16382u, 0x55b46e5f5d5535b0u,
10954|  50.5k|            0xc5a890362fddbc62u, 0xeb2189f734aa831du, 0xf712b443bbd52b7bu, 0xa5e9ec7501d523e4u,
10955|  50.5k|            0x9a6bb0aa55653b2du, 0x47b233c92125366eu, 0xc1069cd4eabe89f8u, 0x999ec0bb696e840au,
10956|  50.5k|            0xf148440a256e2c76u, 0xc00670ea43ca250du, 0x96cd2a865764dbcau, 0x380406926a5e5728u,
10957|  50.5k|            0xbc807527ed3e12bcu, 0xc605083704f5ecf2u, 0xeba09271e88d976bu, 0xf7864a44c633682eu,
10958|  50.5k|            0x93445b8731587ea3u, 0x7ab3ee6afbe0211du, 0xb8157268fdae9e4cu, 0x5960ea05bad82964u,
10959|  50.5k|            0xe61acf033d1a45dfu, 0x6fb92487298e33bdu, 0x8fd0c16206306babu, 0xa5d3b6d479f8e056u,
10960|  50.5k|            0xb3c4f1ba87bc8696u, 0x8f48a4899877186cu, 0xe0b62e2929aba83cu, 0x331acdabfe94de87u,
10961|  50.5k|            0x8c71dcd9ba0b4925u, 0x9ff0c08b7f1d0b14u, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44dd9u,
10962|  50.5k|            0xdb71e91432b1a24au, 0xc9e82cd9f69d6150u, 0x892731ac9faf056eu, 0xbe311c083a225cd2u,
10963|  50.5k|            0xab70fe17c79ac6cau, 0x6dbd630a48aaf406u, 0xd64d3d9db981787du, 0x092cbbccdad5b108u,
10964|  50.5k|            0x85f0468293f0eb4eu, 0x25bbf56008c58ea5u, 0xa76c582338ed2621u, 0xaf2af2b80af6f24eu,
10965|  50.5k|            0xd1476e2c07286faau, 0x1af5af660db4aee1u, 0x82cca4db847945cau, 0x50d98d9fc890ed4du,
10966|  50.5k|            0xa37fce126597973cu, 0xe50ff107bab528a0u, 0xcc5fc196fefd7d0cu, 0x1e53ed49a96272c8u,
10967|  50.5k|            0xff77b1fcbebcdc4fu, 0x25e8e89c13bb0f7au, 0x9faacf3df73609b1u, 0x77b191618c54e9acu,
10968|  50.5k|            0xc795830d75038c1du, 0xd59df5b9ef6a2417u, 0xf97ae3d0d2446f25u, 0x4b0573286b44ad1du,
10969|  50.5k|            0x9becce62836ac577u, 0x4ee367f9430aec32u, 0xc2e801fb244576d5u, 0x229c41f793cda73fu,
10970|  50.5k|            0xf3a20279ed56d48au, 0x6b43527578c1110fu, 0x9845418c345644d6u, 0x830a13896b78aaa9u,
10971|  50.5k|            0xbe5691ef416bd60cu, 0x23cc986bc656d553u, 0xedec366b11c6cb8fu, 0x2cbfbe86b7ec8aa8u,
10972|  50.5k|            0x94b3a202eb1c3f39u, 0x7bf7d71432f3d6a9u, 0xb9e08a83a5e34f07u, 0xdaf5ccd93fb0cc53u,
10973|  50.5k|            0xe858ad248f5c22c9u, 0xd1b3400f8f9cff68u, 0x91376c36d99995beu, 0x23100809b9c21fa1u,
10974|  50.5k|            0xb58547448ffffb2du, 0xabd40a0c2832a78au, 0xe2e69915b3fff9f9u, 0x16c90c8f323f516cu,
10975|  50.5k|            0x8dd01fad907ffc3bu, 0xae3da7d97f6792e3u, 0xb1442798f49ffb4au, 0x99cd11cfdf41779cu,
10976|  50.5k|            0xdd95317f31c7fa1du, 0x40405643d711d583u, 0x8a7d3eef7f1cfc52u, 0x482835ea666b2572u,
10977|  50.5k|            0xad1c8eab5ee43b66u, 0xda3243650005eecfu, 0xd863b256369d4a40u, 0x90bed43e40076a82u,
10978|  50.5k|            0x873e4f75e2224e68u, 0x5a7744a6e804a291u, 0xa90de3535aaae202u, 0x711515d0a205cb36u,
10979|  50.5k|            0xd3515c2831559a83u, 0x0d5a5b44ca873e03u, 0x8412d9991ed58091u, 0xe858790afe9486c2u,
10980|  50.5k|            0xa5178fff668ae0b6u, 0x626e974dbe39a872u, 0xce5d73ff402d98e3u, 0xfb0a3d212dc8128fu,
10981|  50.5k|            0x80fa687f881c7f8eu, 0x7ce66634bc9d0b99u, 0xa139029f6a239f72u, 0x1c1fffc1ebc44e80u,
10982|  50.5k|            0xc987434744ac874eu, 0xa327ffb266b56220u, 0xfbe9141915d7a922u, 0x4bf1ff9f0062baa8u,
10983|  50.5k|            0x9d71ac8fada6c9b5u, 0x6f773fc3603db4a9u, 0xc4ce17b399107c22u, 0xcb550fb4384d21d3u,
10984|  50.5k|            0xf6019da07f549b2bu, 0x7e2a53a146606a48u, 0x99c102844f94e0fbu, 0x2eda7444cbfc426du,
10985|  50.5k|            0xc0314325637a1939u, 0xfa911155fefb5308u, 0xf03d93eebc589f88u, 0x793555ab7eba27cau,
10986|  50.5k|            0x96267c7535b763b5u, 0x4bc1558b2f3458deu, 0xbbb01b9283253ca2u, 0x9eb1aaedfb016f16u,
10987|  50.5k|            0xea9c227723ee8bcbu, 0x465e15a979c1cadcu, 0x92a1958a7675175fu, 0x0bfacd89ec191ec9u,
10988|  50.5k|            0xb749faed14125d36u, 0xcef980ec671f667bu, 0xe51c79a85916f484u, 0x82b7e12780e7401au,
10989|  50.5k|            0x8f31cc0937ae58d2u, 0xd1b2ecb8b0908810u, 0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u,
10990|  50.5k|            0xdfbdcece67006ac9u, 0x67a791e093e1d49au, 0x8bd6a141006042bdu, 0xe0c8bb2c5c6d24e0u,
10991|  50.5k|            0xaecc49914078536du, 0x58fae9f773886e18u, 0xda7f5bf590966848u, 0xaf39a475506a899eu,
10992|  50.5k|            0x888f99797a5e012du, 0x6d8406c952429603u, 0xaab37fd7d8f58178u, 0xc8e5087ba6d33b83u,
10993|  50.5k|            0xd5605fcdcf32e1d6u, 0xfb1e4a9a90880a64u, 0x855c3be0a17fcd26u, 0x5cf2eea09a55067fu,
10994|  50.5k|            0xa6b34ad8c9dfc06fu, 0xf42faa48c0ea481eu, 0xd0601d8efc57b08bu, 0xf13b94daf124da26u,
10995|  50.5k|            0x823c12795db6ce57u, 0x76c53d08d6b70858u, 0xa2cb1717b52481edu, 0x54768c4b0c64ca6eu,
10996|  50.5k|            0xcb7ddcdda26da268u, 0xa9942f5dcf7dfd09u, 0xfe5d54150b090b02u, 0xd3f93b35435d7c4cu,
10997|  50.5k|            0x9efa548d26e5a6e1u, 0xc47bc5014a1a6dafu, 0xc6b8e9b0709f109au, 0x359ab6419ca1091bu,
10998|  50.5k|            0xf867241c8cc6d4c0u, 0xc30163d203c94b62u, 0x9b407691d7fc44f8u, 0x79e0de63425dcf1du,
10999|  50.5k|            0xc21094364dfb5636u, 0x985915fc12f542e4u, 0xf294b943e17a2bc4u, 0x3e6f5b7b17b2939du,
11000|  50.5k|            0x979cf3ca6cec5b5au, 0xa705992ceecf9c42u, 0xbd8430bd08277231u, 0x50c6ff782a838353u,
11001|  50.5k|            0xece53cec4a314ebdu, 0xa4f8bf5635246428u, 0x940f4613ae5ed136u, 0x871b7795e136be99u,
11002|  50.5k|            0xb913179899f68584u, 0x28e2557b59846e3fu, 0xe757dd7ec07426e5u, 0x331aeada2fe589cfu,
11003|  50.5k|            0x9096ea6f3848984fu, 0x3ff0d2c85def7621u, 0xb4bca50b065abe63u, 0x0fed077a756b53a9u,
11004|  50.5k|            0xe1ebce4dc7f16dfbu, 0xd3e8495912c62894u, 0x8d3360f09cf6e4bdu, 0x64712dd7abbbd95cu,
11005|  50.5k|            0xb080392cc4349decu, 0xbd8d794d96aacfb3u, 0xdca04777f541c567u, 0xecf0d7a0fc5583a0u,
11006|  50.5k|            0x89e42caaf9491b60u, 0xf41686c49db57244u, 0xac5d37d5b79b6239u, 0x311c2875c522ced5u,
11007|  50.5k|            0xd77485cb25823ac7u, 0x7d633293366b828bu, 0x86a8d39ef77164bcu, 0xae5dff9c02033197u,
11008|  50.5k|            0xa8530886b54dbdebu, 0xd9f57f830283fdfcu, 0xd267caa862a12d66u, 0xd072df63c324fd7bu,
11009|  50.5k|            0x8380dea93da4bc60u, 0x4247cb9e59f71e6du, 0xa46116538d0deb78u, 0x52d9be85f074e608u,
11010|  50.5k|            0xcd795be870516656u, 0x67902e276c921f8bu, 0x806bd9714632dff6u, 0x00ba1cd8a3db53b6u,
11011|  50.5k|            0xa086cfcd97bf97f3u, 0x80e8a40eccd228a4u, 0xc8a883c0fdaf7df0u, 0x6122cd128006b2cdu,
11012|  50.5k|            0xfad2a4b13d1b5d6cu, 0x796b805720085f81u, 0x9cc3a6eec6311a63u, 0xcbe3303674053bb0u,
11013|  50.5k|            0xc3f490aa77bd60fcu, 0xbedbfc4411068a9cu, 0xf4f1b4d515acb93bu, 0xee92fb5515482d44u,
11014|  50.5k|            0x991711052d8bf3c5u, 0x751bdd152d4d1c4au, 0xbf5cd54678eef0b6u, 0xd262d45a78a0635du,
11015|  50.5k|            0xef340a98172aace4u, 0x86fb897116c87c34u, 0x9580869f0e7aac0eu, 0xd45d35e6ae3d4da0u,
11016|  50.5k|            0xbae0a846d2195712u, 0x8974836059cca109u, 0xe998d258869facd7u, 0x2bd1a438703fc94bu,
11017|  50.5k|            0x91ff83775423cc06u, 0x7b6306a34627ddcfu, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d542u,
11018|  50.5k|            0xe41f3d6a7377eecau, 0x20caba5f1d9e4a93u, 0x8e938662882af53eu, 0x547eb47b7282ee9cu,
11019|  50.5k|            0xb23867fb2a35b28du, 0xe99e619a4f23aa43u, 0xdec681f9f4c31f31u, 0x6405fa00e2ec94d4u,
11020|  50.5k|            0x8b3c113c38f9f37eu, 0xde83bc408dd3dd04u, 0xae0b158b4738705eu, 0x9624ab50b148d445u,
11021|  50.5k|            0xd98ddaee19068c76u, 0x3badd624dd9b0957u, 0x87f8a8d4cfa417c9u, 0xe54ca5d70a80e5d6u,
11022|  50.5k|            0xa9f6d30a038d1dbcu, 0x5e9fcf4ccd211f4cu, 0xd47487cc8470652bu, 0x7647c3200069671fu,
11023|  50.5k|            0x84c8d4dfd2c63f3bu, 0x29ecd9f40041e073u, 0xa5fb0a17c777cf09u, 0xf468107100525890u,
11024|  50.5k|            0xcf79cc9db955c2ccu, 0x7182148d4066eeb4u, 0x81ac1fe293d599bfu, 0xc6f14cd848405530u,
11025|  50.5k|            0xa21727db38cb002fu, 0xb8ada00e5a506a7cu, 0xca9cf1d206fdc03bu, 0xa6d90811f0e4851cu,
11026|  50.5k|            0xfd442e4688bd304au, 0x908f4a166d1da663u, 0x9e4a9cec15763e2eu, 0x9a598e4e043287feu,
11027|  50.5k|            0xc5dd44271ad3cdbau, 0x40eff1e1853f29fdu, 0xf7549530e188c128u, 0xd12bee59e68ef47cu,
11028|  50.5k|            0x9a94dd3e8cf578b9u, 0x82bb74f8301958ceu, 0xc13a148e3032d6e7u, 0xe36a52363c1faf01u,
11029|  50.5k|            0xf18899b1bc3f8ca1u, 0xdc44e6c3cb279ac1u, 0x96f5600f15a7b7e5u, 0x29ab103a5ef8c0b9u,
11030|  50.5k|            0xbcb2b812db11a5deu, 0x7415d448f6b6f0e7u, 0xebdf661791d60f56u, 0x111b495b3464ad21u,
11031|  50.5k|            0x936b9fcebb25c995u, 0xcab10dd900beec34u, 0xb84687c269ef3bfbu, 0x3d5d514f40eea742u,
11032|  50.5k|            0xe65829b3046b0afau, 0x0cb4a5a3112a5112u, 0x8ff71a0fe2c2e6dcu, 0x47f0e785eaba72abu,
11033|  50.5k|            0xb3f4e093db73a093u, 0x59ed216765690f56u, 0xe0f218b8d25088b8u, 0x306869c13ec3532cu,
11034|  50.5k|            0x8c974f7383725573u, 0x1e414218c73a13fbu, 0xafbd2350644eeacfu, 0xe5d1929ef90898fau,
11035|  50.5k|            0xdbac6c247d62a583u, 0xdf45f746b74abf39u, 0x894bc396ce5da772u, 0x6b8bba8c328eb783u,
11036|  50.5k|            0xab9eb47c81f5114fu, 0x066ea92f3f326564u, 0xd686619ba27255a2u, 0xc80a537b0efefebdu,
11037|  50.5k|            0x8613fd0145877585u, 0xbd06742ce95f5f36u, 0xa798fc4196e952e7u, 0x2c48113823b73704u,
11038|  50.5k|            0xd17f3b51fca3a7a0u, 0xf75a15862ca504c5u, 0x82ef85133de648c4u, 0x9a984d73dbe722fbu,
11039|  50.5k|            0xa3ab66580d5fdaf5u, 0xc13e60d0d2e0ebbau, 0xcc963fee10b7d1b3u, 0x318df905079926a8u,
11040|  50.5k|            0xffbbcfe994e5c61fu, 0xfdf17746497f7052u, 0x9fd561f1fd0f9bd3u, 0xfeb6ea8bedefa633u,
11041|  50.5k|            0xc7caba6e7c5382c8u, 0xfe64a52ee96b8fc0u, 0xf9bd690a1b68637bu, 0x3dfdce7aa3c673b0u,
11042|  50.5k|            0x9c1661a651213e2du, 0x06bea10ca65c084eu, 0xc31bfa0fe5698db8u, 0x486e494fcff30a62u,
11043|  50.5k|            0xf3e2f893dec3f126u, 0x5a89dba3c3efccfau, 0x986ddb5c6b3a76b7u, 0xf89629465a75e01cu,
11044|  50.5k|            0xbe89523386091465u, 0xf6bbb397f1135823u, 0xee2ba6c0678b597fu, 0x746aa07ded582e2cu,
11045|  50.5k|            0x94db483840b717efu, 0xa8c2a44eb4571cdcu, 0xba121a4650e4ddebu, 0x92f34d62616ce413u,
11046|  50.5k|            0xe896a0d7e51e1566u, 0x77b020baf9c81d17u, 0x915e2486ef32cd60u, 0x0ace1474dc1d122eu,
11047|  50.5k|            0xb5b5ada8aaff80b8u, 0x0d819992132456bau, 0xe3231912d5bf60e6u, 0x10e1fff697ed6c69u,
11048|  50.5k|            0x8df5efabc5979c8fu, 0xca8d3ffa1ef463c1u, 0xb1736b96b6fd83b3u, 0xbd308ff8a6b17cb2u,
11049|  50.5k|            0xddd0467c64bce4a0u, 0xac7cb3f6d05ddbdeu, 0x8aa22c0dbef60ee4u, 0x6bcdf07a423aa96bu,
11050|  50.5k|            0xad4ab7112eb3929du, 0x86c16c98d2c953c6u, 0xd89d64d57a607744u, 0xe871c7bf077ba8b7u,
11051|  50.5k|            0x87625f056c7c4a8bu, 0x11471cd764ad4972u, 0xa93af6c6c79b5d2du, 0xd598e40d3dd89bcfu,
11052|  50.5k|            0xd389b47879823479u, 0x4aff1d108d4ec2c3u, 0x843610cb4bf160cbu, 0xcedf722a585139bau,
11053|  50.5k|            0xa54394fe1eedb8feu, 0xc2974eb4ee658828u, 0xce947a3da6a9273eu, 0x733d226229feea32u,
11054|  50.5k|            0x811ccc668829b887u, 0x0806357d5a3f525fu, 0xa163ff802a3426a8u, 0xca07c2dcb0cf26f7u,
11055|  50.5k|            0xc9bcff6034c13052u, 0xfc89b393dd02f0b5u, 0xfc2c3f3841f17c67u, 0xbbac2078d443ace2u,
11056|  50.5k|            0x9d9ba7832936edc0u, 0xd54b944b84aa4c0du, 0xc5029163f384a931u, 0x0a9e795e65d4df11u,
11057|  50.5k|            0xf64335bcf065d37du, 0x4d4617b5ff4a16d5u, 0x99ea0196163fa42eu, 0x504bced1bf8e4e45u,
11058|  50.5k|            0xc06481fb9bcf8d39u, 0xe45ec2862f71e1d6u, 0xf07da27a82c37088u, 0x5d767327bb4e5a4cu,
11059|  50.5k|            0x964e858c91ba2655u, 0x3a6a07f8d510f86fu, 0xbbe226efb628afeau, 0x890489f70a55368bu,
11060|  50.5k|            0xeadab0aba3b2dbe5u, 0x2b45ac74ccea842eu, 0x92c8ae6b464fc96fu, 0x3b0b8bc90012929du,
11061|  50.5k|            0xb77ada0617e3bbcbu, 0x09ce6ebb40173744u, 0xe55990879ddcaabdu, 0xcc420a6a101d0515u,
11062|  50.5k|            0x8f57fa54c2a9eab6u, 0x9fa946824a12232du, 0xb32df8e9f3546564u, 0x47939822dc96abf9u,
11063|  50.5k|            0xdff9772470297ebdu, 0x59787e2b93bc56f7u, 0x8bfbea76c619ef36u, 0x57eb4edb3c55b65au,
11064|  50.5k|            0xaefae51477a06b03u, 0xede622920b6b23f1u, 0xdab99e59958885c4u, 0xe95fab368e45ecedu,
11065|  50.5k|            0x88b402f7fd75539bu, 0x11dbcb0218ebb414u, 0xaae103b5fcd2a881u, 0xd652bdc29f26a119u,
11066|  50.5k|            0xd59944a37c0752a2u, 0x4be76d3346f0495fu, 0x857fcae62d8493a5u, 0x6f70a4400c562ddbu,
11067|  50.5k|            0xa6dfbd9fb8e5b88eu, 0xcb4ccd500f6bb952u, 0xd097ad07a71f26b2u, 0x7e2000a41346a7a7u,
11068|  50.5k|            0x825ecc24c873782fu, 0x8ed400668c0c28c8u, 0xa2f67f2dfa90563bu, 0x728900802f0f32fau,
11069|  50.5k|            0xcbb41ef979346bcau, 0x4f2b40a03ad2ffb9u, 0xfea126b7d78186bcu, 0xe2f610c84987bfa8u,
11070|  50.5k|            0x9f24b832e6b0f436u, 0x0dd9ca7d2df4d7c9u, 0xc6ede63fa05d3143u, 0x91503d1c79720dbbu,
11071|  50.5k|            0xf8a95fcf88747d94u, 0x75a44c6397ce912au, 0x9b69dbe1b548ce7cu, 0xc986afbe3ee11abau,
11072|  50.5k|            0xc24452da229b021bu, 0xfbe85badce996168u, 0xf2d56790ab41c2a2u, 0xfae27299423fb9c3u,
11073|  50.5k|            0x97c560ba6b0919a5u, 0xdccd879fc967d41au, 0xbdb6b8e905cb600fu, 0x5400e987bbc1c920u,
11074|  50.5k|            0xed246723473e3813u, 0x290123e9aab23b68u, 0x9436c0760c86e30bu, 0xf9a0b6720aaf6521u,
11075|  50.5k|            0xb94470938fa89bceu, 0xf808e40e8d5b3e69u, 0xe7958cb87392c2c2u, 0xb60b1d1230b20e04u,
11076|  50.5k|            0x90bd77f3483bb9b9u, 0xb1c6f22b5e6f48c2u, 0xb4ecd5f01a4aa828u, 0x1e38aeb6360b1af3u,
11077|  50.5k|            0xe2280b6c20dd5232u, 0x25c6da63c38de1b0u, 0x8d590723948a535fu, 0x579c487e5a38ad0eu,
11078|  50.5k|            0xb0af48ec79ace837u, 0x2d835a9df0c6d851u, 0xdcdb1b2798182244u, 0xf8e431456cf88e65u,
11079|  50.5k|            0x8a08f0f8bf0f156bu, 0x1b8e9ecb641b58ffu, 0xac8b2d36eed2dac5u, 0xe272467e3d222f3fu,
11080|  50.5k|            0xd7adf884aa879177u, 0x5b0ed81dcc6abb0fu, 0x86ccbb52ea94baeau, 0x98e947129fc2b4e9u,
11081|  50.5k|            0xa87fea27a539e9a5u, 0x3f2398d747b36224u, 0xd29fe4b18e88640eu, 0x8eec7f0d19a03aadu,
11082|  50.5k|            0x83a3eeeef9153e89u, 0x1953cf68300424acu, 0xa48ceaaab75a8e2bu, 0x5fa8c3423c052dd7u,
11083|  50.5k|            0xcdb02555653131b6u, 0x3792f412cb06794du, 0x808e17555f3ebf11u, 0xe2bbd88bbee40bd0u,
11084|  50.5k|            0xa0b19d2ab70e6ed6u, 0x5b6aceaeae9d0ec4u, 0xc8de047564d20a8bu, 0xf245825a5a445275u,
11085|  50.5k|            0xfb158592be068d2eu, 0xeed6e2f0f0d56712u, 0x9ced737bb6c4183du, 0x55464dd69685606bu,
11086|  50.5k|            0xc428d05aa4751e4cu, 0xaa97e14c3c26b886u, 0xf53304714d9265dfu, 0xd53dd99f4b3066a8u,
11087|  50.5k|            0x993fe2c6d07b7fabu, 0xe546a8038efe4029u, 0xbf8fdb78849a5f96u, 0xde98520472bdd033u,
11088|  50.5k|            0xef73d256a5c0f77cu, 0x963e66858f6d4440u, 0x95a8637627989aadu, 0xdde7001379a44aa8u,
11089|  50.5k|            0xbb127c53b17ec159u, 0x5560c018580d5d52u, 0xe9d71b689dde71afu, 0xaab8f01e6e10b4a6u,
11090|  50.5k|            0x9226712162ab070du, 0xcab3961304ca70e8u, 0xb6b00d69bb55c8d1u, 0x3d607b97c5fd0d22u,
11091|  50.5k|            0xe45c10c42a2b3b05u, 0x8cb89a7db77c506au, 0x8eb98a7a9a5b04e3u, 0x77f3608e92adb242u,
11092|  50.5k|            0xb267ed1940f1c61cu, 0x55f038b237591ed3u, 0xdf01e85f912e37a3u, 0x6b6c46dec52f6688u,
11093|  50.5k|            0x8b61313bbabce2c6u, 0x2323ac4b3b3da015u, 0xae397d8aa96c1b77u, 0xabec975e0a0d081au,
11094|  50.5k|            0xd9c7dced53c72255u, 0x96e7bd358c904a21u, 0x881cea14545c7575u, 0x7e50d64177da2e54u,
11095|  50.5k|            0xaa242499697392d2u, 0xdde50bd1d5d0b9e9u, 0xd4ad2dbfc3d07787u, 0x955e4ec64b44e864u,
11096|  50.5k|            0x84ec3c97da624ab4u, 0xbd5af13bef0b113eu, 0xa6274bbdd0fadd61u, 0xecb1ad8aeacdd58eu,
11097|  50.5k|            0xcfb11ead453994bau, 0x67de18eda5814af2u, 0x81ceb32c4b43fcf4u, 0x80eacf948770ced7u,
11098|  50.5k|            0xa2425ff75e14fc31u, 0xa1258379a94d028du, 0xcad2f7f5359a3b3eu, 0x096ee45813a04330u,
11099|  50.5k|            0xfd87b5f28300ca0du, 0x8bca9d6e188853fcu, 0x9e74d1b791e07e48u, 0x775ea264cf55347eu,
11100|  50.5k|            0xc612062576589ddau, 0x95364afe032a819eu, 0xf79687aed3eec551u, 0x3a83ddbd83f52205u,
11101|  50.5k|            0x9abe14cd44753b52u, 0xc4926a9672793543u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
11102|  50.5k|            0xf1c90080baf72cb1u, 0x5324c68b12dd6339u, 0x971da05074da7beeu, 0xd3f6fc16ebca5e04u,
11103|  50.5k|            0xbce5086492111aeau, 0x88f4bb1ca6bcf585u, 0xec1e4a7db69561a5u, 0x2b31e9e3d06c32e6u,
11104|  50.5k|            0x9392ee8e921d5d07u, 0x3aff322e62439fd0u, 0xb877aa3236a4b449u, 0x09befeb9fad487c3u,
11105|  50.5k|            0xe69594bec44de15bu, 0x4c2ebe687989a9b4u, 0x901d7cf73ab0acd9u, 0x0f9d37014bf60a11u,
11106|  50.5k|            0xb424dc35095cd80fu, 0x538484c19ef38c95u, 0xe12e13424bb40e13u, 0x2865a5f206b06fbau,
11107|  50.5k|            0x8cbccc096f5088cbu, 0xf93f87b7442e45d4u, 0xafebff0bcb24aafeu, 0xf78f69a51539d749u,
11108|  50.5k|            0xdbe6fecebdedd5beu, 0xb573440e5a884d1cu, 0x89705f4136b4a597u, 0x31680a88f8953031u,
11109|  50.5k|            0xabcc77118461cefcu, 0xfdc20d2b36ba7c3eu, 0xd6bf94d5e57a42bcu, 0x3d32907604691b4du,
11110|  50.5k|            0x8637bd05af6c69b5u, 0xa63f9a49c2c1b110u, 0xa7c5ac471b478423u, 0x0fcf80dc33721d54u,
11111|  50.5k|            0xd1b71758e219652bu, 0xd3c36113404ea4a9u, 0x83126e978d4fdf3bu, 0x645a1cac083126eau,
11112|  50.5k|            0xa3d70a3d70a3d70au, 0x3d70a3d70a3d70a4u, 0xccccccccccccccccu, 0xcccccccccccccccdu,
11113|  50.5k|            0x8000000000000000u, 0x0000000000000000u, 0xa000000000000000u, 0x0000000000000000u,
11114|  50.5k|            0xc800000000000000u, 0x0000000000000000u, 0xfa00000000000000u, 0x0000000000000000u,
11115|  50.5k|            0x9c40000000000000u, 0x0000000000000000u, 0xc350000000000000u, 0x0000000000000000u,
11116|  50.5k|            0xf424000000000000u, 0x0000000000000000u, 0x9896800000000000u, 0x0000000000000000u,
11117|  50.5k|            0xbebc200000000000u, 0x0000000000000000u, 0xee6b280000000000u, 0x0000000000000000u,
11118|  50.5k|            0x9502f90000000000u, 0x0000000000000000u, 0xba43b74000000000u, 0x0000000000000000u,
11119|  50.5k|            0xe8d4a51000000000u, 0x0000000000000000u, 0x9184e72a00000000u, 0x0000000000000000u,
11120|  50.5k|            0xb5e620f480000000u, 0x0000000000000000u, 0xe35fa931a0000000u, 0x0000000000000000u,
11121|  50.5k|            0x8e1bc9bf04000000u, 0x0000000000000000u, 0xb1a2bc2ec5000000u, 0x0000000000000000u,
11122|  50.5k|            0xde0b6b3a76400000u, 0x0000000000000000u, 0x8ac7230489e80000u, 0x0000000000000000u,
11123|  50.5k|            0xad78ebc5ac620000u, 0x0000000000000000u, 0xd8d726b7177a8000u, 0x0000000000000000u,
11124|  50.5k|            0x878678326eac9000u, 0x0000000000000000u, 0xa968163f0a57b400u, 0x0000000000000000u,
11125|  50.5k|            0xd3c21bcecceda100u, 0x0000000000000000u, 0x84595161401484a0u, 0x0000000000000000u,
11126|  50.5k|            0xa56fa5b99019a5c8u, 0x0000000000000000u, 0xcecb8f27f4200f3au, 0x0000000000000000u,
11127|  50.5k|            0x813f3978f8940984u, 0x4000000000000000u, 0xa18f07d736b90be5u, 0x5000000000000000u,
11128|  50.5k|            0xc9f2c9cd04674edeu, 0xa400000000000000u, 0xfc6f7c4045812296u, 0x4d00000000000000u,
11129|  50.5k|            0x9dc5ada82b70b59du, 0xf020000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u,
11130|  50.5k|            0xf684df56c3e01bc6u, 0xc732000000000000u, 0x9a130b963a6c115cu, 0x3c7f400000000000u,
11131|  50.5k|            0xc097ce7bc90715b3u, 0x4b9f100000000000u, 0xf0bdc21abb48db20u, 0x1e86d40000000000u,
11132|  50.5k|            0x96769950b50d88f4u, 0x1314448000000000u, 0xbc143fa4e250eb31u, 0x17d955a000000000u,
11133|  50.5k|            0xeb194f8e1ae525fdu, 0x5dcfab0800000000u, 0x92efd1b8d0cf37beu, 0x5aa1cae500000000u,
11134|  50.5k|            0xb7abc627050305adu, 0xf14a3d9e40000000u, 0xe596b7b0c643c719u, 0x6d9ccd05d0000000u,
11135|  50.5k|            0x8f7e32ce7bea5c6fu, 0xe4820023a2000000u, 0xb35dbf821ae4f38bu, 0xdda2802c8a800000u,
11136|  50.5k|            0xe0352f62a19e306eu, 0xd50b2037ad200000u, 0x8c213d9da502de45u, 0x4526f422cc340000u,
11137|  50.5k|            0xaf298d050e4395d6u, 0x9670b12b7f410000u, 0xdaf3f04651d47b4cu, 0x3c0cdd765f114000u,
11138|  50.5k|            0x88d8762bf324cd0fu, 0xa5880a69fb6ac800u, 0xab0e93b6efee0053u, 0x8eea0d047a457a00u,
11139|  50.5k|            0xd5d238a4abe98068u, 0x72a4904598d6d880u, 0x85a36366eb71f041u, 0x47a6da2b7f864750u,
11140|  50.5k|            0xa70c3c40a64e6c51u, 0x999090b65f67d924u, 0xd0cf4b50cfe20765u, 0xfff4b4e3f741cf6du,
11141|  50.5k|            0x82818f1281ed449fu, 0xbff8f10e7a8921a4u, 0xa321f2d7226895c7u, 0xaff72d52192b6a0du,
11142|  50.5k|            0xcbea6f8ceb02bb39u, 0x9bf4f8a69f764490u, 0xfee50b7025c36a08u, 0x02f236d04753d5b4u,
11143|  50.5k|            0x9f4f2726179a2245u, 0x01d762422c946590u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef5u,
11144|  50.5k|            0xf8ebad2b84e0d58bu, 0xd2e0898765a7deb2u, 0x9b934c3b330c8577u, 0x63cc55f49f88eb2fu,
11145|  50.5k|            0xc2781f49ffcfa6d5u, 0x3cbf6b71c76b25fbu, 0xf316271c7fc3908au, 0x8bef464e3945ef7au,
11146|  50.5k|            0x97edd871cfda3a56u, 0x97758bf0e3cbb5acu, 0xbde94e8e43d0c8ecu, 0x3d52eeed1cbea317u,
11147|  50.5k|            0xed63a231d4c4fb27u, 0x4ca7aaa863ee4bddu, 0x945e455f24fb1cf8u, 0x8fe8caa93e74ef6au,
11148|  50.5k|            0xb975d6b6ee39e436u, 0xb3e2fd538e122b44u, 0xe7d34c64a9c85d44u, 0x60dbbca87196b616u,
11149|  50.5k|            0x90e40fbeea1d3a4au, 0xbc8955e946fe31cdu, 0xb51d13aea4a488ddu, 0x6babab6398bdbe41u,
11150|  50.5k|            0xe264589a4dcdab14u, 0xc696963c7eed2dd1u, 0x8d7eb76070a08aecu, 0xfc1e1de5cf543ca2u,
11151|  50.5k|            0xb0de65388cc8ada8u, 0x3b25a55f43294bcbu, 0xdd15fe86affad912u, 0x49ef0eb713f39ebeu,
11152|  50.5k|            0x8a2dbf142dfcc7abu, 0x6e3569326c784337u, 0xacb92ed9397bf996u, 0x49c2c37f07965404u,
11153|  50.5k|            0xd7e77a8f87daf7fbu, 0xdc33745ec97be906u, 0x86f0ac99b4e8dafdu, 0x69a028bb3ded71a3u,
11154|  50.5k|            0xa8acd7c0222311bcu, 0xc40832ea0d68ce0cu, 0xd2d80db02aabd62bu, 0xf50a3fa490c30190u,
11155|  50.5k|            0x83c7088e1aab65dbu, 0x792667c6da79e0fau, 0xa4b8cab1a1563f52u, 0x577001b891185938u,
11156|  50.5k|            0xcde6fd5e09abcf26u, 0xed4c0226b55e6f86u, 0x80b05e5ac60b6178u, 0x544f8158315b05b4u,
11157|  50.5k|            0xa0dc75f1778e39d6u, 0x696361ae3db1c721u, 0xc913936dd571c84cu, 0x03bc3a19cd1e38e9u,
11158|  50.5k|            0xfb5878494ace3a5fu, 0x04ab48a04065c723u, 0x9d174b2dcec0e47bu, 0x62eb0d64283f9c76u,
11159|  50.5k|            0xc45d1df942711d9au, 0x3ba5d0bd324f8394u, 0xf5746577930d6500u, 0xca8f44ec7ee36479u,
11160|  50.5k|            0x9968bf6abbe85f20u, 0x7e998b13cf4e1ecbu, 0xbfc2ef456ae276e8u, 0x9e3fedd8c321a67eu,
11161|  50.5k|            0xefb3ab16c59b14a2u, 0xc5cfe94ef3ea101eu, 0x95d04aee3b80ece5u, 0xbba1f1d158724a12u,
11162|  50.5k|            0xbb445da9ca61281fu, 0x2a8a6e45ae8edc97u, 0xea1575143cf97226u, 0xf52d09d71a3293bdu,
11163|  50.5k|            0x924d692ca61be758u, 0x593c2626705f9c56u, 0xb6e0c377cfa2e12eu, 0x6f8b2fb00c77836cu,
11164|  50.5k|            0xe498f455c38b997au, 0x0b6dfb9c0f956447u, 0x8edf98b59a373fecu, 0x4724bd4189bd5eacu,
11165|  50.5k|            0xb2977ee300c50fe7u, 0x58edec91ec2cb657u, 0xdf3d5e9bc0f653e1u, 0x2f2967b66737e3edu,
11166|  50.5k|            0x8b865b215899f46cu, 0xbd79e0d20082ee74u, 0xae67f1e9aec07187u, 0xecd8590680a3aa11u,
11167|  50.5k|            0xda01ee641a708de9u, 0xe80e6f4820cc9495u, 0x884134fe908658b2u, 0x3109058d147fdcddu,
11168|  50.5k|            0xaa51823e34a7eedeu, 0xbd4b46f0599fd415u, 0xd4e5e2cdc1d1ea96u, 0x6c9e18ac7007c91au,
11169|  50.5k|            0x850fadc09923329eu, 0x03e2cf6bc604ddb0u, 0xa6539930bf6bff45u, 0x84db8346b786151cu,
11170|  50.5k|            0xcfe87f7cef46ff16u, 0xe612641865679a63u, 0x81f14fae158c5f6eu, 0x4fcb7e8f3f60c07eu,
11171|  50.5k|            0xa26da3999aef7749u, 0xe3be5e330f38f09du, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc5u,
11172|  50.5k|            0xfdcb4fa002162a63u, 0x73d9732fc7c8f7f6u, 0x9e9f11c4014dda7eu, 0x2867e7fddcdd9afau,
11173|  50.5k|            0xc646d63501a1511du, 0xb281e1fd541501b8u, 0xf7d88bc24209a565u, 0x1f225a7ca91a4226u,
11174|  50.5k|            0x9ae757596946075fu, 0x3375788de9b06958u, 0xc1a12d2fc3978937u, 0x0052d6b1641c83aeu,
11175|  50.5k|            0xf209787bb47d6b84u, 0xc0678c5dbd23a49au, 0x9745eb4d50ce6332u, 0xf840b7ba963646e0u,
11176|  50.5k|            0xbd176620a501fbffu, 0xb650e5a93bc3d898u, 0xec5d3fa8ce427affu, 0xa3e51f138ab4cebeu,
11177|  50.5k|            0x93ba47c980e98cdfu, 0xc66f336c36b10137u, 0xb8a8d9bbe123f017u, 0xb80b0047445d4184u,
11178|  50.5k|            0xe6d3102ad96cec1du, 0xa60dc059157491e5u, 0x9043ea1ac7e41392u, 0x87c89837ad68db2fu,
11179|  50.5k|            0xb454e4a179dd1877u, 0x29babe4598c311fbu, 0xe16a1dc9d8545e94u, 0xf4296dd6fef3d67au,
11180|  50.5k|            0x8ce2529e2734bb1du, 0x1899e4a65f58660cu, 0xb01ae745b101e9e4u, 0x5ec05dcff72e7f8fu,
11181|  50.5k|            0xdc21a1171d42645du, 0x76707543f4fa1f73u, 0x899504ae72497ebau, 0x6a06494a791c53a8u,
11182|  50.5k|            0xabfa45da0edbde69u, 0x0487db9d17636892u, 0xd6f8d7509292d603u, 0x45a9d2845d3c42b6u,
11183|  50.5k|            0x865b86925b9bc5c2u, 0x0b8a2392ba45a9b2u, 0xa7f26836f282b732u, 0x8e6cac7768d7141eu,
11184|  50.5k|            0xd1ef0244af2364ffu, 0x3207d795430cd926u, 0x8335616aed761f1fu, 0x7f44e6bd49e807b8u,
11185|  50.5k|            0xa402b9c5a8d3a6e7u, 0x5f16206c9c6209a6u, 0xcd036837130890a1u, 0x36dba887c37a8c0fu,
11186|  50.5k|            0x802221226be55a64u, 0xc2494954da2c9789u, 0xa02aa96b06deb0fdu, 0xf2db9baa10b7bd6cu,
11187|  50.5k|            0xc83553c5c8965d3du, 0x6f92829494e5acc7u, 0xfa42a8b73abbf48cu, 0xcb772339ba1f17f9u,
11188|  50.5k|            0x9c69a97284b578d7u, 0xff2a760414536efbu, 0xc38413cf25e2d70du, 0xfef5138519684abau,
11189|  50.5k|            0xf46518c2ef5b8cd1u, 0x7eb258665fc25d69u, 0x98bf2f79d5993802u, 0xef2f773ffbd97a61u,
11190|  50.5k|            0xbeeefb584aff8603u, 0xaafb550ffacfd8fau, 0xeeaaba2e5dbf6784u, 0x95ba2a53f983cf38u,
11191|  50.5k|            0x952ab45cfa97a0b2u, 0xdd945a747bf26183u, 0xba756174393d88dfu, 0x94f971119aeef9e4u,
11192|  50.5k|            0xe912b9d1478ceb17u, 0x7a37cd5601aab85du, 0x91abb422ccb812eeu, 0xac62e055c10ab33au,
11193|  50.5k|            0xb616a12b7fe617aau, 0x577b986b314d6009u, 0xe39c49765fdf9d94u, 0xed5a7e85fda0b80bu,
11194|  50.5k|            0x8e41ade9fbebc27du, 0x14588f13be847307u, 0xb1d219647ae6b31cu, 0x596eb2d8ae258fc8u,
11195|  50.5k|            0xde469fbd99a05fe3u, 0x6fca5f8ed9aef3bbu, 0x8aec23d680043beeu, 0x25de7bb9480d5854u,
11196|  50.5k|            0xada72ccc20054ae9u, 0xaf561aa79a10ae6au, 0xd910f7ff28069da4u, 0x1b2ba1518094da04u,
11197|  50.5k|            0x87aa9aff79042286u, 0x90fb44d2f05d0842u, 0xa99541bf57452b28u, 0x353a1607ac744a53u,
11198|  50.5k|            0xd3fa922f2d1675f2u, 0x42889b8997915ce8u, 0x847c9b5d7c2e09b7u, 0x69956135febada11u,
11199|  50.5k|            0xa59bc234db398c25u, 0x43fab9837e699095u, 0xcf02b2c21207ef2eu, 0x94f967e45e03f4bbu,
11200|  50.5k|            0x8161afb94b44f57du, 0x1d1be0eebac278f5u, 0xa1ba1ba79e1632dcu, 0x6462d92a69731732u,
11201|  50.5k|            0xca28a291859bbf93u, 0x7d7b8f7503cfdcfeu, 0xfcb2cb35e702af78u, 0x5cda735244c3d43eu,
11202|  50.5k|            0x9defbf01b061adabu, 0x3a0888136afa64a7u, 0xc56baec21c7a1916u, 0x088aaa1845b8fdd0u,
11203|  50.5k|            0xf6c69a72a3989f5bu, 0x8aad549e57273d45u, 0x9a3c2087a63f6399u, 0x36ac54e2f678864bu,
11204|  50.5k|            0xc0cb28a98fcf3c7fu, 0x84576a1bb416a7ddu, 0xf0fdf2d3f3c30b9fu, 0x656d44a2a11c51d5u,
11205|  50.5k|            0x969eb7c47859e743u, 0x9f644ae5a4b1b325u, 0xbc4665b596706114u, 0x873d5d9f0dde1feeu,
11206|  50.5k|            0xeb57ff22fc0c7959u, 0xa90cb506d155a7eau, 0x9316ff75dd87cbd8u, 0x09a7f12442d588f2u,
11207|  50.5k|            0xb7dcbf5354e9beceu, 0x0c11ed6d538aeb2fu, 0xe5d3ef282a242e81u, 0x8f1668c8a86da5fau,
11208|  50.5k|            0x8fa475791a569d10u, 0xf96e017d694487bcu, 0xb38d92d760ec4455u, 0x37c981dcc395a9acu,
11209|  50.5k|            0xe070f78d3927556au, 0x85bbe253f47b1417u, 0x8c469ab843b89562u, 0x93956d7478ccec8eu,
11210|  50.5k|            0xaf58416654a6babbu, 0x387ac8d1970027b2u, 0xdb2e51bfe9d0696au, 0x06997b05fcc0319eu,
11211|  50.5k|            0x88fcf317f22241e2u, 0x441fece3bdf81f03u, 0xab3c2fddeeaad25au, 0xd527e81cad7626c3u,
11212|  50.5k|            0xd60b3bd56a5586f1u, 0x8a71e223d8d3b074u, 0x85c7056562757456u, 0xf6872d5667844e49u,
11213|  50.5k|            0xa738c6bebb12d16cu, 0xb428f8ac016561dbu, 0xd106f86e69d785c7u, 0xe13336d701beba52u,
11214|  50.5k|            0x82a45b450226b39cu, 0xecc0024661173473u, 0xa34d721642b06084u, 0x27f002d7f95d0190u,
11215|  50.5k|            0xcc20ce9bd35c78a5u, 0x31ec038df7b441f4u, 0xff290242c83396ceu, 0x7e67047175a15271u,
11216|  50.5k|            0x9f79a169bd203e41u, 0x0f0062c6e984d386u, 0xc75809c42c684dd1u, 0x52c07b78a3e60868u,
11217|  50.5k|            0xf92e0c3537826145u, 0xa7709a56ccdf8a82u, 0x9bbcc7a142b17ccbu, 0x88a66076400bb691u,
11218|  50.5k|            0xc2abf989935ddbfeu, 0x6acff893d00ea435u, 0xf356f7ebf83552feu, 0x0583f6b8c4124d43u,
11219|  50.5k|            0x98165af37b2153deu, 0xc3727a337a8b704au, 0xbe1bf1b059e9a8d6u, 0x744f18c0592e4c5cu,
11220|  50.5k|            0xeda2ee1c7064130cu, 0x1162def06f79df73u, 0x9485d4d1c63e8be7u, 0x8addcb5645ac2ba8u,
11221|  50.5k|            0xb9a74a0637ce2ee1u, 0x6d953e2bd7173692u, 0xe8111c87c5c1ba99u, 0xc8fa8db6ccdd0437u,
11222|  50.5k|            0x910ab1d4db9914a0u, 0x1d9c9892400a22a2u, 0xb54d5e4a127f59c8u, 0x2503beb6d00cab4bu,
11223|  50.5k|            0xe2a0b5dc971f303au, 0x2e44ae64840fd61du, 0x8da471a9de737e24u, 0x5ceaecfed289e5d2u,
11224|  50.5k|            0xb10d8e1456105dadu, 0x7425a83e872c5f47u, 0xdd50f1996b947518u, 0xd12f124e28f77719u,
11225|  50.5k|            0x8a5296ffe33cc92fu, 0x82bd6b70d99aaa6fu, 0xace73cbfdc0bfb7bu, 0x636cc64d1001550bu,
11226|  50.5k|            0xd8210befd30efa5au, 0x3c47f7e05401aa4eu, 0x8714a775e3e95c78u, 0x65acfaec34810a71u,
11227|  50.5k|            0xa8d9d1535ce3b396u, 0x7f1839a741a14d0du, 0xd31045a8341ca07cu, 0x1ede48111209a050u,
11228|  50.5k|            0x83ea2b892091e44du, 0x934aed0aab460432u, 0xa4e4b66b68b65d60u, 0xf81da84d5617853fu,
11229|  50.5k|            0xce1de40642e3f4b9u, 0x36251260ab9d668eu, 0x80d2ae83e9ce78f3u, 0xc1d72b7c6b426019u,
11230|  50.5k|            0xa1075a24e4421730u, 0xb24cf65b8612f81fu, 0xc94930ae1d529cfcu, 0xdee033f26797b627u,
11231|  50.5k|            0xfb9b7cd9a4a7443cu, 0x169840ef017da3b1u, 0x9d412e0806e88aa5u, 0x8e1f289560ee864eu,
11232|  50.5k|            0xc491798a08a2ad4eu, 0xf1a6f2bab92a27e2u, 0xf5b5d7ec8acb58a2u, 0xae10af696774b1dbu,
11233|  50.5k|            0x9991a6f3d6bf1765u, 0xacca6da1e0a8ef29u, 0xbff610b0cc6edd3fu, 0x17fd090a58d32af3u,
11234|  50.5k|            0xeff394dcff8a948eu, 0xddfc4b4cef07f5b0u, 0x95f83d0a1fb69cd9u, 0x4abdaf101564f98eu,
11235|  50.5k|            0xbb764c4ca7a4440fu, 0x9d6d1ad41abe37f1u, 0xea53df5fd18d5513u, 0x84c86189216dc5edu,
11236|  50.5k|            0x92746b9be2f8552cu, 0x32fd3cf5b4e49bb4u, 0xb7118682dbb66a77u, 0x3fbc8c33221dc2a1u,
11237|  50.5k|            0xe4d5e82392a40515u, 0x0fabaf3feaa5334au, 0x8f05b1163ba6832du, 0x29cb4d87f2a7400eu,
11238|  50.5k|            0xb2c71d5bca9023f8u, 0x743e20e9ef511012u, 0xdf78e4b2bd342cf6u, 0x914da9246b255416u,
11239|  50.5k|            0x8bab8eefb6409c1au, 0x1ad089b6c2f7548eu, 0xae9672aba3d0c320u, 0xa184ac2473b529b1u,
11240|  50.5k|            0xda3c0f568cc4f3e8u, 0xc9e5d72d90a2741eu, 0x8865899617fb1871u, 0x7e2fa67c7a658892u,
11241|  50.5k|            0xaa7eebfb9df9de8du, 0xddbb901b98feeab7u, 0xd51ea6fa85785631u, 0x552a74227f3ea565u,
11242|  50.5k|            0x8533285c936b35deu, 0xd53a88958f87275fu, 0xa67ff273b8460356u, 0x8a892abaf368f137u,
11243|  50.5k|            0xd01fef10a657842cu, 0x2d2b7569b0432d85u, 0x8213f56a67f6b29bu, 0x9c3b29620e29fc73u,
11244|  50.5k|            0xa298f2c501f45f42u, 0x8349f3ba91b47b8fu, 0xcb3f2f7642717713u, 0x241c70a936219a73u,
11245|  50.5k|            0xfe0efb53d30dd4d7u, 0xed238cd383aa0110u, 0x9ec95d1463e8a506u, 0xf4363804324a40aau,
11246|  50.5k|            0xc67bb4597ce2ce48u, 0xb143c6053edcd0d5u, 0xf81aa16fdc1b81dau, 0xdd94b7868e94050au,
11247|  50.5k|            0x9b10a4e5e9913128u, 0xca7cf2b4191c8326u, 0xc1d4ce1f63f57d72u, 0xfd1c2f611f63a3f0u,
11248|  50.5k|            0xf24a01a73cf2dccfu, 0xbc633b39673c8cecu, 0x976e41088617ca01u, 0xd5be0503e085d813u,
11249|  50.5k|            0xbd49d14aa79dbc82u, 0x4b2d8644d8a74e18u, 0xec9c459d51852ba2u, 0xddf8e7d60ed1219eu,
11250|  50.5k|            0x93e1ab8252f33b45u, 0xcabb90e5c942b503u, 0xb8da1662e7b00a17u, 0x3d6a751f3b936243u,
11251|  50.5k|            0xe7109bfba19c0c9du, 0x0cc512670a783ad4u, 0x906a617d450187e2u, 0x27fb2b80668b24c5u,
11252|  50.5k|            0xb484f9dc9641e9dau, 0xb1f9f660802dedf6u, 0xe1a63853bbd26451u, 0x5e7873f8a0396973u,
11253|  50.5k|            0x8d07e33455637eb2u, 0xdb0b487b6423e1e8u, 0xb049dc016abc5e5fu, 0x91ce1a9a3d2cda62u,
11254|  50.5k|            0xdc5c5301c56b75f7u, 0x7641a140cc7810fbu, 0x89b9b3e11b6329bau, 0xa9e904c87fcb0a9du,
11255|  50.5k|            0xac2820d9623bf429u, 0x546345fa9fbdcd44u, 0xd732290fbacaf133u, 0xa97c177947ad4095u,
11256|  50.5k|            0x867f59a9d4bed6c0u, 0x49ed8eabcccc485du, 0xa81f301449ee8c70u, 0x5c68f256bfff5a74u,
11257|  50.5k|            0xd226fc195c6a2f8cu, 0x73832eec6fff3111u, 0x83585d8fd9c25db7u, 0xc831fd53c5ff7eabu,
11258|  50.5k|            0xa42e74f3d032f525u, 0xba3e7ca8b77f5e55u, 0xcd3a1230c43fb26fu, 0x28ce1bd2e55f35ebu,
11259|  50.5k|            0x80444b5e7aa7cf85u, 0x7980d163cf5b81b3u, 0xa0555e361951c366u, 0xd7e105bcc332621fu,
11260|  50.5k|            0xc86ab5c39fa63440u, 0x8dd9472bf3fefaa7u, 0xfa856334878fc150u, 0xb14f98f6f0feb951u,
11261|  50.5k|            0x9c935e00d4b9d8d2u, 0x6ed1bf9a569f33d3u, 0xc3b8358109e84f07u, 0x0a862f80ec4700c8u,
11262|  50.5k|            0xf4a642e14c6262c8u, 0xcd27bb612758c0fau, 0x98e7e9cccfbd7dbdu, 0x8038d51cb897789cu,
11263|  50.5k|            0xbf21e44003acdd2cu, 0xe0470a63e6bd56c3u, 0xeeea5d5004981478u, 0x1858ccfce06cac74u,
11264|  50.5k|            0x95527a5202df0ccbu, 0x0f37801e0c43ebc8u, 0xbaa718e68396cffdu, 0xd30560258f54e6bau,
11265|  50.5k|            0xe950df20247c83fdu, 0x47c6b82ef32a2069u, 0x91d28b7416cdd27eu, 0x4cdc331d57fa5441u,
11266|  50.5k|            0xb6472e511c81471du, 0xe0133fe4adf8e952u, 0xe3d8f9e563a198e5u, 0x58180fddd97723a6u,
11267|  50.5k|            0x8e679c2f5e44ff8fu, 0x570f09eaa7ea7648u,
11268|  50.5k|        }
11269|  50.5k|    };
11270|  50.5k|    return table;
11271|  50.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13umul192_hi128Emmm:
35114|  28.4k|{
35115|  28.4k|    const uint128_parts p = full_multiplication(x_hi, y);
35116|  28.4k|    uint128_parts r{};
35117|  28.4k|    r.low = p.low + full_multiplication(x_lo, y).high;
35118|  28.4k|    r.high = p.high + (r.low < p.low ? 1u : 0u);
  ------------------
  |  Branch (35118:24): [True: 180, False: 28.2k]
  ------------------
35119|  28.4k|    return r;
35120|  28.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij16umul128_add_hi64Emmm:
35124|  30.2k|{
35125|  30.2k|    const uint128_parts p = full_multiplication(x, y);
35126|  30.2k|    return p.high + (p.low + c < p.low ? 1u : 0u);
  ------------------
  |  Branch (35126:22): [True: 9.51k, False: 20.7k]
  ------------------
35127|  30.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalE:
36353|  28.4k|{
36354|  28.4k|    const std::uint64_t sig = d.integral;
36355|  28.4k|    if (JSON_HEDLEY_UNLIKELY(sig < 100000000000000u || sig >= 10000000000000000u))
  ------------------
  |  | 1697|  54.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2.51k, False: 25.9k]
  |  |  |  Branch (1697:94): [True: 2.51k, False: 25.9k]
  |  |  |  Branch (1697:94): [True: 0, False: 25.9k]
  |  |  ------------------
  ------------------
36356|  2.51k|    {
36357|       |        // (subnormals)
36358|  2.51k|        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.27k, False: 1.23k]
  ------------------
36359|  2.51k|    }
36360|  25.9k|    const bool sixteen = sig >= 1000000000000000u; // (else 15 digits)
36361|  25.9k|    const int last = d.has_digit ? d.digit : 0;
  ------------------
  |  Branch (36361:22): [True: 6.36k, False: 19.5k]
  ------------------
36362|  25.9k|    const std::uint64_t upper = sig / 100000000u;
36363|  25.9k|#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|  25.9k|    const __m128i x = _mm_set_epi64x(static_cast<long long>(sig - (upper * 100000000u)), static_cast<long long>(upper)); // NOLINT(runtime/int)
36368|  25.9k|    const __m128i abcd = _mm_srli_epi64(_mm_mul_epu32(x, _mm_set1_epi64x(109951163)), 40); // 2^40 / 10000 + 1
36369|  25.9k|    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|  25.9k|    const __m128i fours = _mm_shuffle_epi32(abcd_efgh, _MM_SHUFFLE(2, 3, 0, 1));
36372|  25.9k|    const __m128i ab = _mm_srli_epi16(_mm_mulhi_epu16(fours, _mm_set1_epi32(5243)), 3);
36373|  25.9k|    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|  25.9k|    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|  25.9k|    const auto nonzero = static_cast<std::uint64_t>(_mm_movemask_epi8(_mm_cmpgt_epi8(bytes, _mm_setzero_si128())));
36378|  25.9k|    const int digits = 63 - count_leading_zeros(nonzero) + (sixteen ? 1 : 0); // without trailing zeros
  ------------------
  |  Branch (36378:61): [True: 22.6k, False: 3.23k]
  ------------------
36379|  25.9k|    const __m128i chars = _mm_add_epi8(bytes, _mm_set1_epi8('0'));
36380|       |    // the 16 characters from the first digit
36381|  25.9k|    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: 22.6k, False: 3.23k]
  ------------------
36382|  25.9k|    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
  ------------------
  |  Branch (36382:40): [True: 22.6k, False: 3.23k]
  ------------------
36383|  25.9k|    const auto store_16 = [&s](char* p) noexcept
36384|  25.9k|    {
36385|  25.9k|        std::memcpy(p, &s, 16);
36386|  25.9k|    };
36387|  25.9k|    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|  25.9k|    const int len = d.has_digit ? 16 + (sixteen ? 1 : 0) : digits; // significant digits
  ------------------
  |  Branch (36428:21): [True: 6.36k, False: 19.5k]
  |  Branch (36428:41): [True: 4.58k, False: 1.77k]
  ------------------
36429|  25.9k|    const int n = 16 + (sixteen ? 1 : 0) + d.exponent;           // digits before the point
  ------------------
  |  Branch (36429:25): [True: 22.6k, False: 3.23k]
  ------------------
36430|       |
36431|  25.9k|    if (JSON_HEDLEY_LIKELY(n >= 1 && n <= 15))
  ------------------
  |  | 1696|  44.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 14.2k, False: 11.6k]
  |  |  |  Branch (1696:94): [True: 18.1k, False: 7.77k]
  |  |  |  Branch (1696:94): [True: 14.2k, False: 3.92k]
  |  |  ------------------
  ------------------
36432|  14.2k|    {
36433|       |        // "dig.its" and "digits[000].0": the digits after the point move by
36434|       |        // one byte ('0's follow the digits)
36435|  14.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|  14.2k|        const __m128i at = _mm_set1_epi8(static_cast<char>(n));
36440|  14.2k|        const __m128i index = _mm_setr_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
36441|  14.2k|        const __m128i before = _mm_cmpgt_epi8(at, index);
36442|  14.2k|        const __m128i after = _mm_cmpgt_epi8(index, at);
36443|  14.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|  14.2k|                                          _mm_andnot_si128(_mm_or_si128(before, after), _mm_set1_epi8('.')));
36445|  14.2k|        std::memcpy(first, &text, 16);
36446|  14.2k|        first[16] = static_cast<char>(_mm_extract_epi16(s, 7) >> 8);
36447|  14.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|  14.2k|        return first + (n >= len ? n + 2 : len + 1);
  ------------------
  |  Branch (36464:25): [True: 12.8k, False: 1.41k]
  ------------------
36465|  14.2k|    }
36466|  11.6k|    if (n <= 0 && n > -4)
  ------------------
  |  Branch (36466:9): [True: 7.77k, False: 3.92k]
  |  Branch (36466:19): [True: 3.27k, False: 4.49k]
  ------------------
36467|  3.27k|    {
36468|       |        // "0.[000]digits"
36469|  3.27k|        std::memset(first, '0', 8);
36470|  3.27k|        first[1] = '.';
36471|  3.27k|        store_16(first + 2 - n);
36472|  3.27k|        first[18 - n] = s16;
36473|  3.27k|        return first + 2 - n + len;
36474|  3.27k|    }
36475|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
36476|  8.41k|    store_16(first + 1);
36477|  8.41k|    first[17] = s16;
36478|  8.41k|    first[0] = first_digit;
36479|  8.41k|    first[1] = '.';
36480|  8.41k|    char* const end = first + (len == 1 ? 1 : len + 1);
  ------------------
  |  Branch (36480:32): [True: 72, False: 8.34k]
  ------------------
36481|  8.41k|    const int e = n - 1;
36482|  8.41k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (36482:21): [True: 4.49k, False: 3.92k]
  ------------------
36483|  8.41k|    const bool three = ea >= 100;
36484|  8.41k|    end[0] = 'e';
36485|  8.41k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (36485:14): [True: 4.49k, False: 3.92k]
  ------------------
36486|  8.41k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (36486:39): [True: 2.19k, False: 6.22k]
  ------------------
36487|  8.41k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (36487:39): [True: 2.19k, False: 6.22k]
  ------------------
36488|  8.41k|    end[4] = static_cast<char>('0' + (ea % 10));
36489|  8.41k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (36489:19): [True: 2.19k, False: 6.22k]
  ------------------
36490|  11.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl13write_decimalEPcmi:
36265|  2.51k|{
36266|  2.51k|    JSON_ASSERT(digits != 0 && digits < 100000000000000000u);
  ------------------
  |  | 2643|  2.51k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (36266:5): [True: 2.51k, False: 0]
  |  Branch (36266:5): [True: 2.51k, False: 0]
  |  Branch (36266:5): [True: 2.51k, False: 0]
  ------------------
36267|  2.51k|    const std::uint64_t upper = digits / 100000000u;
36268|  2.51k|    const std::uint64_t b0 = upper / 100000000u; // (one digit: it is its own byte)
36269|  2.51k|    const std::uint64_t b1 = eight_digit_bytes(upper % 100000000u);
36270|  2.51k|    const std::uint64_t b2 = eight_digit_bytes(digits % 100000000u);
36271|       |    // leading and trailing zero digits: zero bytes, counted without division
36272|  2.51k|    int leading = 16;
36273|  2.51k|    int zeros = 16;
36274|  2.51k|    if (b0 != 0)
  ------------------
  |  Branch (36274:9): [True: 0, False: 2.51k]
  ------------------
36275|      0|    {
36276|      0|        leading = count_leading_zeros(b0) / 8;
36277|      0|    }
36278|  2.51k|    else if (b1 != 0)
  ------------------
  |  Branch (36278:14): [True: 1.17k, False: 1.33k]
  ------------------
36279|  1.17k|    {
36280|  1.17k|        leading = 8 + (count_leading_zeros(b1) / 8);
36281|  1.17k|    }
36282|  1.33k|    else
36283|  1.33k|    {
36284|  1.33k|        leading += count_leading_zeros(b2) / 8;
36285|  1.33k|    }
36286|  2.51k|    if (b2 != 0)
  ------------------
  |  Branch (36286:9): [True: 2.51k, False: 0]
  ------------------
36287|  2.51k|    {
36288|  2.51k|        zeros = count_trailing_zeros(b2) / 8;
36289|  2.51k|    }
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.51k|    std::array<char, 64> text; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
36298|  2.51k|    store_msb_first(text.data(), b0 + 0x3030303030303030u);
36299|  2.51k|    store_msb_first(text.data() + 8, b1 + 0x3030303030303030u);
36300|  2.51k|    store_msb_first(text.data() + 16, b2 + 0x3030303030303030u);
36301|  2.51k|    std::memset(text.data() + 24, '0', 40);
36302|  2.51k|    const int k = 24 - leading - zeros; // significant digits
36303|  2.51k|    const int n = k + exp + zeros;      // position of the decimal point after the first digit
36304|  2.51k|    const char* const s0 = text.data() + leading;
36305|       |
36306|  2.51k|    if (-4 < n && n <= 15)
  ------------------
  |  Branch (36306:9): [True: 0, False: 2.51k]
  |  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.51k|    std::memcpy(first, s0, 16);
36323|  2.51k|    std::memcpy(first + 2, s0 + 1, 16);
36324|  2.51k|    first[1] = '.';
36325|  2.51k|    char* const end = first + (k == 1 ? 1 : k + 1);
  ------------------
  |  Branch (36325:32): [True: 642, False: 1.87k]
  ------------------
36326|  2.51k|    const int e = n - 1;
36327|  2.51k|    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.51k, False: 0]
  ------------------
36328|  2.51k|    const bool three = ea >= 100;
36329|  2.51k|    end[0] = 'e';
36330|  2.51k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (36330:14): [True: 2.51k, False: 0]
  ------------------
36331|  2.51k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (36331:39): [True: 2.51k, False: 0]
  ------------------
36332|  2.51k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (36332:39): [True: 2.51k, False: 0]
  ------------------
36333|  2.51k|    end[4] = static_cast<char>('0' + (ea % 10));
36334|  2.51k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (36334:19): [True: 2.51k, False: 0]
  ------------------
36335|  2.51k|}
_ZZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalEENKUlS3_E_clES3_:
36384|  11.6k|    {
36385|  11.6k|        std::memcpy(p, &s, 16);
36386|  11.6k|    };
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE5flushEv:
38224|  29.2k|    {
38225|  29.2k|        o->write_characters(write_buffer.data(), write_buffer_pos);
38226|  29.2k|        write_buffer_pos = 0;
38227|  29.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail35binary_writer_default_error_handlerEv:
 6168|  8.54k|{
 6169|       |#if JSON_STRICT_BINARY_UTF8
 6170|       |    return error_handler_t::strict;
 6171|       |#else
 6172|  8.54k|    return error_handler_t::keep;
 6173|  8.54k|#endif
 6174|  8.54k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvED2Ev:
42005|  2.50M|    {
42006|  2.50M|        assert_invariant(false);
42007|  2.50M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16assert_invariantEb:
40333|  6.88M|    {
40334|  6.88M|        JSON_ASSERT(m_data.m_type != value_t::object || m_data.m_value.object != nullptr);
  ------------------
  |  | 2643|  6.88M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40334:9): [True: 6.36M, False: 513k]
  |  Branch (40334:9): [True: 513k, False: 0]
  |  Branch (40334:9): [True: 6.88M, False: 0]
  ------------------
40335|  6.88M|        JSON_ASSERT(m_data.m_type != value_t::array || m_data.m_value.array != nullptr);
  ------------------
  |  | 2643|  6.88M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40335:9): [True: 5.92M, False: 960k]
  |  Branch (40335:9): [True: 960k, False: 0]
  |  Branch (40335:9): [True: 6.88M, False: 0]
  ------------------
40336|  6.88M|        JSON_ASSERT(m_data.m_type != value_t::string || m_data.m_value.string != nullptr);
  ------------------
  |  | 2643|  6.88M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40336:9): [True: 6.34M, False: 533k]
  |  Branch (40336:9): [True: 533k, False: 0]
  |  Branch (40336:9): [True: 6.88M, False: 0]
  ------------------
40337|  6.88M|        JSON_ASSERT(m_data.m_type != value_t::binary || m_data.m_value.binary != nullptr);
  ------------------
  |  | 2643|  6.88M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40337:9): [True: 5.89M, False: 980k]
  |  Branch (40337:9): [True: 980k, False: 0]
  |  Branch (40337:9): [True: 6.88M, 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.88M|        static_cast<void>(check_parents);
40350|  6.88M|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataD2Ev:
45585|  3.07M|        {
45586|  3.07M|            m_value.destroy(m_type);
45587|  3.07M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value7destroyENS0_6detail7value_tE:
40277|  3.72M|        {
40278|  3.72M|            if (JSON_HEDLEY_UNLIKELY(detail::owns_memory(t)))
  ------------------
  |  | 1697|  3.72M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 349k, False: 3.37M]
  |  |  ------------------
  ------------------
40279|   349k|            {
40280|   349k|                destroy_owned(t);
40281|   349k|            }
40282|  3.72M|        }
_ZN8nlohmann16json_abi_v3_12_06detail11owns_memoryENS1_7value_tE:
 3441|  3.72M|{
 3442|  3.72M|    switch (t)
 3443|  3.72M|    {
 3444|  20.1k|        case value_t::object:
  ------------------
  |  Branch (3444:9): [True: 20.1k, False: 3.70M]
  ------------------
 3445|  61.8k|        case value_t::array:
  ------------------
  |  Branch (3445:9): [True: 41.6k, False: 3.68M]
  ------------------
 3446|   166k|        case value_t::string:
  ------------------
  |  Branch (3446:9): [True: 105k, False: 3.62M]
  ------------------
 3447|   349k|        case value_t::binary:
  ------------------
  |  Branch (3447:9): [True: 183k, False: 3.54M]
  ------------------
 3448|   349k|            return true;
 3449|       |
 3450|  3.01M|        case value_t::null:
  ------------------
  |  Branch (3450:9): [True: 3.01M, False: 714k]
  ------------------
 3451|  3.04M|        case value_t::boolean:
  ------------------
  |  Branch (3451:9): [True: 29.2k, False: 3.69M]
  ------------------
 3452|  3.16M|        case value_t::number_integer:
  ------------------
  |  Branch (3452:9): [True: 123k, False: 3.60M]
  ------------------
 3453|  3.31M|        case value_t::number_unsigned:
  ------------------
  |  Branch (3453:9): [True: 153k, False: 3.57M]
  ------------------
 3454|  3.37M|        case value_t::number_float:
  ------------------
  |  Branch (3454:9): [True: 53.8k, False: 3.67M]
  ------------------
 3455|  3.37M|        case value_t::discarded:
  ------------------
  |  Branch (3455:9): [True: 4.30k, False: 3.72M]
  ------------------
 3456|  3.37M|        default:
  ------------------
  |  Branch (3456:9): [True: 0, False: 3.72M]
  ------------------
 3457|  3.37M|            return false;
 3458|  3.72M|    }
 3459|  3.72M|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13destroy_ownedENS0_6detail7value_tE:
40285|   349k|        {
40286|   349k|            switch (t)
40287|   349k|            {
40288|   105k|                case value_t::string:
  ------------------
  |  Branch (40288:17): [True: 105k, False: 244k]
  ------------------
40289|   105k|                    destroy_pointer(string);
40290|   105k|                    break;
40291|       |
40292|   183k|                case value_t::binary:
  ------------------
  |  Branch (40292:17): [True: 183k, False: 166k]
  ------------------
40293|   183k|                    destroy_pointer(binary);
40294|   183k|                    break;
40295|       |
40296|  20.1k|                case value_t::object:
  ------------------
  |  Branch (40296:17): [True: 20.1k, False: 329k]
  ------------------
40297|  61.8k|                case value_t::array:
  ------------------
  |  Branch (40297:17): [True: 41.6k, False: 308k]
  ------------------
40298|  61.8k|                    destroy_container(t);
40299|  61.8k|                    break;
40300|       |
40301|      0|                case value_t::null: // LCOV_EXCL_LINE
  ------------------
  |  Branch (40301:17): [True: 0, False: 349k]
  ------------------
40302|      0|                case value_t::boolean:
  ------------------
  |  Branch (40302:17): [True: 0, False: 349k]
  ------------------
40303|      0|                case value_t::number_integer:
  ------------------
  |  Branch (40303:17): [True: 0, False: 349k]
  ------------------
40304|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (40304:17): [True: 0, False: 349k]
  ------------------
40305|      0|                case value_t::number_float:
  ------------------
  |  Branch (40305:17): [True: 0, False: 349k]
  ------------------
40306|      0|                case value_t::discarded:
  ------------------
  |  Branch (40306:17): [True: 0, False: 349k]
  ------------------
40307|      0|                default:
  ------------------
  |  Branch (40307:17): [True: 0, False: 349k]
  ------------------
40308|      0|                    break; // LCOV_EXCL_LINE
40309|   349k|            }
40310|   349k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15destroy_pointerISA_EEvRPT_:
40117|   105k|        {
40118|   105k|            if (ptr == nullptr)
  ------------------
  |  Branch (40118:17): [True: 0, False: 105k]
  ------------------
40119|      0|            {
40120|       |                // not initialized (e.g., due to exception in the ctor)
40121|      0|                return;
40122|      0|            }
40123|   105k|            AllocatorType<T> alloc;
40124|   105k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, ptr);
40125|   105k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, ptr, 1);
40126|   105k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15destroy_pointerINS0_27byte_container_with_subtypeISD_EEEEvRPT_:
40117|   183k|        {
40118|   183k|            if (ptr == nullptr)
  ------------------
  |  Branch (40118:17): [True: 0, False: 183k]
  ------------------
40119|      0|            {
40120|       |                // not initialized (e.g., due to exception in the ctor)
40121|      0|                return;
40122|      0|            }
40123|   183k|            AllocatorType<T> alloc;
40124|   183k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, ptr);
40125|   183k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, ptr, 1);
40126|   183k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value17destroy_containerENS0_6detail7value_tE:
40130|  61.8k|        {
40131|  61.8k|            if (
40132|  61.8k|                (t == value_t::object && object == nullptr) ||
  ------------------
  |  Branch (40132:18): [True: 20.1k, False: 41.6k]
  |  Branch (40132:42): [True: 0, False: 20.1k]
  ------------------
40133|  61.8k|                (t == value_t::array && array == nullptr)
  ------------------
  |  Branch (40133:18): [True: 41.6k, False: 20.1k]
  |  Branch (40133:41): [True: 0, False: 41.6k]
  ------------------
40134|  61.8k|            )
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|  61.8k|            data cur;
40149|  61.8k|            cur.m_type = t;
40150|  61.8k|            std::swap(cur.m_value, *this);
40151|       |
40152|  61.8k|            destroy_bounded(cur, 0);
40153|  61.8k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2Ev:
45578|  1.48M|        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|   683k|        {
40161|   683k|            if (JSON_HEDLEY_UNLIKELY(depth >= detail::recursion_depth_limit()))
  ------------------
  |  | 1697|   683k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16.3k, False: 667k]
  |  |  ------------------
  ------------------
40162|  16.3k|            {
40163|  16.3k|                destroy_walk(v);
40164|  16.3k|                return;
40165|  16.3k|            }
40166|       |
40167|   667k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40167:17): [True: 556k, False: 111k]
  ------------------
40168|   556k|            {
40169|   556k|                for (auto& child : *v.m_value.array)
  ------------------
  |  Branch (40169:34): [True: 1.08M, False: 556k]
  ------------------
40170|  1.08M|                {
40171|  1.08M|                    if (child.m_data.m_type == value_t::array || child.m_data.m_type == value_t::object)
  ------------------
  |  Branch (40171:25): [True: 515k, False: 572k]
  |  Branch (40171:66): [True: 47.7k, False: 525k]
  ------------------
40172|   563k|                    {
40173|   563k|                        destroy_bounded(child.m_data, depth + 1);
40174|   563k|                    }
40175|  1.08M|                }
40176|   556k|            }
40177|   111k|            else
40178|   111k|            {
40179|   111k|                for (auto& child : *v.m_value.object)
  ------------------
  |  Branch (40179:34): [True: 117k, False: 111k]
  ------------------
40180|   117k|                {
40181|   117k|                    if (child.second.m_data.m_type == value_t::array || child.second.m_data.m_type == value_t::object)
  ------------------
  |  Branch (40181:25): [True: 4.59k, False: 112k]
  |  Branch (40181:73): [True: 54.0k, False: 58.6k]
  ------------------
40182|  58.6k|                    {
40183|  58.6k|                        destroy_bounded(child.second.m_data, depth + 1);
40184|  58.6k|                    }
40185|   117k|                }
40186|   111k|            }
40187|       |
40188|       |            // only leaves and already destroyed (null) children remain
40189|   667k|            free_container(v);
40190|   667k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value12destroy_walkERNSE_4dataE:
40214|  16.3k|        {
40215|  16.3k|            data cur;
40216|  16.3k|            take(cur, top);
40217|       |
40218|  16.3k|            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|  16.3k|            bool fresh = true;
40225|       |
40226|   526k|            while (true)
  ------------------
  |  Branch (40226:20): [True: 526k, Folded]
  ------------------
40227|   526k|            {
40228|   526k|                const bool fresh_now = fresh;
40229|   526k|                fresh = false;
40230|   526k|                if (has_no_children(cur) || (fresh_now && all_children_leaves(cur)))
  ------------------
  |  Branch (40230:21): [True: 242k, False: 284k]
  |  Branch (40230:46): [True: 249k, False: 34.8k]
  |  Branch (40230:59): [True: 12.8k, False: 236k]
  ------------------
40231|   254k|                {
40232|   254k|                    if (prev.m_type == value_t::null)
  ------------------
  |  Branch (40232:25): [True: 16.3k, False: 238k]
  ------------------
40233|  16.3k|                    {
40234|  16.3k|                        free_container(cur);
40235|  16.3k|                        return; // back at the top with nothing left to do
40236|  16.3k|                    }
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|   238k|                    data gp;
40242|   238k|                    take(gp, walk_child(prev));
40243|   238k|                    pop_walk_child(prev);
40244|       |
40245|   238k|                    free_container(cur);
40246|       |
40247|   238k|                    take(cur, prev);
40248|   238k|                    take(prev, gp);
40249|   238k|                    continue;
40250|   254k|                }
40251|       |
40252|   271k|                data& cur_child_ref = walk_child(cur);
40253|       |
40254|   271k|                if (has_no_children(cur_child_ref))
  ------------------
  |  Branch (40254:21): [True: 32.8k, False: 238k]
  ------------------
40255|  32.8k|                {
40256|       |                    // scalar, or already-empty array/object
40257|  32.8k|                    pop_walk_child(cur);
40258|  32.8k|                    continue;
40259|  32.8k|                }
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|   238k|                data tmp;
40265|   238k|                take(tmp, cur_child_ref);
40266|   238k|                take(cur_child_ref, prev);
40267|   238k|                take(prev, cur);
40268|   238k|                take(cur, tmp);
40269|   238k|                fresh = true;
40270|   238k|            }
40271|  16.3k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value4takeERNSE_4dataESH_:
39993|  1.68M|        {
39994|  1.68M|            dst.m_type = src.m_type;
39995|  1.68M|            dst.m_value = src.m_value;
39996|  1.68M|            src.m_type = value_t::null;
39997|  1.68M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15has_no_childrenERKNSE_4dataE:
40001|  3.23M|        {
40002|  3.23M|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40002:17): [True: 1.59M, False: 1.64M]
  ------------------
40003|  1.59M|            {
40004|  1.59M|                return v.m_value.array->empty();
40005|  1.59M|            }
40006|  1.64M|            if (v.m_type == value_t::object)
  ------------------
  |  Branch (40006:17): [True: 357k, False: 1.28M]
  ------------------
40007|   357k|            {
40008|   357k|                return v.m_value.object->empty();
40009|   357k|            }
40010|  1.28M|            return true;
40011|  1.64M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKNSE_4dataE:
40018|   860k|        {
40019|       |            // array_t only needs forward iterators (see custom_array_type)
40020|   860k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40020:17): [True: 732k, False: 127k]
  ------------------
40021|   732k|            {
40022|   732k|                const auto& a = *v.m_value.array;
40023|   732k|                return std::all_of(a.begin(), a.end(), [](const basic_json & el)
40024|   732k|                {
40025|   732k|                    return has_no_children(el.m_data);
40026|   732k|                });
40027|   732k|            }
40028|   127k|            const auto& o = *v.m_value.object;
40029|   127k|            return std::all_of(o.begin(), o.end(), [](const typename object_t::value_type & el)
40030|   127k|            {
40031|   127k|                return has_no_children(el.second.m_data);
40032|   127k|            });
40033|   860k|        }
_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.32M|                {
40025|  1.32M|                    return has_no_children(el.m_data);
40026|  1.32M|                });
_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|   188k|            {
40031|   188k|                return has_no_children(el.second.m_data);
40032|   188k|            });
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10walk_childERNSE_4dataE:
40064|   510k|        {
40065|   510k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40065:17): [True: 416k, False: 93.4k]
  ------------------
40066|   416k|            {
40067|   416k|                return v.m_value.array->back().m_data;
40068|   416k|            }
40069|  93.4k|            JSON_ASSERT(v.m_type == value_t::object);
  ------------------
  |  | 2643|  93.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40069:13): [True: 93.4k, False: 0]
  ------------------
40070|  93.4k|            return walk_child_it(*v.m_value.object)->second.m_data;
40071|  93.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|   149k|        {
40057|   149k|            JSON_ASSERT(!o.empty());
  ------------------
  |  | 2643|   149k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40057:13): [True: 149k, False: 0]
  ------------------
40058|   149k|            return walk_child_it(o, typename std::iterator_traits<typename ObjectType_::iterator>::iterator_category());
40059|   149k|        }
_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|   149k|        {
40045|   149k|            return std::prev(o.end());
40046|   149k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14pop_walk_childERNSE_4dataE:
40078|   271k|        {
40079|   271k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40079:17): [True: 215k, False: 55.6k]
  ------------------
40080|   215k|            {
40081|   215k|                v.m_value.array->pop_back();
40082|   215k|            }
40083|  55.6k|            else
40084|  55.6k|            {
40085|  55.6k|                JSON_ASSERT(v.m_type == value_t::object);
  ------------------
  |  | 2643|  55.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40085:17): [True: 55.6k, False: 0]
  ------------------
40086|  55.6k|                v.m_value.object->erase(walk_child_it(*v.m_value.object));
40087|  55.6k|            }
40088|   271k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14free_containerERNSE_4dataE:
40096|   922k|        {
40097|   922k|            JSON_ASSERT(has_no_children(v) || all_children_leaves(v));
  ------------------
  |  | 2643|   922k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40097:13): [True: 311k, False: 610k]
  |  Branch (40097:13): [True: 610k, False: 0]
  |  Branch (40097:13): [True: 922k, False: 0]
  ------------------
40098|   922k|            if (v.m_type == value_t::array)
  ------------------
  |  Branch (40098:17): [True: 761k, False: 160k]
  ------------------
40099|   761k|            {
40100|   761k|                AllocatorType<array_t> alloc;
40101|   761k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_value.array);
40102|   761k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_value.array, 1);
40103|   761k|            }
40104|   160k|            else
40105|   160k|            {
40106|   160k|                JSON_ASSERT(v.m_type == value_t::object);
  ------------------
  |  | 2643|   160k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (40106:17): [True: 160k, False: 0]
  ------------------
40107|   160k|                AllocatorType<object_t> alloc;
40108|   160k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_value.object);
40109|   160k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_value.object, 1);
40110|   160k|            }
40111|   922k|            v.m_type = value_t::null; // avoid a double free if v is later destructed
40112|   922k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborIRKSD_EESE_OT_bbNS0_6detail18cbor_tag_handler_tENSK_15error_handler_tE:
45851|  21.4k|    {
45852|  21.4k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
45853|  21.4k|    }
_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|  30.0k|    {
45630|  30.0k|        basic_json result;
45631|  30.0k|        detail::json_sax_dom_binary_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
45632|  30.0k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
45633|  30.0k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (45633:13): [True: 4.30k, False: 25.7k]
  ------------------
45634|  4.30k|        {
45635|  4.30k|            result = value_t::discarded;
45636|  4.30k|        }
45637|  30.0k|        return result;
45638|  30.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EDn:
41578|   264k|    {
41579|   264k|        assert_invariant();
41580|   264k|    }
_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|  30.0k|        : json_sax_dom_error_state(allow_exceptions_), root(r), m_lexer_ref(lexer_)
17427|  30.0k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail24json_sax_dom_error_stateC2Eb:
16324|  55.7k|        : allow_exceptions(allow_exceptions_)
16325|  55.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_EEEC2EOSK_NS1_14input_format_tENS1_15error_handler_tE:
18477|  30.0k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
18478|  30.0k|    {
18479|  30.0k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
18480|  30.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE3eofEv:
 4442|   694k|    {
 4443|   694k|        return static_cast<int_type>(std::char_traits<char>::eof());
 4444|   694k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17little_endiannessEi:
18415|  64.3k|{
18416|  64.3k|    return *reinterpret_cast<char*>(&num) == 1;
18417|  64.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_EEE9sax_parseEPSM_bNS1_18cbor_tag_handler_tE:
18502|  30.0k|    {
18503|  30.0k|        sax = sax_;
18504|  30.0k|        container_stack.clear();
18505|  30.0k|        bon8_pushback_size = 0;
18506|  30.0k|        bool result = false;
18507|       |
18508|  30.0k|        switch (input_format)
18509|  30.0k|        {
18510|      0|            case input_format_t::bson:
  ------------------
  |  Branch (18510:13): [True: 0, False: 30.0k]
  ------------------
18511|      0|                result = parse_bson_internal();
18512|      0|                break;
18513|       |
18514|  30.0k|            case input_format_t::cbor:
  ------------------
  |  Branch (18514:13): [True: 30.0k, False: 0]
  ------------------
18515|  30.0k|                result = parse_cbor_internal(tag_handler);
18516|  30.0k|                break;
18517|       |
18518|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (18518:13): [True: 0, False: 30.0k]
  ------------------
18519|      0|                result = parse_msgpack_internal();
18520|      0|                break;
18521|       |
18522|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (18522:13): [True: 0, False: 30.0k]
  ------------------
18523|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (18523:13): [True: 0, False: 30.0k]
  ------------------
18524|      0|                result = parse_ubjson_internal();
18525|      0|                break;
18526|       |
18527|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (18527:13): [True: 0, False: 30.0k]
  ------------------
18528|      0|                result = parse_bon8_internal();
18529|      0|                break;
18530|       |
18531|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (18531:13): [True: 0, False: 30.0k]
  ------------------
18532|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (18532:13): [True: 0, False: 30.0k]
  ------------------
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|  30.0k|        }
18535|       |
18536|       |        // strict mode: next byte must be EOF
18537|  21.6k|        if (result && strict)
  ------------------
  |  Branch (18537:13): [True: 17.4k, False: 4.19k]
  |  Branch (18537:23): [True: 17.4k, False: 0]
  ------------------
18538|  17.4k|        {
18539|  17.4k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (18539:17): [True: 0, False: 17.4k]
  |  Branch (18539:59): [True: 0, False: 17.4k]
  ------------------
18540|      0|            {
18541|      0|                get_ignore_noop();
18542|      0|            }
18543|  17.4k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (18543:22): [True: 0, False: 17.4k]
  ------------------
18544|      0|            {
18545|       |                // a string that ends a container hands back the byte after it
18546|      0|                get_bon8();
18547|      0|            }
18548|  17.4k|            else
18549|  17.4k|            {
18550|  17.4k|                get();
18551|  17.4k|            }
18552|       |
18553|  17.4k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  17.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 348, False: 17.0k]
  |  |  ------------------
  ------------------
18554|    348|            {
18555|    348|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
18556|    348|            }
18557|  17.4k|        }
18558|       |
18559|  21.2k|        return result;
18560|  21.6k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E15remaining_countEv:
10193|   205k|    {
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|   205k|        return static_cast<std::size_t>(std::distance(current, end));
10200|   205k|#endif
10201|   205k|    }
_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|  11.1k|    {
23344|  11.1k|        return sax->parse_error(chars_read, "<end of file>",
23345|  11.1k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
23346|  11.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail24json_sax_dom_error_state11parse_errorINS1_11parse_errorEEEbmRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEERKT_:
16337|  24.1k|    {
16338|  24.1k|        errored = true;
16339|  24.1k|        static_cast<void>(ex);
16340|  24.1k|        if (allow_exceptions)
  ------------------
  |  Branch (16340:13): [True: 20.1k, False: 4.02k]
  ------------------
16341|  20.1k|        {
16342|  20.1k|            JSON_THROW(ex);
  ------------------
  |  | 2608|  20.1k|    #define JSON_THROW(exception) throw exception
  ------------------
16343|  20.1k|        }
16344|  4.02k|        return false;
16345|  24.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idEmRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5781|  24.1k|    {
 5782|  24.1k|        return create(static_cast<int>(id_), byte_, what_arg, context);
 5783|  24.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_imRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5766|  24.1k|    {
 5767|  24.1k|        const std::string w = concat(exception::name("parse_error", id_), "parse error",
 5768|  24.1k|                                     (byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""),
  ------------------
  |  Branch (5768:39): [True: 24.1k, False: 0]
  ------------------
 5769|  24.1k|                                     ": ", exception::diagnostics(context), what_arg);
 5770|  24.1k|        return {id_, byte_, w.c_str()};
 5771|  24.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_RA12_KcS9_RA3_SA_S9_RKS9_EEET_DpOT0_:
 5516|  24.1k|{
 5517|  24.1k|    OutStringType str;
 5518|  24.1k|    str.reserve(concat_length(args...));
 5519|  24.1k|    concat_into(str, std::forward<Args>(args)...);
 5520|  24.1k|    return str;
 5521|  24.1k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA12_cS9_A3_cS9_S9_EEEmRKT_DpRKT0_:
 5426|  24.1k|{
 5427|  24.1k|    return str.size() + concat_length(rest...);
 5428|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_S9_EEEmPKcDpRKT_:
 5420|  24.1k|{
 5421|  24.1k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_S9_EEEmRKT_DpRKT0_:
 5426|  24.1k|{
 5427|  24.1k|    return str.size() + concat_length(rest...);
 5428|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_EEEmPKcDpRKT_:
 5420|  24.1k|{
 5421|  24.1k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  24.1k|}
_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|  24.1k|{
 5480|  24.1k|    out.append(std::forward<Arg>(arg));
 5481|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  24.1k|}
_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|  24.1k|{
 5480|  24.1k|    out.append(std::forward<Arg>(arg));
 5481|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  24.1k|}
_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|  24.1k|{
 5480|  24.1k|    out.append(std::forward<Arg>(arg));
 5481|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  24.1k|{
 5480|  24.1k|    out.append(std::forward<Arg>(arg));
 5481|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA10_KcS9_EEET_DpOT0_:
 5516|  24.1k|{
 5517|  24.1k|    OutStringType str;
 5518|  24.1k|    str.reserve(concat_length(args...));
 5519|  24.1k|    concat_into(str, std::forward<Args>(args)...);
 5520|  24.1k|    return str;
 5521|  24.1k|} // 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|  24.1k|{
 5480|  24.1k|    out.append(std::forward<Arg>(arg));
 5481|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11parse_errorC2EimPKc:
 5798|  24.1k|        : 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|  12.0k|    {
23455|  12.0k|        std::string error_msg = "syntax error while parsing ";
23456|  12.0k|        error_msg += input_format_name(input_format);
23457|       |
23458|  12.0k|        return concat(error_msg, ' ', context, ": ", detail);
23459|  12.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17input_format_nameENS1_14input_format_tE:
 9263|  24.1k|{
 9264|  24.1k|    switch (format)
 9265|  24.1k|    {
 9266|  24.1k|        case input_format_t::cbor:
  ------------------
  |  Branch (9266:9): [True: 24.1k, False: 0]
  ------------------
 9267|  24.1k|            return "CBOR";
 9268|      0|        case input_format_t::msgpack:
  ------------------
  |  Branch (9268:9): [True: 0, False: 24.1k]
  ------------------
 9269|      0|            return "MessagePack";
 9270|      0|        case input_format_t::ubjson:
  ------------------
  |  Branch (9270:9): [True: 0, False: 24.1k]
  ------------------
 9271|      0|            return "UBJSON";
 9272|      0|        case input_format_t::bson:
  ------------------
  |  Branch (9272:9): [True: 0, False: 24.1k]
  ------------------
 9273|      0|            return "BSON";
 9274|      0|        case input_format_t::bjdata:
  ------------------
  |  Branch (9274:9): [True: 0, False: 24.1k]
  ------------------
 9275|      0|            return "BJData";
 9276|      0|        case input_format_t::bon8:
  ------------------
  |  Branch (9276:9): [True: 0, False: 24.1k]
  ------------------
 9277|      0|            return "BON8";
 9278|      0|        case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (9278:9): [True: 0, False: 24.1k]
  ------------------
 9279|      0|        default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (9279:9): [True: 0, False: 24.1k]
  ------------------
 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|  24.1k|    }
 9283|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRS9_cRKS9_RA3_KcSC_EEET_DpOT0_:
 5516|  24.1k|{
 5517|  24.1k|    OutStringType str;
 5518|  24.1k|    str.reserve(concat_length(args...));
 5519|  24.1k|    concat_into(str, std::forward<Args>(args)...);
 5520|  24.1k|    return str;
 5521|  24.1k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cS9_EEEmRKT_DpRKT0_:
 5426|  24.1k|{
 5427|  24.1k|    return str.size() + concat_length(rest...);
 5428|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_EEEmcDpRKT_:
 5414|  24.1k|{
 5415|  24.1k|    return 1 + concat_length(rest...);
 5416|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_EEEmRKT_DpRKT0_:
 5426|  24.1k|{
 5427|  24.1k|    return str.size() + concat_length(rest...);
 5428|  24.1k|}
_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|  24.1k|{
 5480|  24.1k|    out.append(std::forward<Arg>(arg));
 5481|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  24.1k|}
_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|  24.1k|{
 5489|  24.1k|    out += std::forward<Arg>(arg);
 5490|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5491|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRA3_KcSB_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  24.1k|{
 5480|  24.1k|    out.append(std::forward<Arg>(arg));
 5481|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  24.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  24.1k|{
 5480|  24.1k|    out.append(std::forward<Arg>(arg));
 5481|  24.1k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  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_EEE15enter_containerEbmm:
18618|   509k|    {
18619|   509k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1697|  1.01M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 281, False: 508k]
  |  |  |  Branch (1697:94): [True: 87.0k, False: 422k]
  |  |  ------------------
  ------------------
18620|    281|        {
18621|    281|            return false;
18622|    281|        }
18623|       |
18624|   508k|        container_stack.emplace_back(len, is_object, type_marker);
18625|   508k|        return true;
18626|   509k|    }
_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|  87.0k|    {
17484|  87.0k|        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|  87.0k|        return check_container_size(*this, len, "object", ref_stack.back());
17492|  87.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_adapterIPKhSJ_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
17566|   509k|    {
17567|   509k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 20.4k, False: 488k]
  ------------------
17568|  20.4k|        {
17569|  20.4k|            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|  20.4k|            return &root;
17576|  20.4k|        }
17577|       |
17578|   488k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   488k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 431k, False: 57.7k]
  |  Branch (17578:9): [True: 57.7k, False: 0]
  |  Branch (17578:9): [True: 488k, False: 0]
  ------------------
17579|       |
17580|   488k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 431k, False: 57.7k]
  ------------------
17581|   431k|        {
17582|   431k|            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|   431k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   431k|        }
17590|       |
17591|  57.7k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  57.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 57.7k, False: 0]
  ------------------
17592|  57.7k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  57.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 57.7k, False: 0]
  ------------------
17593|  57.7k|        *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|  57.7k|        return object_element;
17600|  57.7k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8is_arrayEv:
42131|  3.93M|    {
42132|  3.93M|        return m_data.m_type == value_t::array;
42133|  3.93M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9is_objectEv:
42123|   884k|    {
42124|   884k|        return m_data.m_type == value_t::object;
42125|   884k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EOSE_:
41950|   666k|        : json_base_class_t(std::move(static_cast<json_base_class_t&>(other))),
41951|   666k|          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|   666k|    {
41957|       |        // check that the passed value is valid
41958|   666k|        other.assert_invariant(false);
41959|       |
41960|       |        // invalidate payload
41961|   666k|        other.m_data.m_type = value_t::null;
41962|   666k|        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|   666k|        set_parents();
41970|   666k|        assert_invariant();
41971|   666k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11set_parentsEv:
40353|  2.94M|    {
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.94M|    }
_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|   509k|{
16180|   509k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1697|   994k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 843, False: 508k]
  |  |  |  Branch (1697:94): [True: 485k, False: 24.1k]
  |  |  |  Branch (1697:94): [True: 843, False: 484k]
  |  |  ------------------
  ------------------
16181|    843|    {
16182|    843|        return container_too_large_error(sax, len, kind, ref);
16183|    843|    }
16184|   508k|    return true;
16185|   509k|}
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8max_sizeEv:
44002|   874k|    {
44003|   874k|        if (m_data.m_type == value_t::array)
  ------------------
  |  Branch (44003:13): [True: 722k, False: 151k]
  ------------------
44004|   722k|        {
44005|       |            // delegate call to array_t::max_size()
44006|   722k|            return m_data.m_value.array->max_size();
44007|   722k|        }
44008|       |
44009|   151k|        if (m_data.m_type == value_t::object)
  ------------------
  |  Branch (44009:13): [True: 151k, False: 0]
  ------------------
44010|   151k|        {
44011|       |            // delegate call to object_t::max_size()
44012|   151k|            return m_data.m_value.object->max_size();
44013|   151k|        }
44014|       |
44015|       |        // all other types have max_size() == size()
44016|      0|        return size();
44017|   151k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4sizeEv:
43962|  5.30k|    {
43963|  5.30k|        switch (m_data.m_type)
43964|  5.30k|        {
43965|      0|            case value_t::null:
  ------------------
  |  Branch (43965:13): [True: 0, False: 5.30k]
  ------------------
43966|      0|            {
43967|       |                // null values are empty
43968|      0|                return 0;
43969|      0|            }
43970|       |
43971|  4.75k|            case value_t::array:
  ------------------
  |  Branch (43971:13): [True: 4.75k, False: 542]
  ------------------
43972|  4.75k|            {
43973|       |                // delegate call to array_t::size()
43974|  4.75k|                return m_data.m_value.array->size();
43975|      0|            }
43976|       |
43977|    542|            case value_t::object:
  ------------------
  |  Branch (43977:13): [True: 542, False: 4.75k]
  ------------------
43978|    542|            {
43979|       |                // delegate call to object_t::size()
43980|    542|                return m_data.m_value.object->size();
43981|      0|            }
43982|       |
43983|      0|            case value_t::string:
  ------------------
  |  Branch (43983:13): [True: 0, False: 5.30k]
  ------------------
43984|      0|            case value_t::boolean:
  ------------------
  |  Branch (43984:13): [True: 0, False: 5.30k]
  ------------------
43985|      0|            case value_t::number_integer:
  ------------------
  |  Branch (43985:13): [True: 0, False: 5.30k]
  ------------------
43986|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (43986:13): [True: 0, False: 5.30k]
  ------------------
43987|      0|            case value_t::number_float:
  ------------------
  |  Branch (43987:13): [True: 0, False: 5.30k]
  ------------------
43988|      0|            case value_t::binary:
  ------------------
  |  Branch (43988:13): [True: 0, False: 5.30k]
  ------------------
43989|      0|            case value_t::discarded:
  ------------------
  |  Branch (43989:13): [True: 0, False: 5.30k]
  ------------------
43990|      0|            default:
  ------------------
  |  Branch (43990:13): [True: 0, False: 5.30k]
  ------------------
43991|      0|            {
43992|       |                // all other types have size 1
43993|      0|                return 1;
43994|      0|            }
43995|  5.30k|        }
43996|  5.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail25container_too_large_errorINS1_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_:
16173|    843|{
16174|    843|    return sax.parse_error(0, "", out_of_range::create(exception_id::container_too_large, concat("excessive ", kind, " size: ", std::to_string(len)), ref));
16175|    843|}
_ZN8nlohmann16json_abi_v3_12_06detail24json_sax_dom_error_state11parse_errorINS1_12out_of_rangeEEEbmRKNSt3__112basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEERKT_:
16337|  1.69k|    {
16338|  1.69k|        errored = true;
16339|  1.69k|        static_cast<void>(ex);
16340|  1.69k|        if (allow_exceptions)
  ------------------
  |  Branch (16340:13): [True: 1.41k, False: 283]
  ------------------
16341|  1.41k|        {
16342|  1.41k|            JSON_THROW(ex);
  ------------------
  |  | 2608|  1.41k|    #define JSON_THROW(exception) throw exception
  ------------------
16343|  1.41k|        }
16344|    283|        return false;
16345|  1.69k|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_range6createIPNS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEETnNS5_9enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idERKSD_SK_:
 5868|  1.68k|    {
 5869|  1.68k|        return create(static_cast<int>(id_), what_arg, context);
 5870|  1.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_range6createIPNS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEETnNS5_9enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_iRKSD_SK_:
 5861|  1.68k|    {
 5862|  1.68k|        const std::string w = exception::what_impl("out_of_range", id_, what_arg, context);
 5863|  1.68k|        return {id_, w.c_str()};
 5864|  1.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exception9what_implIPNS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEEEESD_RKSD_iSK_T_:
 5655|  1.68k|    {
 5656|  1.68k|        return concat(name(ename, id_), diagnostics(context), what_arg);
 5657|  1.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exception11diagnosticsINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEEEESD_PKT_:
 5666|  1.68k|    {
 5667|       |#if JSON_DIAGNOSTICS
 5668|       |        std::vector<std::string> tokens;
 5669|       |        for (const auto* current = leaf_element; current != nullptr && current->m_parent != nullptr; current = current->m_parent)
 5670|       |        {
 5671|       |            const auto* parent = current->m_parent;
 5672|       |            if (parent->is_array())
 5673|       |            {
 5674|       |                for (std::size_t i = 0; i < parent->m_data.m_value.array->size(); ++i)
 5675|       |                {
 5676|       |                    if (&parent->m_data.m_value.array->operator[](i) == current)
 5677|       |                    {
 5678|       |                        tokens.emplace_back(std::to_string(i));
 5679|       |                        break;
 5680|       |                    }
 5681|       |                }
 5682|       |            }
 5683|       |            else if (parent->is_object())
 5684|       |            {
 5685|       |                for (const auto& element : *parent->m_data.m_value.object)
 5686|       |                {
 5687|       |                    if (&element.second == current)
 5688|       |                    {
 5689|       |                        // data() is null-terminated, so a key containing
 5690|       |                        // a null byte is cut short here rather than
 5691|       |                        // truncating the whole message at what()
 5692|       |                        tokens.emplace_back(element.first.data());
 5693|       |                        break;
 5694|       |                    }
 5695|       |                }
 5696|       |            }
 5697|       |            // all other parent types (primitives) contribute no token
 5698|       |        }
 5699|       |
 5700|       |        // the root value has no path, but still has a byte range
 5701|       |        std::string prefix;
 5702|       |        if (!tokens.empty())
 5703|       |        {
 5704|       |            const auto str = std::accumulate(tokens.rbegin(), tokens.rend(), std::string{},
 5705|       |                                             [](const std::string & a, const std::string & b)
 5706|       |            {
 5707|       |                return concat(a, '/', detail::escape(b));
 5708|       |            });
 5709|       |            prefix = concat('(', str, ") ");
 5710|       |        }
 5711|       |
 5712|       |        return concat(prefix, get_byte_positions(leaf_element));
 5713|       |#else
 5714|  1.68k|        return get_byte_positions(leaf_element);
 5715|  1.68k|#endif
 5716|  1.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exception18get_byte_positionsINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEEEESD_PKT_:
 5735|  1.68k|    {
 5736|  1.68k|        static_cast<void>(leaf_element);
 5737|  1.68k|        return "";
 5738|  1.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_rangeC2EiPKc:
 5874|  1.69k|    out_of_range(int id_, const char* what_arg) : exception(id_, what_arg) {}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA11_KcRPSA_RA8_SA_S9_EEET_DpOT0_:
 5516|  1.68k|{
 5517|  1.68k|    OutStringType str;
 5518|  1.68k|    str.reserve(concat_length(args...));
 5519|  1.68k|    concat_into(str, std::forward<Args>(args)...);
 5520|  1.68k|    return str;
 5521|  1.68k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJPKcA8_cNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEEEEmS4_DpRKT_:
 5420|  1.68k|{
 5421|  1.68k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  1.68k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA8_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5420|  1.68k|{
 5421|  1.68k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  1.68k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA11_KcJRPSA_RA8_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5479|  1.68k|{
 5480|  1.68k|    out.append(std::forward<Arg>(arg));
 5481|  1.68k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.68k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA8_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  1.68k|{
 5480|  1.68k|    out.append(std::forward<Arg>(arg));
 5481|  1.68k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.68k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA8_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|  1.68k|{
 5480|  1.68k|    out.append(std::forward<Arg>(arg));
 5481|  1.68k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.68k|}
_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|   422k|    {
17521|   422k|        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|   422k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1697|   422k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 132, False: 422k]
  |  |  ------------------
  ------------------
17529|    132|        {
17530|    132|            return false;
17531|    132|        }
17532|       |
17533|   422k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (17533:13): [True: 402k, False: 19.8k]
  ------------------
17534|   402k|        {
17535|   402k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
17536|   402k|        }
17537|       |
17538|   422k|        return true;
17539|   422k|    }
_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|   721k|{
16151|   721k|    constexpr std::size_t reserve_cap = 16384;
16152|   721k|    arr.reserve((std::min)(len, reserve_cap));
16153|   721k|}
_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|   508k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail12unknown_sizeEv:
16132|  1.75M|{
16133|  1.75M|    return (std::numeric_limits<std::size_t>::max)();
16134|  1.75M|}
_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|   402k|    {
18651|   402k|        const bool is_object = container_stack.back().is_object;
18652|   402k|        container_stack.pop_back();
18653|   402k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (18653:16): [True: 62.7k, False: 339k]
  ------------------
18654|   402k|    }
_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|  62.7k|    {
17507|  62.7k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  62.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17507:9): [True: 62.7k, False: 0]
  ------------------
17508|  62.7k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  62.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17508:9): [True: 62.7k, False: 0]
  ------------------
17509|       |
17510|       |#if JSON_DIAGNOSTIC_POSITIONS
17511|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17512|       |#endif
17513|       |
17514|  62.7k|        ref_stack.back()->set_parents();
17515|  62.7k|        ref_stack.pop_back();
17516|  62.7k|        return true;
17517|  62.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_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|   342k|    {
23327|   342k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|   342k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 10.0k, False: 332k]
  |  |  ------------------
  ------------------
23328|  10.0k|        {
23329|  10.0k|            return report_eof(context);
23330|  10.0k|        }
23331|   332k|        return true;
23332|   342k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E14bulk_remainingEv:
10218|   132k|    {
10219|   132k|        return remaining_count();
10220|   132k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E9bulk_dataEv:
10212|   122k|    {
10213|   122k|        return &*current;
10214|   122k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E9bulk_skipEm:
10224|  90.4k|    {
10225|  90.4k|        std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(n));
10226|  90.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_EEE17check_string_utf8ERSC_PKc:
23163|   174k|    {
23164|   174k|        return error_handler == error_handler_t::keep || check_string_utf8_handler(result, context);
  ------------------
  |  Branch (23164:16): [True: 174k, False: 0]
  |  Branch (23164:58): [True: 0, False: 0]
  ------------------
23165|   174k|    }
_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|   120k|    {
17496|   120k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|   120k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17496:9): [True: 120k, False: 0]
  ------------------
17497|   120k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|   120k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17497:9): [True: 120k, 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|   120k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](std::move(val)));
17502|   120k|        return true;
17503|   120k|    }
_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|  3.32k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  3.32k|        auto new_chars_read = ia.get_elements(&dest);
22859|  3.32k|        chars_read += new_chars_read;
22860|  3.32k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  3.32k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 57, False: 3.26k]
  |  |  ------------------
  ------------------
22861|     57|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     57|            ++chars_read;
22864|     57|            static_cast<void>(report_eof(context));
22865|     57|            return false;
22866|     57|        }
22867|  3.26k|        return true;
22868|  3.32k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIdEEmPT_m:
10174|  3.32k|    {
10175|  3.32k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  3.32k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIdEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  3.32k|    {
10233|  3.32k|        const std::size_t wanted = count * sizeof(T);
10234|  3.32k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  3.32k|        const std::size_t copied = (std::min)(wanted, available);
10236|  3.32k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  3.32k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.30k, False: 21]
  |  |  ------------------
  ------------------
10237|  3.30k|        {
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.30k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  3.30k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 3.30k, False: 0]
  ------------------
10242|  3.30k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  3.30k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 3.30k, 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.30k|            std::memcpy(dest, &*current, copied);
10246|  3.30k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  3.30k|        }
10248|  3.32k|        return copied;
10249|  3.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_swapERd:
22887|  4.06k|    {
22888|  4.06k|        static_assert(sizeof(double) == sizeof(std::uint64_t), "double must have 64 bits");
22889|  4.06k|        std::uint64_t bits{};
22890|  4.06k|        std::memcpy(&bits, &number, sizeof(bits));
22891|  4.06k|        bits = byteswap(bits);
22892|  4.06k|        std::memcpy(&number, &bits, sizeof(bits));
22893|  4.06k|    }
_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.06k|    {
23035|  4.06k|        const auto result = static_cast<number_float_t>(number);
23036|  4.06k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  8.11k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 4.06k]
  |  |  |  Branch (1697:94): [True: 4.05k, False: 9]
  |  |  |  Branch (1697:94): [True: 0, False: 4.05k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  4.06k|        return sax->number_float(result, no_source);
23041|  4.06k|    }
_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.85k|    {
23444|  1.85k|        return hex_byte(static_cast<std::uint8_t>(current));
23445|  1.85k|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_range6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idERKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5868|     12|    {
 5869|     12|        return create(static_cast<int>(id_), what_arg, context);
 5870|     12|    }
_ZN8nlohmann16json_abi_v3_12_06detail12out_of_range6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_iRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5861|     12|    {
 5862|     12|        const std::string w = exception::what_impl("out_of_range", id_, what_arg, context);
 5863|     12|        return {id_, w.c_str()};
 5864|     12|    }
_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|  29.7k|    {
17462|  29.7k|        handle_value(val);
17463|  29.7k|        return true;
17464|  29.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|  29.7k|    {
17567|  29.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 2.33k, False: 27.3k]
  ------------------
17568|  2.33k|        {
17569|  2.33k|            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.33k|            return &root;
17576|  2.33k|        }
17577|       |
17578|  27.3k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  27.3k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 24.5k, False: 2.83k]
  |  Branch (17578:9): [True: 2.83k, False: 0]
  |  Branch (17578:9): [True: 27.3k, False: 0]
  ------------------
17579|       |
17580|  27.3k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 24.5k, False: 2.83k]
  ------------------
17581|  24.5k|        {
17582|  24.5k|            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|  24.5k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  24.5k|        }
17590|       |
17591|  2.83k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  2.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 2.83k, False: 0]
  ------------------
17592|  2.83k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  2.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 2.83k, False: 0]
  ------------------
17593|  2.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|  2.83k|        return object_element;
17600|  2.83k|    }
_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|  53.8k|    {
41597|  53.8k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|  53.8k|        set_parents();
41599|  53.8k|        assert_invariant();
41600|  53.8k|    }
_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|  53.8k|    {
 8423|  53.8k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|  53.8k|    }
_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|  53.8k|    {
 8367|  53.8k|        return to_json(j, std::forward<T>(val));
 8368|  53.8k|    }
_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|  53.8k|{
 8060|  53.8k|    external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
 8061|  53.8k|}
_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|  53.8k|    {
 7850|  53.8k|        j.replace_value(value_t::number_float, val);
 7851|  53.8k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13replace_valueENS0_6detail7value_tERKNSE_10json_valueE:
40376|   648k|    {
40377|   648k|        m_data.m_value.destroy(m_data.m_type);
40378|   648k|        m_data.m_value = v;
40379|   648k|        m_data.m_type = t;
40380|   648k|        set_parents();
40381|   648k|        assert_invariant();
40382|   648k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Ed:
39864|  53.8k|        json_value(number_float_t v) noexcept : number_float(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIcEEmPT_m:
10174|  1.76k|    {
10175|  1.76k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  1.76k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIcEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  1.76k|    {
10233|  1.76k|        const std::size_t wanted = count * sizeof(T);
10234|  1.76k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  1.76k|        const std::size_t copied = (std::min)(wanted, available);
10236|  1.76k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  1.76k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 315, False: 1.44k]
  |  |  ------------------
  ------------------
10237|    315|        {
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|    315|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|    315|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 315, False: 0]
  ------------------
10242|    315|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|    315|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 315, 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|    315|            std::memcpy(dest, &*current, copied);
10246|    315|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|    315|        }
10248|  1.76k|        return copied;
10249|  1.76k|    }
_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|  56.2k|    {
17468|       |        // json_sax documents that the passed value may be moved from,
17469|       |        // so hand the buffer over instead of copying it
17470|  56.2k|        handle_value(std::move(val));
17471|  56.2k|        return true;
17472|  56.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_adapterIPKhSJ_EEE12handle_valueISC_EEPSG_OT_:
17566|  56.2k|    {
17567|  56.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 1.82k, False: 54.4k]
  ------------------
17568|  1.82k|        {
17569|  1.82k|            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.82k|            return &root;
17576|  1.82k|        }
17577|       |
17578|  54.4k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  54.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 40.3k, False: 14.1k]
  |  Branch (17578:9): [True: 14.1k, False: 0]
  |  Branch (17578:9): [True: 54.4k, False: 0]
  ------------------
17579|       |
17580|  54.4k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 40.3k, False: 14.1k]
  ------------------
17581|  40.3k|        {
17582|  40.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|  40.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  40.3k|        }
17590|       |
17591|  14.1k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  14.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 14.1k, False: 0]
  ------------------
17592|  14.1k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  14.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 14.1k, False: 0]
  ------------------
17593|  14.1k|        *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.1k|        return object_element;
17600|  14.1k|    }
_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|   105k|    {
41597|   105k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|   105k|        set_parents();
41599|   105k|        assert_invariant();
41600|   105k|    }
_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|   105k|    {
 8423|   105k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|   105k|    }
_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|   105k|    {
 8367|   105k|        return to_json(j, std::forward<T>(val));
 8368|   105k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_ONSH_8string_tE:
 8052|   105k|{
 8053|   105k|    external_constructor<value_t::string>::construct(j, std::move(s));
 8054|   105k|}
_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|   105k|    {
 7812|   105k|        const typename BasicJsonType::json_value value(std::move(s));
 7813|   105k|        j.replace_value(value_t::string, value);
 7814|   105k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2EOSA_:
39955|   105k|        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|   105k|    {
39789|   105k|        AllocatorType<T> alloc;
39790|   105k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
39791|       |
39792|   105k|        auto deleter = [&](T * obj)
39793|   105k|        {
39794|   105k|            AllocatorTraits::deallocate(alloc, obj, 1);
39795|   105k|        };
39796|   105k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
39797|   105k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
39798|   105k|        JSON_ASSERT(obj);
  ------------------
  |  | 2643|   105k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (39798:9): [True: 105k, False: 0]
  ------------------
39799|   105k|        return obj.release();
39800|   105k|    }
_ZN8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEEC2Ev:
 8460|   186k|        : container_type()
 8461|   186k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIhEEmPT_m:
10174|  33.0k|    {
10175|  33.0k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  33.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIhEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  33.0k|    {
10233|  33.0k|        const std::size_t wanted = count * sizeof(T);
10234|  33.0k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  33.0k|        const std::size_t copied = (std::min)(wanted, available);
10236|  33.0k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  33.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 31.6k, False: 1.40k]
  |  |  ------------------
  ------------------
10237|  31.6k|        {
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|  31.6k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  31.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 31.6k, False: 0]
  ------------------
10242|  31.6k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  31.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 31.6k, 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|  31.6k|            std::memcpy(dest, &*current, copied);
10246|  31.6k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  31.6k|        }
10248|  33.0k|        return copied;
10249|  33.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_adapterIPKhSJ_EEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
17475|   101k|    {
17476|       |        // json_sax documents that the passed value may be moved from,
17477|       |        // so hand the buffer over instead of copying it
17478|   101k|        handle_value(std::move(val));
17479|   101k|        return true;
17480|   101k|    }
_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_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
17566|   101k|    {
17567|   101k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 418, False: 101k]
  ------------------
17568|    418|        {
17569|    418|            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|    418|            return &root;
17576|    418|        }
17577|       |
17578|   101k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   101k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 91.5k, False: 9.55k]
  |  Branch (17578:9): [True: 9.55k, False: 0]
  |  Branch (17578:9): [True: 101k, False: 0]
  ------------------
17579|       |
17580|   101k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 91.5k, False: 9.55k]
  ------------------
17581|  91.5k|        {
17582|  91.5k|            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|  91.5k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  91.5k|        }
17590|       |
17591|  9.55k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  9.55k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 9.55k, False: 0]
  ------------------
17592|  9.55k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  9.55k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 9.55k, False: 0]
  ------------------
17593|  9.55k|        *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|  9.55k|        return object_element;
17600|  9.55k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2INS0_27byte_container_with_subtypeISD_EESH_TnNS2_9enable_ifIXaantsr6detail13is_basic_jsonIT0_EE5valuesr6detail18is_compatible_typeISE_SJ_EE5valueEiE4typeELi0EEEOT_:
41596|   183k|    {
41597|   183k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|   183k|        set_parents();
41599|   183k|        assert_invariant();
41600|   183k|    }
_ZN8nlohmann16json_abi_v3_12_014adl_serializerINS0_27byte_container_with_subtypeINSt3__16vectorIhNS3_9allocatorIhEEEEEEvE7to_jsonINS0_10basic_jsonINS3_3mapES4_NS3_12basic_stringIcNS3_11char_traitsIcEENS5_IcEEEEblmdS5_S1_S7_vEES8_EEDTcmclL_ZNS0_12_GLOBAL__N_17to_jsonEEfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSK_:
 8422|   183k|    {
 8423|   183k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|   183k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail10to_json_fnclINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS0_27byte_container_with_subtypeISG_EEEEDTcmcl7to_jsonfp_clsr3stdE7forwardIT0_Efp0_EEcvv_EERT_OSK_:
 8366|   183k|    {
 8367|   183k|        return to_json(j, std::forward<T>(val));
 8368|   183k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_RKNSH_8binary_tE:
 8191|   183k|{
 8192|   183k|    external_constructor<value_t::binary>::construct(j, bin);
 8193|   183k|}
_ZN8nlohmann16json_abi_v3_12_06detail20external_constructorILNS1_7value_tE8EE9constructINS0_10basic_jsonINSt3__13mapENS7_6vectorENS7_12basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEblmdSD_NS0_14adl_serializerENS9_IhNSD_IhEEEEvEEEEvRT_RKNSK_8binary_tE:
 7831|   183k|    {
 7832|   183k|        const typename BasicJsonType::json_value value(b);
 7833|   183k|        j.replace_value(value_t::binary, value);
 7834|   183k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ERKNS0_27byte_container_with_subtypeISD_EE:
39976|   183k|        json_value(const binary_t& value) : binary(create<binary_t>(value)) {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS0_27byte_container_with_subtypeISD_EEJRKSH_EEEPT_DpOT0_:
39788|   183k|    {
39789|   183k|        AllocatorType<T> alloc;
39790|   183k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
39791|       |
39792|   183k|        auto deleter = [&](T * obj)
39793|   183k|        {
39794|   183k|            AllocatorTraits::deallocate(alloc, obj, 1);
39795|   183k|        };
39796|   183k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
39797|   183k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
39798|   183k|        JSON_ASSERT(obj);
  ------------------
  |  | 2643|   183k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (39798:9): [True: 183k, False: 0]
  ------------------
39799|   183k|        return obj.release();
39800|   183k|    }
_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_numberIhLb0EEEbRT_:
22948|  14.6k|    {
22949|       |        // read in the original format
22950|       |
22951|  14.6k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  14.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 55, False: 14.6k]
  |  |  ------------------
  ------------------
22952|     55|        {
22953|     55|            return false;
22954|     55|        }
22955|  14.6k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 14.5k, False: 110]
  |  Branch (22955:34): [Folded, False: 14.5k]
  |  Branch (22955:57): [True: 0, False: 14.5k]
  ------------------
22956|  14.5k|        {
22957|  14.5k|            byte_swap(result);
22958|  14.5k|        }
22959|  14.6k|        return true;
22960|  14.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_EEE6get_toIhEEbRT_PKc:
22855|  14.6k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  14.6k|        auto new_chars_read = ia.get_elements(&dest);
22859|  14.6k|        chars_read += new_chars_read;
22860|  14.6k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  14.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 165, False: 14.5k]
  |  |  ------------------
  ------------------
22861|    165|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|    165|            ++chars_read;
22864|    165|            static_cast<void>(report_eof(context));
22865|    165|            return false;
22866|    165|        }
22867|  14.5k|        return true;
22868|  14.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_EEE9byte_swapIhEEvRT_:
22907|  14.5k|    {
22908|  14.5k|        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|  14.5k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  14.5k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 0, False: 14.5k]
  ------------------
22924|      0|            {
22925|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|      0|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  14.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_EEE7booleanEb:
17443|  15.4k|    {
17444|  15.4k|        handle_value(val);
17445|  15.4k|        return true;
17446|  15.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_adapterIPKhSJ_EEE12handle_valueIRbEEPSG_OT_:
17566|  15.4k|    {
17567|  15.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 11, False: 15.4k]
  ------------------
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|  15.4k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  15.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 12.3k, False: 3.09k]
  |  Branch (17578:9): [True: 3.09k, False: 0]
  |  Branch (17578:9): [True: 15.4k, False: 0]
  ------------------
17579|       |
17580|  15.4k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 12.3k, False: 3.09k]
  ------------------
17581|  12.3k|        {
17582|  12.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|  12.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  12.3k|        }
17590|       |
17591|  3.09k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.09k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.09k, False: 0]
  ------------------
17592|  3.09k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.09k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.09k, False: 0]
  ------------------
17593|  3.09k|        *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.09k|        return object_element;
17600|  3.09k|    }
_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|  29.2k|    {
41597|  29.2k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|  29.2k|        set_parents();
41599|  29.2k|        assert_invariant();
41600|  29.2k|    }
_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|  29.2k|    {
 8423|  29.2k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|  29.2k|    }
_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|  29.2k|    {
 8367|  29.2k|        return to_json(j, std::forward<T>(val));
 8368|  29.2k|    }
_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|  29.2k|{
 8027|  29.2k|    external_constructor<value_t::boolean>::construct(j, b);
 8028|  29.2k|}
_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|  29.2k|    {
 7795|  29.2k|        j.replace_value(value_t::boolean, b);
 7796|  29.2k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Eb:
39858|  29.2k|        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|  12.1k|    {
17438|  12.1k|        handle_value(nullptr);
17439|  12.1k|        return true;
17440|  12.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_valueIDnEEPSG_OT_:
17566|  12.1k|    {
17567|  12.1k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 7, False: 12.1k]
  ------------------
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|  12.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  12.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 8.50k, False: 3.61k]
  |  Branch (17578:9): [True: 3.61k, False: 0]
  |  Branch (17578:9): [True: 12.1k, False: 0]
  ------------------
17579|       |
17580|  12.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 8.50k, False: 3.61k]
  ------------------
17581|  8.50k|        {
17582|  8.50k|            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.50k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  8.50k|        }
17590|       |
17591|  3.61k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.61k, False: 0]
  ------------------
17592|  3.61k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.61k, False: 0]
  ------------------
17593|  3.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|  3.61k|        return object_element;
17600|  3.61k|    }
_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|  66.0k|    {
17450|  66.0k|        handle_value(val);
17451|  66.0k|        return true;
17452|  66.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_adapterIPKhSJ_EEE12handle_valueIRlEEPSG_OT_:
17566|  66.0k|    {
17567|  66.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 1.17k, False: 64.8k]
  ------------------
17568|  1.17k|        {
17569|  1.17k|            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.17k|            return &root;
17576|  1.17k|        }
17577|       |
17578|  64.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  64.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 47.1k, False: 17.6k]
  |  Branch (17578:9): [True: 17.6k, False: 0]
  |  Branch (17578:9): [True: 64.8k, False: 0]
  ------------------
17579|       |
17580|  64.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 47.1k, False: 17.6k]
  ------------------
17581|  47.1k|        {
17582|  47.1k|            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|  47.1k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  47.1k|        }
17590|       |
17591|  17.6k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  17.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 17.6k, False: 0]
  ------------------
17592|  17.6k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  17.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 17.6k, False: 0]
  ------------------
17593|  17.6k|        *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|  17.6k|        return object_element;
17600|  17.6k|    }
_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|   123k|    {
41597|   123k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|   123k|        set_parents();
41599|   123k|        assert_invariant();
41600|   123k|    }
_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|   123k|    {
 8423|   123k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|   123k|    }
_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|   123k|    {
 8367|   123k|        return to_json(j, std::forward<T>(val));
 8368|   123k|    }
_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|   123k|{
 8074|   123k|    external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
 8075|   123k|}
_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|   123k|    {
 7870|   123k|        j.replace_value(value_t::number_integer, val);
 7871|   123k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2El:
39860|   123k|        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|  83.4k|    {
17456|  83.4k|        handle_value(val);
17457|  83.4k|        return true;
17458|  83.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_adapterIPKhSJ_EEE12handle_valueIRmEEPSG_OT_:
17566|  83.4k|    {
17567|  83.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 996, False: 82.4k]
  ------------------
17568|    996|        {
17569|    996|            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|    996|            return &root;
17576|    996|        }
17577|       |
17578|  82.4k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  82.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 71.8k, False: 10.5k]
  |  Branch (17578:9): [True: 10.5k, False: 0]
  |  Branch (17578:9): [True: 82.4k, False: 0]
  ------------------
17579|       |
17580|  82.4k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 71.8k, False: 10.5k]
  ------------------
17581|  71.8k|        {
17582|  71.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|  71.8k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  71.8k|        }
17590|       |
17591|  10.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  10.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 10.5k, False: 0]
  ------------------
17592|  10.5k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  10.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 10.5k, False: 0]
  ------------------
17593|  10.5k|        *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|  10.5k|        return object_element;
17600|  10.5k|    }
_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|   153k|    {
41597|   153k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
41598|   153k|        set_parents();
41599|   153k|        assert_invariant();
41600|   153k|    }
_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|   153k|    {
 8423|   153k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 8424|   153k|    }
_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|   153k|    {
 8367|   153k|        return to_json(j, std::forward<T>(val));
 8368|   153k|    }
_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|   153k|{
 8067|   153k|    external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
 8068|   153k|}
_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|   153k|    {
 7860|   153k|        j.replace_value(value_t::number_unsigned, val);
 7861|   153k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Em:
39862|   153k|        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_EEE10emit_floatIeEEbT_:
23034|  1.24k|    {
23035|  1.24k|        const auto result = static_cast<number_float_t>(number);
23036|  1.24k|        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.24k]
  |  |  |  Branch (1697:94): [True: 1.24k, False: 0]
  |  |  |  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.24k|        return sax->number_float(result, no_source);
23041|  1.24k|    }
_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_toImEEbRT_PKc:
22855|  11.1k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  11.1k|        auto new_chars_read = ia.get_elements(&dest);
22859|  11.1k|        chars_read += new_chars_read;
22860|  11.1k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  11.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 348, False: 10.8k]
  |  |  ------------------
  ------------------
22861|    348|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|    348|            ++chars_read;
22864|    348|            static_cast<void>(report_eof(context));
22865|    348|            return false;
22866|    348|        }
22867|  10.8k|        return true;
22868|  11.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsImEEmPT_m:
10174|  11.1k|    {
10175|  11.1k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  11.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implImEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  11.1k|    {
10233|  11.1k|        const std::size_t wanted = count * sizeof(T);
10234|  11.1k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  11.1k|        const std::size_t copied = (std::min)(wanted, available);
10236|  11.1k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  11.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 11.0k, False: 144]
  |  |  ------------------
  ------------------
10237|  11.0k|        {
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|  11.0k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  11.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 11.0k, False: 0]
  ------------------
10242|  11.0k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  11.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 11.0k, 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|  11.0k|            std::memcpy(dest, &*current, copied);
10246|  11.0k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  11.0k|        }
10248|  11.1k|        return copied;
10249|  11.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_EEE9byte_swapImEEvRT_:
22907|  13.4k|    {
22908|  13.4k|        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|  13.4k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  67.2k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 53.7k, False: 13.4k]
  ------------------
22924|  53.7k|            {
22925|  53.7k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  53.7k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  13.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_EEE13emit_unsignedImEEbT_:
23008|  3.19k|    {
23009|  3.19k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|  3.19k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.19k, False: 0]
  |  |  ------------------
  ------------------
23010|  3.19k|        {
23011|  3.19k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|  3.19k|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|  3.19k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImmEEbT0_:
 5295|  28.3k|{
 5296|  28.3k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  28.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImmLb1EvE4testEm:
 5288|  28.3k|    {
 5289|  28.3k|        return true;
 5290|  28.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_EEE19parse_cbor_internalENS1_18cbor_tag_handler_tE:
20247|  30.0k|    {
20248|       |        // whether the next value starts at a fresh byte or at the one already
20249|       |        // read into `current`
20250|  30.0k|        bool fetch = true;
20251|       |
20252|       |        // the key currently being read; hoisted out of the loop so that its
20253|       |        // capacity is reused across elements and across nesting levels
20254|  30.0k|        string_t key;
20255|       |
20256|  1.27M|        while (true)
  ------------------
  |  Branch (20256:16): [True: 1.26M, Folded]
  ------------------
20257|  1.26M|        {
20258|  1.26M|            if (!container_stack.empty())
  ------------------
  |  Branch (20258:17): [True: 1.23M, False: 30.0k]
  ------------------
20259|  1.23M|            {
20260|       |                // a copy, not a reference: it must stay valid across the
20261|       |                // pop_back() below, which destroys the container_stack element
20262|       |                // it would otherwise alias
20263|  1.23M|                const container_frame top = container_stack.back();
20264|  1.23M|                const bool is_object = top.is_object;
20265|  1.23M|                bool at_end = false;
20266|       |
20267|  1.23M|                if (top.remaining != npos)
  ------------------
  |  Branch (20267:21): [True: 921k, False: 313k]
  ------------------
20268|   921k|                {
20269|       |                    // definite length: the container ends once its elements
20270|       |                    // have been read
20271|   921k|                    at_end = (top.remaining == 0);
20272|   921k|                    if (!at_end)
  ------------------
  |  Branch (20272:25): [True: 526k, False: 394k]
  ------------------
20273|   526k|                    {
20274|       |                        // claim the element about to be read
20275|   526k|                        --container_stack.back().remaining;
20276|   526k|                        if (is_object)
  ------------------
  |  Branch (20276:29): [True: 80.8k, False: 445k]
  ------------------
20277|  80.8k|                        {
20278|  80.8k|                            get();
20279|  80.8k|                        }
20280|   526k|                    }
20281|   921k|                    fetch = true;
20282|   921k|                }
20283|   313k|                else
20284|   313k|                {
20285|       |                    // indefinite length: the container ends at a break marker.
20286|       |                    // Testing for it consumes a byte, which is the first byte
20287|       |                    // of the next element when it is not one.
20288|   313k|                    at_end = (get() == 0xFF);
20289|   313k|                    fetch = is_object;
20290|   313k|                }
20291|       |
20292|  1.23M|                if (at_end)
  ------------------
  |  Branch (20292:21): [True: 402k, False: 831k]
  ------------------
20293|   402k|                {
20294|   402k|                    bool value_complete = false;
20295|   402k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container_and_check(value_complete)))
  ------------------
  |  | 1697|   402k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 402k]
  |  |  ------------------
  ------------------
20296|      0|                    {
20297|      0|                        return false;
20298|      0|                    }
20299|   402k|                    if (value_complete)
  ------------------
  |  Branch (20299:25): [True: 10.6k, False: 391k]
  ------------------
20300|  10.6k|                    {
20301|  10.6k|                        return true;
20302|  10.6k|                    }
20303|   391k|                    continue;
20304|   402k|                }
20305|       |
20306|   831k|                if (is_object)
  ------------------
  |  Branch (20306:21): [True: 121k, False: 710k]
  ------------------
20307|   121k|                {
20308|   121k|                    if (JSON_HEDLEY_UNLIKELY(!skip_cbor_key_tags(tag_handler)))
  ------------------
  |  | 1697|   121k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 121k]
  |  |  ------------------
  ------------------
20309|      0|                    {
20310|      0|                        return false;
20311|      0|                    }
20312|   121k|                    if (JSON_HEDLEY_UNLIKELY(!read_object_key<&binary_reader::get_cbor_object_key>(key)))
  ------------------
  |  | 1697|   121k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 585, False: 121k]
  |  |  ------------------
  ------------------
20313|    585|                    {
20314|    585|                        return false;
20315|    585|                    }
20316|   121k|                    fetch = true;
20317|   121k|                }
20318|   831k|            }
20319|       |
20320|       |            // a tag is not a value of its own: read on until the tagged value
20321|   861k|            bool tag_pending = false;
20322|   861k|            bool item_read = false;
20323|   861k|            do
20324|   861k|            {
20325|   861k|                if (JSON_HEDLEY_UNLIKELY(!parse_cbor_value(fetch, tag_handler, tag_pending, item_read)))
  ------------------
  |  | 1697|   861k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 3.60k, False: 857k]
  |  |  ------------------
  ------------------
20326|  3.60k|                {
20327|  3.60k|                    return false;
20328|  3.60k|                }
20329|   857k|                fetch = !item_read;
20330|   857k|            }
20331|   861k|            while (tag_pending);
  ------------------
  |  Branch (20331:20): [True: 0, False: 857k]
  ------------------
20332|       |
20333|       |            // a value that opened a container left it on the stack; one that
20334|       |            // did not, and that was not inside a container, was the whole value
20335|   857k|            if (container_stack.empty())
  ------------------
  |  Branch (20335:17): [True: 6.76k, False: 851k]
  ------------------
20336|  6.76k|            {
20337|  6.76k|                return true;
20338|  6.76k|            }
20339|   857k|        }
20340|  30.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_EEE25leave_container_and_checkERb:
18667|   402k|    {
18668|   402k|        if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1697|   402k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 402k]
  |  |  ------------------
  ------------------
18669|      0|        {
18670|      0|            return false;
18671|      0|        }
18672|   402k|        value_complete = container_stack.empty();
18673|   402k|        return true;
18674|   402k|    }
_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_EEE18skip_cbor_key_tagsENS1_18cbor_tag_handler_tE:
19765|   121k|    {
19766|   121k|        if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (19766:13): [True: 121k, False: 0]
  ------------------
19767|   121k|        {
19768|   121k|            return true;
19769|   121k|        }
19770|       |
19771|       |        // 0xC0..0xDB: tag with the tag number in the head (0xC0..0xD7) or in
19772|       |        // the 1, 2, 4, or 8 bytes that follow (0xD8..0xDB)
19773|      0|        while (current >= 0xC0 && current <= 0xDB)
  ------------------
  |  Branch (19773:16): [True: 0, False: 0]
  |  Branch (19773:35): [True: 0, False: 0]
  ------------------
19774|      0|        {
19775|      0|            if (current >= 0xD8)
  ------------------
  |  Branch (19775:17): [True: 0, False: 0]
  ------------------
19776|      0|            {
19777|      0|                std::uint64_t tag_to_ignore{};
19778|      0|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_argument(tag_to_ignore)))
  ------------------
  |  | 1697|      0|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19779|      0|                {
19780|      0|                    return false;
19781|      0|                }
19782|      0|            }
19783|      0|            get();
19784|      0|        }
19785|      0|        return true;
19786|      0|    }
_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_EEE17get_cbor_argumentERm:
20005|  11.9k|    {
20006|  11.9k|        switch (current & 0x1F)
20007|  11.9k|        {
20008|  4.33k|            case 0x18: // 1 byte
  ------------------
  |  Branch (20008:13): [True: 4.33k, False: 7.60k]
  ------------------
20009|  4.33k|            {
20010|  4.33k|                std::uint8_t n{};
20011|  4.33k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  4.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 19, False: 4.31k]
  |  |  ------------------
  ------------------
20012|     19|                {
20013|     19|                    return false;
20014|     19|                }
20015|  4.31k|                value = n;
20016|  4.31k|                return true;
20017|  4.33k|            }
20018|       |
20019|  3.35k|            case 0x19: // 2 bytes
  ------------------
  |  Branch (20019:13): [True: 3.35k, False: 8.58k]
  ------------------
20020|  3.35k|            {
20021|  3.35k|                std::uint16_t n{};
20022|  3.35k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  3.35k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 31, False: 3.32k]
  |  |  ------------------
  ------------------
20023|     31|                {
20024|     31|                    return false;
20025|     31|                }
20026|  3.32k|                value = n;
20027|  3.32k|                return true;
20028|  3.35k|            }
20029|       |
20030|  1.94k|            case 0x1A: // 4 bytes
  ------------------
  |  Branch (20030:13): [True: 1.94k, False: 9.99k]
  ------------------
20031|  1.94k|            {
20032|  1.94k|                std::uint32_t n{};
20033|  1.94k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  1.94k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 31, False: 1.91k]
  |  |  ------------------
  ------------------
20034|     31|                {
20035|     31|                    return false;
20036|     31|                }
20037|  1.91k|                value = n;
20038|  1.91k|                return true;
20039|  1.94k|            }
20040|       |
20041|  2.30k|            case 0x1B: // 8 bytes
  ------------------
  |  Branch (20041:13): [True: 2.30k, False: 9.63k]
  ------------------
20042|  2.30k|            {
20043|  2.30k|                std::uint64_t n{};
20044|  2.30k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  2.30k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 34, False: 2.27k]
  |  |  ------------------
  ------------------
20045|     34|                {
20046|     34|                    return false;
20047|     34|                }
20048|  2.27k|                value = n;
20049|  2.27k|                return true;
20050|  2.30k|            }
20051|       |
20052|      0|            default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (20052:13): [True: 0, False: 11.9k]
  ------------------
20053|      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 (20053:17): [Folded, False: 0]
  ------------------
20054|      0|                return false;        // LCOV_EXCL_LINE
20055|  11.9k|        }
20056|  11.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_EEE10get_numberItLb0EEEbRT_:
22948|  11.2k|    {
22949|       |        // read in the original format
22950|       |
22951|  11.2k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  11.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 80, False: 11.1k]
  |  |  ------------------
  ------------------
22952|     80|        {
22953|     80|            return false;
22954|     80|        }
22955|  11.1k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 11.0k, False: 160]
  |  Branch (22955:34): [Folded, False: 11.0k]
  |  Branch (22955:57): [True: 0, False: 11.0k]
  ------------------
22956|  11.0k|        {
22957|  11.0k|            byte_swap(result);
22958|  11.0k|        }
22959|  11.1k|        return true;
22960|  11.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_EEE6get_toItEEbRT_PKc:
22855|  11.2k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  11.2k|        auto new_chars_read = ia.get_elements(&dest);
22859|  11.2k|        chars_read += new_chars_read;
22860|  11.2k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  11.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 240, False: 11.0k]
  |  |  ------------------
  ------------------
22861|    240|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|    240|            ++chars_read;
22864|    240|            static_cast<void>(report_eof(context));
22865|    240|            return false;
22866|    240|        }
22867|  11.0k|        return true;
22868|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsItEEmPT_m:
10174|  11.2k|    {
10175|  11.2k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implItEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  11.2k|    {
10233|  11.2k|        const std::size_t wanted = count * sizeof(T);
10234|  11.2k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  11.2k|        const std::size_t copied = (std::min)(wanted, available);
10236|  11.2k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  11.2k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 11.1k, False: 150]
  |  |  ------------------
  ------------------
10237|  11.1k|        {
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|  11.1k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  11.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 11.1k, False: 0]
  ------------------
10242|  11.1k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  11.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 11.1k, 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|  11.1k|            std::memcpy(dest, &*current, copied);
10246|  11.1k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  11.1k|        }
10248|  11.2k|        return copied;
10249|  11.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_EEE9byte_swapItEEvRT_:
22907|  12.8k|    {
22908|  12.8k|        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|  12.8k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  25.6k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 12.8k, False: 12.8k]
  ------------------
22924|  12.8k|            {
22925|  12.8k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  12.8k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  12.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_EEE10get_numberIjLb0EEEbRT_:
22948|  7.06k|    {
22949|       |        // read in the original format
22950|       |
22951|  7.06k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  7.06k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 93, False: 6.96k]
  |  |  ------------------
  ------------------
22952|     93|        {
22953|     93|            return false;
22954|     93|        }
22955|  6.96k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 6.78k, False: 186]
  |  Branch (22955:34): [Folded, False: 6.78k]
  |  Branch (22955:57): [True: 0, False: 6.78k]
  ------------------
22956|  6.78k|        {
22957|  6.78k|            byte_swap(result);
22958|  6.78k|        }
22959|  6.96k|        return true;
22960|  7.06k|    }
_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_toIjEEbRT_PKc:
22855|  7.06k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  7.06k|        auto new_chars_read = ia.get_elements(&dest);
22859|  7.06k|        chars_read += new_chars_read;
22860|  7.06k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  7.06k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 279, False: 6.78k]
  |  |  ------------------
  ------------------
22861|    279|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|    279|            ++chars_read;
22864|    279|            static_cast<void>(report_eof(context));
22865|    279|            return false;
22866|    279|        }
22867|  6.78k|        return true;
22868|  7.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIjEEmPT_m:
10174|  7.06k|    {
10175|  7.06k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  7.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIjEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  7.06k|    {
10233|  7.06k|        const std::size_t wanted = count * sizeof(T);
10234|  7.06k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  7.06k|        const std::size_t copied = (std::min)(wanted, available);
10236|  7.06k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  7.06k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 6.91k, False: 144]
  |  |  ------------------
  ------------------
10237|  6.91k|        {
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|  6.91k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  6.91k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 6.91k, False: 0]
  ------------------
10242|  6.91k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  6.91k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 6.91k, 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|  6.91k|            std::memcpy(dest, &*current, copied);
10246|  6.91k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  6.91k|        }
10248|  7.06k|        return copied;
10249|  7.06k|    }
_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_swapIjEEvRT_:
22907|  7.76k|    {
22908|  7.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|  7.76k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  23.2k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 15.5k, False: 7.76k]
  ------------------
22924|  15.5k|            {
22925|  15.5k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  15.5k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  7.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_EEE10get_numberImLb0EEEbRT_:
22948|  11.1k|    {
22949|       |        // read in the original format
22950|       |
22951|  11.1k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  11.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 116, False: 11.0k]
  |  |  ------------------
  ------------------
22952|    116|        {
22953|    116|            return false;
22954|    116|        }
22955|  11.0k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 10.8k, False: 232]
  |  Branch (22955:34): [Folded, False: 10.8k]
  |  Branch (22955:57): [True: 0, False: 10.8k]
  ------------------
22956|  10.8k|        {
22957|  10.8k|            byte_swap(result);
22958|  10.8k|        }
22959|  11.0k|        return true;
22960|  11.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_EEE15read_object_keyIXadL_ZNSN_19get_cbor_object_keyERSC_EEEEbSP_:
18685|   121k|    {
18686|   121k|        key.clear();
18687|   121k|        return (this->*GetKey)(key) && sax->key(key);
  ------------------
  |  Branch (18687:16): [True: 120k, False: 1.75k]
  |  Branch (18687:40): [True: 120k, False: 0]
  ------------------
18688|   121k|    }
_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_EEE19get_cbor_object_keyERSC_:
19801|   121k|    {
19802|       |        // EOF and major type 3 (text string) are left to get_cbor_string
19803|   121k|        if (current == char_traits<char_type>::eof() || (static_cast<unsigned int>(current) & 0xE0u) == 0x60u)
  ------------------
  |  Branch (19803:13): [True: 1.54k, False: 120k]
  |  Branch (19803:57): [True: 120k, False: 174]
  ------------------
19804|   121k|        {
19805|   121k|            return get_cbor_string(result, "key");
19806|   121k|        }
19807|       |
19808|    174|        const char* found = nullptr;
19809|    174|        switch (static_cast<unsigned int>(current) >> 5u)
19810|    174|        {
19811|     30|            case 0:
  ------------------
  |  Branch (19811:13): [True: 30, False: 144]
  ------------------
19812|     30|                found = "an unsigned integer";
19813|     30|                break;
19814|     21|            case 1:
  ------------------
  |  Branch (19814:13): [True: 21, False: 153]
  ------------------
19815|     21|                found = "a negative integer";
19816|     21|                break;
19817|     27|            case 2:
  ------------------
  |  Branch (19817:13): [True: 27, False: 147]
  ------------------
19818|     27|                found = "a byte string";
19819|     27|                break;
19820|      9|            case 4:
  ------------------
  |  Branch (19820:13): [True: 9, False: 165]
  ------------------
19821|      9|                found = "an array";
19822|      9|                break;
19823|     21|            case 5:
  ------------------
  |  Branch (19823:13): [True: 21, False: 153]
  ------------------
19824|     21|                found = "a map";
19825|     21|                break;
19826|     21|            case 6:
  ------------------
  |  Branch (19826:13): [True: 21, False: 153]
  ------------------
19827|     21|                found = "a tag";
19828|     21|                break;
19829|     45|            default: // major type 7
  ------------------
  |  Branch (19829:13): [True: 45, False: 129]
  ------------------
19830|     45|                switch (current)
19831|     45|                {
19832|      0|                    case 0xF4:
  ------------------
  |  Branch (19832:21): [True: 0, False: 45]
  ------------------
19833|      0|                    case 0xF5:
  ------------------
  |  Branch (19833:21): [True: 0, False: 45]
  ------------------
19834|      0|                        found = "a boolean";
19835|      0|                        break;
19836|      3|                    case 0xF6:
  ------------------
  |  Branch (19836:21): [True: 3, False: 42]
  ------------------
19837|      3|                        found = "null";
19838|      3|                        break;
19839|      3|                    case 0xF7:
  ------------------
  |  Branch (19839:21): [True: 3, False: 42]
  ------------------
19840|      3|                        found = "undefined";
19841|      3|                        break;
19842|      3|                    case 0xF9:
  ------------------
  |  Branch (19842:21): [True: 3, False: 42]
  ------------------
19843|      3|                    case 0xFA:
  ------------------
  |  Branch (19843:21): [True: 0, False: 45]
  ------------------
19844|      3|                    case 0xFB:
  ------------------
  |  Branch (19844:21): [True: 0, False: 45]
  ------------------
19845|      3|                        found = "a floating-point number";
19846|      3|                        break;
19847|      6|                    case 0xFF:
  ------------------
  |  Branch (19847:21): [True: 6, False: 39]
  ------------------
19848|      6|                        found = "a break stop code";
19849|      6|                        break;
19850|     30|                    default:
  ------------------
  |  Branch (19850:21): [True: 30, False: 15]
  ------------------
19851|     30|                        found = "a simple value";
19852|     30|                        break;
19853|     45|                }
19854|     45|                break;
19855|    174|        }
19856|       |
19857|    174|        return unsupported_key_type(found);
19858|    174|    }
_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_cbor_stringERSC_PKc:
19684|   180k|    {
19685|       |        // read chunks iteratively, but reject a second indefinite-length
19686|       |        // level as required by RFC 8949, Section 3.2.3
19687|   180k|        bool indefinite = false;
19688|       |
19689|       |        // the chunk currently being validated; only used for the chunks of an
19690|       |        // indefinite-length string when the UTF-8 check can do something
19691|   180k|        string_t chunk;
19692|       |
19693|   189k|        while (true)
  ------------------
  |  Branch (19693:16): [True: 188k, Folded]
  ------------------
19694|   188k|        {
19695|   188k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1697|   188k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 542, False: 187k]
  |  |  ------------------
  ------------------
19696|    542|            {
19697|    542|                return false;
19698|    542|            }
19699|       |
19700|   187k|            if (current == 0x7F) // UTF-8 string (indefinite length)
  ------------------
  |  Branch (19700:17): [True: 2.34k, False: 185k]
  ------------------
19701|  2.34k|            {
19702|  2.34k|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1697|  2.34k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 3, False: 2.33k]
  |  |  ------------------
  ------------------
19703|      3|                {
19704|      3|                    return cbor_indefinite_string_error("string", "string");
19705|      3|                }
19706|  2.33k|                indefinite = true;
19707|  2.33k|                get();
19708|  2.33k|                continue;
19709|  2.34k|            }
19710|       |
19711|       |            // a break marker closes the indefinite-length string; outside
19712|       |            // of one it falls through to the error below. Every chunk has
19713|       |            // been checked on its own, so there is nothing left to check.
19714|   185k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (19714:17): [True: 7.84k, False: 177k]
  |  Branch (19714:31): [True: 2.04k, False: 5.80k]
  ------------------
19715|  2.04k|            {
19716|  2.04k|                return true;
19717|  2.04k|            }
19718|       |
19719|   183k|            if (!indefinite)
  ------------------
  |  Branch (19719:17): [True: 176k, False: 6.88k]
  ------------------
19720|   176k|            {
19721|   176k|                return get_cbor_string_chunk(result, false) && check_string_utf8(result, context);
  ------------------
  |  Branch (19721:24): [True: 174k, False: 1.81k]
  |  Branch (19721:64): [True: 174k, False: 0]
  ------------------
19722|   176k|            }
19723|       |
19724|  6.88k|            if (error_handler == error_handler_t::keep)
  ------------------
  |  Branch (19724:17): [True: 5.80k, False: 1.08k]
  ------------------
19725|  5.80k|            {
19726|       |                // nothing to check: read the chunk directly into the result
19727|  5.80k|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(result, true)))
  ------------------
  |  | 1697|  5.80k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 69, False: 5.73k]
  |  |  ------------------
  ------------------
19728|     69|                {
19729|     69|                    return false;
19730|     69|                }
19731|  5.80k|            }
19732|  1.08k|            else
19733|  1.08k|            {
19734|       |                // RFC 8949, Section 3.2.3: each chunk is a text string of its
19735|       |                // own and must be valid UTF-8 by itself, i.e., a code point
19736|       |                // cannot be spread over two chunks
19737|  1.08k|                chunk.clear();
19738|  1.08k|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(chunk, true) || !check_string_utf8(chunk, context)))
  ------------------
  |  | 1697|  1.08k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.08k]
  |  |  |  Branch (1697:94): [True: 1.08k, False: 0]
  |  |  |  Branch (1697:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19739|      0|                {
19740|      0|                    return false;
19741|      0|                }
19742|  1.08k|                result.append(chunk.data(), chunk.size());
19743|  1.08k|            }
19744|       |
19745|  6.82k|            get();
19746|  6.82k|        }
19747|   180k|    }
_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_EEE28cbor_indefinite_string_errorEPKcSP_:
19565|      9|    {
19566|      9|        return last_byte_error(exception_id::invalid_string_or_size, concat("indefinite-length ", type_name, " is not allowed inside indefinite-length ", type_name, "; last byte: 0x", get_token_string()), context);
19567|      9|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA19_KcRPSA_RA42_SA_SE_RA16_SA_S9_EEET_DpOT0_:
 5516|     18|{
 5517|     18|    OutStringType str;
 5518|     18|    str.reserve(concat_length(args...));
 5519|     18|    concat_into(str, std::forward<Args>(args)...);
 5520|     18|    return str;
 5521|     18|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJPKcA42_cS4_A16_cNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEEEEmS4_DpRKT_:
 5420|     18|{
 5421|     18|    return ::strlen(cstr) + concat_length(rest...);
 5422|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA42_cPKcA16_cNSt3__112basic_stringIcNS7_11char_traitsIcEENS7_9allocatorIcEEEEEEEmS5_DpRKT_:
 5420|     18|{
 5421|     18|    return ::strlen(cstr) + concat_length(rest...);
 5422|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJPKcA16_cNSt3__112basic_stringIcNS6_11char_traitsIcEENS6_9allocatorIcEEEEEEEmS4_DpRKT_:
 5420|     18|{
 5421|     18|    return ::strlen(cstr) + concat_length(rest...);
 5422|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA16_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5420|  1.34k|{
 5421|  1.34k|    return ::strlen(cstr) + concat_length(rest...);
 5422|  1.34k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA19_KcJRPSA_RA42_SA_SE_RA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSK_OSL_DpOT1_:
 5479|     18|{
 5480|     18|    out.append(std::forward<Arg>(arg));
 5481|     18|    concat_into(out, std::forward<Args>(rest)...);
 5482|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA42_SA_SC_RA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5479|     18|{
 5480|     18|    out.append(std::forward<Arg>(arg));
 5481|     18|    concat_into(out, std::forward<Args>(rest)...);
 5482|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA42_KcJRPSA_RA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5479|     18|{
 5480|     18|    out.append(std::forward<Arg>(arg));
 5481|     18|    concat_into(out, std::forward<Args>(rest)...);
 5482|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|  1.34k|{
 5480|  1.34k|    out.append(std::forward<Arg>(arg));
 5481|  1.34k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.34k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA16_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|  1.34k|{
 5480|  1.34k|    out.append(std::forward<Arg>(arg));
 5481|  1.34k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.34k|}
_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_EEE21get_cbor_string_chunkERSC_b:
19613|   182k|    {
19614|   182k|        switch (current)
19615|   182k|        {
19616|       |            // UTF-8 string (0x00..0x17 bytes follow)
19617|   107k|            case 0x60:
  ------------------
  |  Branch (19617:13): [True: 107k, False: 74.2k]
  ------------------
19618|   148k|            case 0x61:
  ------------------
  |  Branch (19618:13): [True: 40.5k, False: 141k]
  ------------------
19619|   151k|            case 0x62:
  ------------------
  |  Branch (19619:13): [True: 3.24k, False: 178k]
  ------------------
19620|   152k|            case 0x63:
  ------------------
  |  Branch (19620:13): [True: 1.39k, False: 180k]
  ------------------
19621|   155k|            case 0x64:
  ------------------
  |  Branch (19621:13): [True: 2.98k, False: 179k]
  ------------------
19622|   157k|            case 0x65:
  ------------------
  |  Branch (19622:13): [True: 1.81k, False: 180k]
  ------------------
19623|   159k|            case 0x66:
  ------------------
  |  Branch (19623:13): [True: 1.22k, False: 180k]
  ------------------
19624|   159k|            case 0x67:
  ------------------
  |  Branch (19624:13): [True: 926, False: 181k]
  ------------------
19625|   161k|            case 0x68:
  ------------------
  |  Branch (19625:13): [True: 1.67k, False: 180k]
  ------------------
19626|   162k|            case 0x69:
  ------------------
  |  Branch (19626:13): [True: 712, False: 181k]
  ------------------
19627|   163k|            case 0x6A:
  ------------------
  |  Branch (19627:13): [True: 798, False: 181k]
  ------------------
19628|   163k|            case 0x6B:
  ------------------
  |  Branch (19628:13): [True: 521, False: 181k]
  ------------------
19629|   164k|            case 0x6C:
  ------------------
  |  Branch (19629:13): [True: 810, False: 181k]
  ------------------
19630|   164k|            case 0x6D:
  ------------------
  |  Branch (19630:13): [True: 540, False: 181k]
  ------------------
19631|   165k|            case 0x6E:
  ------------------
  |  Branch (19631:13): [True: 300, False: 181k]
  ------------------
19632|   165k|            case 0x6F:
  ------------------
  |  Branch (19632:13): [True: 414, False: 181k]
  ------------------
19633|   166k|            case 0x70:
  ------------------
  |  Branch (19633:13): [True: 1.08k, False: 180k]
  ------------------
19634|   167k|            case 0x71:
  ------------------
  |  Branch (19634:13): [True: 393, False: 181k]
  ------------------
19635|   167k|            case 0x72:
  ------------------
  |  Branch (19635:13): [True: 394, False: 181k]
  ------------------
19636|   167k|            case 0x73:
  ------------------
  |  Branch (19636:13): [True: 236, False: 181k]
  ------------------
19637|   168k|            case 0x74:
  ------------------
  |  Branch (19637:13): [True: 701, False: 181k]
  ------------------
19638|   168k|            case 0x75:
  ------------------
  |  Branch (19638:13): [True: 272, False: 181k]
  ------------------
19639|   169k|            case 0x76:
  ------------------
  |  Branch (19639:13): [True: 339, False: 181k]
  ------------------
19640|   170k|            case 0x77:
  ------------------
  |  Branch (19640:13): [True: 1.25k, False: 180k]
  ------------------
19641|   170k|            {
19642|   170k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result);
19643|   169k|            }
19644|       |
19645|  4.80k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19645:13): [True: 4.80k, False: 177k]
  ------------------
19646|  4.80k|            {
19647|  4.80k|                return get_cbor_sized_bytes<std::uint8_t>("string", result);
19648|   169k|            }
19649|       |
19650|  3.27k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19650:13): [True: 3.27k, False: 178k]
  ------------------
19651|  3.27k|            {
19652|  3.27k|                return get_cbor_sized_bytes<std::uint16_t>("string", result);
19653|   169k|            }
19654|       |
19655|  1.11k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19655:13): [True: 1.11k, False: 180k]
  ------------------
19656|  1.11k|            {
19657|  1.11k|                return get_cbor_sized_bytes<std::uint32_t>("string", result);
19658|   169k|            }
19659|       |
19660|  2.34k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19660:13): [True: 2.34k, False: 179k]
  ------------------
19661|  2.34k|            {
19662|  2.34k|                return get_cbor_sized_bytes<std::uint64_t>("string", result);
19663|   169k|            }
19664|       |
19665|     75|            default:
  ------------------
  |  Branch (19665:13): [True: 75, False: 181k]
  ------------------
19666|     75|            {
19667|     75|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x60-0x7B)", "string", inside_indefinite ? "" : " or indefinite string type (0x7F)");
  ------------------
  |  Branch (19667:133): [True: 72, False: 3]
  ------------------
19668|   169k|            }
19669|   182k|        }
19670|   182k|    }
_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_stringIjEEbT_RSC_:
23119|   170k|    {
23120|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
23121|       |        // leaves the choice to the decoder), MessagePack (whose spec
23122|       |        // explicitly allows a str object to contain an invalid byte
23123|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
23124|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
23125|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
23126|       |        // @ref error_handler, applied by @ref check_string_utf8 at the call
23127|       |        // site to the whole string or, for an indefinite-length CBOR string,
23128|       |        // to each chunk on its own (RFC 8949, Section 3.2.3).
23129|   170k|        return get_bytes(len, "string", result);
23130|   170k|    }
_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_EEE9get_bytesIjSC_EEbT_PKcRT0_:
23245|   171k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|   171k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|   171k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 62.0k, False: 109k]
  ------------------
23250|  62.0k|        {
23251|  62.0k|            return true;
23252|  62.0k|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|   109k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|   109k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 858, False: 108k]
  ------------------
23258|    858|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    858|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 705, False: 153]
  ------------------
23262|    858|                                       ? static_cast<std::size_t>(len)
23263|    858|                                       : chunk_size;
23264|    858|            const std::size_t old_size = result.size();
23265|    858|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    858|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    858|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 858, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    858|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    858|            chars_read += bytes_read;
23273|    858|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    858|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 858, False: 0]
  |  |  ------------------
  ------------------
23274|    858|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    858|                result.resize(old_size + bytes_read);
23279|    858|                ++chars_read;
23280|    858|                current = char_traits<char_type>::eof();
23281|    858|                return unexpect_eof(context);
23282|    858|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|   108k|        return true;
23288|   109k|    }
_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_EEE17append_from_blockIjEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|   171k|    {
23295|   171k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 108k, False: 62.9k]
  ------------------
23296|   108k|        {
23297|   108k|            return false;
23298|   108k|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|  62.9k|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|  62.9k|        const std::size_t remaining = ia.bulk_remaining();
23303|  62.9k|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 858, False: 62.0k]
  ------------------
23304|    858|        {
23305|    858|            return false; // (the loop reports the premature end)
23306|    858|        }
23307|  62.0k|        const auto n = static_cast<std::size_t>(ulen);
23308|  62.0k|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|  62.0k|        ia.bulk_skip(n);
23310|  62.0k|        chars_read += n;
23311|  62.0k|        return true;
23312|  62.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_EEE20get_cbor_sized_bytesIhSC_EEbPKcRT0_:
19592|  4.80k|    {
19593|  4.80k|        NumberType len{};
19594|  4.80k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 4.77k, False: 36]
  |  Branch (19594:35): [True: 4.68k, False: 93]
  ------------------
19595|  4.80k|    }
_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_EEE9get_bytesIhSC_EEbT_PKcRT0_:
23245|  4.77k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  4.77k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  4.77k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 2.60k, False: 2.16k]
  ------------------
23250|  2.60k|        {
23251|  2.60k|            return true;
23252|  2.60k|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  2.16k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  2.16k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 93, False: 2.07k]
  ------------------
23258|     93|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|     93|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 93, False: 0]
  ------------------
23262|     93|                                       ? static_cast<std::size_t>(len)
23263|     93|                                       : chunk_size;
23264|     93|            const std::size_t old_size = result.size();
23265|     93|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|     93|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|     93|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 93, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|     93|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|     93|            chars_read += bytes_read;
23273|     93|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|     93|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 93, False: 0]
  |  |  ------------------
  ------------------
23274|     93|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     93|                result.resize(old_size + bytes_read);
23279|     93|                ++chars_read;
23280|     93|                current = char_traits<char_type>::eof();
23281|     93|                return unexpect_eof(context);
23282|     93|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|  2.07k|        return true;
23288|  2.16k|    }
_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_EEE17append_from_blockIhEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  4.77k|    {
23295|  4.77k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 2.07k, False: 2.70k]
  ------------------
23296|  2.07k|        {
23297|  2.07k|            return false;
23298|  2.07k|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|  2.70k|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|  2.70k|        const std::size_t remaining = ia.bulk_remaining();
23303|  2.70k|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 93, False: 2.60k]
  ------------------
23304|     93|        {
23305|     93|            return false; // (the loop reports the premature end)
23306|     93|        }
23307|  2.60k|        const auto n = static_cast<std::size_t>(ulen);
23308|  2.60k|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|  2.60k|        ia.bulk_skip(n);
23310|  2.60k|        chars_read += n;
23311|  2.60k|        return true;
23312|  2.70k|    }
_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_cbor_sized_bytesItSC_EEbPKcRT0_:
19592|  3.27k|    {
19593|  3.27k|        NumberType len{};
19594|  3.27k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 3.22k, False: 42]
  |  Branch (19594:35): [True: 3.01k, False: 216]
  ------------------
19595|  3.27k|    }
_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_EEE9get_bytesItSC_EEbT_PKcRT0_:
23245|  3.22k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  3.22k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  3.22k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 1.44k, False: 1.78k]
  ------------------
23250|  1.44k|        {
23251|  1.44k|            return true;
23252|  1.44k|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  1.78k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.78k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 216, False: 1.56k]
  ------------------
23258|    216|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    216|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 147, False: 69]
  ------------------
23262|    216|                                       ? static_cast<std::size_t>(len)
23263|    216|                                       : chunk_size;
23264|    216|            const std::size_t old_size = result.size();
23265|    216|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    216|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    216|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 216, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    216|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    216|            chars_read += bytes_read;
23273|    216|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    216|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 216, False: 0]
  |  |  ------------------
  ------------------
23274|    216|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    216|                result.resize(old_size + bytes_read);
23279|    216|                ++chars_read;
23280|    216|                current = char_traits<char_type>::eof();
23281|    216|                return unexpect_eof(context);
23282|    216|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|  1.56k|        return true;
23288|  1.78k|    }
_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_EEE17append_from_blockItEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  3.22k|    {
23295|  3.22k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 1.56k, False: 1.66k]
  ------------------
23296|  1.56k|        {
23297|  1.56k|            return false;
23298|  1.56k|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|  1.66k|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|  1.66k|        const std::size_t remaining = ia.bulk_remaining();
23303|  1.66k|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 216, False: 1.44k]
  ------------------
23304|    216|        {
23305|    216|            return false; // (the loop reports the premature end)
23306|    216|        }
23307|  1.44k|        const auto n = static_cast<std::size_t>(ulen);
23308|  1.44k|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|  1.44k|        ia.bulk_skip(n);
23310|  1.44k|        chars_read += n;
23311|  1.44k|        return true;
23312|  1.66k|    }
_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_cbor_sized_bytesIjSC_EEbPKcRT0_:
19592|  1.11k|    {
19593|  1.11k|        NumberType len{};
19594|  1.11k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.07k, False: 48]
  |  Branch (19594:35): [True: 825, False: 246]
  ------------------
19595|  1.11k|    }
_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_cbor_sized_bytesImSC_EEbPKcRT0_:
19592|  2.34k|    {
19593|  2.34k|        NumberType len{};
19594|  2.34k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 2.28k, False: 57]
  |  Branch (19594:35): [True: 1.68k, False: 597]
  ------------------
19595|  2.34k|    }
_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_EEE9get_bytesImSC_EEbT_PKcRT0_:
23245|  2.28k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  2.28k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  2.28k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 822, False: 1.46k]
  ------------------
23250|    822|        {
23251|    822|            return true;
23252|    822|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  1.46k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.46k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 597, False: 864]
  ------------------
23258|    597|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    597|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 102, False: 495]
  ------------------
23262|    597|                                       ? static_cast<std::size_t>(len)
23263|    597|                                       : chunk_size;
23264|    597|            const std::size_t old_size = result.size();
23265|    597|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    597|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    597|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 597, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    597|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    597|            chars_read += bytes_read;
23273|    597|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    597|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 597, False: 0]
  |  |  ------------------
  ------------------
23274|    597|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    597|                result.resize(old_size + bytes_read);
23279|    597|                ++chars_read;
23280|    597|                current = char_traits<char_type>::eof();
23281|    597|                return unexpect_eof(context);
23282|    597|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|    864|        return true;
23288|  1.46k|    }
_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_EEE17append_from_blockImEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  2.28k|    {
23295|  2.28k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 864, False: 1.41k]
  ------------------
23296|    864|        {
23297|    864|            return false;
23298|    864|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|  1.41k|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|  1.41k|        const std::size_t remaining = ia.bulk_remaining();
23303|  1.41k|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 597, False: 822]
  ------------------
23304|    597|        {
23305|    597|            return false; // (the loop reports the premature end)
23306|    597|        }
23307|    822|        const auto n = static_cast<std::size_t>(ulen);
23308|    822|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|    822|        ia.bulk_skip(n);
23310|    822|        chars_read += n;
23311|    822|        return true;
23312|  1.41k|    }
_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_EEE20unsupported_key_typeEPKc:
19576|    174|    {
19577|    174|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
19578|    174|    }
_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_cbor_valueEbNS1_18cbor_tag_handler_tERbSP_:
19179|   860k|    {
19180|   860k|        tag_pending = false;
19181|   860k|        item_read = false;
19182|       |
19183|   860k|        switch (get_char ? get() : current)
  ------------------
  |  Branch (19183:17): [True: 596k, False: 264k]
  ------------------
19184|   860k|        {
19185|       |            // EOF
19186|  5.01k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (19186:13): [True: 5.01k, False: 855k]
  ------------------
19187|  5.01k|                return unexpect_eof("value");
19188|       |
19189|       |            // Integer 0x00..0x17 (0..23)
19190|  30.6k|            case 0x00:
  ------------------
  |  Branch (19190:13): [True: 30.6k, False: 829k]
  ------------------
19191|  33.9k|            case 0x01:
  ------------------
  |  Branch (19191:13): [True: 3.32k, False: 856k]
  ------------------
19192|  35.7k|            case 0x02:
  ------------------
  |  Branch (19192:13): [True: 1.74k, False: 858k]
  ------------------
19193|  36.9k|            case 0x03:
  ------------------
  |  Branch (19193:13): [True: 1.18k, False: 859k]
  ------------------
19194|  38.3k|            case 0x04:
  ------------------
  |  Branch (19194:13): [True: 1.46k, False: 858k]
  ------------------
19195|  40.1k|            case 0x05:
  ------------------
  |  Branch (19195:13): [True: 1.72k, False: 858k]
  ------------------
19196|  41.5k|            case 0x06:
  ------------------
  |  Branch (19196:13): [True: 1.47k, False: 858k]
  ------------------
19197|  42.7k|            case 0x07:
  ------------------
  |  Branch (19197:13): [True: 1.16k, False: 859k]
  ------------------
19198|  44.7k|            case 0x08:
  ------------------
  |  Branch (19198:13): [True: 2.00k, False: 858k]
  ------------------
19199|  46.1k|            case 0x09:
  ------------------
  |  Branch (19199:13): [True: 1.39k, False: 858k]
  ------------------
19200|  47.3k|            case 0x0A:
  ------------------
  |  Branch (19200:13): [True: 1.19k, False: 859k]
  ------------------
19201|  48.3k|            case 0x0B:
  ------------------
  |  Branch (19201:13): [True: 973, False: 859k]
  ------------------
19202|  49.9k|            case 0x0C:
  ------------------
  |  Branch (19202:13): [True: 1.67k, False: 858k]
  ------------------
19203|  51.3k|            case 0x0D:
  ------------------
  |  Branch (19203:13): [True: 1.36k, False: 858k]
  ------------------
19204|  53.0k|            case 0x0E:
  ------------------
  |  Branch (19204:13): [True: 1.68k, False: 858k]
  ------------------
19205|  54.2k|            case 0x0F:
  ------------------
  |  Branch (19205:13): [True: 1.22k, False: 859k]
  ------------------
19206|  56.2k|            case 0x10:
  ------------------
  |  Branch (19206:13): [True: 1.97k, False: 858k]
  ------------------
19207|  58.6k|            case 0x11:
  ------------------
  |  Branch (19207:13): [True: 2.36k, False: 857k]
  ------------------
19208|  60.0k|            case 0x12:
  ------------------
  |  Branch (19208:13): [True: 1.44k, False: 858k]
  ------------------
19209|  61.0k|            case 0x13:
  ------------------
  |  Branch (19209:13): [True: 946, False: 859k]
  ------------------
19210|  63.2k|            case 0x14:
  ------------------
  |  Branch (19210:13): [True: 2.21k, False: 858k]
  ------------------
19211|  64.2k|            case 0x15:
  ------------------
  |  Branch (19211:13): [True: 1.02k, False: 859k]
  ------------------
19212|  66.5k|            case 0x16:
  ------------------
  |  Branch (19212:13): [True: 2.28k, False: 857k]
  ------------------
19213|  67.4k|            case 0x17:
  ------------------
  |  Branch (19213:13): [True: 969, False: 859k]
  ------------------
19214|  67.4k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
19215|       |
19216|  1.40k|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (19216:13): [True: 1.40k, False: 858k]
  ------------------
19217|  1.40k|            {
19218|  1.40k|                std::uint8_t number{};
19219|  1.40k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19219:24): [True: 1.38k, False: 18]
  |  Branch (19219:46): [True: 1.38k, False: 0]
  ------------------
19220|  66.5k|            }
19221|       |
19222|  1.00k|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (19222:13): [True: 1.00k, False: 859k]
  ------------------
19223|  1.00k|            {
19224|  1.00k|                std::uint16_t number{};
19225|  1.00k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19225:24): [True: 979, False: 27]
  |  Branch (19225:46): [True: 979, False: 0]
  ------------------
19226|  66.5k|            }
19227|       |
19228|  1.17k|            case 0x1A: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (19228:13): [True: 1.17k, False: 859k]
  ------------------
19229|  1.17k|            {
19230|  1.17k|                std::uint32_t number{};
19231|  1.17k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19231:24): [True: 1.13k, False: 42]
  |  Branch (19231:46): [True: 1.13k, False: 0]
  ------------------
19232|  66.5k|            }
19233|       |
19234|  2.22k|            case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (19234:13): [True: 2.22k, False: 858k]
  ------------------
19235|  2.22k|            {
19236|  2.22k|                std::uint64_t number{};
19237|  2.22k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19237:24): [True: 2.16k, False: 60]
  |  Branch (19237:46): [True: 2.16k, False: 0]
  ------------------
19238|  66.5k|            }
19239|       |
19240|       |            // Negative integer -1-0x00..-1-0x17 (-1..-24)
19241|  3.54k|            case 0x20:
  ------------------
  |  Branch (19241:13): [True: 3.54k, False: 856k]
  ------------------
19242|  6.36k|            case 0x21:
  ------------------
  |  Branch (19242:13): [True: 2.82k, False: 857k]
  ------------------
19243|  9.76k|            case 0x22:
  ------------------
  |  Branch (19243:13): [True: 3.40k, False: 856k]
  ------------------
19244|  12.8k|            case 0x23:
  ------------------
  |  Branch (19244:13): [True: 3.05k, False: 857k]
  ------------------
19245|  14.1k|            case 0x24:
  ------------------
  |  Branch (19245:13): [True: 1.28k, False: 858k]
  ------------------
19246|  16.0k|            case 0x25:
  ------------------
  |  Branch (19246:13): [True: 1.93k, False: 858k]
  ------------------
19247|  17.5k|            case 0x26:
  ------------------
  |  Branch (19247:13): [True: 1.54k, False: 858k]
  ------------------
19248|  20.2k|            case 0x27:
  ------------------
  |  Branch (19248:13): [True: 2.64k, False: 857k]
  ------------------
19249|  22.1k|            case 0x28:
  ------------------
  |  Branch (19249:13): [True: 1.92k, False: 858k]
  ------------------
19250|  25.0k|            case 0x29:
  ------------------
  |  Branch (19250:13): [True: 2.87k, False: 857k]
  ------------------
19251|  26.9k|            case 0x2A:
  ------------------
  |  Branch (19251:13): [True: 1.94k, False: 858k]
  ------------------
19252|  29.3k|            case 0x2B:
  ------------------
  |  Branch (19252:13): [True: 2.35k, False: 857k]
  ------------------
19253|  30.6k|            case 0x2C:
  ------------------
  |  Branch (19253:13): [True: 1.26k, False: 858k]
  ------------------
19254|  33.0k|            case 0x2D:
  ------------------
  |  Branch (19254:13): [True: 2.42k, False: 857k]
  ------------------
19255|  34.6k|            case 0x2E:
  ------------------
  |  Branch (19255:13): [True: 1.63k, False: 858k]
  ------------------
19256|  37.0k|            case 0x2F:
  ------------------
  |  Branch (19256:13): [True: 2.44k, False: 857k]
  ------------------
19257|  40.2k|            case 0x30:
  ------------------
  |  Branch (19257:13): [True: 3.10k, False: 857k]
  ------------------
19258|  42.6k|            case 0x31:
  ------------------
  |  Branch (19258:13): [True: 2.43k, False: 857k]
  ------------------
19259|  44.9k|            case 0x32:
  ------------------
  |  Branch (19259:13): [True: 2.29k, False: 857k]
  ------------------
19260|  46.8k|            case 0x33:
  ------------------
  |  Branch (19260:13): [True: 1.89k, False: 858k]
  ------------------
19261|  49.3k|            case 0x34:
  ------------------
  |  Branch (19261:13): [True: 2.50k, False: 857k]
  ------------------
19262|  51.1k|            case 0x35:
  ------------------
  |  Branch (19262:13): [True: 1.81k, False: 858k]
  ------------------
19263|  53.3k|            case 0x36:
  ------------------
  |  Branch (19263:13): [True: 2.19k, False: 858k]
  ------------------
19264|  54.3k|            case 0x37:
  ------------------
  |  Branch (19264:13): [True: 1.02k, False: 859k]
  ------------------
19265|  54.3k|                return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
19266|       |
19267|  1.20k|            case 0x38: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (19267:13): [True: 1.20k, False: 859k]
  ------------------
19268|  1.20k|                return get_cbor_negative_integer<std::uint8_t>();
19269|       |
19270|  1.14k|            case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (19270:13): [True: 1.14k, False: 859k]
  ------------------
19271|  1.14k|                return get_cbor_negative_integer<std::uint16_t>();
19272|       |
19273|  1.43k|            case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (19273:13): [True: 1.43k, False: 858k]
  ------------------
19274|  1.43k|                return get_cbor_negative_integer<std::uint32_t>();
19275|       |
19276|  2.51k|            case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (19276:13): [True: 2.51k, False: 857k]
  ------------------
19277|  2.51k|                return get_cbor_negative_integer<std::uint64_t>();
19278|       |
19279|       |            // Binary data (0x00..0x17 bytes follow)
19280|  79.2k|            case 0x40:
  ------------------
  |  Branch (19280:13): [True: 79.2k, False: 780k]
  ------------------
19281|  83.9k|            case 0x41:
  ------------------
  |  Branch (19281:13): [True: 4.67k, False: 855k]
  ------------------
19282|  85.3k|            case 0x42:
  ------------------
  |  Branch (19282:13): [True: 1.41k, False: 858k]
  ------------------
19283|  85.7k|            case 0x43:
  ------------------
  |  Branch (19283:13): [True: 445, False: 859k]
  ------------------
19284|  86.5k|            case 0x44:
  ------------------
  |  Branch (19284:13): [True: 765, False: 859k]
  ------------------
19285|  86.9k|            case 0x45:
  ------------------
  |  Branch (19285:13): [True: 409, False: 859k]
  ------------------
19286|  87.4k|            case 0x46:
  ------------------
  |  Branch (19286:13): [True: 439, False: 859k]
  ------------------
19287|  88.0k|            case 0x47:
  ------------------
  |  Branch (19287:13): [True: 663, False: 859k]
  ------------------
19288|  88.5k|            case 0x48:
  ------------------
  |  Branch (19288:13): [True: 508, False: 859k]
  ------------------
19289|  88.8k|            case 0x49:
  ------------------
  |  Branch (19289:13): [True: 317, False: 859k]
  ------------------
19290|  89.2k|            case 0x4A:
  ------------------
  |  Branch (19290:13): [True: 396, False: 859k]
  ------------------
19291|  89.7k|            case 0x4B:
  ------------------
  |  Branch (19291:13): [True: 432, False: 859k]
  ------------------
19292|  90.1k|            case 0x4C:
  ------------------
  |  Branch (19292:13): [True: 468, False: 859k]
  ------------------
19293|  90.5k|            case 0x4D:
  ------------------
  |  Branch (19293:13): [True: 401, False: 859k]
  ------------------
19294|  90.7k|            case 0x4E:
  ------------------
  |  Branch (19294:13): [True: 169, False: 860k]
  ------------------
19295|  90.9k|            case 0x4F:
  ------------------
  |  Branch (19295:13): [True: 165, False: 860k]
  ------------------
19296|  91.2k|            case 0x50:
  ------------------
  |  Branch (19296:13): [True: 341, False: 859k]
  ------------------
19297|  91.4k|            case 0x51:
  ------------------
  |  Branch (19297:13): [True: 171, False: 860k]
  ------------------
19298|  91.5k|            case 0x52:
  ------------------
  |  Branch (19298:13): [True: 165, False: 860k]
  ------------------
19299|  91.7k|            case 0x53:
  ------------------
  |  Branch (19299:13): [True: 192, False: 860k]
  ------------------
19300|  91.9k|            case 0x54:
  ------------------
  |  Branch (19300:13): [True: 175, False: 860k]
  ------------------
19301|  92.1k|            case 0x55:
  ------------------
  |  Branch (19301:13): [True: 183, False: 860k]
  ------------------
19302|  92.3k|            case 0x56:
  ------------------
  |  Branch (19302:13): [True: 157, False: 860k]
  ------------------
19303|  92.4k|            case 0x57:
  ------------------
  |  Branch (19303:13): [True: 185, False: 860k]
  ------------------
19304|  95.1k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19304:13): [True: 2.64k, False: 857k]
  ------------------
19305|  97.4k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19305:13): [True: 2.35k, False: 857k]
  ------------------
19306|  98.8k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19306:13): [True: 1.38k, False: 858k]
  ------------------
19307|   100k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19307:13): [True: 1.77k, False: 858k]
  ------------------
19308|   103k|            case 0x5F: // Binary data (indefinite length)
  ------------------
  |  Branch (19308:13): [True: 2.63k, False: 857k]
  ------------------
19309|   103k|            {
19310|   103k|                binary_t b;
19311|   103k|                return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (19311:24): [True: 101k, False: 1.81k]
  |  Branch (19311:46): [True: 101k, False: 0]
  ------------------
19312|   100k|            }
19313|       |
19314|       |            // UTF-8 string (0x00..0x17 bytes follow)
19315|  24.7k|            case 0x60:
  ------------------
  |  Branch (19315:13): [True: 24.7k, False: 835k]
  ------------------
19316|  28.5k|            case 0x61:
  ------------------
  |  Branch (19316:13): [True: 3.86k, False: 856k]
  ------------------
19317|  30.5k|            case 0x62:
  ------------------
  |  Branch (19317:13): [True: 1.96k, False: 858k]
  ------------------
19318|  31.8k|            case 0x63:
  ------------------
  |  Branch (19318:13): [True: 1.32k, False: 858k]
  ------------------
19319|  33.8k|            case 0x64:
  ------------------
  |  Branch (19319:13): [True: 1.94k, False: 858k]
  ------------------
19320|  35.5k|            case 0x65:
  ------------------
  |  Branch (19320:13): [True: 1.75k, False: 858k]
  ------------------
19321|  36.6k|            case 0x66:
  ------------------
  |  Branch (19321:13): [True: 1.05k, False: 859k]
  ------------------
19322|  37.5k|            case 0x67:
  ------------------
  |  Branch (19322:13): [True: 899, False: 859k]
  ------------------
19323|  38.8k|            case 0x68:
  ------------------
  |  Branch (19323:13): [True: 1.29k, False: 858k]
  ------------------
19324|  39.4k|            case 0x69:
  ------------------
  |  Branch (19324:13): [True: 592, False: 859k]
  ------------------
19325|  40.1k|            case 0x6A:
  ------------------
  |  Branch (19325:13): [True: 729, False: 859k]
  ------------------
19326|  40.6k|            case 0x6B:
  ------------------
  |  Branch (19326:13): [True: 478, False: 859k]
  ------------------
19327|  41.4k|            case 0x6C:
  ------------------
  |  Branch (19327:13): [True: 792, False: 859k]
  ------------------
19328|  41.9k|            case 0x6D:
  ------------------
  |  Branch (19328:13): [True: 536, False: 859k]
  ------------------
19329|  42.1k|            case 0x6E:
  ------------------
  |  Branch (19329:13): [True: 215, False: 860k]
  ------------------
19330|  42.4k|            case 0x6F:
  ------------------
  |  Branch (19330:13): [True: 338, False: 859k]
  ------------------
19331|  43.3k|            case 0x70:
  ------------------
  |  Branch (19331:13): [True: 885, False: 859k]
  ------------------
19332|  43.7k|            case 0x71:
  ------------------
  |  Branch (19332:13): [True: 342, False: 859k]
  ------------------
19333|  44.0k|            case 0x72:
  ------------------
  |  Branch (19333:13): [True: 380, False: 859k]
  ------------------
19334|  44.3k|            case 0x73:
  ------------------
  |  Branch (19334:13): [True: 224, False: 860k]
  ------------------
19335|  45.0k|            case 0x74:
  ------------------
  |  Branch (19335:13): [True: 679, False: 859k]
  ------------------
19336|  45.2k|            case 0x75:
  ------------------
  |  Branch (19336:13): [True: 240, False: 859k]
  ------------------
19337|  45.5k|            case 0x76:
  ------------------
  |  Branch (19337:13): [True: 300, False: 859k]
  ------------------
19338|  46.0k|            case 0x77:
  ------------------
  |  Branch (19338:13): [True: 549, False: 859k]
  ------------------
19339|  50.1k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19339:13): [True: 4.02k, False: 856k]
  ------------------
19340|  52.9k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19340:13): [True: 2.82k, False: 857k]
  ------------------
19341|  54.0k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19341:13): [True: 1.11k, False: 859k]
  ------------------
19342|  56.0k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19342:13): [True: 1.95k, False: 858k]
  ------------------
19343|  58.3k|            case 0x7F: // UTF-8 string (indefinite length)
  ------------------
  |  Branch (19343:13): [True: 2.33k, False: 857k]
  ------------------
19344|  58.3k|            {
19345|  58.3k|                string_t s;
19346|  58.3k|                return get_cbor_string(s) && sax->string(s);
  ------------------
  |  Branch (19346:24): [True: 56.2k, False: 2.07k]
  |  Branch (19346:46): [True: 56.2k, False: 0]
  ------------------
19347|  56.0k|            }
19348|       |
19349|       |            // array (0x00..0x17 data items follow)
19350|  14.5k|            case 0x80:
  ------------------
  |  Branch (19350:13): [True: 14.5k, False: 845k]
  ------------------
19351|   358k|            case 0x81:
  ------------------
  |  Branch (19351:13): [True: 343k, False: 516k]
  ------------------
19352|   364k|            case 0x82:
  ------------------
  |  Branch (19352:13): [True: 6.23k, False: 854k]
  ------------------
19353|   365k|            case 0x83:
  ------------------
  |  Branch (19353:13): [True: 1.46k, False: 858k]
  ------------------
19354|   367k|            case 0x84:
  ------------------
  |  Branch (19354:13): [True: 1.26k, False: 858k]
  ------------------
19355|   368k|            case 0x85:
  ------------------
  |  Branch (19355:13): [True: 1.24k, False: 858k]
  ------------------
19356|   369k|            case 0x86:
  ------------------
  |  Branch (19356:13): [True: 1.01k, False: 859k]
  ------------------
19357|   372k|            case 0x87:
  ------------------
  |  Branch (19357:13): [True: 2.68k, False: 857k]
  ------------------
19358|   373k|            case 0x88:
  ------------------
  |  Branch (19358:13): [True: 1.67k, False: 858k]
  ------------------
19359|   375k|            case 0x89:
  ------------------
  |  Branch (19359:13): [True: 1.32k, False: 858k]
  ------------------
19360|   376k|            case 0x8A:
  ------------------
  |  Branch (19360:13): [True: 924, False: 859k]
  ------------------
19361|   377k|            case 0x8B:
  ------------------
  |  Branch (19361:13): [True: 1.02k, False: 859k]
  ------------------
19362|   377k|            case 0x8C:
  ------------------
  |  Branch (19362:13): [True: 840, False: 859k]
  ------------------
19363|   379k|            case 0x8D:
  ------------------
  |  Branch (19363:13): [True: 1.78k, False: 858k]
  ------------------
19364|   381k|            case 0x8E:
  ------------------
  |  Branch (19364:13): [True: 1.41k, False: 858k]
  ------------------
19365|   383k|            case 0x8F:
  ------------------
  |  Branch (19365:13): [True: 2.57k, False: 857k]
  ------------------
19366|   384k|            case 0x90:
  ------------------
  |  Branch (19366:13): [True: 1.31k, False: 858k]
  ------------------
19367|   386k|            case 0x91:
  ------------------
  |  Branch (19367:13): [True: 1.02k, False: 859k]
  ------------------
19368|   387k|            case 0x92:
  ------------------
  |  Branch (19368:13): [True: 1.24k, False: 858k]
  ------------------
19369|   388k|            case 0x93:
  ------------------
  |  Branch (19369:13): [True: 1.12k, False: 859k]
  ------------------
19370|   389k|            case 0x94:
  ------------------
  |  Branch (19370:13): [True: 1.18k, False: 859k]
  ------------------
19371|   391k|            case 0x95:
  ------------------
  |  Branch (19371:13): [True: 1.49k, False: 858k]
  ------------------
19372|   392k|            case 0x96:
  ------------------
  |  Branch (19372:13): [True: 1.45k, False: 858k]
  ------------------
19373|   394k|            case 0x97:
  ------------------
  |  Branch (19373:13): [True: 2.12k, False: 858k]
  ------------------
19374|   394k|                return enter_cbor_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
19375|       |
19376|  3.35k|            case 0x98: // array (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19376:13): [True: 3.35k, False: 856k]
  ------------------
19377|  5.64k|            case 0x99: // array (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19377:13): [True: 2.28k, False: 857k]
  ------------------
19378|  6.88k|            case 0x9A: // array (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19378:13): [True: 1.24k, False: 858k]
  ------------------
19379|  8.08k|            case 0x9B: // array (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19379:13): [True: 1.20k, False: 859k]
  ------------------
19380|  8.08k|            {
19381|  8.08k|                std::uint64_t len{};
19382|  8.08k|                std::size_t size{};
19383|  8.08k|                return get_cbor_argument(len) && get_container_size(len, size, "array") && enter_cbor_array(size);
  ------------------
  |  Branch (19383:24): [True: 7.87k, False: 216]
  |  Branch (19383:50): [True: 7.86k, False: 3]
  |  Branch (19383:92): [True: 7.47k, False: 396]
  ------------------
19384|  6.88k|            }
19385|       |
19386|  19.6k|            case 0x9F: // array (indefinite length)
  ------------------
  |  Branch (19386:13): [True: 19.6k, False: 840k]
  ------------------
19387|  19.6k|                return enter_array(detail::unknown_size());
19388|       |
19389|       |            // map (0x00..0x17 pairs of data items follow)
19390|  17.7k|            case 0xA0:
  ------------------
  |  Branch (19390:13): [True: 17.7k, False: 842k]
  ------------------
19391|  52.1k|            case 0xA1:
  ------------------
  |  Branch (19391:13): [True: 34.3k, False: 825k]
  ------------------
19392|  58.8k|            case 0xA2:
  ------------------
  |  Branch (19392:13): [True: 6.69k, False: 853k]
  ------------------
19393|  60.5k|            case 0xA3:
  ------------------
  |  Branch (19393:13): [True: 1.74k, False: 858k]
  ------------------
19394|  61.4k|            case 0xA4:
  ------------------
  |  Branch (19394:13): [True: 832, False: 859k]
  ------------------
19395|  62.3k|            case 0xA5:
  ------------------
  |  Branch (19395:13): [True: 896, False: 859k]
  ------------------
19396|  63.2k|            case 0xA6:
  ------------------
  |  Branch (19396:13): [True: 904, False: 859k]
  ------------------
19397|  64.5k|            case 0xA7:
  ------------------
  |  Branch (19397:13): [True: 1.31k, False: 858k]
  ------------------
19398|  65.3k|            case 0xA8:
  ------------------
  |  Branch (19398:13): [True: 810, False: 859k]
  ------------------
19399|  66.1k|            case 0xA9:
  ------------------
  |  Branch (19399:13): [True: 833, False: 859k]
  ------------------
19400|  66.9k|            case 0xAA:
  ------------------
  |  Branch (19400:13): [True: 784, False: 859k]
  ------------------
19401|  67.7k|            case 0xAB:
  ------------------
  |  Branch (19401:13): [True: 783, False: 859k]
  ------------------
19402|  68.5k|            case 0xAC:
  ------------------
  |  Branch (19402:13): [True: 818, False: 859k]
  ------------------
19403|  69.4k|            case 0xAD:
  ------------------
  |  Branch (19403:13): [True: 857, False: 859k]
  ------------------
19404|  70.2k|            case 0xAE:
  ------------------
  |  Branch (19404:13): [True: 848, False: 859k]
  ------------------
19405|  71.1k|            case 0xAF:
  ------------------
  |  Branch (19405:13): [True: 893, False: 859k]
  ------------------
19406|  72.0k|            case 0xB0:
  ------------------
  |  Branch (19406:13): [True: 873, False: 859k]
  ------------------
19407|  73.5k|            case 0xB1:
  ------------------
  |  Branch (19407:13): [True: 1.52k, False: 858k]
  ------------------
19408|  74.5k|            case 0xB2:
  ------------------
  |  Branch (19408:13): [True: 938, False: 859k]
  ------------------
19409|  75.3k|            case 0xB3:
  ------------------
  |  Branch (19409:13): [True: 891, False: 859k]
  ------------------
19410|  76.2k|            case 0xB4:
  ------------------
  |  Branch (19410:13): [True: 822, False: 859k]
  ------------------
19411|  77.1k|            case 0xB5:
  ------------------
  |  Branch (19411:13): [True: 906, False: 859k]
  ------------------
19412|  77.9k|            case 0xB6:
  ------------------
  |  Branch (19412:13): [True: 776, False: 859k]
  ------------------
19413|  78.8k|            case 0xB7:
  ------------------
  |  Branch (19413:13): [True: 918, False: 859k]
  ------------------
19414|  78.8k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
19415|       |
19416|    980|            case 0xB8: // map (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19416:13): [True: 980, False: 859k]
  ------------------
19417|  2.04k|            case 0xB9: // map (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19417:13): [True: 1.06k, False: 859k]
  ------------------
19418|  2.75k|            case 0xBA: // map (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19418:13): [True: 705, False: 859k]
  ------------------
19419|  3.85k|            case 0xBB: // map (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19419:13): [True: 1.10k, False: 859k]
  ------------------
19420|  3.85k|            {
19421|  3.85k|                std::uint64_t len{};
19422|  3.85k|                std::size_t size{};
19423|  3.85k|                return get_cbor_argument(len) && get_container_size(len, size, "map") && enter_object(size);
  ------------------
  |  Branch (19423:24): [True: 3.72k, False: 129]
  |  Branch (19423:50): [True: 3.72k, False: 3]
  |  Branch (19423:90): [True: 3.27k, False: 447]
  ------------------
19424|  2.75k|            }
19425|       |
19426|  4.50k|            case 0xBF: // map (indefinite length)
  ------------------
  |  Branch (19426:13): [True: 4.50k, False: 855k]
  ------------------
19427|  4.50k|                return enter_object(detail::unknown_size());
19428|       |
19429|      6|            case 0xC0: // tagged item (tag value 0-23, in the head itself)
  ------------------
  |  Branch (19429:13): [True: 6, False: 860k]
  ------------------
19430|      9|            case 0xC1:
  ------------------
  |  Branch (19430:13): [True: 3, False: 860k]
  ------------------
19431|     12|            case 0xC2:
  ------------------
  |  Branch (19431:13): [True: 3, False: 860k]
  ------------------
19432|     15|            case 0xC3:
  ------------------
  |  Branch (19432:13): [True: 3, False: 860k]
  ------------------
19433|     18|            case 0xC4:
  ------------------
  |  Branch (19433:13): [True: 3, False: 860k]
  ------------------
19434|     24|            case 0xC5:
  ------------------
  |  Branch (19434:13): [True: 6, False: 860k]
  ------------------
19435|     30|            case 0xC6:
  ------------------
  |  Branch (19435:13): [True: 6, False: 860k]
  ------------------
19436|     39|            case 0xC7:
  ------------------
  |  Branch (19436:13): [True: 9, False: 860k]
  ------------------
19437|     42|            case 0xC8:
  ------------------
  |  Branch (19437:13): [True: 3, False: 860k]
  ------------------
19438|     45|            case 0xC9:
  ------------------
  |  Branch (19438:13): [True: 3, False: 860k]
  ------------------
19439|     48|            case 0xCA:
  ------------------
  |  Branch (19439:13): [True: 3, False: 860k]
  ------------------
19440|     51|            case 0xCB:
  ------------------
  |  Branch (19440:13): [True: 3, False: 860k]
  ------------------
19441|     54|            case 0xCC:
  ------------------
  |  Branch (19441:13): [True: 3, False: 860k]
  ------------------
19442|     57|            case 0xCD:
  ------------------
  |  Branch (19442:13): [True: 3, False: 860k]
  ------------------
19443|     60|            case 0xCE:
  ------------------
  |  Branch (19443:13): [True: 3, False: 860k]
  ------------------
19444|     69|            case 0xCF:
  ------------------
  |  Branch (19444:13): [True: 9, False: 860k]
  ------------------
19445|     72|            case 0xD0:
  ------------------
  |  Branch (19445:13): [True: 3, False: 860k]
  ------------------
19446|     75|            case 0xD1:
  ------------------
  |  Branch (19446:13): [True: 3, False: 860k]
  ------------------
19447|     78|            case 0xD2:
  ------------------
  |  Branch (19447:13): [True: 3, False: 860k]
  ------------------
19448|     81|            case 0xD3:
  ------------------
  |  Branch (19448:13): [True: 3, False: 860k]
  ------------------
19449|     84|            case 0xD4:
  ------------------
  |  Branch (19449:13): [True: 3, False: 860k]
  ------------------
19450|     87|            case 0xD5:
  ------------------
  |  Branch (19450:13): [True: 3, False: 860k]
  ------------------
19451|     90|            case 0xD6:
  ------------------
  |  Branch (19451:13): [True: 3, False: 860k]
  ------------------
19452|     96|            case 0xD7:
  ------------------
  |  Branch (19452:13): [True: 6, False: 860k]
  ------------------
19453|     96|            {
19454|     96|                if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (19454:21): [True: 96, False: 0]
  ------------------
19455|     96|                {
19456|     96|                    return unexpected_byte("invalid byte", "value");
19457|     96|                }
19458|       |
19459|       |                // ignore and store: the tag value is already in the head, so
19460|       |                // there is nothing left to read here; the tagged value that
19461|       |                // follows is read by the loop in parse_cbor_internal() rather
19462|       |                // than by recursing here
19463|      0|                tag_pending = true;
19464|      0|                return true;
19465|     96|            }
19466|       |
19467|      3|            case 0xD8: // tagged item (1 byte follows)
  ------------------
  |  Branch (19467:13): [True: 3, False: 860k]
  ------------------
19468|      6|            case 0xD9: // tagged item (2 bytes follow)
  ------------------
  |  Branch (19468:13): [True: 3, False: 860k]
  ------------------
19469|      9|            case 0xDA: // tagged item (4 bytes follow)
  ------------------
  |  Branch (19469:13): [True: 3, False: 860k]
  ------------------
19470|     15|            case 0xDB: // tagged item (8 bytes follow)
  ------------------
  |  Branch (19470:13): [True: 6, False: 860k]
  ------------------
19471|     15|            {
19472|     15|                switch (tag_handler)
19473|     15|                {
19474|     15|                    case cbor_tag_handler_t::error:
  ------------------
  |  Branch (19474:21): [True: 15, False: 0]
  ------------------
19475|     15|                    {
19476|     15|                        return unexpected_byte("invalid byte", "value");
19477|      0|                    }
19478|       |
19479|      0|                    case cbor_tag_handler_t::ignore:
  ------------------
  |  Branch (19479:21): [True: 0, False: 15]
  ------------------
19480|      0|                    {
19481|       |                        // ignore the tag's binary subtype argument
19482|      0|                        std::uint64_t subtype_to_ignore{};
19483|      0|                        if (!get_cbor_argument(subtype_to_ignore))
  ------------------
  |  Branch (19483:29): [True: 0, False: 0]
  ------------------
19484|      0|                        {
19485|      0|                            return false;
19486|      0|                        }
19487|       |                        // the tagged value follows; it is read by the loop in
19488|       |                        // parse_cbor_internal() rather than by recursing here
19489|      0|                        tag_pending = true;
19490|      0|                        return true;
19491|      0|                    }
19492|       |
19493|      0|                    case cbor_tag_handler_t::store:
  ------------------
  |  Branch (19493:21): [True: 0, False: 15]
  ------------------
19494|      0|                    {
19495|       |                        // use binary subtype and store in a binary container
19496|      0|                        std::uint64_t subtype{};
19497|      0|                        if (!get_cbor_argument(subtype))
  ------------------
  |  Branch (19497:29): [True: 0, False: 0]
  ------------------
19498|      0|                        {
19499|      0|                            return false;
19500|      0|                        }
19501|      0|                        binary_t b;
19502|      0|                        b.set_subtype(detail::conditional_static_cast<typename binary_t::subtype_type>(subtype));
19503|       |
19504|      0|                        get();
19505|       |                        // a byte string (the heads accepted by get_cbor_binary) keeps the tag as subtype
19506|      0|                        if ((current >= 0x40 && current <= 0x5B) || current == 0x5F)
  ------------------
  |  Branch (19506:30): [True: 0, False: 0]
  |  Branch (19506:49): [True: 0, False: 0]
  |  Branch (19506:69): [True: 0, False: 0]
  ------------------
19507|      0|                        {
19508|      0|                            return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (19508:36): [True: 0, False: 0]
  |  Branch (19508:58): [True: 0, False: 0]
  ------------------
19509|      0|                        }
19510|       |
19511|       |                        // not a byte string: the tagged value, whose first byte
19512|       |                        // was just read, is read by the caller like for ignore
19513|      0|                        tag_pending = true;
19514|      0|                        item_read = true;
19515|      0|                        return true;
19516|      0|                    }
19517|       |
19518|      0|                    default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (19518:21): [True: 0, False: 15]
  ------------------
19519|      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 (19519:25): [Folded, False: 0]
  ------------------
19520|      0|                        return false;        // LCOV_EXCL_LINE
19521|     15|                }
19522|     15|            }
19523|       |
19524|  6.08k|            case 0xF4: // false
  ------------------
  |  Branch (19524:13): [True: 6.08k, False: 854k]
  ------------------
19525|  6.08k|                return sax->boolean(false);
19526|       |
19527|  6.89k|            case 0xF5: // true
  ------------------
  |  Branch (19527:13): [True: 6.89k, False: 853k]
  ------------------
19528|  6.89k|                return sax->boolean(true);
19529|       |
19530|  10.4k|            case 0xF6: // null
  ------------------
  |  Branch (19530:13): [True: 10.4k, False: 849k]
  ------------------
19531|  10.4k|                return sax->null();
19532|       |
19533|  18.2k|            case 0xF9: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (19533:13): [True: 18.2k, False: 841k]
  ------------------
19534|  18.2k|                return get_half_float(false);
19535|       |
19536|  4.83k|            case 0xFA: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (19536:13): [True: 4.83k, False: 855k]
  ------------------
19537|  4.83k|                return get_cbor_float<float>();
19538|       |
19539|  3.32k|            case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (19539:13): [True: 3.32k, False: 856k]
  ------------------
19540|  3.32k|                return get_cbor_float<double>();
19541|       |
19542|    141|            default: // anything else (0xFF is handled inside the other types)
  ------------------
  |  Branch (19542:13): [True: 141, False: 860k]
  ------------------
19543|    141|            {
19544|    141|                return unexpected_byte("invalid byte", "value");
19545|     15|            }
19546|   860k|        }
19547|   860k|    }
_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_unsignedIhEEbT_:
23008|  2.17k|    {
23009|  2.17k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|  2.17k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 2.17k, False: 0]
  |  |  ------------------
  ------------------
23010|  2.17k|        {
23011|  2.17k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|  2.17k|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|  2.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImhEEbT0_:
 5295|  4.22k|{
 5296|  4.22k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  4.22k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImhLb0EvE4testEh:
 5279|  4.22k|    {
 5280|  4.22k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5281|  4.22k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImhLb0ELb0EE4testEh:
 5233|  4.22k|    {
 5234|  4.22k|        using CommonType = typename std::common_type<OfType, T>::type;
 5235|  4.22k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5236|  4.22k|    }
_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_unsignedItEEbT_:
23008|  1.89k|    {
23009|  1.89k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|  1.89k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 1.89k, False: 0]
  |  |  ------------------
  ------------------
23010|  1.89k|        {
23011|  1.89k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|  1.89k|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|  1.89k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImtEEbT0_:
 5295|  3.55k|{
 5296|  3.55k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  3.55k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImtLb0EvE4testEt:
 5279|  3.55k|    {
 5280|  3.55k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5281|  3.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImtLb0ELb0EE4testEt:
 5233|  3.55k|    {
 5234|  3.55k|        using CommonType = typename std::common_type<OfType, T>::type;
 5235|  3.55k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5236|  3.55k|    }
_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_unsignedIjEEbT_:
23008|  1.62k|    {
23009|  1.62k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|  1.62k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 1.62k, False: 0]
  |  |  ------------------
  ------------------
23010|  1.62k|        {
23011|  1.62k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|  1.62k|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|  1.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImjEEbT0_:
 5295|  3.00k|{
 5296|  3.00k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  3.00k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImjLb0EvE4testEj:
 5279|  3.00k|    {
 5280|  3.00k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5281|  3.00k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImjLb0ELb0EE4testEj:
 5233|  3.00k|    {
 5234|  3.00k|        using CommonType = typename std::common_type<OfType, T>::type;
 5235|  3.00k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5236|  3.00k|    }
_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_EEE25get_cbor_negative_integerIhEEbv:
19141|  1.20k|    {
19142|  1.20k|        NumberType number{};
19143|  1.20k|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 1.17k, False: 27]
  |  Branch (19143:38): [True: 1.17k, False: 0]
  ------------------
19144|  1.20k|    }
_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_EEE26emit_cbor_negative_integerIhEEbT_:
19149|  1.95k|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|  1.95k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  1.95k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 1.95k, False: 0]
  |  |  ------------------
  ------------------
19154|  1.95k|        {
19155|  1.95k|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|  1.95k|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|  1.95k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIlhEEbT0_:
 5295|  3.78k|{
 5296|  3.78k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  3.78k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IlhLb1EvE4testEh:
 5288|  3.78k|    {
 5289|  3.78k|        return true;
 5290|  3.78k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castIllTnNSt3__19enable_ifIXsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 5188|  16.1k|{
 5189|  16.1k|    return value;
 5190|  16.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_EEE25get_cbor_negative_integerItEEbv:
19141|  1.14k|    {
19142|  1.14k|        NumberType number{};
19143|  1.14k|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 1.11k, False: 33]
  |  Branch (19143:38): [True: 1.11k, False: 0]
  ------------------
19144|  1.14k|    }
_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_EEE26emit_cbor_negative_integerItEEbT_:
19149|  2.00k|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|  2.00k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  2.00k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 2.00k, False: 0]
  |  |  ------------------
  ------------------
19154|  2.00k|        {
19155|  2.00k|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|  2.00k|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|  2.00k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIltEEbT0_:
 5295|  3.78k|{
 5296|  3.78k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  3.78k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IltLb1EvE4testEt:
 5288|  3.78k|    {
 5289|  3.78k|        return true;
 5290|  3.78k|    }
_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_EEE25get_cbor_negative_integerIjEEbv:
19141|  1.43k|    {
19142|  1.43k|        NumberType number{};
19143|  1.43k|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 1.39k, False: 48]
  |  Branch (19143:38): [True: 1.39k, False: 0]
  ------------------
19144|  1.43k|    }
_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_EEE26emit_cbor_negative_integerIjEEbT_:
19149|  1.88k|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|  1.88k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  1.88k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 1.88k, False: 0]
  |  |  ------------------
  ------------------
19154|  1.88k|        {
19155|  1.88k|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|  1.88k|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|  1.88k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIljEEbT0_:
 5295|  3.44k|{
 5296|  3.44k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  3.44k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IljLb1EvE4testEj:
 5288|  3.44k|    {
 5289|  3.44k|        return true;
 5290|  3.44k|    }
_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_EEE25get_cbor_negative_integerImEEbv:
19141|  2.51k|    {
19142|  2.51k|        NumberType number{};
19143|  2.51k|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 2.46k, False: 57]
  |  Branch (19143:38): [True: 2.46k, False: 0]
  ------------------
19144|  2.51k|    }
_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_EEE26emit_cbor_negative_integerImEEbT_:
19149|  4.06k|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|  4.06k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  4.06k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 2.81k, False: 1.24k]
  |  |  ------------------
  ------------------
19154|  2.81k|        {
19155|  2.81k|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|  2.81k|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|  1.24k|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|  4.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIlmEEbT0_:
 5295|  7.64k|{
 5296|  7.64k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5297|  7.64k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IlmLb0EvE4testEm:
 5279|  7.64k|    {
 5280|  7.64k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5281|  7.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2IlmLb1ELb0EE4testEm:
 5243|  7.64k|    {
 5244|  7.64k|        using CommonType = typename std::common_type<OfType, T>::type;
 5245|  7.64k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5246|  7.64k|    }
_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_cbor_binaryERNS0_27byte_container_with_subtypeISF_EE:
19947|   103k|    {
19948|       |        // read chunks iteratively, but reject a second indefinite-length
19949|       |        // level as required by RFC 8949, Section 3.2.3
19950|   103k|        bool indefinite = false;
19951|       |
19952|   111k|        while (true)
  ------------------
  |  Branch (19952:16): [True: 109k, Folded]
  ------------------
19953|   109k|        {
19954|   109k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("binary")))
  ------------------
  |  | 1697|   109k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 30, False: 109k]
  |  |  ------------------
  ------------------
19955|     30|            {
19956|     30|                return false;
19957|     30|            }
19958|       |
19959|   109k|            if (current == 0x5F) // Binary data (indefinite length)
  ------------------
  |  Branch (19959:17): [True: 2.64k, False: 107k]
  ------------------
19960|  2.64k|            {
19961|  2.64k|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1697|  2.64k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 6, False: 2.63k]
  |  |  ------------------
  ------------------
19962|      6|                {
19963|      6|                    return cbor_indefinite_string_error("binary array", "binary");
19964|      6|                }
19965|  2.63k|                indefinite = true;
19966|  2.63k|                get();
19967|  2.63k|                continue;
19968|  2.64k|            }
19969|       |
19970|       |            // a break marker closes the indefinite-length string; outside
19971|       |            // of one it falls through to the error below
19972|   107k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (19972:17): [True: 6.45k, False: 100k]
  |  Branch (19972:31): [True: 2.35k, False: 4.09k]
  ------------------
19973|  2.35k|            {
19974|  2.35k|                return true;
19975|  2.35k|            }
19976|       |
19977|   104k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_binary_chunk(result, indefinite)))
  ------------------
  |  | 1697|   104k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 572, False: 104k]
  |  |  ------------------
  ------------------
19978|    572|            {
19979|    572|                return false;
19980|    572|            }
19981|       |
19982|   104k|            if (!indefinite)
  ------------------
  |  Branch (19982:17): [True: 99.1k, False: 5.11k]
  ------------------
19983|  99.1k|            {
19984|  99.1k|                return true;
19985|  99.1k|            }
19986|       |
19987|  5.11k|            get();
19988|  5.11k|        }
19989|   103k|    }
_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_EEE21get_cbor_binary_chunkERNS0_27byte_container_with_subtypeISF_EEb:
19876|   104k|    {
19877|   104k|        switch (current)
19878|   104k|        {
19879|       |            // Binary data (0x00..0x17 bytes follow)
19880|  81.8k|            case 0x40:
  ------------------
  |  Branch (19880:13): [True: 81.8k, False: 22.9k]
  ------------------
19881|  87.3k|            case 0x41:
  ------------------
  |  Branch (19881:13): [True: 5.55k, False: 99.1k]
  ------------------
19882|  88.7k|            case 0x42:
  ------------------
  |  Branch (19882:13): [True: 1.42k, False: 103k]
  ------------------
19883|  89.2k|            case 0x43:
  ------------------
  |  Branch (19883:13): [True: 460, False: 104k]
  ------------------
19884|  90.0k|            case 0x44:
  ------------------
  |  Branch (19884:13): [True: 771, False: 103k]
  ------------------
19885|  90.4k|            case 0x45:
  ------------------
  |  Branch (19885:13): [True: 430, False: 104k]
  ------------------
19886|  90.8k|            case 0x46:
  ------------------
  |  Branch (19886:13): [True: 439, False: 104k]
  ------------------
19887|  91.5k|            case 0x47:
  ------------------
  |  Branch (19887:13): [True: 672, False: 104k]
  ------------------
19888|  92.0k|            case 0x48:
  ------------------
  |  Branch (19888:13): [True: 511, False: 104k]
  ------------------
19889|  92.3k|            case 0x49:
  ------------------
  |  Branch (19889:13): [True: 317, False: 104k]
  ------------------
19890|  92.7k|            case 0x4A:
  ------------------
  |  Branch (19890:13): [True: 396, False: 104k]
  ------------------
19891|  93.2k|            case 0x4B:
  ------------------
  |  Branch (19891:13): [True: 438, False: 104k]
  ------------------
19892|  93.6k|            case 0x4C:
  ------------------
  |  Branch (19892:13): [True: 468, False: 104k]
  ------------------
19893|  94.0k|            case 0x4D:
  ------------------
  |  Branch (19893:13): [True: 407, False: 104k]
  ------------------
19894|  94.2k|            case 0x4E:
  ------------------
  |  Branch (19894:13): [True: 169, False: 104k]
  ------------------
19895|  94.4k|            case 0x4F:
  ------------------
  |  Branch (19895:13): [True: 168, False: 104k]
  ------------------
19896|  94.8k|            case 0x50:
  ------------------
  |  Branch (19896:13): [True: 371, False: 104k]
  ------------------
19897|  94.9k|            case 0x51:
  ------------------
  |  Branch (19897:13): [True: 177, False: 104k]
  ------------------
19898|  95.1k|            case 0x52:
  ------------------
  |  Branch (19898:13): [True: 192, False: 104k]
  ------------------
19899|  95.3k|            case 0x53:
  ------------------
  |  Branch (19899:13): [True: 192, False: 104k]
  ------------------
19900|  95.5k|            case 0x54:
  ------------------
  |  Branch (19900:13): [True: 181, False: 104k]
  ------------------
19901|  95.7k|            case 0x55:
  ------------------
  |  Branch (19901:13): [True: 201, False: 104k]
  ------------------
19902|  95.9k|            case 0x56:
  ------------------
  |  Branch (19902:13): [True: 160, False: 104k]
  ------------------
19903|  96.0k|            case 0x57:
  ------------------
  |  Branch (19903:13): [True: 194, False: 104k]
  ------------------
19904|  96.0k|            {
19905|  96.0k|                return get_binary(static_cast<unsigned int>(current) & 0x1Fu, result);
19906|  95.9k|            }
19907|       |
19908|  2.93k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19908:13): [True: 2.93k, False: 101k]
  ------------------
19909|  2.93k|            {
19910|  2.93k|                return get_cbor_sized_bytes<std::uint8_t>("binary", result);
19911|  95.9k|            }
19912|       |
19913|  2.48k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19913:13): [True: 2.48k, False: 102k]
  ------------------
19914|  2.48k|            {
19915|  2.48k|                return get_cbor_sized_bytes<std::uint16_t>("binary", result);
19916|  95.9k|            }
19917|       |
19918|  1.38k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19918:13): [True: 1.38k, False: 103k]
  ------------------
19919|  1.38k|            {
19920|  1.38k|                return get_cbor_sized_bytes<std::uint32_t>("binary", result);
19921|  95.9k|            }
19922|       |
19923|  1.77k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19923:13): [True: 1.77k, False: 102k]
  ------------------
19924|  1.77k|            {
19925|  1.77k|                return get_cbor_sized_bytes<std::uint64_t>("binary", result);
19926|  95.9k|            }
19927|       |
19928|     66|            default:
  ------------------
  |  Branch (19928:13): [True: 66, False: 104k]
  ------------------
19929|     66|            {
19930|     66|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x40-0x5B)", "binary", inside_indefinite ? "" : " or indefinite binary array type (0x5F)");
  ------------------
  |  Branch (19930:133): [True: 66, False: 0]
  ------------------
19931|  95.9k|            }
19932|   104k|        }
19933|   104k|    }
_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_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
23219|  96.0k|    {
23220|  96.0k|        return get_bytes(len, "binary", result);
23221|  96.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_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|  97.4k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  97.4k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|  97.4k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 97.4k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  97.4k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|   111k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 14.5k, False: 96.6k]
  ------------------
23258|  14.5k|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|  14.5k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 14.3k, False: 132]
  ------------------
23262|  14.5k|                                       ? static_cast<std::size_t>(len)
23263|  14.5k|                                       : chunk_size;
23264|  14.5k|            const std::size_t old_size = result.size();
23265|  14.5k|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|  14.5k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|  14.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 14.5k, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|  14.5k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|  14.5k|            chars_read += bytes_read;
23273|  14.5k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|  14.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 795, False: 13.7k]
  |  |  ------------------
  ------------------
23274|    795|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    795|                result.resize(old_size + bytes_read);
23279|    795|                ++chars_read;
23280|    795|                current = char_traits<char_type>::eof();
23281|    795|                return unexpect_eof(context);
23282|    795|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|  13.7k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|  13.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 13.7k, False: 0]
  ------------------
23285|  13.7k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|  13.7k|        }
23287|  96.6k|        return true;
23288|  97.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_EEE17append_from_blockIjNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  97.4k|    {
23317|  97.4k|        return false;
23318|  97.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_EEE20get_cbor_sized_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|  2.93k|    {
19593|  2.93k|        NumberType len{};
19594|  2.93k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 2.91k, False: 27]
  |  Branch (19594:35): [True: 2.80k, False: 108]
  ------------------
19595|  2.93k|    }
_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_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|  2.91k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  2.91k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|  2.91k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 2.91k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  2.91k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  4.45k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 1.65k, False: 2.80k]
  ------------------
23258|  1.65k|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|  1.65k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 1.65k, False: 0]
  ------------------
23262|  1.65k|                                       ? static_cast<std::size_t>(len)
23263|  1.65k|                                       : chunk_size;
23264|  1.65k|            const std::size_t old_size = result.size();
23265|  1.65k|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|  1.65k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|  1.65k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 1.65k, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|  1.65k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|  1.65k|            chars_read += bytes_read;
23273|  1.65k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|  1.65k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 108, False: 1.54k]
  |  |  ------------------
  ------------------
23274|    108|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    108|                result.resize(old_size + bytes_read);
23279|    108|                ++chars_read;
23280|    108|                current = char_traits<char_type>::eof();
23281|    108|                return unexpect_eof(context);
23282|    108|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|  1.54k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|  1.54k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 1.54k, False: 0]
  ------------------
23285|  1.54k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|  1.54k|        }
23287|  2.80k|        return true;
23288|  2.91k|    }
_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_EEE17append_from_blockIhNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  2.91k|    {
23317|  2.91k|        return false;
23318|  2.91k|    }
_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_cbor_sized_bytesItNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|  2.48k|    {
19593|  2.48k|        NumberType len{};
19594|  2.48k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 2.43k, False: 45]
  |  Branch (19594:35): [True: 2.28k, False: 159]
  ------------------
19595|  2.48k|    }
_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_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|  2.43k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  2.43k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|  2.43k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 2.43k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  2.43k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  3.53k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 1.25k, False: 2.28k]
  ------------------
23258|  1.25k|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|  1.25k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 1.21k, False: 45]
  ------------------
23262|  1.25k|                                       ? static_cast<std::size_t>(len)
23263|  1.25k|                                       : chunk_size;
23264|  1.25k|            const std::size_t old_size = result.size();
23265|  1.25k|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|  1.25k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|  1.25k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 1.25k, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|  1.25k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|  1.25k|            chars_read += bytes_read;
23273|  1.25k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|  1.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 159, False: 1.09k]
  |  |  ------------------
  ------------------
23274|    159|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    159|                result.resize(old_size + bytes_read);
23279|    159|                ++chars_read;
23280|    159|                current = char_traits<char_type>::eof();
23281|    159|                return unexpect_eof(context);
23282|    159|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|  1.09k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|  1.09k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 1.09k, False: 0]
  ------------------
23285|  1.09k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|  1.09k|        }
23287|  2.28k|        return true;
23288|  2.43k|    }
_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_EEE17append_from_blockItNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  2.43k|    {
23317|  2.43k|        return false;
23318|  2.43k|    }
_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_cbor_sized_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|  1.38k|    {
19593|  1.38k|        NumberType len{};
19594|  1.38k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.33k, False: 48]
  |  Branch (19594:35): [True: 1.11k, False: 216]
  ------------------
19595|  1.38k|    }
_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_cbor_sized_bytesImNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|  1.77k|    {
19593|  1.77k|        NumberType len{};
19594|  1.77k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.70k, False: 72]
  |  Branch (19594:35): [True: 1.31k, False: 396]
  ------------------
19595|  1.77k|    }
_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_EEE9get_bytesImNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|  1.70k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  1.70k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|  1.70k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 1.70k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  1.70k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  2.20k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 891, False: 1.31k]
  ------------------
23258|    891|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    891|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 588, False: 303]
  ------------------
23262|    891|                                       ? static_cast<std::size_t>(len)
23263|    891|                                       : chunk_size;
23264|    891|            const std::size_t old_size = result.size();
23265|    891|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    891|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    891|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 891, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    891|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    891|            chars_read += bytes_read;
23273|    891|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    891|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 396, False: 495]
  |  |  ------------------
  ------------------
23274|    396|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    396|                result.resize(old_size + bytes_read);
23279|    396|                ++chars_read;
23280|    396|                current = char_traits<char_type>::eof();
23281|    396|                return unexpect_eof(context);
23282|    396|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    495|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    495|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 495, False: 0]
  ------------------
23285|    495|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    495|        }
23287|  1.31k|        return true;
23288|  1.70k|    }
_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_EEE17append_from_blockImNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  1.70k|    {
23317|  1.70k|        return false;
23318|  1.70k|    }
_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_EEE16enter_cbor_arrayEm:
20225|   402k|    {
20226|   402k|        return enter_array(len) && (len <= 1 || parse_cbor_scalar_run(std::integral_constant<bool, bulk_scan> {}));
  ------------------
  |  Branch (20226:16): [True: 402k, False: 396]
  |  Branch (20226:37): [True: 359k, False: 42.3k]
  |  Branch (20226:49): [True: 42.3k, False: 0]
  ------------------
20227|   402k|    }
_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_EEE21parse_cbor_scalar_runENS4_17integral_constantIbLb1EEE:
20115|  42.3k|    {
20116|       |        // nothing pushes onto the stack while the run reads scalars
20117|  42.3k|        std::size_t& remaining = container_stack.back().remaining;
20118|  65.8k|        while (remaining != 0 && ia.bulk_remaining() >= 9)
  ------------------
  |  Branch (20118:16): [True: 64.2k, False: 1.56k]
  |  Branch (20118:34): [True: 55.7k, False: 8.55k]
  ------------------
20119|  55.7k|        {
20120|  55.7k|            const auto* const data = reinterpret_cast<const unsigned char*>(ia.bulk_data());
20121|  55.7k|            const unsigned char head = data[0];
20122|  55.7k|            std::size_t size = 0;
20123|  55.7k|            bool accepted = false;
20124|  55.7k|            switch (head)
20125|  55.7k|            {
20126|    797|                case 0x18:
  ------------------
  |  Branch (20126:17): [True: 797, False: 54.9k]
  ------------------
20127|    797|                    size = 2;
20128|    797|                    accepted = emit_unsigned(data[1]);
20129|    797|                    break;
20130|    911|                case 0x19:
  ------------------
  |  Branch (20130:17): [True: 911, False: 54.8k]
  ------------------
20131|    911|                    size = 3;
20132|    911|                    accepted = emit_unsigned(load_big_endian<std::uint16_t>(data + 1));
20133|    911|                    break;
20134|    490|                case 0x1A:
  ------------------
  |  Branch (20134:17): [True: 490, False: 55.2k]
  ------------------
20135|    490|                    size = 5;
20136|    490|                    accepted = emit_unsigned(load_big_endian<std::uint32_t>(data + 1));
20137|    490|                    break;
20138|  1.03k|                case 0x1B:
  ------------------
  |  Branch (20138:17): [True: 1.03k, False: 54.6k]
  ------------------
20139|  1.03k|                    size = 9;
20140|  1.03k|                    accepted = emit_unsigned(load_big_endian<std::uint64_t>(data + 1));
20141|  1.03k|                    break;
20142|    780|                case 0x38:
  ------------------
  |  Branch (20142:17): [True: 780, False: 54.9k]
  ------------------
20143|    780|                    size = 2;
20144|    780|                    accepted = emit_cbor_negative_integer(data[1]);
20145|    780|                    break;
20146|    891|                case 0x39:
  ------------------
  |  Branch (20146:17): [True: 891, False: 54.8k]
  ------------------
20147|    891|                    size = 3;
20148|    891|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint16_t>(data + 1));
20149|    891|                    break;
20150|    489|                case 0x3A:
  ------------------
  |  Branch (20150:17): [True: 489, False: 55.2k]
  ------------------
20151|    489|                    size = 5;
20152|    489|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint32_t>(data + 1));
20153|    489|                    break;
20154|  1.60k|                case 0x3B:
  ------------------
  |  Branch (20154:17): [True: 1.60k, False: 54.1k]
  ------------------
20155|  1.60k|                    size = 9;
20156|  1.60k|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint64_t>(data + 1));
20157|  1.60k|                    break;
20158|  1.17k|                case 0xF4:
  ------------------
  |  Branch (20158:17): [True: 1.17k, False: 54.5k]
  ------------------
20159|  1.17k|                    size = 1;
20160|  1.17k|                    accepted = sax->boolean(false);
20161|  1.17k|                    break;
20162|  1.33k|                case 0xF5:
  ------------------
  |  Branch (20162:17): [True: 1.33k, False: 54.3k]
  ------------------
20163|  1.33k|                    size = 1;
20164|  1.33k|                    accepted = sax->boolean(true);
20165|  1.33k|                    break;
20166|  1.72k|                case 0xF6:
  ------------------
  |  Branch (20166:17): [True: 1.72k, False: 53.9k]
  ------------------
20167|  1.72k|                    size = 1;
20168|  1.72k|                    accepted = sax->null();
20169|  1.72k|                    break;
20170|  1.45k|                case 0xFA:
  ------------------
  |  Branch (20170:17): [True: 1.45k, False: 54.2k]
  ------------------
20171|  1.45k|                    size = 5;
20172|  1.45k|                    accepted = emit_float(load_big_endian<float>(data + 1));
20173|  1.45k|                    break;
20174|    794|                case 0xFB:
  ------------------
  |  Branch (20174:17): [True: 794, False: 54.9k]
  ------------------
20175|    794|                    size = 9;
20176|    794|                    accepted = emit_float(load_big_endian<double>(data + 1));
20177|    794|                    break;
20178|  42.2k|                default:
  ------------------
  |  Branch (20178:17): [True: 42.2k, False: 13.4k]
  ------------------
20179|  42.2k|                    if (head <= 0x17)
  ------------------
  |  Branch (20179:25): [True: 7.05k, False: 35.1k]
  ------------------
20180|  7.05k|                    {
20181|  7.05k|                        size = 1;
20182|  7.05k|                        accepted = sax->number_unsigned(static_cast<number_unsigned_t>(head));
20183|  7.05k|                    }
20184|  35.1k|                    else if (head >= 0x20 && head <= 0x37)
  ------------------
  |  Branch (20184:30): [True: 35.1k, False: 6]
  |  Branch (20184:46): [True: 2.97k, False: 32.2k]
  ------------------
20185|  2.97k|                    {
20186|  2.97k|                        size = 1;
20187|  2.97k|                        accepted = sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - head));
20188|  2.97k|                    }
20189|  32.2k|                    else
20190|  32.2k|                    {
20191|       |                        // any other value is read by parse_cbor_value
20192|  32.2k|                        return true;
20193|  32.2k|                    }
20194|  10.0k|                    break;
20195|  55.7k|            }
20196|       |            // as if read by get() and get_number(): current is the head byte
20197|  23.4k|            ia.bulk_skip(size);
20198|  23.4k|            chars_read += size;
20199|  23.4k|            current = head;
20200|  23.4k|            --remaining;
20201|  23.4k|            if (JSON_HEDLEY_UNLIKELY(!accepted))
  ------------------
  |  | 1697|  23.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 23.4k]
  |  |  ------------------
  ------------------
20202|      0|            {
20203|      0|                return false;
20204|      0|            }
20205|  23.4k|        }
20206|  10.1k|        return true;
20207|  42.3k|    }
_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_EEE15load_big_endianItEET_SJ_:
20087|  1.80k|    {
20088|  1.80k|        NumberType result{};
20089|  1.80k|        std::memcpy(&result, data, sizeof(NumberType));
20090|  1.80k|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 1.80k, False: 0]
  ------------------
20091|  1.80k|        {
20092|  1.80k|            byte_swap(result);
20093|  1.80k|        }
20094|  1.80k|        return result;
20095|  1.80k|    }
_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_EEE15load_big_endianIjEET_SJ_:
20087|    979|    {
20088|    979|        NumberType result{};
20089|    979|        std::memcpy(&result, data, sizeof(NumberType));
20090|    979|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 979, False: 0]
  ------------------
20091|    979|        {
20092|    979|            byte_swap(result);
20093|    979|        }
20094|    979|        return result;
20095|    979|    }
_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_EEE15load_big_endianImEET_SJ_:
20087|  2.63k|    {
20088|  2.63k|        NumberType result{};
20089|  2.63k|        std::memcpy(&result, data, sizeof(NumberType));
20090|  2.63k|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 2.63k, False: 0]
  ------------------
20091|  2.63k|        {
20092|  2.63k|            byte_swap(result);
20093|  2.63k|        }
20094|  2.63k|        return result;
20095|  2.63k|    }
_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|  6.23k|    {
23035|  6.23k|        const auto result = static_cast<number_float_t>(number);
23036|  6.23k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  12.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 6.23k]
  |  |  |  Branch (1697:94): [True: 6.20k, False: 33]
  |  |  |  Branch (1697:94): [True: 0, False: 6.20k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  6.23k|        return sax->number_float(result, no_source);
23041|  6.23k|    }
_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_EEE15load_big_endianIfEET_SJ_:
20087|  1.45k|    {
20088|  1.45k|        NumberType result{};
20089|  1.45k|        std::memcpy(&result, data, sizeof(NumberType));
20090|  1.45k|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 1.45k, False: 0]
  ------------------
20091|  1.45k|        {
20092|  1.45k|            byte_swap(result);
20093|  1.45k|        }
20094|  1.45k|        return result;
20095|  1.45k|    }
_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|  6.23k|    {
22898|  6.23k|        static_assert(sizeof(float) == sizeof(std::uint32_t), "float must have 32 bits");
22899|  6.23k|        std::uint32_t bits{};
22900|  6.23k|        std::memcpy(&bits, &number, sizeof(bits));
22901|  6.23k|        bits = byteswap(bits);
22902|  6.23k|        std::memcpy(&number, &bits, sizeof(bits));
22903|  6.23k|    }
_ZN8nlohmann16json_abi_v3_12_06detail8byteswapEj:
 9082|  16.4k|{
 9083|  16.4k|#if defined(__GNUC__) || defined(__clang__)
 9084|  16.4k|    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|  16.4k|}
_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_EEE15load_big_endianIdEET_SJ_:
20087|    794|    {
20088|    794|        NumberType result{};
20089|    794|        std::memcpy(&result, data, sizeof(NumberType));
20090|    794|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 794, False: 0]
  ------------------
20091|    794|        {
20092|    794|            byte_swap(result);
20093|    794|        }
20094|    794|        return result;
20095|    794|    }
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castImjTnNSt3__19enable_ifIXntsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 5182|   851k|{
 5183|   851k|    return static_cast<T>(value);
 5184|   851k|}
_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_EEE18get_container_sizeEmRmPKc:
20073|  11.5k|    {
20074|  11.5k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::size_t>(len) || len == detail::unknown_size()))
  ------------------
  |  | 1697|  23.1k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 6, False: 11.5k]
  |  |  |  Branch (1697:94): [True: 0, False: 11.5k]
  |  |  |  Branch (1697:94): [True: 6, False: 11.5k]
  |  |  ------------------
  ------------------
20075|      6|        {
20076|      6|            return container_size_error(context);
20077|      6|        }
20078|  11.5k|        result = conditional_static_cast<std::size_t>(len);
20079|  11.5k|        return true;
20080|  11.5k|    }
_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_EEE20container_size_errorEPKc:
23359|      6|    {
23360|      6|        return sax->parse_error(chars_read, get_token_string(), out_of_range::create(exception_id::container_too_large,
23361|      6|                                exception_message(concat("excessive ", what, " size"), "size"), nullptr));
23362|      6|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA11_KcRPSA_RA6_SA_EEET_DpOT0_:
 5516|     12|{
 5517|     12|    OutStringType str;
 5518|     12|    str.reserve(concat_length(args...));
 5519|     12|    concat_into(str, std::forward<Args>(args)...);
 5520|     12|    return str;
 5521|     12|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJPKcA6_cEEEmS4_DpRKT_:
 5420|     12|{
 5421|     12|    return ::strlen(cstr) + concat_length(rest...);
 5422|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA6_cEEEmPKcDpRKT_:
 5420|     12|{
 5421|     12|    return ::strlen(cstr) + concat_length(rest...);
 5422|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA11_KcJRPSA_RA6_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5479|     12|{
 5480|     12|    out.append(std::forward<Arg>(arg));
 5481|     12|    concat_into(out, std::forward<Args>(rest)...);
 5482|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA6_SA_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|     12|{
 5480|     12|    out.append(std::forward<Arg>(arg));
 5481|     12|    concat_into(out, std::forward<Args>(rest)...);
 5482|     12|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA6_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5479|     12|{
 5480|     12|    out.append(std::forward<Arg>(arg));
 5481|     12|    concat_into(out, std::forward<Args>(rest)...);
 5482|     12|}
_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|   422k|    {
18631|   422k|        return enter_container(/*is_object*/false, len, type_marker);
18632|   422k|    }
_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|  87.0k|    {
18637|  87.0k|        return enter_container(/*is_object*/true, len, type_marker);
18638|  87.0k|    }
_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|    252|    {
23422|    252|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
23423|    252|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRPKcRA5_SA_S9_EEET_DpOT0_:
 5516|    504|{
 5517|    504|    OutStringType str;
 5518|    504|    str.reserve(concat_length(args...));
 5519|    504|    concat_into(str, std::forward<Args>(args)...);
 5520|    504|    return str;
 5521|    504|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA5_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5420|    504|{
 5421|    504|    return ::strlen(cstr) + concat_length(rest...);
 5422|    504|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA5_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5479|    504|{
 5480|    504|    out.append(std::forward<Arg>(arg));
 5481|    504|    concat_into(out, std::forward<Args>(rest)...);
 5482|    504|}
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castImmTnNSt3__19enable_ifIXsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 5188|  22.4k|{
 5189|  22.4k|    return value;
 5190|  22.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_EEE14get_half_floatEb:
23054|  18.2k|    {
23055|  18.2k|        const auto byte1_raw = get();
23056|  18.2k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  18.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 6, False: 18.2k]
  |  |  ------------------
  ------------------
23057|      6|        {
23058|      6|            return false;
23059|      6|        }
23060|  18.2k|        const auto byte2_raw = get();
23061|  18.2k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  18.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 14, False: 18.2k]
  |  |  ------------------
  ------------------
23062|     14|        {
23063|     14|            return false;
23064|     14|        }
23065|       |
23066|  18.2k|        const auto byte1 = static_cast<unsigned char>(byte1_raw);
23067|  18.2k|        const auto byte2 = static_cast<unsigned char>(byte2_raw);
23068|       |
23069|       |        // Code from RFC 8949, Appendix D, Figure 3:
23070|       |        // As half-precision floating-point numbers were only added
23071|       |        // to IEEE 754 in 2008, today's programming platforms often
23072|       |        // still only have limited support for them. It is very
23073|       |        // easy to include at least decoding support for them even
23074|       |        // without such support. An example of a small decoder for
23075|       |        // half-precision floating-point numbers in the C language
23076|       |        // is shown in Fig. 3.
23077|  18.2k|        const auto half = little_endian
  ------------------
  |  Branch (23077:27): [True: 0, False: 18.2k]
  ------------------
23078|  18.2k|                          ? static_cast<unsigned int>((byte2 << 8u) + byte1)
23079|  18.2k|                          : static_cast<unsigned int>((byte1 << 8u) + byte2);
23080|  18.2k|        const double val = [&half]
23081|  18.2k|        {
23082|  18.2k|            const int exp = (half >> 10u) & 0x1Fu;
23083|  18.2k|            const unsigned int mant = half & 0x3FFu;
23084|  18.2k|            JSON_ASSERT(exp <= 31);
23085|  18.2k|            JSON_ASSERT(mant <= 1023);
23086|  18.2k|            switch (exp)
23087|  18.2k|            {
23088|  18.2k|                case 0:
23089|  18.2k|                    return std::ldexp(mant, -24);
23090|  18.2k|                case 31:
23091|  18.2k|                    return (mant == 0)
23092|  18.2k|                    ? std::numeric_limits<double>::infinity()
23093|  18.2k|                    : std::numeric_limits<double>::quiet_NaN();
23094|  18.2k|                default:
23095|  18.2k|                    return std::ldexp(mant + 1024, exp - 25);
23096|  18.2k|            }
23097|  18.2k|        }();
23098|  18.2k|        return sax->number_float((half & 0x8000u) != 0
  ------------------
  |  Branch (23098:34): [True: 11.0k, False: 7.22k]
  ------------------
23099|  18.2k|                                 ? static_cast<number_float_t>(-val)
23100|  18.2k|                                 : static_cast<number_float_t>(val), no_source);
23101|  18.2k|    }
_ZZN8nlohmann16json_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_EEE14get_half_floatEbENKUlvE_clEv:
23081|  18.1k|        {
23082|  18.1k|            const int exp = (half >> 10u) & 0x1Fu;
23083|  18.1k|            const unsigned int mant = half & 0x3FFu;
23084|  18.1k|            JSON_ASSERT(exp <= 31);
  ------------------
  |  | 2643|  18.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23084:13): [True: 18.1k, False: 0]
  ------------------
23085|  18.1k|            JSON_ASSERT(mant <= 1023);
  ------------------
  |  | 2643|  18.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23085:13): [True: 18.1k, False: 0]
  ------------------
23086|  18.1k|            switch (exp)
23087|  18.1k|            {
23088|  3.53k|                case 0:
  ------------------
  |  Branch (23088:17): [True: 3.53k, False: 14.6k]
  ------------------
23089|  3.53k|                    return std::ldexp(mant, -24);
23090|  3.49k|                case 31:
  ------------------
  |  Branch (23090:17): [True: 3.49k, False: 14.6k]
  ------------------
23091|  3.49k|                    return (mant == 0)
  ------------------
  |  Branch (23091:28): [True: 1.80k, False: 1.68k]
  ------------------
23092|  3.49k|                    ? std::numeric_limits<double>::infinity()
23093|  3.49k|                    : std::numeric_limits<double>::quiet_NaN();
23094|  11.1k|                default:
  ------------------
  |  Branch (23094:17): [True: 11.1k, False: 7.02k]
  ------------------
23095|  11.1k|                    return std::ldexp(mant + 1024, exp - 25);
23096|  18.1k|            }
23097|  18.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_EEE14get_cbor_floatIfEEbv:
19552|  4.83k|    {
19553|  4.83k|        NumberType number{};
19554|  4.83k|        return get_number(number) && emit_float(number);
  ------------------
  |  Branch (19554:16): [True: 4.78k, False: 48]
  |  Branch (19554:38): [True: 4.78k, False: 0]
  ------------------
19555|  4.83k|    }
_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|  4.83k|    {
22949|       |        // read in the original format
22950|       |
22951|  4.83k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  4.83k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 4.82k]
  |  |  ------------------
  ------------------
22952|     16|        {
22953|     16|            return false;
22954|     16|        }
22955|  4.82k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 4.78k, False: 32]
  |  Branch (22955:34): [Folded, False: 4.78k]
  |  Branch (22955:57): [True: 0, False: 4.78k]
  ------------------
22956|  4.78k|        {
22957|  4.78k|            byte_swap(result);
22958|  4.78k|        }
22959|  4.82k|        return true;
22960|  4.83k|    }
_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|  4.83k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  4.83k|        auto new_chars_read = ia.get_elements(&dest);
22859|  4.83k|        chars_read += new_chars_read;
22860|  4.83k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  4.83k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 48, False: 4.78k]
  |  |  ------------------
  ------------------
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|  4.78k|        return true;
22868|  4.83k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIfEEmPT_m:
10174|  4.83k|    {
10175|  4.83k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  4.83k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIfEEmPT_mNSt3__117integral_constantIbLb1EEE:
10232|  4.83k|    {
10233|  4.83k|        const std::size_t wanted = count * sizeof(T);
10234|  4.83k|        const std::size_t available = remaining_count() * sizeof(char_type);
10235|  4.83k|        const std::size_t copied = (std::min)(wanted, available);
10236|  4.83k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1696|  4.83k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 4.81k, False: 21]
  |  |  ------------------
  ------------------
10237|  4.81k|        {
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.81k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2643|  4.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10241:13): [True: 4.81k, False: 0]
  ------------------
10242|  4.81k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2643|  4.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (10242:13): [True: 4.81k, 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.81k|            std::memcpy(dest, &*current, copied);
10246|  4.81k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
10247|  4.81k|        }
10248|  4.83k|        return copied;
10249|  4.83k|    }
_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_EEE14get_cbor_floatIdEEbv:
19552|  3.32k|    {
19553|  3.32k|        NumberType number{};
19554|  3.32k|        return get_number(number) && emit_float(number);
  ------------------
  |  Branch (19554:16): [True: 3.26k, False: 57]
  |  Branch (19554:38): [True: 3.26k, False: 0]
  ------------------
19555|  3.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_EEE10get_numberIdLb0EEEbRT_:
22948|  3.32k|    {
22949|       |        // read in the original format
22950|       |
22951|  3.32k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  3.32k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 19, False: 3.30k]
  |  |  ------------------
  ------------------
22952|     19|        {
22953|     19|            return false;
22954|     19|        }
22955|  3.30k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 3.26k, False: 38]
  |  Branch (22955:34): [Folded, False: 3.26k]
  |  Branch (22955:57): [True: 0, False: 3.26k]
  ------------------
22956|  3.26k|        {
22957|  3.26k|            byte_swap(result);
22958|  3.26k|        }
22959|  3.30k|        return true;
22960|  3.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_EEE3getEv:
22840|  1.05M|    {
22841|  1.05M|        ++chars_read;
22842|  1.05M|        return current = ia.get_character();
22843|  1.05M|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E13get_characterEv:
10120|  1.05M|    {
10121|  1.05M|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  1.05M|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 1.03M, False: 23.8k]
  |  |  ------------------
  ------------------
10122|  1.03M|        {
10123|  1.03M|            auto result = char_traits<char_type>::to_int_type(*current);
10124|  1.03M|            std::advance(current, 1);
10125|  1.03M|            return result;
10126|  1.03M|        }
10127|       |
10128|  23.8k|        ++eof_reads;
10129|  23.8k|        return char_traits<char_type>::eof();
10130|  1.05M|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE11to_int_typeEh:
 4432|  1.33M|    {
 4433|  1.33M|        return static_cast<int_type>(c);
 4434|  1.33M|    }
_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|    924|    {
23408|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
23409|    924|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
23410|    924|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (23410:51): [True: 261, False: 663]
  ------------------
23411|    924|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRKS9_RPKcRA16_SC_S9_EEET_DpOT0_:
 5516|  1.32k|{
 5517|  1.32k|    OutStringType str;
 5518|  1.32k|    str.reserve(concat_length(args...));
 5519|  1.32k|    concat_into(str, std::forward<Args>(args)...);
 5520|  1.32k|    return str;
 5521|  1.32k|} // LCOV_EXCL_LINE (exception cleanup only)
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJPKcA16_cS9_EEEmRKT_DpRKT0_:
 5426|  1.32k|{
 5427|  1.32k|    return str.size() + concat_length(rest...);
 5428|  1.32k|}
_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|  1.32k|{
 5480|  1.32k|    out.append(std::forward<Arg>(arg));
 5481|  1.32k|    concat_into(out, std::forward<Args>(rest)...);
 5482|  1.32k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ENS0_6detail7value_tE:
41570|   926k|        : m_data(stored_kind(v))
41571|   926k|    {
41572|   926k|        assert_invariant();
41573|   926k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11stored_kindENS0_6detail7value_tE:
39780|   926k|    {
39781|   926k|        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: 926k]
  |  Branch (39781:77): [True: 0, False: 0]
  ------------------
39782|   926k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2ENS0_6detail7value_tE:
45568|   926k|            : m_type(v), m_value(v)
45569|   926k|        {
45570|   926k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ENS0_6detail7value_tE:
39867|   926k|        {
39868|   926k|            switch (t)
39869|   926k|            {
39870|   160k|                case value_t::object:
  ------------------
  |  Branch (39870:17): [True: 160k, False: 766k]
  ------------------
39871|   922k|                case value_t::array:
  ------------------
  |  Branch (39871:17): [True: 761k, False: 165k]
  ------------------
39872|   922k|                case value_t::string:
  ------------------
  |  Branch (39872:17): [True: 0, False: 926k]
  ------------------
39873|   922k|                case value_t::binary:
  ------------------
  |  Branch (39873:17): [True: 0, False: 926k]
  ------------------
39874|   922k|                {
39875|       |                    // allocating: kept out of line, so the scalar cases below inline
39876|   922k|                    init_owned(t);
39877|   922k|                    break;
39878|   922k|                }
39879|       |
39880|      0|                case value_t::boolean:
  ------------------
  |  Branch (39880:17): [True: 0, False: 926k]
  ------------------
39881|      0|                {
39882|      0|                    boolean = static_cast<boolean_t>(false);
39883|      0|                    break;
39884|   922k|                }
39885|       |
39886|      0|                case value_t::number_integer:
  ------------------
  |  Branch (39886:17): [True: 0, False: 926k]
  ------------------
39887|      0|                {
39888|      0|                    number_integer = static_cast<number_integer_t>(0);
39889|      0|                    break;
39890|   922k|                }
39891|       |
39892|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (39892:17): [True: 0, False: 926k]
  ------------------
39893|      0|                {
39894|      0|                    number_unsigned = static_cast<number_unsigned_t>(0);
39895|      0|                    break;
39896|   922k|                }
39897|       |
39898|      0|                case value_t::number_float:
  ------------------
  |  Branch (39898:17): [True: 0, False: 926k]
  ------------------
39899|      0|                {
39900|      0|                    number_float = static_cast<number_float_t>(0.0);
39901|      0|                    break;
39902|   922k|                }
39903|       |
39904|      0|                case value_t::null:
  ------------------
  |  Branch (39904:17): [True: 0, False: 926k]
  ------------------
39905|      0|                {
39906|      0|                    object = nullptr;  // silence warning, see #821
39907|      0|                    break;
39908|   922k|                }
39909|       |
39910|  4.30k|                case value_t::discarded:
  ------------------
  |  Branch (39910:17): [True: 4.30k, False: 922k]
  ------------------
39911|  4.30k|                default:
  ------------------
  |  Branch (39911:17): [True: 0, False: 926k]
  ------------------
39912|  4.30k|                {
39913|  4.30k|                    object = nullptr;  // silence warning, see #821
39914|  4.30k|                    if (JSON_HEDLEY_UNLIKELY(t == value_t::null))
  ------------------
  |  | 1697|  4.30k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 4.30k]
  |  |  ------------------
  ------------------
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|  4.30k|                    break;
39919|  4.30k|                }
39920|   926k|            }
39921|   926k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10init_ownedENS0_6detail7value_tE:
39925|   922k|        {
39926|   922k|            switch (t)
39927|   922k|            {
39928|   160k|                case value_t::object:
  ------------------
  |  Branch (39928:17): [True: 160k, False: 761k]
  ------------------
39929|   160k|                    object = create<object_t>();
39930|   160k|                    break;
39931|   761k|                case value_t::array:
  ------------------
  |  Branch (39931:17): [True: 761k, False: 160k]
  ------------------
39932|   761k|                    array = create<array_t>();
39933|   761k|                    break;
39934|      0|                case value_t::string:
  ------------------
  |  Branch (39934:17): [True: 0, False: 922k]
  ------------------
39935|      0|                    string = create<string_t>("");
39936|      0|                    break;
39937|      0|                case value_t::binary:
  ------------------
  |  Branch (39937:17): [True: 0, False: 922k]
  ------------------
39938|      0|                    binary = create<binary_t>();
39939|      0|                    break;
39940|      0|                case value_t::null: // LCOV_EXCL_LINE
  ------------------
  |  Branch (39940:17): [True: 0, False: 922k]
  ------------------
39941|      0|                case value_t::boolean:
  ------------------
  |  Branch (39941:17): [True: 0, False: 922k]
  ------------------
39942|      0|                case value_t::number_integer:
  ------------------
  |  Branch (39942:17): [True: 0, False: 922k]
  ------------------
39943|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (39943:17): [True: 0, False: 922k]
  ------------------
39944|      0|                case value_t::number_float:
  ------------------
  |  Branch (39944:17): [True: 0, False: 922k]
  ------------------
39945|      0|                case value_t::discarded:
  ------------------
  |  Branch (39945:17): [True: 0, False: 922k]
  ------------------
39946|      0|                default:
  ------------------
  |  Branch (39946:17): [True: 0, False: 922k]
  ------------------
39947|      0|                    break; // LCOV_EXCL_LINE
39948|   922k|            }
39949|   922k|        }
_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|   160k|    {
39789|   160k|        AllocatorType<T> alloc;
39790|   160k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
39791|       |
39792|   160k|        auto deleter = [&](T * obj)
39793|   160k|        {
39794|   160k|            AllocatorTraits::deallocate(alloc, obj, 1);
39795|   160k|        };
39796|   160k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
39797|   160k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
39798|   160k|        JSON_ASSERT(obj);
  ------------------
  |  | 2643|   160k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (39798:9): [True: 160k, False: 0]
  ------------------
39799|   160k|        return obj.release();
39800|   160k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS4_ISE_NS8_ISE_EEEEJEEEPT_DpOT0_:
39788|   761k|    {
39789|   761k|        AllocatorType<T> alloc;
39790|   761k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
39791|       |
39792|   761k|        auto deleter = [&](T * obj)
39793|   761k|        {
39794|   761k|            AllocatorTraits::deallocate(alloc, obj, 1);
39795|   761k|        };
39796|   761k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
39797|   761k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
39798|   761k|        JSON_ASSERT(obj);
  ------------------
  |  | 2643|   761k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (39798:9): [True: 761k, False: 0]
  ------------------
39799|   761k|        return obj.release();
39800|   761k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEaSESE_:
41982|   277k|    {
41983|       |        // check that the passed value is valid
41984|   277k|        other.assert_invariant();
41985|       |
41986|   277k|        using std::swap;
41987|   277k|        swap(m_data.m_type, other.m_data.m_type);
41988|   277k|        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|   277k|        json_base_class_t::operator=(std::move(other));
41996|       |
41997|   277k|        set_parents();
41998|   277k|        assert_invariant();
41999|   277k|        return *this;
42000|   277k|    }
_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|  30.0k|    ~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|  30.0k|    ~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|  21.4k|{
10701|  21.4k|    return input_adapter(container.data(), container.data() + container.size());
10702|  21.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterIPKhS4_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES6_S7_:
10603|  30.0k|{
10604|  30.0k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
10605|  30.0k|    return factory_type::create(first, last);
10606|  30.0k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryIPKhS4_vE6createES4_S4_:
10465|  30.0k|    {
10466|  30.0k|        return adapter_type(std::move(first), std::move(last));
10467|  30.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_EC2ES4_S4_:
10116|  30.0k|        : begin(first), current(std::move(first)), end(std::move(last))
10117|  30.0k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE7to_cborERKSE_NS0_6detail15error_handler_tE:
45652|  8.54k|    {
45653|  8.54k|        return to_binary_vector(j, error_handler, [&](vector_binary_writer<std::uint8_t>& w)
45654|  8.54k|        {
45655|  8.54k|            w.write_cbor(j);
45656|  8.54k|        });
45657|  8.54k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16to_binary_vectorIZNSE_7to_cborERKSE_NS0_6detail15error_handler_tEEUlRNSI_13binary_writerISE_hNSI_18output_vector_sinkIhSC_EEEEE_EESD_SH_SJ_T_:
42454|  8.54k|    {
42455|  8.54k|        std::vector<std::uint8_t> result;
42456|  8.54k|        result.reserve(detail::binary_initial_capacity(j));
42457|  8.54k|        {
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.54k|            auto writer = vector_writer(result, error_handler);
42461|  8.54k|            write(writer);
42462|  8.54k|        }
42463|  8.54k|        return result;
42464|  8.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23binary_initial_capacityINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEmRKT_:
29542|  8.54k|{
29543|  8.54k|    return (std::max)(binary_reserve_hint(j), min_vector_sink_capacity);
29544|  8.54k|}
_ZN8nlohmann16json_abi_v3_12_06detail19binary_reserve_hintINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEmRKT_:
29517|  8.54k|{
29518|  8.54k|    if (j.is_array())
  ------------------
  |  Branch (29518:9): [True: 4.75k, False: 3.78k]
  ------------------
29519|  4.75k|    {
29520|  4.75k|        return j.size() + 1;
29521|  4.75k|    }
29522|       |
29523|  3.78k|    if (j.is_object())
  ------------------
  |  Branch (29523:9): [True: 542, False: 3.24k]
  ------------------
29524|    542|    {
29525|    542|        return (j.size() * 2) + 1;
29526|    542|    }
29527|       |
29528|  3.24k|    return 0;
29529|  3.78k|}
_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.54k|    {
39471|  8.54k|        return vector_binary_writer<CharType>(::nlohmann::detail::output_vector_sink<CharType>(v), error_handler);
39472|  8.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEEC2ERNS3_6vectorIhS5_EE:
28977|  8.54k|        : v(&vec), cursor(vec.data() + vec.size()), limit(cursor)
28978|  8.54k|    {}
_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.54k|        : oa(std::move(sink)), error_handler(error_handler_)
29575|  8.54k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEEC2EOS6_:
28985|  8.54k|        : v(other.v), cursor(other.cursor), limit(other.limit)
28986|  8.54k|    {
28987|  8.54k|        other.v = nullptr;
28988|  8.54k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEED2Ev:
28991|  17.0k|    {
28992|  17.0k|        if (v != nullptr)
  ------------------
  |  Branch (28992:13): [True: 8.54k, False: 8.54k]
  ------------------
28993|  8.54k|        {
28994|  8.54k|            v->resize(position());
28995|  8.54k|        }
28996|  17.0k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE8positionEv:
29094|  23.5k|    {
29095|  23.5k|        return static_cast<std::size_t>(cursor - v->data());
29096|  23.5k|    }
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE7to_cborERKSE_NS0_6detail15error_handler_tEENKUlRNSH_13binary_writerISE_hNSH_18output_vector_sinkIhSC_EEEEE_clESN_:
45654|  8.54k|        {
45655|  8.54k|            w.write_cbor(j);
45656|  8.54k|        });
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE10write_cborERKSG_m:
29661|   187k|    {
29662|   187k|        if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()) && (j.is_array() || j.is_object()))
  ------------------
  |  | 1697|   375k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 5.90k, False: 182k]
  |  |  ------------------
  ------------------
  |  Branch (29662:72): [True: 1.40k, False: 4.50k]
  |  Branch (29662:88): [True: 2.73k, False: 1.77k]
  ------------------
29663|  4.13k|        {
29664|  4.13k|            write_cbor_iterative(j);
29665|  4.13k|            return;
29666|  4.13k|        }
29667|       |
29668|   183k|        switch (j.type())
29669|   183k|        {
29670|  1.99k|            case value_t::null:
  ------------------
  |  Branch (29670:13): [True: 1.99k, False: 181k]
  ------------------
29671|  1.99k|            {
29672|  1.99k|                oa.write_character(to_char_type(0xF6));
29673|  1.99k|                break;
29674|      0|            }
29675|       |
29676|  3.04k|            case value_t::boolean:
  ------------------
  |  Branch (29676:13): [True: 3.04k, False: 180k]
  ------------------
29677|  3.04k|            {
29678|  3.04k|                oa.write_character(j.m_data.m_value.boolean
  ------------------
  |  Branch (29678:36): [True: 1.03k, False: 2.00k]
  ------------------
29679|  3.04k|                                   ? to_char_type(0xF5)
29680|  3.04k|                                   : to_char_type(0xF4));
29681|  3.04k|                break;
29682|      0|            }
29683|       |
29684|  2.83k|            case value_t::number_integer:
  ------------------
  |  Branch (29684:13): [True: 2.83k, False: 181k]
  ------------------
29685|  6.26k|            case value_t::number_unsigned:
  ------------------
  |  Branch (29685:13): [True: 3.43k, False: 180k]
  ------------------
29686|  6.26k|            {
29687|       |                // one case for both, so that an array mixing negative
29688|       |                // (number_integer) and non-negative (number_unsigned) values
29689|       |                // does not mispredict the switch
29690|  6.26k|                write_cbor_integer(j, std::integral_constant<bool, integers_fit_64_bits()>());
29691|  6.26k|                break;
29692|  2.83k|            }
29693|       |
29694|  2.73k|            case value_t::number_float:
  ------------------
  |  Branch (29694:13): [True: 2.73k, False: 181k]
  ------------------
29695|  2.73k|            {
29696|  2.73k|                if (std::isnan(j.m_data.m_value.number_float))
  ------------------
  |  Branch (29696:21): [True: 262, False: 2.47k]
  ------------------
29697|    262|                {
29698|       |                    // NaN is 0xf97e00 in CBOR
29699|    262|                    oa.write_character(to_char_type(0xF9));
29700|    262|                    oa.write_character(to_char_type(0x7E));
29701|    262|                    oa.write_character(to_char_type(0x00));
29702|    262|                }
29703|  2.47k|                else if (std::isinf(j.m_data.m_value.number_float))
  ------------------
  |  Branch (29703:26): [True: 214, False: 2.26k]
  ------------------
29704|    214|                {
29705|       |                    // Infinity is 0xf97c00, -Infinity is 0xf9fc00
29706|    214|                    oa.write_character(to_char_type(0xf9));
29707|    214|                    oa.write_character(j.m_data.m_value.number_float > 0 ? to_char_type(0x7C) : to_char_type(0xFC));
  ------------------
  |  Branch (29707:40): [True: 82, False: 132]
  ------------------
29708|    214|                    oa.write_character(to_char_type(0x00));
29709|    214|                }
29710|  2.26k|                else
29711|  2.26k|                {
29712|  2.26k|                    write_compact_float(j.m_data.m_value.number_float, to_char_type(0xFA), to_char_type(0xFB));
29713|  2.26k|                }
29714|  2.73k|                break;
29715|  2.83k|            }
29716|       |
29717|  13.0k|            case value_t::string:
  ------------------
  |  Branch (29717:13): [True: 13.0k, False: 170k]
  ------------------
29718|  13.0k|            {
29719|  13.0k|                write_cbor_string(*j.m_data.m_value.string, j);
29720|  13.0k|                break;
29721|  2.83k|            }
29722|       |
29723|   105k|            case value_t::array:
  ------------------
  |  Branch (29723:13): [True: 105k, False: 78.0k]
  ------------------
29724|   105k|            {
29725|   105k|                write_cbor_array(j, depth);
29726|   105k|                break;
29727|  2.83k|            }
29728|       |
29729|  39.6k|            case value_t::binary:
  ------------------
  |  Branch (29729:13): [True: 39.6k, False: 144k]
  ------------------
29730|  39.6k|            {
29731|  39.6k|                if (j.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (29731:21): [True: 0, False: 39.6k]
  ------------------
29732|      0|                {
29733|       |                    // The subtype is always written as a tag with a 0xD8..0xDB
29734|       |                    // head, never in the one-byte form 0xC0..0xD7 that CBOR
29735|       |                    // allows for tags 0..23 (so this is not write_cbor_head).
29736|       |                    // binary_reader with cbor_tag_handler_t::store only turns
29737|       |                    // 0xD8..0xDB into a subtype and ignores the one-byte tags,
29738|       |                    // so the shorter form would lose subtypes 0..23 on a round
29739|       |                    // trip.
29740|      0|                    if (j.m_data.m_value.binary->subtype() <= (std::numeric_limits<std::uint8_t>::max)())
  ------------------
  |  Branch (29740:25): [True: 0, False: 0]
  ------------------
29741|      0|                    {
29742|      0|                        write_number(static_cast<std::uint8_t>(0xd8));
29743|      0|                        write_number(static_cast<std::uint8_t>(j.m_data.m_value.binary->subtype()));
29744|      0|                    }
29745|      0|                    else if (j.m_data.m_value.binary->subtype() <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (29745:30): [True: 0, False: 0]
  ------------------
29746|      0|                    {
29747|      0|                        write_number(static_cast<std::uint8_t>(0xd9));
29748|      0|                        write_number(static_cast<std::uint16_t>(j.m_data.m_value.binary->subtype()));
29749|      0|                    }
29750|      0|                    else if (j.m_data.m_value.binary->subtype() <= (std::numeric_limits<std::uint32_t>::max)())
  ------------------
  |  Branch (29750:30): [True: 0, False: 0]
  ------------------
29751|      0|                    {
29752|      0|                        write_number(static_cast<std::uint8_t>(0xda));
29753|      0|                        write_number(static_cast<std::uint32_t>(j.m_data.m_value.binary->subtype()));
29754|      0|                    }
29755|      0|                    else
29756|      0|                    {
29757|      0|                        write_number(static_cast<std::uint8_t>(0xdb));
29758|      0|                        write_number(static_cast<std::uint64_t>(j.m_data.m_value.binary->subtype()));
29759|      0|                    }
29760|      0|                }
29761|       |
29762|       |                // step 1: write control byte and the binary array size
29763|  39.6k|                const auto N = j.m_data.m_value.binary->size();
29764|  39.6k|                write_cbor_head(0x40, N);
29765|       |
29766|       |                // step 2: write each element
29767|  39.6k|                write_bytes(j.m_data.m_value.binary->data(), N);
29768|       |
29769|  39.6k|                break;
29770|  2.83k|            }
29771|       |
29772|  11.2k|            case value_t::object:
  ------------------
  |  Branch (29772:13): [True: 11.2k, False: 172k]
  ------------------
29773|  11.2k|            {
29774|  11.2k|                write_cbor_object(j, depth);
29775|  11.2k|                break;
29776|  2.83k|            }
29777|       |
29778|      0|            case value_t::discarded:
  ------------------
  |  Branch (29778:13): [True: 0, False: 183k]
  ------------------
29779|      0|            default:
  ------------------
  |  Branch (29779:13): [True: 0, False: 183k]
  ------------------
29780|      0|                throw_on_discarded(j, input_format_t::cbor);
29781|   183k|        }
29782|   183k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20write_cbor_iterativeERKSG_:
30615|  4.13k|    {
30616|  4.13k|        write_container_iterative<cbor_walk>(root);
30617|  4.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE25write_container_iterativeINSJ_9cbor_walkEEEvRKSG_:
30572|  4.13k|    {
30573|       |        // only a container with elements is ever pushed; see write_container_value_or_push
30574|  4.13k|        std::vector<binary_container_frame> stack;
30575|  4.13k|        write_container_value_or_push<Walk>(root, stack);
30576|       |
30577|   154k|        while (!stack.empty())
  ------------------
  |  Branch (30577:16): [True: 150k, False: 4.13k]
  ------------------
30578|   150k|        {
30579|   150k|            const binary_container_frame current = stack.back();
30580|       |
30581|   150k|            if (current.value->is_array())
  ------------------
  |  Branch (30581:17): [True: 122k, False: 27.8k]
  ------------------
30582|   122k|            {
30583|   122k|                const auto& array = *current.value->m_data.m_value.array;
30584|   122k|                if (current.array_it == array.cend())
  ------------------
  |  Branch (30584:21): [True: 57.2k, False: 64.9k]
  ------------------
30585|  57.2k|                {
30586|  57.2k|                    stack.pop_back();
30587|  57.2k|                    continue;
30588|  57.2k|                }
30589|       |
30590|       |                // read the child before pushing: entering it can move every frame
30591|  64.9k|                const BasicJsonType* child = &(*current.array_it);
30592|  64.9k|                ++stack.back().array_it;
30593|  64.9k|                write_container_value_or_push<Walk>(*child, stack);
30594|  64.9k|            }
30595|  27.8k|            else
30596|  27.8k|            {
30597|  27.8k|                const auto& object = *current.value->m_data.m_value.object;
30598|  27.8k|                if (current.object_it == object.cend())
  ------------------
  |  Branch (30598:21): [True: 12.2k, False: 15.5k]
  ------------------
30599|  12.2k|                {
30600|  12.2k|                    stack.pop_back();
30601|  12.2k|                    continue;
30602|  12.2k|                }
30603|       |
30604|       |                // the key is written directly (not via a temporary basic_json),
30605|       |                // with the object as diagnostics context, as in the recursive writer
30606|  15.5k|                Walk::key(*this, current.object_it->first, *current.value);
30607|  15.5k|                const BasicJsonType* child = &(current.object_it->second);
30608|  15.5k|                ++stack.back().object_it;
30609|  15.5k|                write_container_value_or_push<Walk>(*child, stack);
30610|  15.5k|            }
30611|   150k|        }
30612|  4.13k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE29write_container_value_or_pushINSJ_9cbor_walkEEEvRKSG_RNS6_INSJ_22binary_container_frameENSA_ISO_EEEE:
30535|  84.6k|    {
30536|  84.6k|        if (j.is_array())
  ------------------
  |  Branch (30536:13): [True: 59.3k, False: 25.3k]
  ------------------
30537|  59.3k|        {
30538|  59.3k|            Walk::array_head(*this, j);
30539|  59.3k|            if (!j.m_data.m_value.array->empty())
  ------------------
  |  Branch (30539:17): [True: 57.2k, False: 2.09k]
  ------------------
30540|  57.2k|            {
30541|  57.2k|                stack.emplace_back(&j);
30542|  57.2k|            }
30543|  59.3k|            return;
30544|  59.3k|        }
30545|       |
30546|  25.3k|        if (j.is_object())
  ------------------
  |  Branch (30546:13): [True: 15.3k, False: 9.99k]
  ------------------
30547|  15.3k|        {
30548|  15.3k|            Walk::object_head(*this, j);
30549|  15.3k|            if (!j.m_data.m_value.object->empty())
  ------------------
  |  Branch (30549:17): [True: 12.2k, False: 3.04k]
  ------------------
30550|  12.2k|            {
30551|  12.2k|                stack.emplace_back(&j);
30552|  12.2k|            }
30553|  15.3k|            return;
30554|  15.3k|        }
30555|       |
30556|  9.99k|        Walk::scalar(*this, j);
30557|  9.99k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9cbor_walk10array_headERSJ_RKSG_:
30467|  59.3k|        {
30468|  59.3k|            w.write_cbor_head(0x80, j.m_data.m_value.array->size());
30469|  59.3k|        }
_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|  69.5k|            : value(value_)
30432|  69.5k|        {
30433|  69.5k|            if (value->is_object())
  ------------------
  |  Branch (30433:17): [True: 12.2k, False: 57.2k]
  ------------------
30434|  12.2k|            {
30435|  12.2k|                object_it = value->m_data.m_value.object->cbegin();
30436|  12.2k|            }
30437|  57.2k|            else
30438|  57.2k|            {
30439|  57.2k|                array_it = value->m_data.m_value.array->cbegin();
30440|  57.2k|            }
30441|  69.5k|        }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9cbor_walk11object_headERSJ_RKSG_:
30472|  15.3k|        {
30473|  15.3k|            w.write_cbor_head(0xA0, j.m_data.m_value.object->size());
30474|  15.3k|        }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9cbor_walk6scalarERSJ_RKSG_:
30477|  9.99k|        {
30478|  9.99k|            w.write_cbor(j);
30479|  9.99k|        }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9cbor_walk3keyISC_EEvRSJ_RKT_RKSG_:
30488|  15.5k|        {
30489|  15.5k|            w.write_cbor_key(k, object);
30490|  15.5k|        }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE14write_cbor_keyERKSC_RKSG_:
32728|  31.7k|    {
32729|  31.7k|        write_object_key<cbor_walk>(key, context);
32730|  31.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_object_keyINSJ_9cbor_walkESC_TnNS4_9enable_ifIXsr3std14is_convertibleIT0_SC_EE5valueEiE4typeELi0EEEvRKSC_RKSG_:
32715|  31.7k|    {
32716|  31.7k|        Walk::string(*this, key, context);
32717|  31.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9cbor_walk6stringERSJ_RKSC_RKSG_:
30482|  31.7k|        {
30483|  31.7k|            w.write_cbor_string(key, context);
30484|  31.7k|        }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4typeEv:
42051|   200k|    {
42052|   200k|        return m_data.m_type;
42053|   200k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE15write_characterEh:
29002|   127k|    {
29003|   127k|        if (JSON_HEDLEY_UNLIKELY(cursor == limit))
  ------------------
  |  | 1697|   127k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 7.33k, False: 120k]
  |  |  ------------------
  ------------------
29004|  7.33k|        {
29005|  7.33k|            grow(1);
29006|  7.33k|        }
29007|   127k|        *cursor++ = c;
29008|   127k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE4growEm:
29109|  14.9k|    {
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|  14.9k|        const std::size_t written = position();
29114|  14.9k|        const std::size_t needed = written + length;
29115|  14.9k|        const std::size_t capacity = (std::max)(min_vector_sink_capacity, needed <= v->capacity()
  ------------------
  |  Branch (29115:75): [True: 8.53k, False: 6.42k]
  ------------------
29116|  14.9k|                                                ? v->capacity()
29117|  14.9k|                                                : (std::max)(needed, v->capacity() * 2));
29118|  14.9k|        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|  14.9k|        v->resize((std::min)(capacity, (std::max)(needed, written + vector_sink_window)));
29126|  14.9k|        cursor = v->data() + written;
29127|  14.9k|        limit = v->data() + v->size();
29128|  14.9k|    }
_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|   242k|    {
34872|   242k|        return x;
34873|   242k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE18write_cbor_integerERKSG_NS4_17integral_constantIbLb1EEE:
32445|  12.1k|    {
32446|  12.1k|        oa.commit(encode_cbor_integer(oa.reserve(integer_encoding_space), j));
32447|  12.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE6commitEm:
29058|  68.7k|    {
29059|  68.7k|        cursor += length;
29060|  68.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE19encode_cbor_integerEPhRKSG_:
32487|  43.4k|    {
32488|  43.4k|        std::uint64_t sign_mask = 0;
32489|  43.4k|        const std::uint64_t raw = integer_bits(j, sign_mask);
32490|       |        // ~raw is -1 - n in the 64 bits that are written
32491|  43.4k|        return encode_cbor_integer_head(out, static_cast<std::uint8_t>(sign_mask & 0x20u), raw ^ sign_mask);
32492|  43.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12integer_bitsERKSG_Rm:
32239|  43.4k|    {
32240|  43.4k|        const bool is_signed = j.m_data.m_type == value_t::number_integer;
32241|  43.4k|        const std::uint64_t raw = is_signed
  ------------------
  |  Branch (32241:35): [True: 17.4k, False: 26.0k]
  ------------------
32242|  43.4k|                                  ? static_cast<std::uint64_t>(j.m_data.m_value.number_integer)
32243|  43.4k|                                  : static_cast<std::uint64_t>(j.m_data.m_value.number_unsigned);
32244|  43.4k|        sign_mask = (std::uint64_t{0} - static_cast<std::uint64_t>(is_signed)) & (std::uint64_t{0} - (raw >> 63u));
32245|  43.4k|        return raw;
32246|  43.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE24encode_cbor_integer_headEPhhm:
32258|  43.4k|    {
32259|       |        // an argument of at most 23 is in size class 1 (one byte) and is moved
32260|       |        // to class 0, the first byte, by subtracting 1
32261|  43.4k|        const auto is_immediate = static_cast<unsigned>(argument <= 0x17u);
32262|  43.4k|        const unsigned size_class = integer_size_class(argument) - is_immediate;
32263|       |
32264|       |        // the first byte: the argument itself if it is immediate, else
32265|       |        // 0x17 + size_class, selected through a mask
32266|  43.4k|        const std::uint64_t immediate_mask = std::uint64_t{0} - is_immediate;
32267|  43.4k|        const auto first_byte = static_cast<std::uint8_t>(major_type + ((argument & immediate_mask) | ((0x17u + size_class) & ~immediate_mask)));
32268|  43.4k|        return encode_first_byte_and_tail(out, first_byte, size_class, argument);
32269|  43.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE18integer_size_classEm:
32188|  43.4k|    {
32189|  43.4k|        static constexpr std::array<std::uint8_t, 64> size_class_by_leading_zeros =
32190|  43.4k|        {
32191|  43.4k|            {
32192|  43.4k|                4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
32193|  43.4k|                3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3,
32194|  43.4k|                2, 2, 2, 2, 2, 2, 2, 2,
32195|  43.4k|                1, 1, 1, 1, 1, 1, 1, 1
32196|  43.4k|            }
32197|  43.4k|        };
32198|       |        // x | 1 keeps count_leading_zeros() away from 0
32199|  43.4k|        return size_class_by_leading_zeros[static_cast<std::size_t>(count_leading_zeros(x | 1u))];
32200|  43.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE26encode_first_byte_and_tailEPhhjm:
32215|  43.4k|    {
32216|  43.4k|        out[0] = to_char_type(first_byte);
32217|  43.4k|        const unsigned unused_bits = 64u - ((8u << size_class) >> 1u);
32218|  43.4k|        const std::uint64_t tail = is_little_endian ? byteswap(value) >> unused_bits : value << unused_bits;
  ------------------
  |  Branch (32218:36): [True: 43.4k, False: 0]
  ------------------
32219|  43.4k|        std::memcpy(out + 1, &tail, sizeof(tail));
32220|  43.4k|        return ((std::size_t{1} << size_class) >> 1u) + 1;
32221|  43.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE7reserveEm:
29046|  68.7k|    {
29047|  68.7k|        JSON_ASSERT(length <= max_reserve_size);
  ------------------
  |  | 2643|  68.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29047:9): [True: 68.7k, False: 0]
  ------------------
29048|  68.7k|        if (JSON_HEDLEY_UNLIKELY(space() < length))
  ------------------
  |  | 1697|  68.7k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 6.66k, False: 62.1k]
  |  |  ------------------
  ------------------
29049|  6.66k|        {
29050|  6.66k|            grow(length);
29051|  6.66k|        }
29052|  68.7k|        return cursor;
29053|  68.7k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE5spaceEv:
29100|   226k|    {
29101|   226k|        return static_cast<std::size_t>(limit - cursor);
29102|   226k|    }
_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.26k|    {
34822|  2.26k|        if (fits_float32(n))
  ------------------
  |  Branch (34822:13): [True: 1.58k, False: 680]
  ------------------
34823|  1.58k|        {
34824|  1.58k|            oa.write_character(float32_marker);
34825|  1.58k|            write_number(static_cast<float>(n));
34826|  1.58k|        }
34827|    680|        else
34828|    680|        {
34829|    680|            oa.write_character(float64_marker);
34830|    680|            write_number(n);
34831|    680|        }
34832|  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_EEE12fits_float32Ed:
34754|  9.81k|    {
34755|  9.81k|        static_assert(std::is_same<number_float_t, float>::value || std::is_same<number_float_t, double>::value,
34756|  9.81k|                      "number_float_t must be float or double for the CBOR/MessagePack/BON8 writer");
34757|  9.81k|#ifdef __GNUC__
34758|  9.81k|        JSON_HEDLEY_DIAGNOSTIC_PUSH
34759|  9.81k|        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
34760|  9.81k|#endif
34761|       |#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 7)
34762|       |        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wduplicated-branches")
34763|       |#endif
34764|  9.81k|        return !std::isfinite(n) || ((static_cast<double>(n) >= static_cast<double>(std::numeric_limits<float>::lowest()) &&
  ------------------
  |  Branch (34764:16): [True: 0, False: 9.81k]
  |  Branch (34764:39): [True: 9.48k, False: 328]
  ------------------
34765|  9.48k|                                      static_cast<double>(n) <= static_cast<double>((std::numeric_limits<float>::max)()) &&
  ------------------
  |  Branch (34765:39): [True: 9.31k, False: 168]
  ------------------
34766|  9.31k|                                      static_cast<double>(static_cast<float>(n)) == static_cast<double>(n)));
  ------------------
  |  Branch (34766:39): [True: 7.96k, False: 1.34k]
  ------------------
34767|  9.81k|#ifdef __GNUC__
34768|  9.81k|        JSON_HEDLEY_DIAGNOSTIC_POP
34769|  9.81k|#endif
34770|  9.81k|    }
_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.58k|    {
34738|       |        // step 1: write the number to an array of length NumberType
34739|  1.58k|        std::array<CharType, sizeof(NumberType)> vec{};
34740|  1.58k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
34741|       |
34742|       |        // step 2: write the array to output (with possible reordering)
34743|  1.58k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (34743:13): [True: 1.58k, False: 0]
  ------------------
34744|  1.58k|        {
34745|       |            // reverse byte order prior to conversion if necessary
34746|  1.58k|            reverse_bytes(vec);
34747|  1.58k|        }
34748|       |
34749|  1.58k|        oa.write_characters(vec.data(), sizeof(NumberType));
34750|  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_EEE13reverse_bytesERNS4_5arrayIhLm4EEE:
34707|  7.96k|    {
34708|  7.96k|        byte_swap_buffer<std::uint32_t>(a);
34709|  7.96k|    }
_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|  7.96k|    {
34692|  7.96k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
34693|  7.96k|        UIntType v{};
34694|  7.96k|        std::memcpy(&v, a.data(), sizeof(v));
34695|  7.96k|        v = byteswap(v);
34696|  7.96k|        std::memcpy(a.data(), &v, sizeof(v));
34697|  7.96k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE16write_charactersEPKhm:
29015|   157k|    {
29016|   157k|        if (JSON_HEDLEY_UNLIKELY(space() < length))
  ------------------
  |  | 1697|   157k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1.03k, False: 156k]
  |  |  ------------------
  ------------------
29017|  1.03k|        {
29018|  1.03k|            if (length >= max_reserve_size)
  ------------------
  |  Branch (29018:17): [True: 68, False: 966]
  ------------------
29019|     68|            {
29020|     68|                append(s, length);
29021|     68|                return;
29022|     68|            }
29023|    966|            grow(length);
29024|    966|        }
29025|   157k|        if (length <= 32)
  ------------------
  |  Branch (29025:13): [True: 157k, False: 94]
  ------------------
29026|   157k|        {
29027|   157k|            copy_short(cursor, s, length, std::integral_constant<bool, sizeof(CharType) == 1>());
29028|   157k|            cursor += length;
29029|   157k|        }
29030|     94|        else
29031|     94|        {
29032|     94|            std::memcpy(cursor, s, length * sizeof(CharType));
29033|     94|            cursor += length;
29034|     94|        }
29035|   157k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE6appendEPKhm:
29136|     68|    {
29137|     68|        const std::size_t written = position();
29138|     68|        v->resize(written);
29139|     68|        if (v->capacity() - written < length)
  ------------------
  |  Branch (29139:13): [True: 68, False: 0]
  ------------------
29140|     68|        {
29141|       |            // grow geometrically, with room for the writes that follow, so
29142|       |            // that the next grow() need not reallocate right away
29143|     68|            v->reserve((std::max)(v->capacity() * 2, written + length + max_reserve_size));
29144|     68|        }
29145|     68|        v->insert(v->end(), s, s + length);
29146|     68|        cursor = v->data() + v->size();
29147|     68|        limit = cursor;
29148|     68|    }
_ZN8nlohmann16json_abi_v3_12_06detail10copy_shortIhEEvPT_PKS3_mNSt3__117integral_constantIbLb1EEE:
28898|   204k|{
28899|   204k|    JSON_ASSERT(length <= 32);
  ------------------
  |  | 2643|   204k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28899:5): [True: 204k, False: 0]
  ------------------
28900|   204k|    if (length >= 16)
  ------------------
  |  Branch (28900:9): [True: 2.20k, False: 201k]
  ------------------
28901|  2.20k|    {
28902|  2.20k|        std::array<char, 16> first; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28903|  2.20k|        std::array<char, 16> last; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28904|  2.20k|        std::memcpy(first.data(), src, 16);
28905|  2.20k|        std::memcpy(last.data(), src + (length - 16), 16);
28906|  2.20k|        std::memcpy(dst, first.data(), 16);
28907|  2.20k|        std::memcpy(dst + (length - 16), last.data(), 16);
28908|  2.20k|    }
28909|   201k|    else if (length >= 8)
  ------------------
  |  Branch (28909:14): [True: 3.56k, False: 198k]
  ------------------
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|   198k|    else if (length >= 4)
  ------------------
  |  Branch (28918:14): [True: 5.36k, False: 193k]
  ------------------
28919|  5.36k|    {
28920|  5.36k|        std::array<char, 4> first; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28921|  5.36k|        std::array<char, 4> last; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
28922|  5.36k|        std::memcpy(first.data(), src, 4);
28923|  5.36k|        std::memcpy(last.data(), src + (length - 4), 4);
28924|  5.36k|        std::memcpy(dst, first.data(), 4);
28925|  5.36k|        std::memcpy(dst + (length - 4), last.data(), 4);
28926|  5.36k|    }
28927|   193k|    else if (length != 0)
  ------------------
  |  Branch (28927:14): [True: 132k, False: 60.3k]
  ------------------
28928|   132k|    {
28929|       |        // 1 to 3: the first, the middle, and the last character
28930|   132k|        const CharType a = src[0];
28931|   132k|        const CharType b = src[length >> 1];
28932|   132k|        const CharType c = src[length - 1];
28933|   132k|        dst[0] = a;
28934|   132k|        dst[length >> 1] = b;
28935|   132k|        dst[length - 1] = c;
28936|   132k|    }
28937|   204k|}
_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|    680|    {
34738|       |        // step 1: write the number to an array of length NumberType
34739|    680|        std::array<CharType, sizeof(NumberType)> vec{};
34740|    680|        std::memcpy(vec.data(), &n, sizeof(NumberType));
34741|       |
34742|       |        // step 2: write the array to output (with possible reordering)
34743|    680|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (34743:13): [True: 680, False: 0]
  ------------------
34744|    680|        {
34745|       |            // reverse byte order prior to conversion if necessary
34746|    680|            reverse_bytes(vec);
34747|    680|        }
34748|       |
34749|    680|        oa.write_characters(vec.data(), sizeof(NumberType));
34750|    680|    }
_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|  1.84k|    {
34713|  1.84k|        byte_swap_buffer<std::uint64_t>(a);
34714|  1.84k|    }
_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|  1.84k|    {
34692|  1.84k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
34693|  1.84k|        UIntType v{};
34694|  1.84k|        std::memcpy(&v, a.data(), sizeof(v));
34695|  1.84k|        v = byteswap(v);
34696|  1.84k|        std::memcpy(a.data(), &v, sizeof(v));
34697|  1.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_cbor_stringERKSC_RKSG_:
32790|  46.8k|    {
32791|  46.8k|        if (JSON_HEDLEY_LIKELY(error_handler == error_handler_t::keep))
  ------------------
  |  | 1696|  46.8k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 46.8k, False: 0]
  |  |  ------------------
  ------------------
32792|  46.8k|        {
32793|       |            // the string is written as it is: head and characters in one reservation
32794|  46.8k|            if (JSON_HEDLEY_LIKELY(value.size() <= max_text_in_reservation))
  ------------------
  |  | 1696|  46.8k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 46.7k, False: 96]
  |  |  ------------------
  ------------------
32795|  46.7k|            {
32796|  46.7k|                write_cbor_string_reserved(value);
32797|  46.7k|                return;
32798|  46.7k|            }
32799|  46.8k|        }
32800|       |
32801|     96|        write_cbor_checked_string(value, context);
32802|     96|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE26write_cbor_string_reservedERKSC_:
32759|  46.7k|    {
32760|  46.7k|        CharType* const out = oa.reserve(value.size() + 2);
32761|  46.7k|        CharType* p = out;
32762|  46.7k|        if (value.size() <= 0x17)
  ------------------
  |  Branch (32762:13): [True: 46.3k, False: 434]
  ------------------
32763|  46.3k|        {
32764|  46.3k|            *p++ = to_char_type(static_cast<std::uint8_t>(0x60 + value.size()));
32765|  46.3k|        }
32766|    434|        else
32767|    434|        {
32768|    434|            *p++ = to_char_type(0x78);
32769|    434|            *p++ = to_char_type(static_cast<std::uint8_t>(value.size()));
32770|    434|        }
32771|  46.7k|        copy_characters(p, reinterpret_cast<const CharType*>(value.data()), value.size());
32772|  46.7k|        oa.commit(static_cast<std::size_t>(p - out) + value.size());
32773|  46.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE15copy_charactersEPhPKhm:
32745|  46.7k|    {
32746|  46.7k|        if (length <= 32)
  ------------------
  |  Branch (32746:13): [True: 46.5k, False: 252]
  ------------------
32747|  46.5k|        {
32748|  46.5k|            copy_short(dst, src, length, std::integral_constant<bool, sizeof(CharType) == 1>());
32749|  46.5k|        }
32750|    252|        else
32751|    252|        {
32752|    252|            std::memcpy(dst, src, length * sizeof(CharType));
32753|    252|        }
32754|  46.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE25write_cbor_checked_stringERKSC_RKSG_:
32809|     96|    {
32810|     96|        if (error_handler == error_handler_t::strict && value.size() <= max_text_in_reservation)
  ------------------
  |  Branch (32810:13): [True: 0, False: 96]
  |  Branch (32810:57): [True: 0, False: 0]
  ------------------
32811|      0|        {
32812|      0|            check_utf8(value, context);
32813|      0|            write_cbor_string_reserved(value);
32814|      0|            return;
32815|      0|        }
32816|       |
32817|     96|        string_t storage;
32818|     96|        const string_t& sanitized = sanitize_utf8_for_write(value, context, storage);
32819|       |
32820|       |        // step 1: write control byte and the string length
32821|     96|        write_cbor_head(0x60, sanitized.size());
32822|       |
32823|       |        // step 2: write the string
32824|     96|        write_bytes(sanitized.data(), sanitized.size());
32825|     96|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE23sanitize_utf8_for_writeERKSC_RKSG_RSC_:
34513|     96|    {
34514|     96|        switch (error_handler)
34515|     96|        {
34516|     96|            case error_handler_t::keep:
  ------------------
  |  Branch (34516:13): [True: 96, False: 0]
  ------------------
34517|     96|                return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
34518|       |
34519|      0|            case error_handler_t::strict:
  ------------------
  |  Branch (34519:13): [True: 0, False: 96]
  ------------------
34520|      0|                check_utf8(s, context);
34521|      0|                return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
34522|       |
34523|      0|            case error_handler_t::replace:
  ------------------
  |  Branch (34523:13): [True: 0, False: 96]
  ------------------
34524|      0|            case error_handler_t::ignore:
  ------------------
  |  Branch (34524:13): [True: 0, False: 96]
  ------------------
34525|      0|            default:
  ------------------
  |  Branch (34525:13): [True: 0, False: 96]
  ------------------
34526|      0|                if (is_valid_utf8(s))
  ------------------
  |  Branch (34526:21): [True: 0, False: 0]
  ------------------
34527|      0|                {
34528|      0|                    return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
34529|      0|                }
34530|      0|                storage = sanitize_utf8(s, error_handler);
34531|      0|                return storage;
34532|     96|        }
34533|     96|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE16write_cbor_arrayERKSG_m:
32343|   105k|    {
32344|   105k|        write_cbor_container_head(0x80, j.m_data.m_value.array->size());
32345|   105k|        if (!j.m_data.m_value.array->empty())
  ------------------
  |  Branch (32345:13): [True: 102k, False: 3.00k]
  ------------------
32346|   102k|        {
32347|   102k|            write_cbor_array_elements(j, depth, std::integral_constant<bool, integers_fit_64_bits()>());
32348|   102k|        }
32349|   105k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE25write_cbor_container_headEhm:
32274|   117k|    {
32275|   117k|        if (JSON_HEDLEY_LIKELY(size <= 0x17))
  ------------------
  |  | 1696|   117k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 115k, False: 1.27k]
  |  |  ------------------
  ------------------
32276|   115k|        {
32277|   115k|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + size)));
32278|   115k|            return;
32279|   115k|        }
32280|  1.27k|        write_cbor_head(major_type, size);
32281|  1.27k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE25write_cbor_array_elementsERKSG_mNS4_17integral_constantIbLb1EEE:
32353|   102k|    {
32354|   102k|        write_array_elements(j, [this](CharType * out, const BasicJsonType & el)
32355|   102k|        {
32356|   102k|            return encode_cbor_integer(out, el);
32357|   102k|        }, [this](CharType * out, const number_float_t n)
32358|   102k|        {
32359|   102k|            return encode_cbor_float(out, n);
32360|   102k|        }, [this, depth](const BasicJsonType & el)
32361|   102k|        {
32362|   102k|            write_cbor(el, depth + 1);
32363|   102k|        });
32364|   102k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20write_array_elementsIZNSJ_25write_cbor_array_elementsERKSG_mNS4_17integral_constantIbLb1EEEEUlPhSM_E_ZNSJ_25write_cbor_array_elementsESM_mSO_EUlSP_dE_ZNSJ_25write_cbor_array_elementsESM_mSO_EUlSM_E_EEvSM_T_T0_T1_:
32386|   102k|    {
32387|   102k|        constexpr std::size_t max_run = max_reserve_size / integer_encoding_space;
32388|   102k|        auto it = j.m_data.m_value.array->begin();
32389|   102k|        const auto end = j.m_data.m_value.array->end();
32390|   275k|        while (it != end)
  ------------------
  |  Branch (32390:16): [True: 172k, False: 102k]
  ------------------
32391|   172k|        {
32392|   172k|            if (!it->is_number())
  ------------------
  |  Branch (32392:17): [True: 162k, False: 9.90k]
  ------------------
32393|   162k|            {
32394|   162k|                write_value(*it);
32395|   162k|                ++it;
32396|   162k|            }
32397|  9.90k|            else if (!it->is_number_float())
  ------------------
  |  Branch (32397:22): [True: 7.94k, False: 1.96k]
  ------------------
32398|  7.94k|            {
32399|  7.94k|                CharType* const start = oa.reserve(max_run * integer_encoding_space);
32400|  7.94k|                CharType* out = start;
32401|  39.2k|                for (std::size_t n = 0; n < max_run && it != end && it->is_number_integer(); ++n, ++it)
  ------------------
  |  Branch (32401:41): [True: 38.8k, False: 412]
  |  Branch (32401:56): [True: 35.7k, False: 3.12k]
  |  Branch (32401:69): [True: 31.3k, False: 4.40k]
  ------------------
32402|  31.3k|                {
32403|  31.3k|                    out += encode_integer(out, *it);
32404|  31.3k|                }
32405|  7.94k|                oa.commit(static_cast<std::size_t>(out - start));
32406|  7.94k|            }
32407|  1.96k|            else
32408|  1.96k|            {
32409|  1.96k|                it = write_float_elements(it, end, encode_float);
32410|  1.96k|            }
32411|   172k|        }
32412|   102k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9is_numberEv:
42091|   172k|    {
42092|   172k|        return is_number_integer() || is_number_float();
  ------------------
  |  Branch (42092:16): [True: 7.94k, False: 164k]
  |  Branch (42092:39): [True: 1.96k, False: 162k]
  ------------------
42093|   172k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE25write_cbor_array_elementsERKSG_mNS4_17integral_constantIbLb1EEEENKUlSL_E_clESL_:
32361|   162k|        {
32362|   162k|            write_cbor(el, depth + 1);
32363|   162k|        });
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE15is_number_floatEv:
42115|   183k|    {
42116|   183k|        return m_data.m_type == value_t::number_float;
42117|   183k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE17is_number_integerEv:
42099|   207k|    {
42100|   207k|        return m_data.m_type == value_t::number_integer || m_data.m_type == value_t::number_unsigned;
  ------------------
  |  Branch (42100:16): [True: 13.9k, False: 194k]
  |  Branch (42100:60): [True: 25.3k, False: 168k]
  ------------------
42101|   207k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE25write_cbor_array_elementsERKSG_mNS4_17integral_constantIbLb1EEEENKUlPhSL_E_clESO_SL_:
32355|  31.3k|        {
32356|  31.3k|            return encode_cbor_integer(out, el);
32357|  31.3k|        }, [this](CharType * out, const number_float_t n)
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20write_float_elementsINS4_11__wrap_iterIPSG_EEZNSJ_25write_cbor_array_elementsERKSG_mNS4_17integral_constantIbLb1EEEEUlPhdE_EET_SU_SU_T0_:
32424|  1.96k|    {
32425|  1.96k|        constexpr std::size_t max_run = max_reserve_size / integer_encoding_space;
32426|  1.96k|        CharType* const start = oa.reserve(max_run * integer_encoding_space);
32427|  1.96k|        CharType* out = start;
32428|  10.5k|        for (std::size_t n = 0; n < max_run && it != end && it->is_number_float(); ++n, ++it)
  ------------------
  |  Branch (32428:33): [True: 10.4k, False: 72]
  |  Branch (32428:48): [True: 9.78k, False: 664]
  |  Branch (32428:61): [True: 8.55k, False: 1.23k]
  ------------------
32429|  8.55k|        {
32430|  8.55k|            out += encode_float(out, it->m_data.m_value.number_float);
32431|  8.55k|        }
32432|  1.96k|        oa.commit(static_cast<std::size_t>(out - start));
32433|  1.96k|        return it;
32434|  1.96k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE25write_cbor_array_elementsERKSG_mNS4_17integral_constantIbLb1EEEENKUlPhdE_clESO_d:
32358|  8.55k|        {
32359|  8.55k|            return encode_cbor_float(out, n);
32360|  8.55k|        }, [this, depth](const BasicJsonType & el)
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17encode_cbor_floatEPhd:
34794|  8.55k|    {
34795|  8.55k|        if (JSON_HEDLEY_UNLIKELY(!std::isfinite(n)))
  ------------------
  |  | 1697|  8.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1.00k, False: 7.54k]
  |  |  ------------------
  ------------------
34796|  1.00k|        {
34797|       |            // NaN is 0xf97e00, Infinity is 0xf97c00, -Infinity is 0xf9fc00
34798|  1.00k|            out[0] = to_char_type(0xF9);
34799|  1.00k|            if (std::isnan(n))
  ------------------
  |  Branch (34799:17): [True: 314, False: 688]
  ------------------
34800|    314|            {
34801|    314|                out[1] = to_char_type(0x7E);
34802|    314|            }
34803|    688|            else
34804|    688|            {
34805|    688|                out[1] = n > 0 ? to_char_type(0x7C) : to_char_type(0xFC);
  ------------------
  |  Branch (34805:26): [True: 44, False: 644]
  ------------------
34806|    688|            }
34807|  1.00k|            out[2] = to_char_type(0x00);
34808|  1.00k|            return 3;
34809|  1.00k|        }
34810|  7.54k|        return encode_compact_float(out, n, to_char_type(0xFA), to_char_type(0xFB));
34811|  8.55k|    }
_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|  7.54k|    {
34778|  7.54k|        if (fits_float32(n))
  ------------------
  |  Branch (34778:13): [True: 6.38k, False: 1.16k]
  ------------------
34779|  6.38k|        {
34780|  6.38k|            *out = float32_marker;
34781|  6.38k|            store_number(out + 1, static_cast<float>(n), false);
34782|  6.38k|            return 1 + sizeof(float);
34783|  6.38k|        }
34784|  1.16k|        *out = float64_marker;
34785|  1.16k|        store_number(out + 1, n, false);
34786|  1.16k|        return 1 + sizeof(number_float_t);
34787|  7.54k|    }
_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|  6.38k|    {
33312|  6.38k|        std::array<CharType, sizeof(NumberType)> vec{};
33313|  6.38k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
33314|  6.38k|        if (is_little_endian != output_little_endian)
  ------------------
  |  Branch (33314:13): [True: 6.38k, False: 0]
  ------------------
33315|  6.38k|        {
33316|  6.38k|            reverse_bytes(vec);
33317|  6.38k|        }
33318|  6.38k|        std::memcpy(out, vec.data(), sizeof(NumberType));
33319|  6.38k|        return out + sizeof(NumberType);
33320|  6.38k|    }
_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.16k|    {
33312|  1.16k|        std::array<CharType, sizeof(NumberType)> vec{};
33313|  1.16k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
33314|  1.16k|        if (is_little_endian != output_little_endian)
  ------------------
  |  Branch (33314:13): [True: 1.16k, False: 0]
  ------------------
33315|  1.16k|        {
33316|  1.16k|            reverse_bytes(vec);
33317|  1.16k|        }
33318|  1.16k|        std::memcpy(out, vec.data(), sizeof(NumberType));
33319|  1.16k|        return out + sizeof(NumberType);
33320|  1.16k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIhEEvT_b:
34737|   115k|    {
34738|       |        // step 1: write the number to an array of length NumberType
34739|   115k|        std::array<CharType, sizeof(NumberType)> vec{};
34740|   115k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
34741|       |
34742|       |        // step 2: write the array to output (with possible reordering)
34743|   115k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (34743:13): [True: 115k, False: 0]
  ------------------
34744|   115k|        {
34745|       |            // reverse byte order prior to conversion if necessary
34746|   115k|            reverse_bytes(vec);
34747|   115k|        }
34748|       |
34749|   115k|        oa.write_characters(vec.data(), sizeof(NumberType));
34750|   115k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13reverse_bytesILm1EEEvRNS4_5arrayIhXT_EEE:
34718|   115k|    {
34719|   115k|        std::reverse(a.begin(), a.end());
34720|   115k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberItEEvT_b:
34737|    122|    {
34738|       |        // step 1: write the number to an array of length NumberType
34739|    122|        std::array<CharType, sizeof(NumberType)> vec{};
34740|    122|        std::memcpy(vec.data(), &n, sizeof(NumberType));
34741|       |
34742|       |        // step 2: write the array to output (with possible reordering)
34743|    122|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (34743:13): [True: 122, False: 0]
  ------------------
34744|    122|        {
34745|       |            // reverse byte order prior to conversion if necessary
34746|    122|            reverse_bytes(vec);
34747|    122|        }
34748|       |
34749|    122|        oa.write_characters(vec.data(), sizeof(NumberType));
34750|    122|    }
_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_5arrayIhLm2EEE:
34702|    122|    {
34703|    122|        byte_swap_buffer<std::uint16_t>(a);
34704|    122|    }
_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_bufferItLm2EEEvRNS4_5arrayIhXT0_EEE:
34691|    122|    {
34692|    122|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
34693|    122|        UIntType v{};
34694|    122|        std::memcpy(&v, a.data(), sizeof(v));
34695|    122|        v = byteswap(v);
34696|    122|        std::memcpy(a.data(), &v, sizeof(v));
34697|    122|    }
_ZN8nlohmann16json_abi_v3_12_06detail8byteswapEt:
 9068|    122|{
 9069|    122|#if defined(__GNUC__) || defined(__clang__)
 9070|    122|    return __builtin_bswap16(x);
 9071|       |#elif defined(_MSC_VER)
 9072|       |    return _byteswap_ushort(x);
 9073|       |#elif defined(__cpp_lib_byteswap)
 9074|       |    return std::byteswap(x);
 9075|       |#else
 9076|       |    return static_cast<std::uint16_t>((x >> 8u) | (x << 8u));
 9077|       |#endif
 9078|    122|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE15write_cbor_headEhm:
32151|   115k|    {
32152|   115k|        if (argument <= 0x17)
  ------------------
  |  Branch (32152:13): [True: 114k, False: 1.62k]
  ------------------
32153|   114k|        {
32154|   114k|            write_number(static_cast<std::uint8_t>(major_type + argument));
32155|   114k|        }
32156|  1.62k|        else if (argument <= (std::numeric_limits<std::uint8_t>::max)())
  ------------------
  |  Branch (32156:18): [True: 1.50k, False: 122]
  ------------------
32157|  1.50k|        {
32158|  1.50k|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + 0x18)));
32159|  1.50k|            write_number(static_cast<std::uint8_t>(argument));
32160|  1.50k|        }
32161|    122|        else if (argument <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (32161:18): [True: 122, False: 0]
  ------------------
32162|    122|        {
32163|    122|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + 0x19)));
32164|    122|            write_number(static_cast<std::uint16_t>(argument));
32165|    122|        }
32166|      0|        else if (argument <= (std::numeric_limits<std::uint32_t>::max)())
  ------------------
  |  Branch (32166:18): [True: 0, False: 0]
  ------------------
32167|      0|        {
32168|      0|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + 0x1A)));
32169|      0|            write_number(static_cast<std::uint32_t>(argument));
32170|      0|        }
32171|      0|        else
32172|      0|        {
32173|      0|            oa.write_character(to_char_type(static_cast<std::uint8_t>(major_type + 0x1B)));
32174|      0|            write_number(argument);
32175|      0|        }
32176|   115k|    }
_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|  39.7k|    {
30382|  39.7k|        oa.write_characters(static_cast<const CharType*>(data), size);
30383|  39.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_cbor_objectERKSG_m:
32291|  11.2k|    {
32292|       |        // step 1: write control byte and the object size
32293|  11.2k|        write_cbor_container_head(0xA0, j.m_data.m_value.object->size());
32294|       |
32295|  11.2k|        for (const auto& el : *j.m_data.m_value.object)
  ------------------
  |  Branch (32295:29): [True: 16.2k, False: 11.2k]
  ------------------
32296|  16.2k|        {
32297|       |            // el.first is written directly (not via a temporary
32298|       |            // basic_json), with the object as diagnostics context
32299|  16.2k|            write_cbor_key(el.first, j);
32300|       |
32301|  16.2k|            const BasicJsonType& value = el.second;
32302|  16.2k|            switch (value.type())
32303|  16.2k|            {
32304|    762|                case value_t::null:
  ------------------
  |  Branch (32304:17): [True: 762, False: 15.4k]
  ------------------
32305|    762|                    oa.write_character(to_char_type(0xF6));
32306|    762|                    break;
32307|       |
32308|    464|                case value_t::boolean:
  ------------------
  |  Branch (32308:17): [True: 464, False: 15.7k]
  ------------------
32309|    464|                    oa.write_character(value.m_data.m_value.boolean ? to_char_type(0xF5) : to_char_type(0xF4));
  ------------------
  |  Branch (32309:40): [True: 52, False: 412]
  ------------------
32310|    464|                    break;
32311|       |
32312|  3.58k|                case value_t::number_integer:
  ------------------
  |  Branch (32312:17): [True: 3.58k, False: 12.6k]
  ------------------
32313|  5.83k|                case value_t::number_unsigned:
  ------------------
  |  Branch (32313:17): [True: 2.24k, False: 13.9k]
  ------------------
32314|  5.83k|                    write_cbor_integer(value, std::integral_constant<bool, integers_fit_64_bits()>());
32315|  5.83k|                    break;
32316|       |
32317|  2.00k|                case value_t::string:
  ------------------
  |  Branch (32317:17): [True: 2.00k, False: 14.1k]
  ------------------
32318|  2.00k|                    write_cbor_string(*value.m_data.m_value.string, value);
32319|  2.00k|                    break;
32320|       |
32321|  3.96k|                case value_t::object:
  ------------------
  |  Branch (32321:17): [True: 3.96k, False: 12.2k]
  ------------------
32322|  4.75k|                case value_t::array:
  ------------------
  |  Branch (32322:17): [True: 792, False: 15.4k]
  ------------------
32323|  5.98k|                case value_t::binary:
  ------------------
  |  Branch (32323:17): [True: 1.22k, False: 14.9k]
  ------------------
32324|  7.13k|                case value_t::number_float:
  ------------------
  |  Branch (32324:17): [True: 1.15k, False: 15.0k]
  ------------------
32325|  7.13k|                case value_t::discarded:
  ------------------
  |  Branch (32325:17): [True: 0, False: 16.2k]
  ------------------
32326|  7.13k|                default:
  ------------------
  |  Branch (32326:17): [True: 0, False: 16.2k]
  ------------------
32327|  7.13k|                    write_cbor(value, depth + 1);
32328|  7.13k|                    break;
32329|  16.2k|            }
32330|  16.2k|        }
32331|  11.2k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborIPKhSH_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SJ_SK_bbNS0_6detail18cbor_tag_handler_tENSN_15error_handler_tE:
45865|  8.58k|    {
45866|  8.58k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
45867|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborIRNS2_19basic_istringstreamIcS7_S9_EEEESE_OT_bbNS0_6detail18cbor_tag_handler_tENSL_15error_handler_tE:
45851|  8.58k|    {
45852|  8.58k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
45853|  8.58k|    }
_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|  8.58k|    {
45630|  8.58k|        basic_json result;
45631|  8.58k|        detail::json_sax_dom_binary_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
45632|  8.58k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
45633|  8.58k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (45633:13): [True: 0, False: 8.58k]
  ------------------
45634|      0|        {
45635|      0|            result = value_t::discarded;
45636|      0|        }
45637|  8.58k|        return result;
45638|  8.58k|    }
_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|  8.58k|        : json_sax_dom_error_state(allow_exceptions_), root(r), m_lexer_ref(lexer_)
17427|  8.58k|    {}
_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|  8.58k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
18478|  8.58k|    {
18479|  8.58k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
18480|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2EOS2_:
 9663|  8.58k|        : 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|  8.58k|        , token_carry(std::move(rhs.token_carry))
 9669|  8.58k|        , token_segment(rhs.token_segment)
 9670|  8.58k|        , current_in_get_area(rhs.current_in_get_area)
 9671|  8.58k|        , tracking_token(rhs.tracking_token)
 9672|  8.58k|        , no_get_area(rhs.no_get_area)
 9673|       |#endif
 9674|  8.58k|    {
 9675|  8.58k|        rhs.is = nullptr;
 9676|  8.58k|        rhs.sb = nullptr;
 9677|       |#if JSON_PRECISE_STREAM_POSITION
 9678|       |        rhs.lookahead = false;
 9679|       |#endif
 9680|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18token_carry_bufferC2EOS2_:
 9309|  17.1k|        : m_data(std::move(rhs.m_data)), m_end(rhs.m_end), m_capacity_end(rhs.m_capacity_end)
 9310|  17.1k|    {
 9311|  17.1k|        rhs.m_end = rhs.m_capacity_end = nullptr;
 9312|  17.1k|    }
_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|  8.58k|    {
18503|  8.58k|        sax = sax_;
18504|  8.58k|        container_stack.clear();
18505|  8.58k|        bon8_pushback_size = 0;
18506|  8.58k|        bool result = false;
18507|       |
18508|  8.58k|        switch (input_format)
18509|  8.58k|        {
18510|      0|            case input_format_t::bson:
  ------------------
  |  Branch (18510:13): [True: 0, False: 8.58k]
  ------------------
18511|      0|                result = parse_bson_internal();
18512|      0|                break;
18513|       |
18514|  8.58k|            case input_format_t::cbor:
  ------------------
  |  Branch (18514:13): [True: 8.58k, False: 0]
  ------------------
18515|  8.58k|                result = parse_cbor_internal(tag_handler);
18516|  8.58k|                break;
18517|       |
18518|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (18518:13): [True: 0, False: 8.58k]
  ------------------
18519|      0|                result = parse_msgpack_internal();
18520|      0|                break;
18521|       |
18522|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (18522:13): [True: 0, False: 8.58k]
  ------------------
18523|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (18523:13): [True: 0, False: 8.58k]
  ------------------
18524|      0|                result = parse_ubjson_internal();
18525|      0|                break;
18526|       |
18527|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (18527:13): [True: 0, False: 8.58k]
  ------------------
18528|      0|                result = parse_bon8_internal();
18529|      0|                break;
18530|       |
18531|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (18531:13): [True: 0, False: 8.58k]
  ------------------
18532|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (18532:13): [True: 0, False: 8.58k]
  ------------------
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|  8.58k|        }
18535|       |
18536|       |        // strict mode: next byte must be EOF
18537|  4.38k|        if (result && strict)
  ------------------
  |  Branch (18537:13): [True: 4.38k, False: 0]
  |  Branch (18537:23): [True: 4.38k, False: 0]
  ------------------
18538|  4.38k|        {
18539|  4.38k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (18539:17): [True: 0, False: 4.38k]
  |  Branch (18539:59): [True: 0, False: 4.38k]
  ------------------
18540|      0|            {
18541|      0|                get_ignore_noop();
18542|      0|            }
18543|  4.38k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (18543:22): [True: 0, False: 4.38k]
  ------------------
18544|      0|            {
18545|       |                // a string that ends a container hands back the byte after it
18546|      0|                get_bon8();
18547|      0|            }
18548|  4.38k|            else
18549|  4.38k|            {
18550|  4.38k|                get();
18551|  4.38k|            }
18552|       |
18553|  4.38k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  4.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 116, False: 4.27k]
  |  |  ------------------
  ------------------
18554|    116|            {
18555|    116|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
18556|    116|            }
18557|  4.38k|        }
18558|       |
18559|  4.27k|        return result;
18560|  4.38k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter16streambuf_access7get_ptrEPNSt3__115basic_streambufIcNS4_11char_traitsIcEEEE:
 9935|   413k|        {
 9936|   413k|            return (s->*(&streambuf_access::gptr))();
 9937|   413k|        }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter16streambuf_access7get_endEPNSt3__115basic_streambufIcNS4_11char_traitsIcEEEE:
 9939|   379k|        {
 9940|   379k|            return (s->*(&streambuf_access::egptr))();
 9941|   379k|        }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter16streambuf_access4bumpEPNSt3__115basic_streambufIcNS4_11char_traitsIcEEEEi:
 9947|   334k|        {
 9948|   334k|            (s->*(&streambuf_access::gbump))(n);
 9949|   334k|        }
_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|  3.71k|    {
23344|  3.71k|        return sax->parse_error(chars_read, "<end of file>",
23345|  3.71k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
23346|  3.71k|    }
_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|  4.02k|    {
23455|  4.02k|        std::string error_msg = "syntax error while parsing ";
23456|  4.02k|        error_msg += input_format_name(input_format);
23457|       |
23458|  4.02k|        return concat(error_msg, ' ', context, ": ", detail);
23459|  4.02k|    }
_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|   137k|    {
18619|   137k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1697|   275k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 137k]
  |  |  |  Branch (1697:94): [True: 24.5k, False: 113k]
  |  |  ------------------
  ------------------
18620|      0|        {
18621|      0|            return false;
18622|      0|        }
18623|       |
18624|   137k|        container_stack.emplace_back(len, is_object, type_marker);
18625|   137k|        return true;
18626|   137k|    }
_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|  24.5k|    {
17484|  24.5k|        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|  24.5k|        return check_container_size(*this, len, "object", ref_stack.back());
17492|  24.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_valueINS1_7value_tEEEPSG_OT_:
17566|   137k|    {
17567|   137k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 5.94k, False: 131k]
  ------------------
17568|  5.94k|        {
17569|  5.94k|            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|  5.94k|            return &root;
17576|  5.94k|        }
17577|       |
17578|   131k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   131k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 115k, False: 16.6k]
  |  Branch (17578:9): [True: 16.6k, False: 0]
  |  Branch (17578:9): [True: 131k, False: 0]
  ------------------
17579|       |
17580|   131k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 115k, False: 16.6k]
  ------------------
17581|   115k|        {
17582|   115k|            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|   115k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   115k|        }
17590|       |
17591|  16.6k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  16.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 16.6k, False: 0]
  ------------------
17592|  16.6k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  16.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 16.6k, False: 0]
  ------------------
17593|  16.6k|        *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|  16.6k|        return object_element;
17600|  16.6k|    }
_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|   137k|{
16180|   137k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1697|   267k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 281, False: 137k]
  |  |  |  Branch (1697:94): [True: 129k, False: 8.04k]
  |  |  |  Branch (1697:94): [True: 281, False: 129k]
  |  |  ------------------
  ------------------
16181|    281|    {
16182|    281|        return container_too_large_error(sax, len, kind, ref);
16183|    281|    }
16184|   137k|    return true;
16185|   137k|}
_ZN8nlohmann16json_abi_v3_12_06detail25container_too_large_errorINS1_26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_20input_stream_adapterEEESH_EEbRT_mPKcPT0_:
16173|    281|{
16174|    281|    return sax.parse_error(0, "", out_of_range::create(exception_id::container_too_large, concat("excessive ", kind, " size: ", std::to_string(len)), ref));
16175|    281|}
_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|   113k|    {
17521|   113k|        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|   113k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1697|   113k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 113k]
  |  |  ------------------
  ------------------
17529|      0|        {
17530|      0|            return false;
17531|      0|        }
17532|       |
17533|   113k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (17533:13): [True: 106k, False: 6.67k]
  ------------------
17534|   106k|        {
17535|   106k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
17536|   106k|        }
17537|       |
17538|   113k|        return true;
17539|   113k|    }
_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|   137k|            : 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|   102k|    {
18651|   102k|        const bool is_object = container_stack.back().is_object;
18652|   102k|        container_stack.pop_back();
18653|   102k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (18653:16): [True: 16.4k, False: 85.7k]
  ------------------
18654|   102k|    }
_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|  16.4k|    {
17507|  16.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  16.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17507:9): [True: 16.4k, False: 0]
  ------------------
17508|  16.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  16.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17508:9): [True: 16.4k, False: 0]
  ------------------
17509|       |
17510|       |#if JSON_DIAGNOSTIC_POSITIONS
17511|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17512|       |#endif
17513|       |
17514|  16.4k|        ref_stack.back()->set_parents();
17515|  16.4k|        ref_stack.pop_back();
17516|  16.4k|        return true;
17517|  16.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_adapterEE9end_arrayEv:
17542|  85.7k|    {
17543|  85.7k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  85.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17543:9): [True: 85.7k, False: 0]
  ------------------
17544|  85.7k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2643|  85.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17544:9): [True: 85.7k, 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.7k|        ref_stack.back()->set_parents();
17551|  85.7k|        ref_stack.pop_back();
17552|  85.7k|        return true;
17553|  85.7k|    }
_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|  99.2k|    {
23327|  99.2k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  99.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 3.33k, False: 95.9k]
  |  |  ------------------
  ------------------
23328|  3.33k|        {
23329|  3.33k|            return report_eof(context);
23330|  3.33k|        }
23331|  95.9k|        return true;
23332|  99.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail20input_stream_adapter14bulk_remainingEv:
 9822|  61.2k|    {
 9823|  61.2k|        if (!current_in_get_area)
  ------------------
  |  Branch (9823:13): [True: 0, False: 61.2k]
  ------------------
 9824|      0|        {
 9825|      0|            return 0;
 9826|      0|        }
 9827|  61.2k|        return static_cast<std::size_t>(streambuf_access::get_end(sb) - current_end());
 9828|  61.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail20input_stream_adapter11current_endEv:
 9960|  95.1k|    {
 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|  95.1k|        return streambuf_access::get_ptr(sb);
 9967|  95.1k|#endif
 9968|  95.1k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail20input_stream_adapter9bulk_dataEv:
 9816|  33.9k|    {
 9817|  33.9k|        return current_end();
 9818|  33.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter9bulk_skipEm:
 9833|  23.9k|    {
 9834|  23.9k|        JSON_ASSERT(n <= bulk_remaining());
  ------------------
  |  | 2643|  23.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (9834:9): [True: 23.9k, False: 0]
  ------------------
 9835|       |        // gbump() takes an int, but a get area (e.g., of a std::stringbuf) can
 9836|       |        // be larger
 9837|  23.9k|        constexpr auto max_bump = static_cast<std::size_t>((std::numeric_limits<int>::max)());
 9838|  23.9k|        for (; n > max_bump; n -= max_bump)
  ------------------
  |  Branch (9838:16): [True: 0, False: 23.9k]
  ------------------
 9839|      0|        {
 9840|      0|            streambuf_access::bump(sb, static_cast<int>(max_bump));
 9841|      0|        }
 9842|  23.9k|        streambuf_access::bump(sb, static_cast<int>(n));
 9843|  23.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_EEE17check_string_utf8ERSC_PKc:
23163|  50.3k|    {
23164|  50.3k|        return error_handler == error_handler_t::keep || check_string_utf8_handler(result, context);
  ------------------
  |  Branch (23164:16): [True: 50.3k, False: 0]
  |  Branch (23164:58): [True: 0, False: 0]
  ------------------
23165|  50.3k|    }
_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|  34.7k|    {
17496|  34.7k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  34.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17496:9): [True: 34.7k, False: 0]
  ------------------
17497|  34.7k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  34.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17497:9): [True: 34.7k, 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|  34.7k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](std::move(val)));
17502|  34.7k|        return true;
17503|  34.7k|    }
_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|    918|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|    918|        auto new_chars_read = ia.get_elements(&dest);
22859|    918|        chars_read += new_chars_read;
22860|    918|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|    918|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 19, False: 899]
  |  |  ------------------
  ------------------
22861|     19|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     19|            ++chars_read;
22864|     19|            static_cast<void>(report_eof(context));
22865|     19|            return false;
22866|     19|        }
22867|    899|        return true;
22868|    918|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIdEEmPT_m:
 9778|    918|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|    918|#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|    918|        const char* const first = streambuf_access::get_ptr(sb);
 9786|    918|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|    918|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  1.81k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 899, False: 19]
  |  |  |  Branch (1696:94): [True: 899, False: 19]
  |  |  |  Branch (1696:94): [True: 899, False: 0]
  |  |  ------------------
  ------------------
 9788|    899|        {
 9789|    899|            std::memcpy(dest, first, count * sizeof(T));
 9790|    899|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|    899|            return count * sizeof(T);
 9792|    899|        }
 9793|     19|#endif
 9794|     19|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|     19|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|     19|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 19, False: 0]
  |  |  ------------------
  ------------------
 9796|     19|        {
 9797|     19|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|     19|        }
 9799|     19|        return res;
 9800|    918|    }
_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.04k|    {
22888|  1.04k|        static_assert(sizeof(double) == sizeof(std::uint64_t), "double must have 64 bits");
22889|  1.04k|        std::uint64_t bits{};
22890|  1.04k|        std::memcpy(&bits, &number, sizeof(bits));
22891|  1.04k|        bits = byteswap(bits);
22892|  1.04k|        std::memcpy(&number, &bits, sizeof(bits));
22893|  1.04k|    }
_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.04k|    {
23035|  1.04k|        const auto result = static_cast<number_float_t>(number);
23036|  1.04k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  2.08k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.04k]
  |  |  |  Branch (1697:94): [True: 1.04k, False: 3]
  |  |  |  Branch (1697:94): [True: 0, False: 1.04k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  1.04k|        return sax->number_float(result, no_source);
23041|  1.04k|    }
_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|    618|    {
23444|    618|        return hex_byte(static_cast<std::uint8_t>(current));
23445|    618|    }
_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|  8.02k|    {
17462|  8.02k|        handle_value(val);
17463|  8.02k|        return true;
17464|  8.02k|    }
_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|  8.02k|    {
17567|  8.02k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 587, False: 7.44k]
  ------------------
17568|    587|        {
17569|    587|            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|    587|            return &root;
17576|    587|        }
17577|       |
17578|  7.44k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  7.44k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 6.69k, False: 751]
  |  Branch (17578:9): [True: 751, False: 0]
  |  Branch (17578:9): [True: 7.44k, False: 0]
  ------------------
17579|       |
17580|  7.44k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 6.69k, False: 751]
  ------------------
17581|  6.69k|        {
17582|  6.69k|            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|  6.69k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  6.69k|        }
17590|       |
17591|    751|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|    751|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 751, False: 0]
  ------------------
17592|    751|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|    751|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 751, False: 0]
  ------------------
17593|    751|        *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|    751|        return object_element;
17600|    751|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIcEEmPT_m:
 9778|    588|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|    588|#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|    588|        const char* const first = streambuf_access::get_ptr(sb);
 9786|    588|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|    588|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|    588|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 0, False: 588]
  |  |  |  Branch (1696:94): [True: 0, False: 588]
  |  |  |  Branch (1696:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
 9788|      0|        {
 9789|      0|            std::memcpy(dest, first, count * sizeof(T));
 9790|      0|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|      0|            return count * sizeof(T);
 9792|      0|        }
 9793|    588|#endif
 9794|    588|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|    588|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|    588|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 588, False: 0]
  |  |  ------------------
  ------------------
 9796|    588|        {
 9797|    588|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|    588|        }
 9799|    588|        return res;
 9800|    588|    }
_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|  16.2k|    {
17468|       |        // json_sax documents that the passed value may be moved from,
17469|       |        // so hand the buffer over instead of copying it
17470|  16.2k|        handle_value(std::move(val));
17471|  16.2k|        return true;
17472|  16.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_valueISC_EEPSG_OT_:
17566|  16.2k|    {
17567|  16.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 460, False: 15.7k]
  ------------------
17568|    460|        {
17569|    460|            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|    460|            return &root;
17576|    460|        }
17577|       |
17578|  15.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  15.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 11.5k, False: 4.25k]
  |  Branch (17578:9): [True: 4.25k, False: 0]
  |  Branch (17578:9): [True: 15.7k, False: 0]
  ------------------
17579|       |
17580|  15.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 11.5k, False: 4.25k]
  ------------------
17581|  11.5k|        {
17582|  11.5k|            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|  11.5k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  11.5k|        }
17590|       |
17591|  4.25k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.25k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.25k, False: 0]
  ------------------
17592|  4.25k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.25k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.25k, False: 0]
  ------------------
17593|  4.25k|        *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.25k|        return object_element;
17600|  4.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIhEEmPT_m:
 9778|  9.86k|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|  9.86k|#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|  9.86k|        const char* const first = streambuf_access::get_ptr(sb);
 9786|  9.86k|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|  9.86k|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  19.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 9.31k, False: 541]
  |  |  |  Branch (1696:94): [True: 9.31k, False: 541]
  |  |  |  Branch (1696:94): [True: 9.31k, False: 0]
  |  |  ------------------
  ------------------
 9788|  9.31k|        {
 9789|  9.31k|            std::memcpy(dest, first, count * sizeof(T));
 9790|  9.31k|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|  9.31k|            return count * sizeof(T);
 9792|  9.31k|        }
 9793|    541|#endif
 9794|    541|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|    541|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|    541|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 541, False: 0]
  |  |  ------------------
  ------------------
 9796|    541|        {
 9797|    541|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|    541|        }
 9799|    541|        return res;
 9800|  9.86k|    }
_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_adapterEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
17475|  27.2k|    {
17476|       |        // json_sax documents that the passed value may be moved from,
17477|       |        // so hand the buffer over instead of copying it
17478|  27.2k|        handle_value(std::move(val));
17479|  27.2k|        return true;
17480|  27.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_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
17566|  27.2k|    {
17567|  27.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 107, False: 27.1k]
  ------------------
17568|    107|        {
17569|    107|            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|    107|            return &root;
17576|    107|        }
17577|       |
17578|  27.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  27.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 24.3k, False: 2.71k]
  |  Branch (17578:9): [True: 2.71k, False: 0]
  |  Branch (17578:9): [True: 27.1k, False: 0]
  ------------------
17579|       |
17580|  27.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 24.3k, False: 2.71k]
  ------------------
17581|  24.3k|        {
17582|  24.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|  24.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  24.3k|        }
17590|       |
17591|  2.71k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 2.71k, False: 0]
  ------------------
17592|  2.71k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 2.71k, False: 0]
  ------------------
17593|  2.71k|        *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|  2.71k|        return object_element;
17600|  2.71k|    }
_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_numberIhLb0EEEbRT_:
22948|  4.51k|    {
22949|       |        // read in the original format
22950|       |
22951|  4.51k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  4.51k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 4.51k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  4.51k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 4.45k, False: 55]
  |  Branch (22955:34): [Folded, False: 4.45k]
  |  Branch (22955:57): [True: 0, False: 4.45k]
  ------------------
22956|  4.45k|        {
22957|  4.45k|            byte_swap(result);
22958|  4.45k|        }
22959|  4.51k|        return true;
22960|  4.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_EEE6get_toIhEEbRT_PKc:
22855|  4.51k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  4.51k|        auto new_chars_read = ia.get_elements(&dest);
22859|  4.51k|        chars_read += new_chars_read;
22860|  4.51k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  4.51k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 55, False: 4.45k]
  |  |  ------------------
  ------------------
22861|     55|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     55|            ++chars_read;
22864|     55|            static_cast<void>(report_eof(context));
22865|     55|            return false;
22866|     55|        }
22867|  4.45k|        return true;
22868|  4.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_EEE9byte_swapIhEEvRT_:
22907|  4.45k|    {
22908|  4.45k|        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|  4.45k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  4.45k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 0, False: 4.45k]
  ------------------
22924|      0|            {
22925|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|      0|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.45k|    }
_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|  4.57k|    {
17444|  4.57k|        handle_value(val);
17445|  4.57k|        return true;
17446|  4.57k|    }
_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|  4.57k|    {
17567|  4.57k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3, False: 4.57k]
  ------------------
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|  4.57k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 3.65k, False: 924]
  |  Branch (17578:9): [True: 924, False: 0]
  |  Branch (17578:9): [True: 4.57k, False: 0]
  ------------------
17579|       |
17580|  4.57k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 3.65k, False: 924]
  ------------------
17581|  3.65k|        {
17582|  3.65k|            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|  3.65k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  3.65k|        }
17590|       |
17591|    924|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|    924|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 924, False: 0]
  ------------------
17592|    924|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|    924|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 924, False: 0]
  ------------------
17593|    924|        *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|    924|        return object_element;
17600|    924|    }
_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|  3.58k|    {
17438|  3.58k|        handle_value(nullptr);
17439|  3.58k|        return true;
17440|  3.58k|    }
_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|  3.58k|    {
17567|  3.58k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 2, False: 3.58k]
  ------------------
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|  3.58k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.58k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 2.52k, False: 1.06k]
  |  Branch (17578:9): [True: 1.06k, False: 0]
  |  Branch (17578:9): [True: 3.58k, False: 0]
  ------------------
17579|       |
17580|  3.58k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 2.52k, False: 1.06k]
  ------------------
17581|  2.52k|        {
17582|  2.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|  2.52k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  2.52k|        }
17590|       |
17591|  1.06k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.06k, False: 0]
  ------------------
17592|  1.06k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.06k, False: 0]
  ------------------
17593|  1.06k|        *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.06k|        return object_element;
17600|  1.06k|    }
_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|  19.0k|    {
17450|  19.0k|        handle_value(val);
17451|  19.0k|        return true;
17452|  19.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|  19.0k|    {
17567|  19.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 299, False: 18.7k]
  ------------------
17568|    299|        {
17569|    299|            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|    299|            return &root;
17576|    299|        }
17577|       |
17578|  18.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  18.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 13.7k, False: 5.06k]
  |  Branch (17578:9): [True: 5.06k, False: 0]
  |  Branch (17578:9): [True: 18.7k, False: 0]
  ------------------
17579|       |
17580|  18.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 13.7k, False: 5.06k]
  ------------------
17581|  13.7k|        {
17582|  13.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|  13.7k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  13.7k|        }
17590|       |
17591|  5.06k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  5.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 5.06k, False: 0]
  ------------------
17592|  5.06k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  5.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 5.06k, False: 0]
  ------------------
17593|  5.06k|        *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|  5.06k|        return object_element;
17600|  5.06k|    }
_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|  23.4k|    {
17456|  23.4k|        handle_value(val);
17457|  23.4k|        return true;
17458|  23.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_valueIRmEEPSG_OT_:
17566|  23.4k|    {
17567|  23.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 255, False: 23.2k]
  ------------------
17568|    255|        {
17569|    255|            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|    255|            return &root;
17576|    255|        }
17577|       |
17578|  23.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 20.2k, False: 3.00k]
  |  Branch (17578:9): [True: 3.00k, False: 0]
  |  Branch (17578:9): [True: 23.2k, False: 0]
  ------------------
17579|       |
17580|  23.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 20.2k, False: 3.00k]
  ------------------
17581|  20.2k|        {
17582|  20.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|  20.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  20.2k|        }
17590|       |
17591|  3.00k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.00k, False: 0]
  ------------------
17592|  3.00k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.00k, False: 0]
  ------------------
17593|  3.00k|        *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.00k|        return object_element;
17600|  3.00k|    }
_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_floatIeEEbT_:
23034|    416|    {
23035|    416|        const auto result = static_cast<number_float_t>(number);
23036|    416|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|    832|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 416]
  |  |  |  Branch (1697:94): [True: 416, False: 0]
  |  |  |  Branch (1697:94): [True: 0, False: 416]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|    416|        return sax->number_float(result, no_source);
23041|    416|    }
_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_toImEEbRT_PKc:
22855|  3.52k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  3.52k|        auto new_chars_read = ia.get_elements(&dest);
22859|  3.52k|        chars_read += new_chars_read;
22860|  3.52k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  3.52k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 116, False: 3.40k]
  |  |  ------------------
  ------------------
22861|    116|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|    116|            ++chars_read;
22864|    116|            static_cast<void>(report_eof(context));
22865|    116|            return false;
22866|    116|        }
22867|  3.40k|        return true;
22868|  3.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsImEEmPT_m:
 9778|  3.52k|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|  3.52k|#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|  3.52k|        const char* const first = streambuf_access::get_ptr(sb);
 9786|  3.52k|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|  3.52k|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  6.93k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.40k, False: 116]
  |  |  |  Branch (1696:94): [True: 3.40k, False: 116]
  |  |  |  Branch (1696:94): [True: 3.40k, False: 0]
  |  |  ------------------
  ------------------
 9788|  3.40k|        {
 9789|  3.40k|            std::memcpy(dest, first, count * sizeof(T));
 9790|  3.40k|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|  3.40k|            return count * sizeof(T);
 9792|  3.40k|        }
 9793|    116|#endif
 9794|    116|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|    116|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|    116|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 116, False: 0]
  |  |  ------------------
  ------------------
 9796|    116|        {
 9797|    116|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|    116|        }
 9799|    116|        return res;
 9800|  3.52k|    }
_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_swapImEEvRT_:
22907|  4.14k|    {
22908|  4.14k|        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|  4.14k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  20.7k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 16.5k, False: 4.14k]
  ------------------
22924|  16.5k|            {
22925|  16.5k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  16.5k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.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_EEE13emit_unsignedImEEbT_:
23008|    885|    {
23009|    885|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    885|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 885, False: 0]
  |  |  ------------------
  ------------------
23010|    885|        {
23011|    885|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    885|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    885|    }
_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_cbor_internalENS1_18cbor_tag_handler_tE:
20247|  8.58k|    {
20248|       |        // whether the next value starts at a fresh byte or at the one already
20249|       |        // read into `current`
20250|  8.58k|        bool fetch = true;
20251|       |
20252|       |        // the key currently being read; hoisted out of the loop so that its
20253|       |        // capacity is reused across elements and across nesting levels
20254|  8.58k|        string_t key;
20255|       |
20256|   345k|        while (true)
  ------------------
  |  Branch (20256:16): [True: 340k, Folded]
  ------------------
20257|   340k|        {
20258|   340k|            if (!container_stack.empty())
  ------------------
  |  Branch (20258:17): [True: 332k, False: 8.58k]
  ------------------
20259|   332k|            {
20260|       |                // a copy, not a reference: it must stay valid across the
20261|       |                // pop_back() below, which destroys the container_stack element
20262|       |                // it would otherwise alias
20263|   332k|                const container_frame top = container_stack.back();
20264|   332k|                const bool is_object = top.is_object;
20265|   332k|                bool at_end = false;
20266|       |
20267|   332k|                if (top.remaining != npos)
  ------------------
  |  Branch (20267:21): [True: 227k, False: 104k]
  ------------------
20268|   227k|                {
20269|       |                    // definite length: the container ends once its elements
20270|       |                    // have been read
20271|   227k|                    at_end = (top.remaining == 0);
20272|   227k|                    if (!at_end)
  ------------------
  |  Branch (20272:25): [True: 128k, False: 99.6k]
  ------------------
20273|   128k|                    {
20274|       |                        // claim the element about to be read
20275|   128k|                        --container_stack.back().remaining;
20276|   128k|                        if (is_object)
  ------------------
  |  Branch (20276:29): [True: 21.6k, False: 106k]
  ------------------
20277|  21.6k|                        {
20278|  21.6k|                            get();
20279|  21.6k|                        }
20280|   128k|                    }
20281|   227k|                    fetch = true;
20282|   227k|                }
20283|   104k|                else
20284|   104k|                {
20285|       |                    // indefinite length: the container ends at a break marker.
20286|       |                    // Testing for it consumes a byte, which is the first byte
20287|       |                    // of the next element when it is not one.
20288|   104k|                    at_end = (get() == 0xFF);
20289|   104k|                    fetch = is_object;
20290|   104k|                }
20291|       |
20292|   332k|                if (at_end)
  ------------------
  |  Branch (20292:21): [True: 102k, False: 230k]
  ------------------
20293|   102k|                {
20294|   102k|                    bool value_complete = false;
20295|   102k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container_and_check(value_complete)))
  ------------------
  |  | 1697|   102k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 102k]
  |  |  ------------------
  ------------------
20296|      0|                    {
20297|      0|                        return false;
20298|      0|                    }
20299|   102k|                    if (value_complete)
  ------------------
  |  Branch (20299:25): [True: 2.67k, False: 99.5k]
  ------------------
20300|  2.67k|                    {
20301|  2.67k|                        return true;
20302|  2.67k|                    }
20303|  99.5k|                    continue;
20304|   102k|                }
20305|       |
20306|   230k|                if (is_object)
  ------------------
  |  Branch (20306:21): [True: 35.3k, False: 194k]
  ------------------
20307|  35.3k|                {
20308|  35.3k|                    if (JSON_HEDLEY_UNLIKELY(!skip_cbor_key_tags(tag_handler)))
  ------------------
  |  | 1697|  35.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 35.3k]
  |  |  ------------------
  ------------------
20309|      0|                    {
20310|      0|                        return false;
20311|      0|                    }
20312|  35.3k|                    if (JSON_HEDLEY_UNLIKELY(!read_object_key<&binary_reader::get_cbor_object_key>(key)))
  ------------------
  |  | 1697|  35.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 35.3k]
  |  |  ------------------
  ------------------
20313|      0|                    {
20314|      0|                        return false;
20315|      0|                    }
20316|  35.3k|                    fetch = true;
20317|  35.3k|                }
20318|   230k|            }
20319|       |
20320|       |            // a tag is not a value of its own: read on until the tagged value
20321|   238k|            bool tag_pending = false;
20322|   238k|            bool item_read = false;
20323|   238k|            do
20324|   238k|            {
20325|   238k|                if (JSON_HEDLEY_UNLIKELY(!parse_cbor_value(fetch, tag_handler, tag_pending, item_read)))
  ------------------
  |  | 1697|   238k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 238k]
  |  |  ------------------
  ------------------
20326|      0|                {
20327|      0|                    return false;
20328|      0|                }
20329|   238k|                fetch = !item_read;
20330|   238k|            }
20331|   238k|            while (tag_pending);
  ------------------
  |  Branch (20331:20): [True: 0, False: 238k]
  ------------------
20332|       |
20333|       |            // a value that opened a container left it on the stack; one that
20334|       |            // did not, and that was not inside a container, was the whole value
20335|   238k|            if (container_stack.empty())
  ------------------
  |  Branch (20335:17): [True: 1.71k, False: 236k]
  ------------------
20336|  1.71k|            {
20337|  1.71k|                return true;
20338|  1.71k|            }
20339|   238k|        }
20340|  8.58k|    }
_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|   102k|    {
18668|   102k|        if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1697|   102k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 102k]
  |  |  ------------------
  ------------------
18669|      0|        {
18670|      0|            return false;
18671|      0|        }
18672|   102k|        value_complete = container_stack.empty();
18673|   102k|        return true;
18674|   102k|    }
_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_EEE18skip_cbor_key_tagsENS1_18cbor_tag_handler_tE:
19765|  35.3k|    {
19766|  35.3k|        if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (19766:13): [True: 35.3k, False: 0]
  ------------------
19767|  35.3k|        {
19768|  35.3k|            return true;
19769|  35.3k|        }
19770|       |
19771|       |        // 0xC0..0xDB: tag with the tag number in the head (0xC0..0xD7) or in
19772|       |        // the 1, 2, 4, or 8 bytes that follow (0xD8..0xDB)
19773|      0|        while (current >= 0xC0 && current <= 0xDB)
  ------------------
  |  Branch (19773:16): [True: 0, False: 0]
  |  Branch (19773:35): [True: 0, False: 0]
  ------------------
19774|      0|        {
19775|      0|            if (current >= 0xD8)
  ------------------
  |  Branch (19775:17): [True: 0, False: 0]
  ------------------
19776|      0|            {
19777|      0|                std::uint64_t tag_to_ignore{};
19778|      0|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_argument(tag_to_ignore)))
  ------------------
  |  | 1697|      0|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19779|      0|                {
19780|      0|                    return false;
19781|      0|                }
19782|      0|            }
19783|      0|            get();
19784|      0|        }
19785|      0|        return true;
19786|      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_EEE17get_cbor_argumentERm:
20005|  3.74k|    {
20006|  3.74k|        switch (current & 0x1F)
20007|  3.74k|        {
20008|  1.21k|            case 0x18: // 1 byte
  ------------------
  |  Branch (20008:13): [True: 1.21k, False: 2.53k]
  ------------------
20009|  1.21k|            {
20010|  1.21k|                std::uint8_t n{};
20011|  1.21k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  1.21k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.21k]
  |  |  ------------------
  ------------------
20012|      0|                {
20013|      0|                    return false;
20014|      0|                }
20015|  1.21k|                value = n;
20016|  1.21k|                return true;
20017|  1.21k|            }
20018|       |
20019|  1.11k|            case 0x19: // 2 bytes
  ------------------
  |  Branch (20019:13): [True: 1.11k, False: 2.63k]
  ------------------
20020|  1.11k|            {
20021|  1.11k|                std::uint16_t n{};
20022|  1.11k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  1.11k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.11k]
  |  |  ------------------
  ------------------
20023|      0|                {
20024|      0|                    return false;
20025|      0|                }
20026|  1.11k|                value = n;
20027|  1.11k|                return true;
20028|  1.11k|            }
20029|       |
20030|    649|            case 0x1A: // 4 bytes
  ------------------
  |  Branch (20030:13): [True: 649, False: 3.09k]
  ------------------
20031|    649|            {
20032|    649|                std::uint32_t n{};
20033|    649|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|    649|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 649]
  |  |  ------------------
  ------------------
20034|      0|                {
20035|      0|                    return false;
20036|      0|                }
20037|    649|                value = n;
20038|    649|                return true;
20039|    649|            }
20040|       |
20041|    768|            case 0x1B: // 8 bytes
  ------------------
  |  Branch (20041:13): [True: 768, False: 2.98k]
  ------------------
20042|    768|            {
20043|    768|                std::uint64_t n{};
20044|    768|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|    768|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 768]
  |  |  ------------------
  ------------------
20045|      0|                {
20046|      0|                    return false;
20047|      0|                }
20048|    768|                value = n;
20049|    768|                return true;
20050|    768|            }
20051|       |
20052|      0|            default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (20052:13): [True: 0, False: 3.74k]
  ------------------
20053|      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 (20053:17): [Folded, False: 0]
  ------------------
20054|      0|                return false;        // LCOV_EXCL_LINE
20055|  3.74k|        }
20056|  3.74k|    }
_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_numberItLb0EEEbRT_:
22948|  3.68k|    {
22949|       |        // read in the original format
22950|       |
22951|  3.68k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  3.68k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 3.68k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  3.68k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 3.60k, False: 80]
  |  Branch (22955:34): [Folded, False: 3.60k]
  |  Branch (22955:57): [True: 0, False: 3.60k]
  ------------------
22956|  3.60k|        {
22957|  3.60k|            byte_swap(result);
22958|  3.60k|        }
22959|  3.68k|        return true;
22960|  3.68k|    }
_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_toItEEbRT_PKc:
22855|  3.68k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  3.68k|        auto new_chars_read = ia.get_elements(&dest);
22859|  3.68k|        chars_read += new_chars_read;
22860|  3.68k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  3.68k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 80, False: 3.60k]
  |  |  ------------------
  ------------------
22861|     80|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     80|            ++chars_read;
22864|     80|            static_cast<void>(report_eof(context));
22865|     80|            return false;
22866|     80|        }
22867|  3.60k|        return true;
22868|  3.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsItEEmPT_m:
 9778|  3.68k|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|  3.68k|#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|  3.68k|        const char* const first = streambuf_access::get_ptr(sb);
 9786|  3.68k|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|  3.68k|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  7.28k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.60k, False: 80]
  |  |  |  Branch (1696:94): [True: 3.60k, False: 80]
  |  |  |  Branch (1696:94): [True: 3.60k, False: 0]
  |  |  ------------------
  ------------------
 9788|  3.60k|        {
 9789|  3.60k|            std::memcpy(dest, first, count * sizeof(T));
 9790|  3.60k|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|  3.60k|            return count * sizeof(T);
 9792|  3.60k|        }
 9793|     80|#endif
 9794|     80|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|     80|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|     80|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 80, False: 0]
  |  |  ------------------
  ------------------
 9796|     80|        {
 9797|     80|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|     80|        }
 9799|     80|        return res;
 9800|  3.68k|    }
_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_swapItEEvRT_:
22907|  4.10k|    {
22908|  4.10k|        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|  4.10k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  8.21k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.10k, False: 4.10k]
  ------------------
22924|  4.10k|            {
22925|  4.10k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.10k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.10k|    }
_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_numberIjLb0EEEbRT_:
22948|  2.25k|    {
22949|       |        // read in the original format
22950|       |
22951|  2.25k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  2.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.25k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  2.25k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 2.16k, False: 93]
  |  Branch (22955:34): [Folded, False: 2.16k]
  |  Branch (22955:57): [True: 0, False: 2.16k]
  ------------------
22956|  2.16k|        {
22957|  2.16k|            byte_swap(result);
22958|  2.16k|        }
22959|  2.25k|        return true;
22960|  2.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_EEE6get_toIjEEbRT_PKc:
22855|  2.25k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  2.25k|        auto new_chars_read = ia.get_elements(&dest);
22859|  2.25k|        chars_read += new_chars_read;
22860|  2.25k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  2.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 93, False: 2.16k]
  |  |  ------------------
  ------------------
22861|     93|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     93|            ++chars_read;
22864|     93|            static_cast<void>(report_eof(context));
22865|     93|            return false;
22866|     93|        }
22867|  2.16k|        return true;
22868|  2.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIjEEmPT_m:
 9778|  2.25k|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|  2.25k|#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.25k|        const char* const first = streambuf_access::get_ptr(sb);
 9786|  2.25k|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|  2.25k|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  4.42k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 2.16k, False: 93]
  |  |  |  Branch (1696:94): [True: 2.16k, False: 93]
  |  |  |  Branch (1696:94): [True: 2.16k, False: 0]
  |  |  ------------------
  ------------------
 9788|  2.16k|        {
 9789|  2.16k|            std::memcpy(dest, first, count * sizeof(T));
 9790|  2.16k|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|  2.16k|            return count * sizeof(T);
 9792|  2.16k|        }
 9793|     93|#endif
 9794|     93|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 9795|     93|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1697|     93|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 93, False: 0]
  |  |  ------------------
  ------------------
 9796|     93|        {
 9797|     93|            is->clear(is->rdstate() | std::ios::eofbit);
 9798|     93|        }
 9799|     93|        return res;
 9800|  2.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_EEE9byte_swapIjEEvRT_:
22907|  2.40k|    {
22908|  2.40k|        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|  2.40k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  7.20k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.80k, False: 2.40k]
  ------------------
22924|  4.80k|            {
22925|  4.80k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.80k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  2.40k|    }
_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_numberImLb0EEEbRT_:
22948|  3.52k|    {
22949|       |        // read in the original format
22950|       |
22951|  3.52k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  3.52k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 3.52k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  3.52k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 3.40k, False: 116]
  |  Branch (22955:34): [Folded, False: 3.40k]
  |  Branch (22955:57): [True: 0, False: 3.40k]
  ------------------
22956|  3.40k|        {
22957|  3.40k|            byte_swap(result);
22958|  3.40k|        }
22959|  3.52k|        return true;
22960|  3.52k|    }
_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_19get_cbor_object_keyERSC_EEEEbSM_:
18685|  35.3k|    {
18686|  35.3k|        key.clear();
18687|  35.3k|        return (this->*GetKey)(key) && sax->key(key);
  ------------------
  |  Branch (18687:16): [True: 34.7k, False: 585]
  |  Branch (18687:40): [True: 34.7k, False: 0]
  ------------------
18688|  35.3k|    }
_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_EEE19get_cbor_object_keyERSC_:
19801|  35.3k|    {
19802|       |        // EOF and major type 3 (text string) are left to get_cbor_string
19803|  35.3k|        if (current == char_traits<char_type>::eof() || (static_cast<unsigned int>(current) & 0xE0u) == 0x60u)
  ------------------
  |  Branch (19803:13): [True: 514, False: 34.8k]
  |  Branch (19803:57): [True: 34.7k, False: 58]
  ------------------
19804|  35.2k|        {
19805|  35.2k|            return get_cbor_string(result, "key");
19806|  35.2k|        }
19807|       |
19808|     58|        const char* found = nullptr;
19809|     58|        switch (static_cast<unsigned int>(current) >> 5u)
19810|     58|        {
19811|     10|            case 0:
  ------------------
  |  Branch (19811:13): [True: 10, False: 48]
  ------------------
19812|     10|                found = "an unsigned integer";
19813|     10|                break;
19814|      7|            case 1:
  ------------------
  |  Branch (19814:13): [True: 7, False: 51]
  ------------------
19815|      7|                found = "a negative integer";
19816|      7|                break;
19817|      9|            case 2:
  ------------------
  |  Branch (19817:13): [True: 9, False: 49]
  ------------------
19818|      9|                found = "a byte string";
19819|      9|                break;
19820|      3|            case 4:
  ------------------
  |  Branch (19820:13): [True: 3, False: 55]
  ------------------
19821|      3|                found = "an array";
19822|      3|                break;
19823|      7|            case 5:
  ------------------
  |  Branch (19823:13): [True: 7, False: 51]
  ------------------
19824|      7|                found = "a map";
19825|      7|                break;
19826|      7|            case 6:
  ------------------
  |  Branch (19826:13): [True: 7, False: 51]
  ------------------
19827|      7|                found = "a tag";
19828|      7|                break;
19829|     15|            default: // major type 7
  ------------------
  |  Branch (19829:13): [True: 15, False: 43]
  ------------------
19830|     15|                switch (current)
19831|     15|                {
19832|      0|                    case 0xF4:
  ------------------
  |  Branch (19832:21): [True: 0, False: 15]
  ------------------
19833|      0|                    case 0xF5:
  ------------------
  |  Branch (19833:21): [True: 0, False: 15]
  ------------------
19834|      0|                        found = "a boolean";
19835|      0|                        break;
19836|      1|                    case 0xF6:
  ------------------
  |  Branch (19836:21): [True: 1, False: 14]
  ------------------
19837|      1|                        found = "null";
19838|      1|                        break;
19839|      1|                    case 0xF7:
  ------------------
  |  Branch (19839:21): [True: 1, False: 14]
  ------------------
19840|      1|                        found = "undefined";
19841|      1|                        break;
19842|      1|                    case 0xF9:
  ------------------
  |  Branch (19842:21): [True: 1, False: 14]
  ------------------
19843|      1|                    case 0xFA:
  ------------------
  |  Branch (19843:21): [True: 0, False: 15]
  ------------------
19844|      1|                    case 0xFB:
  ------------------
  |  Branch (19844:21): [True: 0, False: 15]
  ------------------
19845|      1|                        found = "a floating-point number";
19846|      1|                        break;
19847|      2|                    case 0xFF:
  ------------------
  |  Branch (19847:21): [True: 2, False: 13]
  ------------------
19848|      2|                        found = "a break stop code";
19849|      2|                        break;
19850|     10|                    default:
  ------------------
  |  Branch (19850:21): [True: 10, False: 5]
  ------------------
19851|     10|                        found = "a simple value";
19852|     10|                        break;
19853|     15|                }
19854|     15|                break;
19855|     58|        }
19856|       |
19857|     58|        return unsupported_key_type(found);
19858|     58|    }
_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_cbor_stringERSC_PKc:
19684|  52.2k|    {
19685|       |        // read chunks iteratively, but reject a second indefinite-length
19686|       |        // level as required by RFC 8949, Section 3.2.3
19687|  52.2k|        bool indefinite = false;
19688|       |
19689|       |        // the chunk currently being validated; only used for the chunks of an
19690|       |        // indefinite-length string when the UTF-8 check can do something
19691|  52.2k|        string_t chunk;
19692|       |
19693|  55.4k|        while (true)
  ------------------
  |  Branch (19693:16): [True: 54.8k, Folded]
  ------------------
19694|  54.8k|        {
19695|  54.8k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1697|  54.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 54.8k]
  |  |  ------------------
  ------------------
19696|      0|            {
19697|      0|                return false;
19698|      0|            }
19699|       |
19700|  54.8k|            if (current == 0x7F) // UTF-8 string (indefinite length)
  ------------------
  |  Branch (19700:17): [True: 780, False: 54.0k]
  ------------------
19701|    780|            {
19702|    780|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1697|    780|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1, False: 779]
  |  |  ------------------
  ------------------
19703|      1|                {
19704|      1|                    return cbor_indefinite_string_error("string", "string");
19705|      1|                }
19706|    779|                indefinite = true;
19707|    779|                get();
19708|    779|                continue;
19709|    780|            }
19710|       |
19711|       |            // a break marker closes the indefinite-length string; outside
19712|       |            // of one it falls through to the error below. Every chunk has
19713|       |            // been checked on its own, so there is nothing left to check.
19714|  54.0k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (19714:17): [True: 2.61k, False: 51.4k]
  |  Branch (19714:31): [True: 681, False: 1.93k]
  ------------------
19715|    681|            {
19716|    681|                return true;
19717|    681|            }
19718|       |
19719|  53.3k|            if (!indefinite)
  ------------------
  |  Branch (19719:17): [True: 50.9k, False: 2.47k]
  ------------------
19720|  50.9k|            {
19721|  50.9k|                return get_cbor_string_chunk(result, false) && check_string_utf8(result, context);
  ------------------
  |  Branch (19721:24): [True: 50.3k, False: 605]
  |  Branch (19721:64): [True: 50.3k, False: 0]
  ------------------
19722|  50.9k|            }
19723|       |
19724|  2.47k|            if (error_handler == error_handler_t::keep)
  ------------------
  |  Branch (19724:17): [True: 1.93k, False: 542]
  ------------------
19725|  1.93k|            {
19726|       |                // nothing to check: read the chunk directly into the result
19727|  1.93k|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(result, true)))
  ------------------
  |  | 1697|  1.93k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.93k]
  |  |  ------------------
  ------------------
19728|      0|                {
19729|      0|                    return false;
19730|      0|                }
19731|  1.93k|            }
19732|    542|            else
19733|    542|            {
19734|       |                // RFC 8949, Section 3.2.3: each chunk is a text string of its
19735|       |                // own and must be valid UTF-8 by itself, i.e., a code point
19736|       |                // cannot be spread over two chunks
19737|    542|                chunk.clear();
19738|    542|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(chunk, true) || !check_string_utf8(chunk, context)))
  ------------------
  |  | 1697|    542|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 542]
  |  |  |  Branch (1697:94): [True: 542, False: 0]
  |  |  |  Branch (1697:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19739|      0|                {
19740|      0|                    return false;
19741|      0|                }
19742|    542|                result.append(chunk.data(), chunk.size());
19743|    542|            }
19744|       |
19745|  2.47k|            get();
19746|  2.47k|        }
19747|  52.2k|    }
_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_EEE28cbor_indefinite_string_errorEPKcSM_:
19565|      3|    {
19566|      3|        return last_byte_error(exception_id::invalid_string_or_size, concat("indefinite-length ", type_name, " is not allowed inside indefinite-length ", type_name, "; last byte: 0x", get_token_string()), context);
19567|      3|    }
_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_EEE21get_cbor_string_chunkERSC_b:
19613|  52.8k|    {
19614|  52.8k|        switch (current)
19615|  52.8k|        {
19616|       |            // UTF-8 string (0x00..0x17 bytes follow)
19617|  31.7k|            case 0x60:
  ------------------
  |  Branch (19617:13): [True: 31.7k, False: 21.1k]
  ------------------
19618|  43.1k|            case 0x61:
  ------------------
  |  Branch (19618:13): [True: 11.4k, False: 41.4k]
  ------------------
19619|  44.0k|            case 0x62:
  ------------------
  |  Branch (19619:13): [True: 887, False: 51.9k]
  ------------------
19620|  44.3k|            case 0x63:
  ------------------
  |  Branch (19620:13): [True: 368, False: 52.4k]
  ------------------
19621|  45.1k|            case 0x64:
  ------------------
  |  Branch (19621:13): [True: 767, False: 52.0k]
  ------------------
19622|  45.6k|            case 0x65:
  ------------------
  |  Branch (19622:13): [True: 471, False: 52.3k]
  ------------------
19623|  45.9k|            case 0x66:
  ------------------
  |  Branch (19623:13): [True: 325, False: 52.5k]
  ------------------
19624|  46.1k|            case 0x67:
  ------------------
  |  Branch (19624:13): [True: 247, False: 52.6k]
  ------------------
19625|  46.6k|            case 0x68:
  ------------------
  |  Branch (19625:13): [True: 437, False: 52.4k]
  ------------------
19626|  46.8k|            case 0x69:
  ------------------
  |  Branch (19626:13): [True: 194, False: 52.6k]
  ------------------
19627|  47.0k|            case 0x6A:
  ------------------
  |  Branch (19627:13): [True: 222, False: 52.6k]
  ------------------
19628|  47.2k|            case 0x6B:
  ------------------
  |  Branch (19628:13): [True: 149, False: 52.7k]
  ------------------
19629|  47.4k|            case 0x6C:
  ------------------
  |  Branch (19629:13): [True: 219, False: 52.6k]
  ------------------
19630|  47.5k|            case 0x6D:
  ------------------
  |  Branch (19630:13): [True: 151, False: 52.7k]
  ------------------
19631|  47.6k|            case 0x6E:
  ------------------
  |  Branch (19631:13): [True: 90, False: 52.7k]
  ------------------
19632|  47.7k|            case 0x6F:
  ------------------
  |  Branch (19632:13): [True: 116, False: 52.7k]
  ------------------
19633|  48.0k|            case 0x70:
  ------------------
  |  Branch (19633:13): [True: 281, False: 52.5k]
  ------------------
19634|  48.1k|            case 0x71:
  ------------------
  |  Branch (19634:13): [True: 113, False: 52.7k]
  ------------------
19635|  48.2k|            case 0x72:
  ------------------
  |  Branch (19635:13): [True: 109, False: 52.7k]
  ------------------
19636|  48.3k|            case 0x73:
  ------------------
  |  Branch (19636:13): [True: 68, False: 52.7k]
  ------------------
19637|  48.5k|            case 0x74:
  ------------------
  |  Branch (19637:13): [True: 185, False: 52.6k]
  ------------------
19638|  48.6k|            case 0x75:
  ------------------
  |  Branch (19638:13): [True: 80, False: 52.7k]
  ------------------
19639|  48.7k|            case 0x76:
  ------------------
  |  Branch (19639:13): [True: 96, False: 52.7k]
  ------------------
19640|  49.0k|            case 0x77:
  ------------------
  |  Branch (19640:13): [True: 365, False: 52.4k]
  ------------------
19641|  49.0k|            {
19642|  49.0k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result);
19643|  48.7k|            }
19644|       |
19645|  1.52k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19645:13): [True: 1.52k, False: 51.3k]
  ------------------
19646|  1.52k|            {
19647|  1.52k|                return get_cbor_sized_bytes<std::uint8_t>("string", result);
19648|  48.7k|            }
19649|       |
19650|  1.07k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19650:13): [True: 1.07k, False: 51.7k]
  ------------------
19651|  1.07k|            {
19652|  1.07k|                return get_cbor_sized_bytes<std::uint16_t>("string", result);
19653|  48.7k|            }
19654|       |
19655|    373|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19655:13): [True: 373, False: 52.4k]
  ------------------
19656|    373|            {
19657|    373|                return get_cbor_sized_bytes<std::uint32_t>("string", result);
19658|  48.7k|            }
19659|       |
19660|    780|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19660:13): [True: 780, False: 52.0k]
  ------------------
19661|    780|            {
19662|    780|                return get_cbor_sized_bytes<std::uint64_t>("string", result);
19663|  48.7k|            }
19664|       |
19665|     25|            default:
  ------------------
  |  Branch (19665:13): [True: 25, False: 52.8k]
  ------------------
19666|     25|            {
19667|     25|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x60-0x7B)", "string", inside_indefinite ? "" : " or indefinite string type (0x7F)");
  ------------------
  |  Branch (19667:133): [True: 24, False: 1]
  ------------------
19668|  48.7k|            }
19669|  52.8k|        }
19670|  52.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_EEE10get_stringIjEEbT_RSC_:
23119|  49.0k|    {
23120|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
23121|       |        // leaves the choice to the decoder), MessagePack (whose spec
23122|       |        // explicitly allows a str object to contain an invalid byte
23123|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
23124|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
23125|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
23126|       |        // @ref error_handler, applied by @ref check_string_utf8 at the call
23127|       |        // site to the whole string or, for an indefinite-length CBOR string,
23128|       |        // to each chunk on its own (RFC 8949, Section 3.2.3).
23129|  49.0k|        return get_bytes(len, "string", result);
23130|  49.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_EEE9get_bytesIjSC_EEbT_PKcRT0_:
23245|  49.4k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  49.4k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  49.4k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 17.1k, False: 32.2k]
  ------------------
23250|  17.1k|        {
23251|  17.1k|            return true;
23252|  17.1k|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  32.2k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  32.2k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 286, False: 31.9k]
  ------------------
23258|    286|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    286|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 235, False: 51]
  ------------------
23262|    286|                                       ? static_cast<std::size_t>(len)
23263|    286|                                       : chunk_size;
23264|    286|            const std::size_t old_size = result.size();
23265|    286|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    286|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    286|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 286, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    286|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    286|            chars_read += bytes_read;
23273|    286|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    286|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 286, False: 0]
  |  |  ------------------
  ------------------
23274|    286|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    286|                result.resize(old_size + bytes_read);
23279|    286|                ++chars_read;
23280|    286|                current = char_traits<char_type>::eof();
23281|    286|                return unexpect_eof(context);
23282|    286|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|  31.9k|        return true;
23288|  32.2k|    }
_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_EEE17append_from_blockIjEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  49.4k|    {
23295|  49.4k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 31.9k, False: 17.4k]
  ------------------
23296|  31.9k|        {
23297|  31.9k|            return false;
23298|  31.9k|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|  17.4k|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|  17.4k|        const std::size_t remaining = ia.bulk_remaining();
23303|  17.4k|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 286, False: 17.1k]
  ------------------
23304|    286|        {
23305|    286|            return false; // (the loop reports the premature end)
23306|    286|        }
23307|  17.1k|        const auto n = static_cast<std::size_t>(ulen);
23308|  17.1k|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|  17.1k|        ia.bulk_skip(n);
23310|  17.1k|        chars_read += n;
23311|  17.1k|        return true;
23312|  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_EEE20get_cbor_sized_bytesIhSC_EEbPKcRT0_:
19592|  1.52k|    {
19593|  1.52k|        NumberType len{};
19594|  1.52k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.51k, False: 12]
  |  Branch (19594:35): [True: 1.48k, False: 31]
  ------------------
19595|  1.52k|    }
_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_EEE9get_bytesIhSC_EEbT_PKcRT0_:
23245|  1.51k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  1.51k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  1.51k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 795, False: 722]
  ------------------
23250|    795|        {
23251|    795|            return true;
23252|    795|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    722|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    722|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 31, False: 691]
  ------------------
23258|     31|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|     31|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 31, False: 0]
  ------------------
23262|     31|                                       ? static_cast<std::size_t>(len)
23263|     31|                                       : chunk_size;
23264|     31|            const std::size_t old_size = result.size();
23265|     31|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|     31|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|     31|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 31, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|     31|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|     31|            chars_read += bytes_read;
23273|     31|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|     31|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 31, False: 0]
  |  |  ------------------
  ------------------
23274|     31|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     31|                result.resize(old_size + bytes_read);
23279|     31|                ++chars_read;
23280|     31|                current = char_traits<char_type>::eof();
23281|     31|                return unexpect_eof(context);
23282|     31|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|    691|        return true;
23288|    722|    }
_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_EEE17append_from_blockIhEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  1.51k|    {
23295|  1.51k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 691, False: 826]
  ------------------
23296|    691|        {
23297|    691|            return false;
23298|    691|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|    826|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|    826|        const std::size_t remaining = ia.bulk_remaining();
23303|    826|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 31, False: 795]
  ------------------
23304|     31|        {
23305|     31|            return false; // (the loop reports the premature end)
23306|     31|        }
23307|    795|        const auto n = static_cast<std::size_t>(ulen);
23308|    795|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|    795|        ia.bulk_skip(n);
23310|    795|        chars_read += n;
23311|    795|        return true;
23312|    826|    }
_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_cbor_sized_bytesItSC_EEbPKcRT0_:
19592|  1.07k|    {
19593|  1.07k|        NumberType len{};
19594|  1.07k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.06k, False: 14]
  |  Branch (19594:35): [True: 990, False: 72]
  ------------------
19595|  1.07k|    }
_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_EEE9get_bytesItSC_EEbT_PKcRT0_:
23245|  1.06k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  1.06k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  1.06k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 468, False: 594]
  ------------------
23250|    468|        {
23251|    468|            return true;
23252|    468|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    594|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    594|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 72, False: 522]
  ------------------
23258|     72|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|     72|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 49, False: 23]
  ------------------
23262|     72|                                       ? static_cast<std::size_t>(len)
23263|     72|                                       : chunk_size;
23264|     72|            const std::size_t old_size = result.size();
23265|     72|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|     72|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|     72|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 72, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|     72|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|     72|            chars_read += bytes_read;
23273|     72|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|     72|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 72, False: 0]
  |  |  ------------------
  ------------------
23274|     72|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     72|                result.resize(old_size + bytes_read);
23279|     72|                ++chars_read;
23280|     72|                current = char_traits<char_type>::eof();
23281|     72|                return unexpect_eof(context);
23282|     72|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|    522|        return true;
23288|    594|    }
_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_EEE17append_from_blockItEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  1.06k|    {
23295|  1.06k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 522, False: 540]
  ------------------
23296|    522|        {
23297|    522|            return false;
23298|    522|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|    540|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|    540|        const std::size_t remaining = ia.bulk_remaining();
23303|    540|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 72, False: 468]
  ------------------
23304|     72|        {
23305|     72|            return false; // (the loop reports the premature end)
23306|     72|        }
23307|    468|        const auto n = static_cast<std::size_t>(ulen);
23308|    468|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|    468|        ia.bulk_skip(n);
23310|    468|        chars_read += n;
23311|    468|        return true;
23312|    540|    }
_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_cbor_sized_bytesIjSC_EEbPKcRT0_:
19592|    373|    {
19593|    373|        NumberType len{};
19594|    373|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 357, False: 16]
  |  Branch (19594:35): [True: 275, False: 82]
  ------------------
19595|    373|    }
_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_cbor_sized_bytesImSC_EEbPKcRT0_:
19592|    780|    {
19593|    780|        NumberType len{};
19594|    780|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 761, False: 19]
  |  Branch (19594:35): [True: 562, False: 199]
  ------------------
19595|    780|    }
_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_EEE9get_bytesImSC_EEbT_PKcRT0_:
23245|    761|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    761|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|    761|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 274, False: 487]
  ------------------
23250|    274|        {
23251|    274|            return true;
23252|    274|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    487|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    487|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 199, False: 288]
  ------------------
23258|    199|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    199|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 34, False: 165]
  ------------------
23262|    199|                                       ? static_cast<std::size_t>(len)
23263|    199|                                       : chunk_size;
23264|    199|            const std::size_t old_size = result.size();
23265|    199|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    199|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    199|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 199, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    199|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    199|            chars_read += bytes_read;
23273|    199|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    199|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 199, False: 0]
  |  |  ------------------
  ------------------
23274|    199|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    199|                result.resize(old_size + bytes_read);
23279|    199|                ++chars_read;
23280|    199|                current = char_traits<char_type>::eof();
23281|    199|                return unexpect_eof(context);
23282|    199|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|    288|        return true;
23288|    487|    }
_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_EEE17append_from_blockImEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|    761|    {
23295|    761|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 288, False: 473]
  ------------------
23296|    288|        {
23297|    288|            return false;
23298|    288|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|    473|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|    473|        const std::size_t remaining = ia.bulk_remaining();
23303|    473|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 199, False: 274]
  ------------------
23304|    199|        {
23305|    199|            return false; // (the loop reports the premature end)
23306|    199|        }
23307|    274|        const auto n = static_cast<std::size_t>(ulen);
23308|    274|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|    274|        ia.bulk_skip(n);
23310|    274|        chars_read += n;
23311|    274|        return true;
23312|    473|    }
_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_EEE20unsupported_key_typeEPKc:
19576|     58|    {
19577|     58|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
19578|     58|    }
_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_cbor_valueEbNS1_18cbor_tag_handler_tERbSM_:
19179|   238k|    {
19180|   238k|        tag_pending = false;
19181|   238k|        item_read = false;
19182|       |
19183|   238k|        switch (get_char ? get() : current)
  ------------------
  |  Branch (19183:17): [True: 149k, False: 88.0k]
  ------------------
19184|   238k|        {
19185|       |            // EOF
19186|  1.67k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (19186:13): [True: 1.67k, False: 236k]
  ------------------
19187|  1.67k|                return unexpect_eof("value");
19188|       |
19189|       |            // Integer 0x00..0x17 (0..23)
19190|  8.45k|            case 0x00:
  ------------------
  |  Branch (19190:13): [True: 8.45k, False: 229k]
  ------------------
19191|  9.41k|            case 0x01:
  ------------------
  |  Branch (19191:13): [True: 963, False: 237k]
  ------------------
19192|  9.92k|            case 0x02:
  ------------------
  |  Branch (19192:13): [True: 510, False: 237k]
  ------------------
19193|  10.2k|            case 0x03:
  ------------------
  |  Branch (19193:13): [True: 350, False: 237k]
  ------------------
19194|  10.7k|            case 0x04:
  ------------------
  |  Branch (19194:13): [True: 433, False: 237k]
  ------------------
19195|  11.2k|            case 0x05:
  ------------------
  |  Branch (19195:13): [True: 503, False: 237k]
  ------------------
19196|  11.6k|            case 0x06:
  ------------------
  |  Branch (19196:13): [True: 421, False: 237k]
  ------------------
19197|  11.9k|            case 0x07:
  ------------------
  |  Branch (19197:13): [True: 347, False: 237k]
  ------------------
19198|  12.6k|            case 0x08:
  ------------------
  |  Branch (19198:13): [True: 636, False: 237k]
  ------------------
19199|  13.0k|            case 0x09:
  ------------------
  |  Branch (19199:13): [True: 423, False: 237k]
  ------------------
19200|  13.3k|            case 0x0A:
  ------------------
  |  Branch (19200:13): [True: 353, False: 237k]
  ------------------
19201|  13.6k|            case 0x0B:
  ------------------
  |  Branch (19201:13): [True: 302, False: 237k]
  ------------------
19202|  14.2k|            case 0x0C:
  ------------------
  |  Branch (19202:13): [True: 522, False: 237k]
  ------------------
19203|  14.6k|            case 0x0D:
  ------------------
  |  Branch (19203:13): [True: 427, False: 237k]
  ------------------
19204|  15.1k|            case 0x0E:
  ------------------
  |  Branch (19204:13): [True: 498, False: 237k]
  ------------------
19205|  15.5k|            case 0x0F:
  ------------------
  |  Branch (19205:13): [True: 363, False: 237k]
  ------------------
19206|  16.0k|            case 0x10:
  ------------------
  |  Branch (19206:13): [True: 561, False: 237k]
  ------------------
19207|  16.8k|            case 0x11:
  ------------------
  |  Branch (19207:13): [True: 750, False: 237k]
  ------------------
19208|  17.2k|            case 0x12:
  ------------------
  |  Branch (19208:13): [True: 416, False: 237k]
  ------------------
19209|  17.5k|            case 0x13:
  ------------------
  |  Branch (19209:13): [True: 295, False: 237k]
  ------------------
19210|  18.2k|            case 0x14:
  ------------------
  |  Branch (19210:13): [True: 680, False: 237k]
  ------------------
19211|  18.5k|            case 0x15:
  ------------------
  |  Branch (19211:13): [True: 307, False: 237k]
  ------------------
19212|  19.2k|            case 0x16:
  ------------------
  |  Branch (19212:13): [True: 697, False: 237k]
  ------------------
19213|  19.5k|            case 0x17:
  ------------------
  |  Branch (19213:13): [True: 296, False: 237k]
  ------------------
19214|  19.5k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
19215|       |
19216|    431|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (19216:13): [True: 431, False: 237k]
  ------------------
19217|    431|            {
19218|    431|                std::uint8_t number{};
19219|    431|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19219:24): [True: 425, False: 6]
  |  Branch (19219:46): [True: 425, False: 0]
  ------------------
19220|  19.2k|            }
19221|       |
19222|    311|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (19222:13): [True: 311, False: 237k]
  ------------------
19223|    311|            {
19224|    311|                std::uint16_t number{};
19225|    311|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19225:24): [True: 302, False: 9]
  |  Branch (19225:46): [True: 302, False: 0]
  ------------------
19226|  19.2k|            }
19227|       |
19228|    354|            case 0x1A: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (19228:13): [True: 354, False: 237k]
  ------------------
19229|    354|            {
19230|    354|                std::uint32_t number{};
19231|    354|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19231:24): [True: 340, False: 14]
  |  Branch (19231:46): [True: 340, False: 0]
  ------------------
19232|  19.2k|            }
19233|       |
19234|    637|            case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (19234:13): [True: 637, False: 237k]
  ------------------
19235|    637|            {
19236|    637|                std::uint64_t number{};
19237|    637|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19237:24): [True: 617, False: 20]
  |  Branch (19237:46): [True: 617, False: 0]
  ------------------
19238|  19.2k|            }
19239|       |
19240|       |            // Negative integer -1-0x00..-1-0x17 (-1..-24)
19241|  1.04k|            case 0x20:
  ------------------
  |  Branch (19241:13): [True: 1.04k, False: 236k]
  ------------------
19242|  1.85k|            case 0x21:
  ------------------
  |  Branch (19242:13): [True: 812, False: 237k]
  ------------------
19243|  2.85k|            case 0x22:
  ------------------
  |  Branch (19243:13): [True: 1.00k, False: 237k]
  ------------------
19244|  3.79k|            case 0x23:
  ------------------
  |  Branch (19244:13): [True: 935, False: 237k]
  ------------------
19245|  4.18k|            case 0x24:
  ------------------
  |  Branch (19245:13): [True: 390, False: 237k]
  ------------------
19246|  4.77k|            case 0x25:
  ------------------
  |  Branch (19246:13): [True: 595, False: 237k]
  ------------------
19247|  5.22k|            case 0x26:
  ------------------
  |  Branch (19247:13): [True: 446, False: 237k]
  ------------------
19248|  5.99k|            case 0x27:
  ------------------
  |  Branch (19248:13): [True: 775, False: 237k]
  ------------------
19249|  6.56k|            case 0x28:
  ------------------
  |  Branch (19249:13): [True: 564, False: 237k]
  ------------------
19250|  7.39k|            case 0x29:
  ------------------
  |  Branch (19250:13): [True: 830, False: 237k]
  ------------------
19251|  7.97k|            case 0x2A:
  ------------------
  |  Branch (19251:13): [True: 582, False: 237k]
  ------------------
19252|  8.64k|            case 0x2B:
  ------------------
  |  Branch (19252:13): [True: 673, False: 237k]
  ------------------
19253|  9.02k|            case 0x2C:
  ------------------
  |  Branch (19253:13): [True: 381, False: 237k]
  ------------------
19254|  9.72k|            case 0x2D:
  ------------------
  |  Branch (19254:13): [True: 696, False: 237k]
  ------------------
19255|  10.1k|            case 0x2E:
  ------------------
  |  Branch (19255:13): [True: 464, False: 237k]
  ------------------
19256|  10.9k|            case 0x2F:
  ------------------
  |  Branch (19256:13): [True: 720, False: 237k]
  ------------------
19257|  11.7k|            case 0x30:
  ------------------
  |  Branch (19257:13): [True: 883, False: 237k]
  ------------------
19258|  12.4k|            case 0x31:
  ------------------
  |  Branch (19258:13): [True: 706, False: 237k]
  ------------------
19259|  13.2k|            case 0x32:
  ------------------
  |  Branch (19259:13): [True: 707, False: 237k]
  ------------------
19260|  13.7k|            case 0x33:
  ------------------
  |  Branch (19260:13): [True: 544, False: 237k]
  ------------------
19261|  14.5k|            case 0x34:
  ------------------
  |  Branch (19261:13): [True: 793, False: 237k]
  ------------------
19262|  15.0k|            case 0x35:
  ------------------
  |  Branch (19262:13): [True: 512, False: 237k]
  ------------------
19263|  15.6k|            case 0x36:
  ------------------
  |  Branch (19263:13): [True: 623, False: 237k]
  ------------------
19264|  15.9k|            case 0x37:
  ------------------
  |  Branch (19264:13): [True: 315, False: 237k]
  ------------------
19265|  15.9k|                return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
19266|       |
19267|    378|            case 0x38: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (19267:13): [True: 378, False: 237k]
  ------------------
19268|    378|                return get_cbor_negative_integer<std::uint8_t>();
19269|       |
19270|    356|            case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (19270:13): [True: 356, False: 237k]
  ------------------
19271|    356|                return get_cbor_negative_integer<std::uint16_t>();
19272|       |
19273|    423|            case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (19273:13): [True: 423, False: 237k]
  ------------------
19274|    423|                return get_cbor_negative_integer<std::uint32_t>();
19275|       |
19276|    747|            case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (19276:13): [True: 747, False: 237k]
  ------------------
19277|    747|                return get_cbor_negative_integer<std::uint64_t>();
19278|       |
19279|       |            // Binary data (0x00..0x17 bytes follow)
19280|  20.5k|            case 0x40:
  ------------------
  |  Branch (19280:13): [True: 20.5k, False: 217k]
  ------------------
19281|  21.8k|            case 0x41:
  ------------------
  |  Branch (19281:13): [True: 1.23k, False: 236k]
  ------------------
19282|  22.2k|            case 0x42:
  ------------------
  |  Branch (19282:13): [True: 402, False: 237k]
  ------------------
19283|  22.3k|            case 0x43:
  ------------------
  |  Branch (19283:13): [True: 119, False: 237k]
  ------------------
19284|  22.5k|            case 0x44:
  ------------------
  |  Branch (19284:13): [True: 207, False: 237k]
  ------------------
19285|  22.6k|            case 0x45:
  ------------------
  |  Branch (19285:13): [True: 118, False: 237k]
  ------------------
19286|  22.7k|            case 0x46:
  ------------------
  |  Branch (19286:13): [True: 126, False: 237k]
  ------------------
19287|  22.9k|            case 0x47:
  ------------------
  |  Branch (19287:13): [True: 182, False: 237k]
  ------------------
19288|  23.1k|            case 0x48:
  ------------------
  |  Branch (19288:13): [True: 143, False: 237k]
  ------------------
19289|  23.1k|            case 0x49:
  ------------------
  |  Branch (19289:13): [True: 87, False: 237k]
  ------------------
19290|  23.3k|            case 0x4A:
  ------------------
  |  Branch (19290:13): [True: 115, False: 237k]
  ------------------
19291|  23.4k|            case 0x4B:
  ------------------
  |  Branch (19291:13): [True: 124, False: 237k]
  ------------------
19292|  23.5k|            case 0x4C:
  ------------------
  |  Branch (19292:13): [True: 133, False: 237k]
  ------------------
19293|  23.6k|            case 0x4D:
  ------------------
  |  Branch (19293:13): [True: 116, False: 237k]
  ------------------
19294|  23.7k|            case 0x4E:
  ------------------
  |  Branch (19294:13): [True: 51, False: 237k]
  ------------------
19295|  23.7k|            case 0x4F:
  ------------------
  |  Branch (19295:13): [True: 49, False: 237k]
  ------------------
19296|  23.8k|            case 0x50:
  ------------------
  |  Branch (19296:13): [True: 94, False: 237k]
  ------------------
19297|  23.9k|            case 0x51:
  ------------------
  |  Branch (19297:13): [True: 51, False: 237k]
  ------------------
19298|  23.9k|            case 0x52:
  ------------------
  |  Branch (19298:13): [True: 49, False: 237k]
  ------------------
19299|  24.0k|            case 0x53:
  ------------------
  |  Branch (19299:13): [True: 56, False: 237k]
  ------------------
19300|  24.0k|            case 0x54:
  ------------------
  |  Branch (19300:13): [True: 52, False: 237k]
  ------------------
19301|  24.1k|            case 0x55:
  ------------------
  |  Branch (19301:13): [True: 54, False: 237k]
  ------------------
19302|  24.1k|            case 0x56:
  ------------------
  |  Branch (19302:13): [True: 47, False: 237k]
  ------------------
19303|  24.2k|            case 0x57:
  ------------------
  |  Branch (19303:13): [True: 55, False: 237k]
  ------------------
19304|  25.1k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19304:13): [True: 862, False: 237k]
  ------------------
19305|  25.8k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19305:13): [True: 783, False: 237k]
  ------------------
19306|  26.3k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19306:13): [True: 460, False: 237k]
  ------------------
19307|  26.9k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19307:13): [True: 593, False: 237k]
  ------------------
19308|  27.8k|            case 0x5F: // Binary data (indefinite length)
  ------------------
  |  Branch (19308:13): [True: 879, False: 237k]
  ------------------
19309|  27.8k|            {
19310|  27.8k|                binary_t b;
19311|  27.8k|                return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (19311:24): [True: 27.2k, False: 604]
  |  Branch (19311:46): [True: 27.2k, False: 0]
  ------------------
19312|  26.9k|            }
19313|       |
19314|       |            // UTF-8 string (0x00..0x17 bytes follow)
19315|  7.20k|            case 0x60:
  ------------------
  |  Branch (19315:13): [True: 7.20k, False: 230k]
  ------------------
19316|  8.22k|            case 0x61:
  ------------------
  |  Branch (19316:13): [True: 1.01k, False: 237k]
  ------------------
19317|  8.76k|            case 0x62:
  ------------------
  |  Branch (19317:13): [True: 539, False: 237k]
  ------------------
19318|  9.11k|            case 0x63:
  ------------------
  |  Branch (19318:13): [True: 348, False: 237k]
  ------------------
19319|  9.61k|            case 0x64:
  ------------------
  |  Branch (19319:13): [True: 503, False: 237k]
  ------------------
19320|  10.0k|            case 0x65:
  ------------------
  |  Branch (19320:13): [True: 456, False: 237k]
  ------------------
19321|  10.3k|            case 0x66:
  ------------------
  |  Branch (19321:13): [True: 281, False: 237k]
  ------------------
19322|  10.5k|            case 0x67:
  ------------------
  |  Branch (19322:13): [True: 239, False: 237k]
  ------------------
19323|  10.9k|            case 0x68:
  ------------------
  |  Branch (19323:13): [True: 339, False: 237k]
  ------------------
19324|  11.0k|            case 0x69:
  ------------------
  |  Branch (19324:13): [True: 164, False: 237k]
  ------------------
19325|  11.2k|            case 0x6A:
  ------------------
  |  Branch (19325:13): [True: 200, False: 237k]
  ------------------
19326|  11.4k|            case 0x6B:
  ------------------
  |  Branch (19326:13): [True: 136, False: 237k]
  ------------------
19327|  11.6k|            case 0x6C:
  ------------------
  |  Branch (19327:13): [True: 214, False: 237k]
  ------------------
19328|  11.7k|            case 0x6D:
  ------------------
  |  Branch (19328:13): [True: 150, False: 237k]
  ------------------
19329|  11.8k|            case 0x6E:
  ------------------
  |  Branch (19329:13): [True: 63, False: 237k]
  ------------------
19330|  11.9k|            case 0x6F:
  ------------------
  |  Branch (19330:13): [True: 94, False: 237k]
  ------------------
19331|  12.1k|            case 0x70:
  ------------------
  |  Branch (19331:13): [True: 230, False: 237k]
  ------------------
19332|  12.2k|            case 0x71:
  ------------------
  |  Branch (19332:13): [True: 97, False: 237k]
  ------------------
19333|  12.3k|            case 0x72:
  ------------------
  |  Branch (19333:13): [True: 105, False: 237k]
  ------------------
19334|  12.4k|            case 0x73:
  ------------------
  |  Branch (19334:13): [True: 64, False: 237k]
  ------------------
19335|  12.6k|            case 0x74:
  ------------------
  |  Branch (19335:13): [True: 178, False: 237k]
  ------------------
19336|  12.6k|            case 0x75:
  ------------------
  |  Branch (19336:13): [True: 70, False: 237k]
  ------------------
19337|  12.7k|            case 0x76:
  ------------------
  |  Branch (19337:13): [True: 83, False: 237k]
  ------------------
19338|  12.9k|            case 0x77:
  ------------------
  |  Branch (19338:13): [True: 149, False: 237k]
  ------------------
19339|  14.2k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19339:13): [True: 1.28k, False: 236k]
  ------------------
19340|  15.1k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19340:13): [True: 929, False: 237k]
  ------------------
19341|  15.5k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19341:13): [True: 373, False: 237k]
  ------------------
19342|  16.1k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19342:13): [True: 653, False: 237k]
  ------------------
19343|  16.9k|            case 0x7F: // UTF-8 string (indefinite length)
  ------------------
  |  Branch (19343:13): [True: 778, False: 237k]
  ------------------
19344|  16.9k|            {
19345|  16.9k|                string_t s;
19346|  16.9k|                return get_cbor_string(s) && sax->string(s);
  ------------------
  |  Branch (19346:24): [True: 16.2k, False: 690]
  |  Branch (19346:46): [True: 16.2k, False: 0]
  ------------------
19347|  16.1k|            }
19348|       |
19349|       |            // array (0x00..0x17 data items follow)
19350|  3.99k|            case 0x80:
  ------------------
  |  Branch (19350:13): [True: 3.99k, False: 234k]
  ------------------
19351|  92.9k|            case 0x81:
  ------------------
  |  Branch (19351:13): [True: 88.9k, False: 149k]
  ------------------
19352|  94.6k|            case 0x82:
  ------------------
  |  Branch (19352:13): [True: 1.63k, False: 236k]
  ------------------
19353|  95.0k|            case 0x83:
  ------------------
  |  Branch (19353:13): [True: 410, False: 237k]
  ------------------
19354|  95.3k|            case 0x84:
  ------------------
  |  Branch (19354:13): [True: 354, False: 237k]
  ------------------
19355|  95.7k|            case 0x85:
  ------------------
  |  Branch (19355:13): [True: 383, False: 237k]
  ------------------
19356|  96.0k|            case 0x86:
  ------------------
  |  Branch (19356:13): [True: 300, False: 237k]
  ------------------
19357|  96.9k|            case 0x87:
  ------------------
  |  Branch (19357:13): [True: 878, False: 237k]
  ------------------
19358|  97.4k|            case 0x88:
  ------------------
  |  Branch (19358:13): [True: 499, False: 237k]
  ------------------
19359|  97.8k|            case 0x89:
  ------------------
  |  Branch (19359:13): [True: 426, False: 237k]
  ------------------
19360|  98.1k|            case 0x8A:
  ------------------
  |  Branch (19360:13): [True: 298, False: 237k]
  ------------------
19361|  98.4k|            case 0x8B:
  ------------------
  |  Branch (19361:13): [True: 332, False: 237k]
  ------------------
19362|  98.7k|            case 0x8C:
  ------------------
  |  Branch (19362:13): [True: 273, False: 237k]
  ------------------
19363|  99.3k|            case 0x8D:
  ------------------
  |  Branch (19363:13): [True: 588, False: 237k]
  ------------------
19364|  99.8k|            case 0x8E:
  ------------------
  |  Branch (19364:13): [True: 463, False: 237k]
  ------------------
19365|   100k|            case 0x8F:
  ------------------
  |  Branch (19365:13): [True: 854, False: 237k]
  ------------------
19366|   101k|            case 0x90:
  ------------------
  |  Branch (19366:13): [True: 421, False: 237k]
  ------------------
19367|   101k|            case 0x91:
  ------------------
  |  Branch (19367:13): [True: 331, False: 237k]
  ------------------
19368|   101k|            case 0x92:
  ------------------
  |  Branch (19368:13): [True: 410, False: 237k]
  ------------------
19369|   102k|            case 0x93:
  ------------------
  |  Branch (19369:13): [True: 368, False: 237k]
  ------------------
19370|   102k|            case 0x94:
  ------------------
  |  Branch (19370:13): [True: 389, False: 237k]
  ------------------
19371|   103k|            case 0x95:
  ------------------
  |  Branch (19371:13): [True: 495, False: 237k]
  ------------------
19372|   103k|            case 0x96:
  ------------------
  |  Branch (19372:13): [True: 469, False: 237k]
  ------------------
19373|   104k|            case 0x97:
  ------------------
  |  Branch (19373:13): [True: 698, False: 237k]
  ------------------
19374|   104k|                return enter_cbor_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
19375|       |
19376|    905|            case 0x98: // array (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19376:13): [True: 905, False: 237k]
  ------------------
19377|  1.66k|            case 0x99: // array (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19377:13): [True: 758, False: 237k]
  ------------------
19378|  2.07k|            case 0x9A: // array (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19378:13): [True: 414, False: 237k]
  ------------------
19379|  2.47k|            case 0x9B: // array (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19379:13): [True: 400, False: 237k]
  ------------------
19380|  2.47k|            {
19381|  2.47k|                std::uint64_t len{};
19382|  2.47k|                std::size_t size{};
19383|  2.47k|                return get_cbor_argument(len) && get_container_size(len, size, "array") && enter_cbor_array(size);
  ------------------
  |  Branch (19383:24): [True: 2.40k, False: 72]
  |  Branch (19383:50): [True: 2.40k, False: 1]
  |  Branch (19383:92): [True: 2.27k, False: 132]
  ------------------
19384|  2.07k|            }
19385|       |
19386|  6.54k|            case 0x9F: // array (indefinite length)
  ------------------
  |  Branch (19386:13): [True: 6.54k, False: 231k]
  ------------------
19387|  6.54k|                return enter_array(detail::unknown_size());
19388|       |
19389|       |            // map (0x00..0x17 pairs of data items follow)
19390|  4.86k|            case 0xA0:
  ------------------
  |  Branch (19390:13): [True: 4.86k, False: 233k]
  ------------------
19391|  13.5k|            case 0xA1:
  ------------------
  |  Branch (19391:13): [True: 8.68k, False: 229k]
  ------------------
19392|  15.3k|            case 0xA2:
  ------------------
  |  Branch (19392:13): [True: 1.82k, False: 236k]
  ------------------
19393|  15.8k|            case 0xA3:
  ------------------
  |  Branch (19393:13): [True: 495, False: 237k]
  ------------------
19394|  16.1k|            case 0xA4:
  ------------------
  |  Branch (19394:13): [True: 268, False: 237k]
  ------------------
19395|  16.4k|            case 0xA5:
  ------------------
  |  Branch (19395:13): [True: 292, False: 237k]
  ------------------
19396|  16.7k|            case 0xA6:
  ------------------
  |  Branch (19396:13): [True: 294, False: 237k]
  ------------------
19397|  17.1k|            case 0xA7:
  ------------------
  |  Branch (19397:13): [True: 428, False: 237k]
  ------------------
19398|  17.4k|            case 0xA8:
  ------------------
  |  Branch (19398:13): [True: 262, False: 237k]
  ------------------
19399|  17.6k|            case 0xA9:
  ------------------
  |  Branch (19399:13): [True: 275, False: 237k]
  ------------------
19400|  17.9k|            case 0xAA:
  ------------------
  |  Branch (19400:13): [True: 257, False: 237k]
  ------------------
19401|  18.2k|            case 0xAB:
  ------------------
  |  Branch (19401:13): [True: 255, False: 237k]
  ------------------
19402|  18.4k|            case 0xAC:
  ------------------
  |  Branch (19402:13): [True: 265, False: 237k]
  ------------------
19403|  18.7k|            case 0xAD:
  ------------------
  |  Branch (19403:13): [True: 280, False: 237k]
  ------------------
19404|  19.0k|            case 0xAE:
  ------------------
  |  Branch (19404:13): [True: 279, False: 237k]
  ------------------
19405|  19.3k|            case 0xAF:
  ------------------
  |  Branch (19405:13): [True: 296, False: 237k]
  ------------------
19406|  19.6k|            case 0xB0:
  ------------------
  |  Branch (19406:13): [True: 289, False: 237k]
  ------------------
19407|  20.1k|            case 0xB1:
  ------------------
  |  Branch (19407:13): [True: 507, False: 237k]
  ------------------
19408|  20.4k|            case 0xB2:
  ------------------
  |  Branch (19408:13): [True: 311, False: 237k]
  ------------------
19409|  20.7k|            case 0xB3:
  ------------------
  |  Branch (19409:13): [True: 295, False: 237k]
  ------------------
19410|  20.9k|            case 0xB4:
  ------------------
  |  Branch (19410:13): [True: 272, False: 237k]
  ------------------
19411|  21.2k|            case 0xB5:
  ------------------
  |  Branch (19411:13): [True: 299, False: 237k]
  ------------------
19412|  21.5k|            case 0xB6:
  ------------------
  |  Branch (19412:13): [True: 257, False: 237k]
  ------------------
19413|  21.8k|            case 0xB7:
  ------------------
  |  Branch (19413:13): [True: 303, False: 237k]
  ------------------
19414|  21.8k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
19415|       |
19416|    312|            case 0xB8: // map (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19416:13): [True: 312, False: 237k]
  ------------------
19417|    668|            case 0xB9: // map (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19417:13): [True: 356, False: 237k]
  ------------------
19418|    903|            case 0xBA: // map (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19418:13): [True: 235, False: 237k]
  ------------------
19419|  1.27k|            case 0xBB: // map (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19419:13): [True: 368, False: 237k]
  ------------------
19420|  1.27k|            {
19421|  1.27k|                std::uint64_t len{};
19422|  1.27k|                std::size_t size{};
19423|  1.27k|                return get_cbor_argument(len) && get_container_size(len, size, "map") && enter_object(size);
  ------------------
  |  Branch (19423:24): [True: 1.22k, False: 43]
  |  Branch (19423:50): [True: 1.22k, False: 1]
  |  Branch (19423:90): [True: 1.07k, False: 149]
  ------------------
19424|    903|            }
19425|       |
19426|  1.50k|            case 0xBF: // map (indefinite length)
  ------------------
  |  Branch (19426:13): [True: 1.50k, False: 236k]
  ------------------
19427|  1.50k|                return enter_object(detail::unknown_size());
19428|       |
19429|      2|            case 0xC0: // tagged item (tag value 0-23, in the head itself)
  ------------------
  |  Branch (19429:13): [True: 2, False: 238k]
  ------------------
19430|      3|            case 0xC1:
  ------------------
  |  Branch (19430:13): [True: 1, False: 238k]
  ------------------
19431|      4|            case 0xC2:
  ------------------
  |  Branch (19431:13): [True: 1, False: 238k]
  ------------------
19432|      5|            case 0xC3:
  ------------------
  |  Branch (19432:13): [True: 1, False: 238k]
  ------------------
19433|      6|            case 0xC4:
  ------------------
  |  Branch (19433:13): [True: 1, False: 238k]
  ------------------
19434|      8|            case 0xC5:
  ------------------
  |  Branch (19434:13): [True: 2, False: 238k]
  ------------------
19435|     10|            case 0xC6:
  ------------------
  |  Branch (19435:13): [True: 2, False: 238k]
  ------------------
19436|     13|            case 0xC7:
  ------------------
  |  Branch (19436:13): [True: 3, False: 238k]
  ------------------
19437|     14|            case 0xC8:
  ------------------
  |  Branch (19437:13): [True: 1, False: 238k]
  ------------------
19438|     15|            case 0xC9:
  ------------------
  |  Branch (19438:13): [True: 1, False: 238k]
  ------------------
19439|     16|            case 0xCA:
  ------------------
  |  Branch (19439:13): [True: 1, False: 238k]
  ------------------
19440|     17|            case 0xCB:
  ------------------
  |  Branch (19440:13): [True: 1, False: 238k]
  ------------------
19441|     18|            case 0xCC:
  ------------------
  |  Branch (19441:13): [True: 1, False: 238k]
  ------------------
19442|     19|            case 0xCD:
  ------------------
  |  Branch (19442:13): [True: 1, False: 238k]
  ------------------
19443|     20|            case 0xCE:
  ------------------
  |  Branch (19443:13): [True: 1, False: 238k]
  ------------------
19444|     23|            case 0xCF:
  ------------------
  |  Branch (19444:13): [True: 3, False: 238k]
  ------------------
19445|     24|            case 0xD0:
  ------------------
  |  Branch (19445:13): [True: 1, False: 238k]
  ------------------
19446|     25|            case 0xD1:
  ------------------
  |  Branch (19446:13): [True: 1, False: 238k]
  ------------------
19447|     26|            case 0xD2:
  ------------------
  |  Branch (19447:13): [True: 1, False: 238k]
  ------------------
19448|     27|            case 0xD3:
  ------------------
  |  Branch (19448:13): [True: 1, False: 238k]
  ------------------
19449|     28|            case 0xD4:
  ------------------
  |  Branch (19449:13): [True: 1, False: 238k]
  ------------------
19450|     29|            case 0xD5:
  ------------------
  |  Branch (19450:13): [True: 1, False: 238k]
  ------------------
19451|     30|            case 0xD6:
  ------------------
  |  Branch (19451:13): [True: 1, False: 238k]
  ------------------
19452|     32|            case 0xD7:
  ------------------
  |  Branch (19452:13): [True: 2, False: 238k]
  ------------------
19453|     32|            {
19454|     32|                if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (19454:21): [True: 32, False: 0]
  ------------------
19455|     32|                {
19456|     32|                    return unexpected_byte("invalid byte", "value");
19457|     32|                }
19458|       |
19459|       |                // ignore and store: the tag value is already in the head, so
19460|       |                // there is nothing left to read here; the tagged value that
19461|       |                // follows is read by the loop in parse_cbor_internal() rather
19462|       |                // than by recursing here
19463|      0|                tag_pending = true;
19464|      0|                return true;
19465|     32|            }
19466|       |
19467|      1|            case 0xD8: // tagged item (1 byte follows)
  ------------------
  |  Branch (19467:13): [True: 1, False: 238k]
  ------------------
19468|      2|            case 0xD9: // tagged item (2 bytes follow)
  ------------------
  |  Branch (19468:13): [True: 1, False: 238k]
  ------------------
19469|      3|            case 0xDA: // tagged item (4 bytes follow)
  ------------------
  |  Branch (19469:13): [True: 1, False: 238k]
  ------------------
19470|      5|            case 0xDB: // tagged item (8 bytes follow)
  ------------------
  |  Branch (19470:13): [True: 2, False: 238k]
  ------------------
19471|      5|            {
19472|      5|                switch (tag_handler)
19473|      5|                {
19474|      5|                    case cbor_tag_handler_t::error:
  ------------------
  |  Branch (19474:21): [True: 5, False: 0]
  ------------------
19475|      5|                    {
19476|      5|                        return unexpected_byte("invalid byte", "value");
19477|      0|                    }
19478|       |
19479|      0|                    case cbor_tag_handler_t::ignore:
  ------------------
  |  Branch (19479:21): [True: 0, False: 5]
  ------------------
19480|      0|                    {
19481|       |                        // ignore the tag's binary subtype argument
19482|      0|                        std::uint64_t subtype_to_ignore{};
19483|      0|                        if (!get_cbor_argument(subtype_to_ignore))
  ------------------
  |  Branch (19483:29): [True: 0, False: 0]
  ------------------
19484|      0|                        {
19485|      0|                            return false;
19486|      0|                        }
19487|       |                        // the tagged value follows; it is read by the loop in
19488|       |                        // parse_cbor_internal() rather than by recursing here
19489|      0|                        tag_pending = true;
19490|      0|                        return true;
19491|      0|                    }
19492|       |
19493|      0|                    case cbor_tag_handler_t::store:
  ------------------
  |  Branch (19493:21): [True: 0, False: 5]
  ------------------
19494|      0|                    {
19495|       |                        // use binary subtype and store in a binary container
19496|      0|                        std::uint64_t subtype{};
19497|      0|                        if (!get_cbor_argument(subtype))
  ------------------
  |  Branch (19497:29): [True: 0, False: 0]
  ------------------
19498|      0|                        {
19499|      0|                            return false;
19500|      0|                        }
19501|      0|                        binary_t b;
19502|      0|                        b.set_subtype(detail::conditional_static_cast<typename binary_t::subtype_type>(subtype));
19503|       |
19504|      0|                        get();
19505|       |                        // a byte string (the heads accepted by get_cbor_binary) keeps the tag as subtype
19506|      0|                        if ((current >= 0x40 && current <= 0x5B) || current == 0x5F)
  ------------------
  |  Branch (19506:30): [True: 0, False: 0]
  |  Branch (19506:49): [True: 0, False: 0]
  |  Branch (19506:69): [True: 0, False: 0]
  ------------------
19507|      0|                        {
19508|      0|                            return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (19508:36): [True: 0, False: 0]
  |  Branch (19508:58): [True: 0, False: 0]
  ------------------
19509|      0|                        }
19510|       |
19511|       |                        // not a byte string: the tagged value, whose first byte
19512|       |                        // was just read, is read by the caller like for ignore
19513|      0|                        tag_pending = true;
19514|      0|                        item_read = true;
19515|      0|                        return true;
19516|      0|                    }
19517|       |
19518|      0|                    default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (19518:21): [True: 0, False: 5]
  ------------------
19519|      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 (19519:25): [Folded, False: 0]
  ------------------
19520|      0|                        return false;        // LCOV_EXCL_LINE
19521|      5|                }
19522|      5|            }
19523|       |
19524|  1.73k|            case 0xF4: // false
  ------------------
  |  Branch (19524:13): [True: 1.73k, False: 236k]
  ------------------
19525|  1.73k|                return sax->boolean(false);
19526|       |
19527|  2.16k|            case 0xF5: // true
  ------------------
  |  Branch (19527:13): [True: 2.16k, False: 235k]
  ------------------
19528|  2.16k|                return sax->boolean(true);
19529|       |
19530|  3.18k|            case 0xF6: // null
  ------------------
  |  Branch (19530:13): [True: 3.18k, False: 234k]
  ------------------
19531|  3.18k|                return sax->null();
19532|       |
19533|  5.83k|            case 0xF9: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (19533:13): [True: 5.83k, False: 232k]
  ------------------
19534|  5.83k|                return get_half_float(false);
19535|       |
19536|    649|            case 0xFA: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (19536:13): [True: 649, False: 237k]
  ------------------
19537|    649|                return get_cbor_float<float>();
19538|       |
19539|    918|            case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (19539:13): [True: 918, False: 237k]
  ------------------
19540|    918|                return get_cbor_float<double>();
19541|       |
19542|     47|            default: // anything else (0xFF is handled inside the other types)
  ------------------
  |  Branch (19542:13): [True: 47, False: 237k]
  ------------------
19543|     47|            {
19544|     47|                return unexpected_byte("invalid byte", "value");
19545|      5|            }
19546|   238k|        }
19547|   238k|    }
_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_unsignedIhEEbT_:
23008|    681|    {
23009|    681|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    681|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 681, False: 0]
  |  |  ------------------
  ------------------
23010|    681|        {
23011|    681|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    681|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    681|    }
_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_unsignedItEEbT_:
23008|    555|    {
23009|    555|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    555|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 555, False: 0]
  |  |  ------------------
  ------------------
23010|    555|        {
23011|    555|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    555|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    555|    }
_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_unsignedIjEEbT_:
23008|    460|    {
23009|    460|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    460|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 460, False: 0]
  |  |  ------------------
  ------------------
23010|    460|        {
23011|    460|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    460|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    460|    }
_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_EEE25get_cbor_negative_integerIhEEbv:
19141|    378|    {
19142|    378|        NumberType number{};
19143|    378|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 369, False: 9]
  |  Branch (19143:38): [True: 369, False: 0]
  ------------------
19144|    378|    }
_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_EEE26emit_cbor_negative_integerIhEEbT_:
19149|    608|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    608|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    608|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 608, False: 0]
  |  |  ------------------
  ------------------
19154|    608|        {
19155|    608|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    608|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    608|    }
_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_EEE25get_cbor_negative_integerItEEbv:
19141|    356|    {
19142|    356|        NumberType number{};
19143|    356|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 345, False: 11]
  |  Branch (19143:38): [True: 345, False: 0]
  ------------------
19144|    356|    }
_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_EEE26emit_cbor_negative_integerItEEbT_:
19149|    594|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    594|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    594|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 594, False: 0]
  |  |  ------------------
  ------------------
19154|    594|        {
19155|    594|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    594|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    594|    }
_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_EEE25get_cbor_negative_integerIjEEbv:
19141|    423|    {
19142|    423|        NumberType number{};
19143|    423|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 407, False: 16]
  |  Branch (19143:38): [True: 407, False: 0]
  ------------------
19144|    423|    }
_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_EEE26emit_cbor_negative_integerIjEEbT_:
19149|    523|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    523|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    523|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 523, False: 0]
  |  |  ------------------
  ------------------
19154|    523|        {
19155|    523|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    523|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    523|    }
_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_EEE25get_cbor_negative_integerImEEbv:
19141|    747|    {
19142|    747|        NumberType number{};
19143|    747|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 728, False: 19]
  |  Branch (19143:38): [True: 728, False: 0]
  ------------------
19144|    747|    }
_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_EEE26emit_cbor_negative_integerImEEbT_:
19149|  1.19k|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|  1.19k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  1.19k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 777, False: 416]
  |  |  ------------------
  ------------------
19154|    777|        {
19155|    777|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    777|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|    416|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|  1.19k|    }
_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_cbor_binaryERNS0_27byte_container_with_subtypeISF_EE:
19947|  27.8k|    {
19948|       |        // read chunks iteratively, but reject a second indefinite-length
19949|       |        // level as required by RFC 8949, Section 3.2.3
19950|  27.8k|        bool indefinite = false;
19951|       |
19952|  30.6k|        while (true)
  ------------------
  |  Branch (19952:16): [True: 29.9k, Folded]
  ------------------
19953|  29.9k|        {
19954|  29.9k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("binary")))
  ------------------
  |  | 1697|  29.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 29.9k]
  |  |  ------------------
  ------------------
19955|      0|            {
19956|      0|                return false;
19957|      0|            }
19958|       |
19959|  29.9k|            if (current == 0x5F) // Binary data (indefinite length)
  ------------------
  |  Branch (19959:17): [True: 881, False: 29.1k]
  ------------------
19960|    881|            {
19961|    881|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1697|    881|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2, False: 879]
  |  |  ------------------
  ------------------
19962|      2|                {
19963|      2|                    return cbor_indefinite_string_error("binary array", "binary");
19964|      2|                }
19965|    879|                indefinite = true;
19966|    879|                get();
19967|    879|                continue;
19968|    881|            }
19969|       |
19970|       |            // a break marker closes the indefinite-length string; outside
19971|       |            // of one it falls through to the error below
19972|  29.1k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (19972:17): [True: 2.15k, False: 26.9k]
  |  Branch (19972:31): [True: 785, False: 1.36k]
  ------------------
19973|    785|            {
19974|    785|                return true;
19975|    785|            }
19976|       |
19977|  28.3k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_binary_chunk(result, indefinite)))
  ------------------
  |  | 1697|  28.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 28.3k]
  |  |  ------------------
  ------------------
19978|      0|            {
19979|      0|                return false;
19980|      0|            }
19981|       |
19982|  28.3k|            if (!indefinite)
  ------------------
  |  Branch (19982:17): [True: 26.4k, False: 1.90k]
  ------------------
19983|  26.4k|            {
19984|  26.4k|                return true;
19985|  26.4k|            }
19986|       |
19987|  1.90k|            get();
19988|  1.90k|        }
19989|  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_EEE21get_cbor_binary_chunkERNS0_27byte_container_with_subtypeISF_EEb:
19876|  28.3k|    {
19877|  28.3k|        switch (current)
19878|  28.3k|        {
19879|       |            // Binary data (0x00..0x17 bytes follow)
19880|  21.4k|            case 0x40:
  ------------------
  |  Branch (19880:13): [True: 21.4k, False: 6.88k]
  ------------------
19881|  22.9k|            case 0x41:
  ------------------
  |  Branch (19881:13): [True: 1.53k, False: 26.7k]
  ------------------
19882|  23.3k|            case 0x42:
  ------------------
  |  Branch (19882:13): [True: 406, False: 27.8k]
  ------------------
19883|  23.4k|            case 0x43:
  ------------------
  |  Branch (19883:13): [True: 124, False: 28.1k]
  ------------------
19884|  23.6k|            case 0x44:
  ------------------
  |  Branch (19884:13): [True: 209, False: 28.0k]
  ------------------
19885|  23.8k|            case 0x45:
  ------------------
  |  Branch (19885:13): [True: 125, False: 28.1k]
  ------------------
19886|  23.9k|            case 0x46:
  ------------------
  |  Branch (19886:13): [True: 126, False: 28.1k]
  ------------------
19887|  24.1k|            case 0x47:
  ------------------
  |  Branch (19887:13): [True: 185, False: 28.1k]
  ------------------
19888|  24.2k|            case 0x48:
  ------------------
  |  Branch (19888:13): [True: 144, False: 28.1k]
  ------------------
19889|  24.3k|            case 0x49:
  ------------------
  |  Branch (19889:13): [True: 87, False: 28.2k]
  ------------------
19890|  24.4k|            case 0x4A:
  ------------------
  |  Branch (19890:13): [True: 115, False: 28.1k]
  ------------------
19891|  24.6k|            case 0x4B:
  ------------------
  |  Branch (19891:13): [True: 126, False: 28.1k]
  ------------------
19892|  24.7k|            case 0x4C:
  ------------------
  |  Branch (19892:13): [True: 133, False: 28.1k]
  ------------------
19893|  24.8k|            case 0x4D:
  ------------------
  |  Branch (19893:13): [True: 118, False: 28.1k]
  ------------------
19894|  24.9k|            case 0x4E:
  ------------------
  |  Branch (19894:13): [True: 51, False: 28.2k]
  ------------------
19895|  24.9k|            case 0x4F:
  ------------------
  |  Branch (19895:13): [True: 50, False: 28.2k]
  ------------------
19896|  25.0k|            case 0x50:
  ------------------
  |  Branch (19896:13): [True: 104, False: 28.1k]
  ------------------
19897|  25.1k|            case 0x51:
  ------------------
  |  Branch (19897:13): [True: 53, False: 28.2k]
  ------------------
19898|  25.1k|            case 0x52:
  ------------------
  |  Branch (19898:13): [True: 58, False: 28.2k]
  ------------------
19899|  25.2k|            case 0x53:
  ------------------
  |  Branch (19899:13): [True: 56, False: 28.2k]
  ------------------
19900|  25.2k|            case 0x54:
  ------------------
  |  Branch (19900:13): [True: 54, False: 28.2k]
  ------------------
19901|  25.3k|            case 0x55:
  ------------------
  |  Branch (19901:13): [True: 60, False: 28.2k]
  ------------------
19902|  25.3k|            case 0x56:
  ------------------
  |  Branch (19902:13): [True: 48, False: 28.2k]
  ------------------
19903|  25.4k|            case 0x57:
  ------------------
  |  Branch (19903:13): [True: 58, False: 28.2k]
  ------------------
19904|  25.4k|            {
19905|  25.4k|                return get_binary(static_cast<unsigned int>(current) & 0x1Fu, result);
19906|  25.3k|            }
19907|       |
19908|    959|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19908:13): [True: 959, False: 27.3k]
  ------------------
19909|    959|            {
19910|    959|                return get_cbor_sized_bytes<std::uint8_t>("binary", result);
19911|  25.3k|            }
19912|       |
19913|    826|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19913:13): [True: 826, False: 27.4k]
  ------------------
19914|    826|            {
19915|    826|                return get_cbor_sized_bytes<std::uint16_t>("binary", result);
19916|  25.3k|            }
19917|       |
19918|    460|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19918:13): [True: 460, False: 27.8k]
  ------------------
19919|    460|            {
19920|    460|                return get_cbor_sized_bytes<std::uint32_t>("binary", result);
19921|  25.3k|            }
19922|       |
19923|    593|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19923:13): [True: 593, False: 27.7k]
  ------------------
19924|    593|            {
19925|    593|                return get_cbor_sized_bytes<std::uint64_t>("binary", result);
19926|  25.3k|            }
19927|       |
19928|     22|            default:
  ------------------
  |  Branch (19928:13): [True: 22, False: 28.2k]
  ------------------
19929|     22|            {
19930|     22|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x40-0x5B)", "binary", inside_indefinite ? "" : " or indefinite binary array type (0x5F)");
  ------------------
  |  Branch (19930:133): [True: 22, False: 0]
  ------------------
19931|  25.3k|            }
19932|  28.3k|        }
19933|  28.3k|    }
_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_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
23219|  25.4k|    {
23220|  25.4k|        return get_bytes(len, "binary", result);
23221|  25.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_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|  25.8k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  25.8k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|  25.8k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 25.8k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  25.8k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  29.7k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 4.10k, False: 25.6k]
  ------------------
23258|  4.10k|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|  4.10k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 4.05k, False: 44]
  ------------------
23262|  4.10k|                                       ? static_cast<std::size_t>(len)
23263|  4.10k|                                       : chunk_size;
23264|  4.10k|            const std::size_t old_size = result.size();
23265|  4.10k|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|  4.10k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 4.10k, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|  4.10k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|  4.10k|            chars_read += bytes_read;
23273|  4.10k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|  4.10k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 265, False: 3.83k]
  |  |  ------------------
  ------------------
23274|    265|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    265|                result.resize(old_size + bytes_read);
23279|    265|                ++chars_read;
23280|    265|                current = char_traits<char_type>::eof();
23281|    265|                return unexpect_eof(context);
23282|    265|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|  3.83k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|  3.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 3.83k, False: 0]
  ------------------
23285|  3.83k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|  3.83k|        }
23287|  25.6k|        return true;
23288|  25.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_EEE17append_from_blockIjNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  25.8k|    {
23317|  25.8k|        return false;
23318|  25.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_EEE20get_cbor_sized_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    959|    {
19593|    959|        NumberType len{};
19594|    959|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 950, False: 9]
  |  Branch (19594:35): [True: 914, False: 36]
  ------------------
19595|    959|    }
_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_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    950|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    950|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    950|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 950]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    950|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.44k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 531, False: 914]
  ------------------
23258|    531|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    531|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 531, False: 0]
  ------------------
23262|    531|                                       ? static_cast<std::size_t>(len)
23263|    531|                                       : chunk_size;
23264|    531|            const std::size_t old_size = result.size();
23265|    531|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    531|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    531|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 531, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    531|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    531|            chars_read += bytes_read;
23273|    531|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    531|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 36, False: 495]
  |  |  ------------------
  ------------------
23274|     36|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     36|                result.resize(old_size + bytes_read);
23279|     36|                ++chars_read;
23280|     36|                current = char_traits<char_type>::eof();
23281|     36|                return unexpect_eof(context);
23282|     36|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    495|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    495|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 495, False: 0]
  ------------------
23285|    495|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    495|        }
23287|    914|        return true;
23288|    950|    }
_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_EEE17append_from_blockIhNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    950|    {
23317|    950|        return false;
23318|    950|    }
_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_cbor_sized_bytesItNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    826|    {
19593|    826|        NumberType len{};
19594|    826|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 811, False: 15]
  |  Branch (19594:35): [True: 758, False: 53]
  ------------------
19595|    826|    }
_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_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    811|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    811|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    811|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 811]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    811|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.17k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 417, False: 758]
  ------------------
23258|    417|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    417|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 402, False: 15]
  ------------------
23262|    417|                                       ? static_cast<std::size_t>(len)
23263|    417|                                       : chunk_size;
23264|    417|            const std::size_t old_size = result.size();
23265|    417|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    417|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    417|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 417, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    417|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    417|            chars_read += bytes_read;
23273|    417|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    417|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 53, False: 364]
  |  |  ------------------
  ------------------
23274|     53|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     53|                result.resize(old_size + bytes_read);
23279|     53|                ++chars_read;
23280|     53|                current = char_traits<char_type>::eof();
23281|     53|                return unexpect_eof(context);
23282|     53|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    364|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    364|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 364, False: 0]
  ------------------
23285|    364|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    364|        }
23287|    758|        return true;
23288|    811|    }
_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_EEE17append_from_blockItNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    811|    {
23317|    811|        return false;
23318|    811|    }
_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_cbor_sized_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    460|    {
19593|    460|        NumberType len{};
19594|    460|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 444, False: 16]
  |  Branch (19594:35): [True: 372, False: 72]
  ------------------
19595|    460|    }
_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_cbor_sized_bytesImNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    593|    {
19593|    593|        NumberType len{};
19594|    593|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 569, False: 24]
  |  Branch (19594:35): [True: 437, False: 132]
  ------------------
19595|    593|    }
_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_EEE9get_bytesImNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    569|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    569|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    569|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 569]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    569|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    734|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 297, False: 437]
  ------------------
23258|    297|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    297|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 196, False: 101]
  ------------------
23262|    297|                                       ? static_cast<std::size_t>(len)
23263|    297|                                       : chunk_size;
23264|    297|            const std::size_t old_size = result.size();
23265|    297|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    297|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    297|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 297, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    297|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    297|            chars_read += bytes_read;
23273|    297|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    297|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 132, False: 165]
  |  |  ------------------
  ------------------
23274|    132|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    132|                result.resize(old_size + bytes_read);
23279|    132|                ++chars_read;
23280|    132|                current = char_traits<char_type>::eof();
23281|    132|                return unexpect_eof(context);
23282|    132|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    165|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    165|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 165, False: 0]
  ------------------
23285|    165|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    165|        }
23287|    437|        return true;
23288|    569|    }
_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_EEE17append_from_blockImNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    569|    {
23317|    569|        return false;
23318|    569|    }
_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_EEE16enter_cbor_arrayEm:
20225|   106k|    {
20226|   106k|        return enter_array(len) && (len <= 1 || parse_cbor_scalar_run(std::integral_constant<bool, bulk_scan> {}));
  ------------------
  |  Branch (20226:16): [True: 106k, False: 132]
  |  Branch (20226:37): [True: 93.4k, False: 13.0k]
  |  Branch (20226:49): [True: 13.0k, False: 0]
  ------------------
20227|   106k|    }
_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_EEE21parse_cbor_scalar_runENS4_17integral_constantIbLb1EEE:
20115|  13.0k|    {
20116|       |        // nothing pushes onto the stack while the run reads scalars
20117|  13.0k|        std::size_t& remaining = container_stack.back().remaining;
20118|  18.3k|        while (remaining != 0 && ia.bulk_remaining() >= 9)
  ------------------
  |  Branch (20118:16): [True: 17.9k, False: 398]
  |  Branch (20118:34): [True: 15.2k, False: 2.63k]
  ------------------
20119|  15.2k|        {
20120|  15.2k|            const auto* const data = reinterpret_cast<const unsigned char*>(ia.bulk_data());
20121|  15.2k|            const unsigned char head = data[0];
20122|  15.2k|            std::size_t size = 0;
20123|  15.2k|            bool accepted = false;
20124|  15.2k|            switch (head)
20125|  15.2k|            {
20126|    256|                case 0x18:
  ------------------
  |  Branch (20126:17): [True: 256, False: 15.0k]
  ------------------
20127|    256|                    size = 2;
20128|    256|                    accepted = emit_unsigned(data[1]);
20129|    256|                    break;
20130|    253|                case 0x19:
  ------------------
  |  Branch (20130:17): [True: 253, False: 15.0k]
  ------------------
20131|    253|                    size = 3;
20132|    253|                    accepted = emit_unsigned(load_big_endian<std::uint16_t>(data + 1));
20133|    253|                    break;
20134|    120|                case 0x1A:
  ------------------
  |  Branch (20134:17): [True: 120, False: 15.1k]
  ------------------
20135|    120|                    size = 5;
20136|    120|                    accepted = emit_unsigned(load_big_endian<std::uint32_t>(data + 1));
20137|    120|                    break;
20138|    268|                case 0x1B:
  ------------------
  |  Branch (20138:17): [True: 268, False: 15.0k]
  ------------------
20139|    268|                    size = 9;
20140|    268|                    accepted = emit_unsigned(load_big_endian<std::uint64_t>(data + 1));
20141|    268|                    break;
20142|    239|                case 0x38:
  ------------------
  |  Branch (20142:17): [True: 239, False: 15.0k]
  ------------------
20143|    239|                    size = 2;
20144|    239|                    accepted = emit_cbor_negative_integer(data[1]);
20145|    239|                    break;
20146|    249|                case 0x39:
  ------------------
  |  Branch (20146:17): [True: 249, False: 15.0k]
  ------------------
20147|    249|                    size = 3;
20148|    249|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint16_t>(data + 1));
20149|    249|                    break;
20150|    116|                case 0x3A:
  ------------------
  |  Branch (20150:17): [True: 116, False: 15.1k]
  ------------------
20151|    116|                    size = 5;
20152|    116|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint32_t>(data + 1));
20153|    116|                    break;
20154|    465|                case 0x3B:
  ------------------
  |  Branch (20154:17): [True: 465, False: 14.8k]
  ------------------
20155|    465|                    size = 9;
20156|    465|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint64_t>(data + 1));
20157|    465|                    break;
20158|    278|                case 0xF4:
  ------------------
  |  Branch (20158:17): [True: 278, False: 15.0k]
  ------------------
20159|    278|                    size = 1;
20160|    278|                    accepted = sax->boolean(false);
20161|    278|                    break;
20162|    395|                case 0xF5:
  ------------------
  |  Branch (20162:17): [True: 395, False: 14.8k]
  ------------------
20163|    395|                    size = 1;
20164|    395|                    accepted = sax->boolean(true);
20165|    395|                    break;
20166|    398|                case 0xF6:
  ------------------
  |  Branch (20166:17): [True: 398, False: 14.8k]
  ------------------
20167|    398|                    size = 1;
20168|    398|                    accepted = sax->null();
20169|    398|                    break;
20170|    119|                case 0xFA:
  ------------------
  |  Branch (20170:17): [True: 119, False: 15.1k]
  ------------------
20171|    119|                    size = 5;
20172|    119|                    accepted = emit_float(load_big_endian<float>(data + 1));
20173|    119|                    break;
20174|    147|                case 0xFB:
  ------------------
  |  Branch (20174:17): [True: 147, False: 15.1k]
  ------------------
20175|    147|                    size = 9;
20176|    147|                    accepted = emit_float(load_big_endian<double>(data + 1));
20177|    147|                    break;
20178|  11.9k|                default:
  ------------------
  |  Branch (20178:17): [True: 11.9k, False: 3.30k]
  ------------------
20179|  11.9k|                    if (head <= 0x17)
  ------------------
  |  Branch (20179:25): [True: 1.38k, False: 10.5k]
  ------------------
20180|  1.38k|                    {
20181|  1.38k|                        size = 1;
20182|  1.38k|                        accepted = sax->number_unsigned(static_cast<number_unsigned_t>(head));
20183|  1.38k|                    }
20184|  10.5k|                    else if (head >= 0x20 && head <= 0x37)
  ------------------
  |  Branch (20184:30): [True: 10.5k, False: 2]
  |  Branch (20184:46): [True: 600, False: 9.99k]
  ------------------
20185|    600|                    {
20186|    600|                        size = 1;
20187|    600|                        accepted = sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - head));
20188|    600|                    }
20189|  9.99k|                    else
20190|  9.99k|                    {
20191|       |                        // any other value is read by parse_cbor_value
20192|  9.99k|                        return true;
20193|  9.99k|                    }
20194|  1.98k|                    break;
20195|  15.2k|            }
20196|       |            // as if read by get() and get_number(): current is the head byte
20197|  5.29k|            ia.bulk_skip(size);
20198|  5.29k|            chars_read += size;
20199|  5.29k|            current = head;
20200|  5.29k|            --remaining;
20201|  5.29k|            if (JSON_HEDLEY_UNLIKELY(!accepted))
  ------------------
  |  | 1697|  5.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.29k]
  |  |  ------------------
  ------------------
20202|      0|            {
20203|      0|                return false;
20204|      0|            }
20205|  5.29k|        }
20206|  3.03k|        return true;
20207|  13.0k|    }
_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_EEE15load_big_endianItEET_PKh:
20087|    502|    {
20088|    502|        NumberType result{};
20089|    502|        std::memcpy(&result, data, sizeof(NumberType));
20090|    502|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 502, False: 0]
  ------------------
20091|    502|        {
20092|    502|            byte_swap(result);
20093|    502|        }
20094|    502|        return result;
20095|    502|    }
_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_EEE15load_big_endianIjEET_PKh:
20087|    236|    {
20088|    236|        NumberType result{};
20089|    236|        std::memcpy(&result, data, sizeof(NumberType));
20090|    236|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 236, False: 0]
  ------------------
20091|    236|        {
20092|    236|            byte_swap(result);
20093|    236|        }
20094|    236|        return result;
20095|    236|    }
_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_EEE15load_big_endianImEET_PKh:
20087|    733|    {
20088|    733|        NumberType result{};
20089|    733|        std::memcpy(&result, data, sizeof(NumberType));
20090|    733|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 733, False: 0]
  ------------------
20091|    733|        {
20092|    733|            byte_swap(result);
20093|    733|        }
20094|    733|        return result;
20095|    733|    }
_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|    752|    {
23035|    752|        const auto result = static_cast<number_float_t>(number);
23036|    752|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  1.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 752]
  |  |  |  Branch (1697:94): [True: 741, False: 11]
  |  |  |  Branch (1697:94): [True: 0, False: 741]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|    752|        return sax->number_float(result, no_source);
23041|    752|    }
_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_EEE15load_big_endianIfEET_PKh:
20087|    119|    {
20088|    119|        NumberType result{};
20089|    119|        std::memcpy(&result, data, sizeof(NumberType));
20090|    119|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 119, False: 0]
  ------------------
20091|    119|        {
20092|    119|            byte_swap(result);
20093|    119|        }
20094|    119|        return result;
20095|    119|    }
_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|    752|    {
22898|    752|        static_assert(sizeof(float) == sizeof(std::uint32_t), "float must have 32 bits");
22899|    752|        std::uint32_t bits{};
22900|    752|        std::memcpy(&bits, &number, sizeof(bits));
22901|    752|        bits = byteswap(bits);
22902|    752|        std::memcpy(&number, &bits, sizeof(bits));
22903|    752|    }
_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_EEE15load_big_endianIdEET_PKh:
20087|    147|    {
20088|    147|        NumberType result{};
20089|    147|        std::memcpy(&result, data, sizeof(NumberType));
20090|    147|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 147, False: 0]
  ------------------
20091|    147|        {
20092|    147|            byte_swap(result);
20093|    147|        }
20094|    147|        return result;
20095|    147|    }
_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_EEE18get_container_sizeEmRmPKc:
20073|  3.63k|    {
20074|  3.63k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::size_t>(len) || len == detail::unknown_size()))
  ------------------
  |  | 1697|  7.26k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2, False: 3.63k]
  |  |  |  Branch (1697:94): [True: 0, False: 3.63k]
  |  |  |  Branch (1697:94): [True: 2, False: 3.63k]
  |  |  ------------------
  ------------------
20075|      2|        {
20076|      2|            return container_size_error(context);
20077|      2|        }
20078|  3.63k|        result = conditional_static_cast<std::size_t>(len);
20079|  3.63k|        return true;
20080|  3.63k|    }
_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_EEE20container_size_errorEPKc:
23359|      2|    {
23360|      2|        return sax->parse_error(chars_read, get_token_string(), out_of_range::create(exception_id::container_too_large,
23361|      2|                                exception_message(concat("excessive ", what, " size"), "size"), nullptr));
23362|      2|    }
_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|   113k|    {
18631|   113k|        return enter_container(/*is_object*/false, len, type_marker);
18632|   113k|    }
_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|  24.5k|    {
18637|  24.5k|        return enter_container(/*is_object*/true, len, type_marker);
18638|  24.5k|    }
_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|     84|    {
23422|     84|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
23423|     84|    }
_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_EEE14get_half_floatEb:
23054|  5.83k|    {
23055|  5.83k|        const auto byte1_raw = get();
23056|  5.83k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.83k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.83k]
  |  |  ------------------
  ------------------
23057|      0|        {
23058|      0|            return false;
23059|      0|        }
23060|  5.83k|        const auto byte2_raw = get();
23061|  5.83k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.83k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.83k]
  |  |  ------------------
  ------------------
23062|      0|        {
23063|      0|            return false;
23064|      0|        }
23065|       |
23066|  5.83k|        const auto byte1 = static_cast<unsigned char>(byte1_raw);
23067|  5.83k|        const auto byte2 = static_cast<unsigned char>(byte2_raw);
23068|       |
23069|       |        // Code from RFC 8949, Appendix D, Figure 3:
23070|       |        // As half-precision floating-point numbers were only added
23071|       |        // to IEEE 754 in 2008, today's programming platforms often
23072|       |        // still only have limited support for them. It is very
23073|       |        // easy to include at least decoding support for them even
23074|       |        // without such support. An example of a small decoder for
23075|       |        // half-precision floating-point numbers in the C language
23076|       |        // is shown in Fig. 3.
23077|  5.83k|        const auto half = little_endian
  ------------------
  |  Branch (23077:27): [True: 0, False: 5.83k]
  ------------------
23078|  5.83k|                          ? static_cast<unsigned int>((byte2 << 8u) + byte1)
23079|  5.83k|                          : static_cast<unsigned int>((byte1 << 8u) + byte2);
23080|  5.83k|        const double val = [&half]
23081|  5.83k|        {
23082|  5.83k|            const int exp = (half >> 10u) & 0x1Fu;
23083|  5.83k|            const unsigned int mant = half & 0x3FFu;
23084|  5.83k|            JSON_ASSERT(exp <= 31);
23085|  5.83k|            JSON_ASSERT(mant <= 1023);
23086|  5.83k|            switch (exp)
23087|  5.83k|            {
23088|  5.83k|                case 0:
23089|  5.83k|                    return std::ldexp(mant, -24);
23090|  5.83k|                case 31:
23091|  5.83k|                    return (mant == 0)
23092|  5.83k|                    ? std::numeric_limits<double>::infinity()
23093|  5.83k|                    : std::numeric_limits<double>::quiet_NaN();
23094|  5.83k|                default:
23095|  5.83k|                    return std::ldexp(mant + 1024, exp - 25);
23096|  5.83k|            }
23097|  5.83k|        }();
23098|  5.83k|        return sax->number_float((half & 0x8000u) != 0
  ------------------
  |  Branch (23098:34): [True: 3.53k, False: 2.29k]
  ------------------
23099|  5.83k|                                 ? static_cast<number_float_t>(-val)
23100|  5.83k|                                 : static_cast<number_float_t>(val), no_source);
23101|  5.83k|    }
_ZZN8nlohmann16json_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_EEE14get_half_floatEbENKUlvE_clEv:
23081|  5.81k|        {
23082|  5.81k|            const int exp = (half >> 10u) & 0x1Fu;
23083|  5.81k|            const unsigned int mant = half & 0x3FFu;
23084|  5.81k|            JSON_ASSERT(exp <= 31);
  ------------------
  |  | 2643|  5.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23084:13): [True: 5.81k, False: 0]
  ------------------
23085|  5.81k|            JSON_ASSERT(mant <= 1023);
  ------------------
  |  | 2643|  5.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23085:13): [True: 5.81k, False: 0]
  ------------------
23086|  5.81k|            switch (exp)
23087|  5.81k|            {
23088|  1.17k|                case 0:
  ------------------
  |  Branch (23088:17): [True: 1.17k, False: 4.63k]
  ------------------
23089|  1.17k|                    return std::ldexp(mant, -24);
23090|    918|                case 31:
  ------------------
  |  Branch (23090:17): [True: 918, False: 4.89k]
  ------------------
23091|    918|                    return (mant == 0)
  ------------------
  |  Branch (23091:28): [True: 451, False: 467]
  ------------------
23092|    918|                    ? std::numeric_limits<double>::infinity()
23093|    918|                    : std::numeric_limits<double>::quiet_NaN();
23094|  3.71k|                default:
  ------------------
  |  Branch (23094:17): [True: 3.71k, False: 2.09k]
  ------------------
23095|  3.71k|                    return std::ldexp(mant + 1024, exp - 25);
23096|  5.81k|            }
23097|  5.81k|        }();
_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_EEE14get_cbor_floatIfEEbv:
19552|    649|    {
19553|    649|        NumberType number{};
19554|    649|        return get_number(number) && emit_float(number);
  ------------------
  |  Branch (19554:16): [True: 633, False: 16]
  |  Branch (19554:38): [True: 633, False: 0]
  ------------------
19555|    649|    }
_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|    649|    {
22949|       |        // read in the original format
22950|       |
22951|    649|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|    649|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 649]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|    649|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 633, False: 16]
  |  Branch (22955:34): [Folded, False: 633]
  |  Branch (22955:57): [True: 0, False: 633]
  ------------------
22956|    633|        {
22957|    633|            byte_swap(result);
22958|    633|        }
22959|    649|        return true;
22960|    649|    }
_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|    649|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|    649|        auto new_chars_read = ia.get_elements(&dest);
22859|    649|        chars_read += new_chars_read;
22860|    649|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|    649|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 633]
  |  |  ------------------
  ------------------
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|    633|        return true;
22868|    649|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIfEEmPT_m:
 9778|    649|    {
 9779|       |#if JSON_PRECISE_STREAM_POSITION
 9780|       |        commit_lookahead();
 9781|       |#endif
 9782|    649|#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|    649|        const char* const first = streambuf_access::get_ptr(sb);
 9786|    649|        const auto available = static_cast<std::size_t>(streambuf_access::get_end(sb) - first);
 9787|    649|        if (JSON_HEDLEY_LIKELY(count * sizeof(T) <= available && count * sizeof(T) <= static_cast<std::size_t>((std::numeric_limits<int>::max)())))
  ------------------
  |  | 1696|  1.28k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 633, False: 16]
  |  |  |  Branch (1696:94): [True: 633, False: 16]
  |  |  |  Branch (1696:94): [True: 633, False: 0]
  |  |  ------------------
  ------------------
 9788|    633|        {
 9789|    633|            std::memcpy(dest, first, count * sizeof(T));
 9790|    633|            streambuf_access::bump(sb, static_cast<int>(count * sizeof(T)));
 9791|    633|            return count * sizeof(T);
 9792|    633|        }
 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|    649|    }
_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_EEE14get_cbor_floatIdEEbv:
19552|    918|    {
19553|    918|        NumberType number{};
19554|    918|        return get_number(number) && emit_float(number);
  ------------------
  |  Branch (19554:16): [True: 899, False: 19]
  |  Branch (19554:38): [True: 899, False: 0]
  ------------------
19555|    918|    }
_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|    918|    {
22949|       |        // read in the original format
22950|       |
22951|    918|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|    918|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 918]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|    918|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 899, False: 19]
  |  Branch (22955:34): [Folded, False: 899]
  |  Branch (22955:57): [True: 0, False: 899]
  ------------------
22956|    899|        {
22957|    899|            byte_swap(result);
22958|    899|        }
22959|    918|        return true;
22960|    918|    }
_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|   296k|    {
22841|   296k|        ++chars_read;
22842|   296k|        return current = ia.get_character();
22843|   296k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter13get_characterEv:
 9757|   296k|    {
 9758|   296k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9759|       |        // the character is in the get area: step over it, as sbumpc() does
 9760|   296k|        const char* const next = streambuf_access::get_ptr(sb);
 9761|   296k|        if (JSON_HEDLEY_LIKELY(next != streambuf_access::get_end(sb)))
  ------------------
  |  | 1696|   296k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 290k, False: 6.53k]
  |  |  ------------------
  ------------------
 9762|   290k|        {
 9763|   290k|            current_in_get_area = true;
 9764|   290k|            streambuf_access::bump(sb, 1);
 9765|   290k|            return std::char_traits<char>::to_int_type(*next);
 9766|   290k|        }
 9767|  6.53k|        if (no_get_area)
  ------------------
  |  Branch (9767:13): [True: 0, False: 6.53k]
  ------------------
 9768|      0|        {
 9769|      0|            return get_character_no_get_area();
 9770|      0|        }
 9771|  6.53k|#endif
 9772|  6.53k|        return get_character_slow();
 9773|  6.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter18get_character_slowEv:
 9899|  6.53k|    {
 9900|  6.53k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9901|       |        // the get area is exhausted (get_character() handles the other case),
 9902|       |        // so sbumpc() refills it
 9903|  6.53k|        save_token_segment();
 9904|  6.53k|#endif
 9905|       |
 9906|  6.53k|        auto res = sb->sbumpc();
 9907|       |        // set eof manually, as we don't use the istream interface.
 9908|  6.53k|        if (JSON_HEDLEY_UNLIKELY(res == std::char_traits<char>::eof()))
  ------------------
  |  | 1697|  6.53k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 6.53k, False: 0]
  |  |  ------------------
  ------------------
 9909|  6.53k|        {
 9910|  6.53k|#if !JSON_DISABLE_STREAM_BULK_SCAN
 9911|  6.53k|            current_in_get_area = false;
 9912|  6.53k|#endif
 9913|  6.53k|            is->clear(is->rdstate() | std::ios::eofbit);
 9914|  6.53k|        }
 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|  6.53k|#endif
 9924|  6.53k|        return res;
 9925|  6.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter18save_token_segmentEv:
 9972|  6.53k|    {
 9973|  6.53k|        if (token_segment != nullptr)
  ------------------
  |  Branch (9973:13): [True: 0, False: 6.53k]
  ------------------
 9974|      0|        {
 9975|      0|            token_carry.append(token_segment, streambuf_access::get_end(sb));
 9976|      0|            token_segment = nullptr;
 9977|      0|        }
 9978|  6.53k|    }
_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|    308|    {
23408|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
23409|    308|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
23410|    308|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (23410:51): [True: 87, False: 221]
  ------------------
23411|    308|    }
_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|  8.58k|    ~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|  8.58k|    ~json_sax_dom_binary_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEE:
10719|  8.58k|{
10720|  8.58k|    if (stream.rdbuf() == nullptr)
  ------------------
  |  Branch (10720:9): [True: 0, False: 8.58k]
  ------------------
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|  8.58k|    return input_stream_adapter(stream);
10725|  8.58k|}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2ERNSt3__113basic_istreamIcNS3_11char_traitsIcEEEE:
 9654|  8.58k|        : is(&i), sb(i.rdbuf())
 9655|  8.58k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail18token_carry_bufferC2Ev:
 9305|  17.1k|    token_carry_buffer() = default;
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterD2Ev:
 9633|  17.1k|    {
 9634|       |        // clear stream flags; we use underlying streambuf I/O, do not
 9635|       |        // maintain ifstream flags, except eof
 9636|  17.1k|        if (is != nullptr)
  ------------------
  |  Branch (9636:13): [True: 8.58k, False: 8.58k]
  ------------------
 9637|  8.58k|        {
 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|  8.58k|            if ((is->rdstate() & ~std::ios::eofbit) != 0)
  ------------------
  |  Branch (9646:17): [True: 0, False: 8.58k]
  ------------------
 9647|      0|            {
 9648|      0|                is->clear(is->rdstate() & std::ios::eofbit);
 9649|      0|            }
 9650|  8.58k|        }
 9651|  17.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18token_carry_bufferD2Ev:
 9314|  34.3k|    ~token_carry_buffer() = default;
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborINS2_21__list_const_iteratorIhPvEESI_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SK_SL_bbNS0_6detail18cbor_tag_handler_tENSO_15error_handler_tE:
45865|  8.58k|    {
45866|  8.58k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
45867|  8.58k|    }
_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|  8.58k|    {
45630|  8.58k|        basic_json result;
45631|  8.58k|        detail::json_sax_dom_binary_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
45632|  8.58k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
45633|  8.58k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (45633:13): [True: 0, False: 8.58k]
  ------------------
45634|      0|        {
45635|      0|            result = value_t::discarded;
45636|      0|        }
45637|  8.58k|        return result;
45638|  8.58k|    }
_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|  8.58k|        : json_sax_dom_error_state(allow_exceptions_), root(r), m_lexer_ref(lexer_)
17427|  8.58k|    {}
_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|  8.58k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
18478|  8.58k|    {
18479|  8.58k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
18480|  8.58k|    }
_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|  8.58k|    {
18503|  8.58k|        sax = sax_;
18504|  8.58k|        container_stack.clear();
18505|  8.58k|        bon8_pushback_size = 0;
18506|  8.58k|        bool result = false;
18507|       |
18508|  8.58k|        switch (input_format)
18509|  8.58k|        {
18510|      0|            case input_format_t::bson:
  ------------------
  |  Branch (18510:13): [True: 0, False: 8.58k]
  ------------------
18511|      0|                result = parse_bson_internal();
18512|      0|                break;
18513|       |
18514|  8.58k|            case input_format_t::cbor:
  ------------------
  |  Branch (18514:13): [True: 8.58k, False: 0]
  ------------------
18515|  8.58k|                result = parse_cbor_internal(tag_handler);
18516|  8.58k|                break;
18517|       |
18518|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (18518:13): [True: 0, False: 8.58k]
  ------------------
18519|      0|                result = parse_msgpack_internal();
18520|      0|                break;
18521|       |
18522|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (18522:13): [True: 0, False: 8.58k]
  ------------------
18523|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (18523:13): [True: 0, False: 8.58k]
  ------------------
18524|      0|                result = parse_ubjson_internal();
18525|      0|                break;
18526|       |
18527|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (18527:13): [True: 0, False: 8.58k]
  ------------------
18528|      0|                result = parse_bon8_internal();
18529|      0|                break;
18530|       |
18531|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (18531:13): [True: 0, False: 8.58k]
  ------------------
18532|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (18532:13): [True: 0, False: 8.58k]
  ------------------
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|  8.58k|        }
18535|       |
18536|       |        // strict mode: next byte must be EOF
18537|  4.38k|        if (result && strict)
  ------------------
  |  Branch (18537:13): [True: 4.38k, False: 0]
  |  Branch (18537:23): [True: 4.38k, False: 0]
  ------------------
18538|  4.38k|        {
18539|  4.38k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (18539:17): [True: 0, False: 4.38k]
  |  Branch (18539:59): [True: 0, False: 4.38k]
  ------------------
18540|      0|            {
18541|      0|                get_ignore_noop();
18542|      0|            }
18543|  4.38k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (18543:22): [True: 0, False: 4.38k]
  ------------------
18544|      0|            {
18545|       |                // a string that ends a container hands back the byte after it
18546|      0|                get_bon8();
18547|      0|            }
18548|  4.38k|            else
18549|  4.38k|            {
18550|  4.38k|                get();
18551|  4.38k|            }
18552|       |
18553|  4.38k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  4.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 116, False: 4.27k]
  |  |  ------------------
  ------------------
18554|    116|            {
18555|    116|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
18556|    116|            }
18557|  4.38k|        }
18558|       |
18559|  4.27k|        return result;
18560|  4.38k|    }
_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|  3.71k|    {
23344|  3.71k|        return sax->parse_error(chars_read, "<end of file>",
23345|  3.71k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
23346|  3.71k|    }
_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|  4.02k|    {
23455|  4.02k|        std::string error_msg = "syntax error while parsing ";
23456|  4.02k|        error_msg += input_format_name(input_format);
23457|       |
23458|  4.02k|        return concat(error_msg, ' ', context, ": ", detail);
23459|  4.02k|    }
_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|   137k|    {
18619|   137k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1697|   275k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 137k]
  |  |  |  Branch (1697:94): [True: 24.5k, False: 113k]
  |  |  ------------------
  ------------------
18620|      0|        {
18621|      0|            return false;
18622|      0|        }
18623|       |
18624|   137k|        container_stack.emplace_back(len, is_object, type_marker);
18625|   137k|        return true;
18626|   137k|    }
_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|  24.5k|    {
17484|  24.5k|        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|  24.5k|        return check_container_size(*this, len, "object", ref_stack.back());
17492|  24.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_valueINS1_7value_tEEEPSG_OT_:
17566|   137k|    {
17567|   137k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 5.94k, False: 131k]
  ------------------
17568|  5.94k|        {
17569|  5.94k|            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|  5.94k|            return &root;
17576|  5.94k|        }
17577|       |
17578|   131k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   131k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 115k, False: 16.6k]
  |  Branch (17578:9): [True: 16.6k, False: 0]
  |  Branch (17578:9): [True: 131k, False: 0]
  ------------------
17579|       |
17580|   131k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 115k, False: 16.6k]
  ------------------
17581|   115k|        {
17582|   115k|            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|   115k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   115k|        }
17590|       |
17591|  16.6k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  16.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 16.6k, False: 0]
  ------------------
17592|  16.6k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  16.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 16.6k, False: 0]
  ------------------
17593|  16.6k|        *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|  16.6k|        return object_element;
17600|  16.6k|    }
_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|   137k|{
16180|   137k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1697|   267k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 281, False: 137k]
  |  |  |  Branch (1697:94): [True: 129k, False: 8.04k]
  |  |  |  Branch (1697:94): [True: 281, False: 129k]
  |  |  ------------------
  ------------------
16181|    281|    {
16182|    281|        return container_too_large_error(sax, len, kind, ref);
16183|    281|    }
16184|   137k|    return true;
16185|   137k|}
_ZN8nlohmann16json_abi_v3_12_06detail25container_too_large_errorINS1_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_:
16173|    281|{
16174|    281|    return sax.parse_error(0, "", out_of_range::create(exception_id::container_too_large, concat("excessive ", kind, " size: ", std::to_string(len)), ref));
16175|    281|}
_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|   113k|    {
17521|   113k|        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|   113k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1697|   113k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 113k]
  |  |  ------------------
  ------------------
17529|      0|        {
17530|      0|            return false;
17531|      0|        }
17532|       |
17533|   113k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (17533:13): [True: 106k, False: 6.67k]
  ------------------
17534|   106k|        {
17535|   106k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
17536|   106k|        }
17537|       |
17538|   113k|        return true;
17539|   113k|    }
_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|   137k|            : 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|   102k|    {
18651|   102k|        const bool is_object = container_stack.back().is_object;
18652|   102k|        container_stack.pop_back();
18653|   102k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (18653:16): [True: 16.4k, False: 85.7k]
  ------------------
18654|   102k|    }
_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|  16.4k|    {
17507|  16.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  16.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17507:9): [True: 16.4k, False: 0]
  ------------------
17508|  16.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  16.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17508:9): [True: 16.4k, False: 0]
  ------------------
17509|       |
17510|       |#if JSON_DIAGNOSTIC_POSITIONS
17511|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17512|       |#endif
17513|       |
17514|  16.4k|        ref_stack.back()->set_parents();
17515|  16.4k|        ref_stack.pop_back();
17516|  16.4k|        return true;
17517|  16.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_EEE9end_arrayEv:
17542|  85.7k|    {
17543|  85.7k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  85.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17543:9): [True: 85.7k, False: 0]
  ------------------
17544|  85.7k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2643|  85.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17544:9): [True: 85.7k, 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.7k|        ref_stack.back()->set_parents();
17551|  85.7k|        ref_stack.pop_back();
17552|  85.7k|        return true;
17553|  85.7k|    }
_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|  99.2k|    {
23327|  99.2k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  99.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 3.33k, False: 95.9k]
  |  |  ------------------
  ------------------
23328|  3.33k|        {
23329|  3.33k|            return report_eof(context);
23330|  3.33k|        }
23331|  95.9k|        return true;
23332|  99.2k|    }
_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_EEE17check_string_utf8ERSC_PKc:
23163|  50.3k|    {
23164|  50.3k|        return error_handler == error_handler_t::keep || check_string_utf8_handler(result, context);
  ------------------
  |  Branch (23164:16): [True: 50.3k, False: 0]
  |  Branch (23164:58): [True: 0, False: 0]
  ------------------
23165|  50.3k|    }
_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|  34.7k|    {
17496|  34.7k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  34.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17496:9): [True: 34.7k, False: 0]
  ------------------
17497|  34.7k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  34.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17497:9): [True: 34.7k, 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|  34.7k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](std::move(val)));
17502|  34.7k|        return true;
17503|  34.7k|    }
_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.06k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  1.06k|        auto new_chars_read = ia.get_elements(&dest);
22859|  1.06k|        chars_read += new_chars_read;
22860|  1.06k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  1.06k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 19, False: 1.04k]
  |  |  ------------------
  ------------------
22861|     19|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     19|            ++chars_read;
22864|     19|            static_cast<void>(report_eof(context));
22865|     19|            return false;
22866|     19|        }
22867|  1.04k|        return true;
22868|  1.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIdEEmPT_m:
10174|  1.06k|    {
10175|  1.06k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  1.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIdEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  1.06k|    {
10255|  1.06k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  9.47k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 8.42k, False: 1.04k]
  ------------------
10257|  8.42k|        {
10258|  8.42k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  8.42k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 8.40k, False: 19]
  |  |  ------------------
  ------------------
10259|  8.40k|            {
10260|  8.40k|                ptr[read_index] = static_cast<char>(*current);
10261|  8.40k|                std::advance(current, 1);
10262|  8.40k|            }
10263|     19|            else
10264|     19|            {
10265|     19|                return read_index;
10266|     19|            }
10267|  8.42k|        }
10268|  1.04k|        return count * sizeof(T);
10269|  1.06k|    }
_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.04k|    {
22888|  1.04k|        static_assert(sizeof(double) == sizeof(std::uint64_t), "double must have 64 bits");
22889|  1.04k|        std::uint64_t bits{};
22890|  1.04k|        std::memcpy(&bits, &number, sizeof(bits));
22891|  1.04k|        bits = byteswap(bits);
22892|  1.04k|        std::memcpy(&number, &bits, sizeof(bits));
22893|  1.04k|    }
_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.04k|    {
23035|  1.04k|        const auto result = static_cast<number_float_t>(number);
23036|  1.04k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  2.08k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.04k]
  |  |  |  Branch (1697:94): [True: 1.04k, False: 3]
  |  |  |  Branch (1697:94): [True: 0, False: 1.04k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  1.04k|        return sax->number_float(result, no_source);
23041|  1.04k|    }
_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|    618|    {
23444|    618|        return hex_byte(static_cast<std::uint8_t>(current));
23445|    618|    }
_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|  8.02k|    {
17462|  8.02k|        handle_value(val);
17463|  8.02k|        return true;
17464|  8.02k|    }
_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|  8.02k|    {
17567|  8.02k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 587, False: 7.44k]
  ------------------
17568|    587|        {
17569|    587|            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|    587|            return &root;
17576|    587|        }
17577|       |
17578|  7.44k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  7.44k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 6.69k, False: 751]
  |  Branch (17578:9): [True: 751, False: 0]
  |  Branch (17578:9): [True: 7.44k, False: 0]
  ------------------
17579|       |
17580|  7.44k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 6.69k, False: 751]
  ------------------
17581|  6.69k|        {
17582|  6.69k|            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|  6.69k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  6.69k|        }
17590|       |
17591|    751|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|    751|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 751, False: 0]
  ------------------
17592|    751|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|    751|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 751, False: 0]
  ------------------
17593|    751|        *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|    751|        return object_element;
17600|    751|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIcEEmPT_m:
10174|  19.2k|    {
10175|  19.2k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  19.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIcEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  19.2k|    {
10255|  19.2k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|   116k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 97.8k, False: 18.7k]
  ------------------
10257|  97.8k|        {
10258|  97.8k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  97.8k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 97.2k, False: 588]
  |  |  ------------------
  ------------------
10259|  97.2k|            {
10260|  97.2k|                ptr[read_index] = static_cast<char>(*current);
10261|  97.2k|                std::advance(current, 1);
10262|  97.2k|            }
10263|    588|            else
10264|    588|            {
10265|    588|                return read_index;
10266|    588|            }
10267|  97.8k|        }
10268|  18.7k|        return count * sizeof(T);
10269|  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_EEE6stringERSC_:
17467|  16.2k|    {
17468|       |        // json_sax documents that the passed value may be moved from,
17469|       |        // so hand the buffer over instead of copying it
17470|  16.2k|        handle_value(std::move(val));
17471|  16.2k|        return true;
17472|  16.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_valueISC_EEPSG_OT_:
17566|  16.2k|    {
17567|  16.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 460, False: 15.7k]
  ------------------
17568|    460|        {
17569|    460|            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|    460|            return &root;
17576|    460|        }
17577|       |
17578|  15.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  15.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 11.5k, False: 4.25k]
  |  Branch (17578:9): [True: 4.25k, False: 0]
  |  Branch (17578:9): [True: 15.7k, False: 0]
  ------------------
17579|       |
17580|  15.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 11.5k, False: 4.25k]
  ------------------
17581|  11.5k|        {
17582|  11.5k|            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|  11.5k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  11.5k|        }
17590|       |
17591|  4.25k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.25k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.25k, False: 0]
  ------------------
17592|  4.25k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.25k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.25k, False: 0]
  ------------------
17593|  4.25k|        *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.25k|        return object_element;
17600|  4.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIhEEmPT_m:
10174|  10.3k|    {
10175|  10.3k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  10.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIhEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  10.3k|    {
10255|  10.3k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  46.7k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 36.8k, False: 9.81k]
  ------------------
10257|  36.8k|        {
10258|  36.8k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  36.8k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 36.3k, False: 541]
  |  |  ------------------
  ------------------
10259|  36.3k|            {
10260|  36.3k|                ptr[read_index] = static_cast<char>(*current);
10261|  36.3k|                std::advance(current, 1);
10262|  36.3k|            }
10263|    541|            else
10264|    541|            {
10265|    541|                return read_index;
10266|    541|            }
10267|  36.8k|        }
10268|  9.81k|        return count * sizeof(T);
10269|  10.3k|    }
_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_EEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
17475|  27.2k|    {
17476|       |        // json_sax documents that the passed value may be moved from,
17477|       |        // so hand the buffer over instead of copying it
17478|  27.2k|        handle_value(std::move(val));
17479|  27.2k|        return true;
17480|  27.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_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
17566|  27.2k|    {
17567|  27.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 107, False: 27.1k]
  ------------------
17568|    107|        {
17569|    107|            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|    107|            return &root;
17576|    107|        }
17577|       |
17578|  27.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  27.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 24.3k, False: 2.71k]
  |  Branch (17578:9): [True: 2.71k, False: 0]
  |  Branch (17578:9): [True: 27.1k, False: 0]
  ------------------
17579|       |
17580|  27.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 24.3k, False: 2.71k]
  ------------------
17581|  24.3k|        {
17582|  24.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|  24.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  24.3k|        }
17590|       |
17591|  2.71k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 2.71k, False: 0]
  ------------------
17592|  2.71k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 2.71k, False: 0]
  ------------------
17593|  2.71k|        *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|  2.71k|        return object_element;
17600|  2.71k|    }
_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_numberIhLb0EEEbRT_:
22948|  5.00k|    {
22949|       |        // read in the original format
22950|       |
22951|  5.00k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  5.00k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.00k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  5.00k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 4.95k, False: 55]
  |  Branch (22955:34): [Folded, False: 4.95k]
  |  Branch (22955:57): [True: 0, False: 4.95k]
  ------------------
22956|  4.95k|        {
22957|  4.95k|            byte_swap(result);
22958|  4.95k|        }
22959|  5.00k|        return true;
22960|  5.00k|    }
_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_toIhEEbRT_PKc:
22855|  5.00k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  5.00k|        auto new_chars_read = ia.get_elements(&dest);
22859|  5.00k|        chars_read += new_chars_read;
22860|  5.00k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  5.00k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 55, False: 4.95k]
  |  |  ------------------
  ------------------
22861|     55|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     55|            ++chars_read;
22864|     55|            static_cast<void>(report_eof(context));
22865|     55|            return false;
22866|     55|        }
22867|  4.95k|        return true;
22868|  5.00k|    }
_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_swapIhEEvRT_:
22907|  4.95k|    {
22908|  4.95k|        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|  4.95k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  4.95k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 0, False: 4.95k]
  ------------------
22924|      0|            {
22925|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|      0|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.95k|    }
_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|  4.57k|    {
17444|  4.57k|        handle_value(val);
17445|  4.57k|        return true;
17446|  4.57k|    }
_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|  4.57k|    {
17567|  4.57k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3, False: 4.57k]
  ------------------
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|  4.57k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 3.65k, False: 924]
  |  Branch (17578:9): [True: 924, False: 0]
  |  Branch (17578:9): [True: 4.57k, False: 0]
  ------------------
17579|       |
17580|  4.57k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 3.65k, False: 924]
  ------------------
17581|  3.65k|        {
17582|  3.65k|            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|  3.65k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  3.65k|        }
17590|       |
17591|    924|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|    924|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 924, False: 0]
  ------------------
17592|    924|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|    924|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 924, False: 0]
  ------------------
17593|    924|        *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|    924|        return object_element;
17600|    924|    }
_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|  3.58k|    {
17438|  3.58k|        handle_value(nullptr);
17439|  3.58k|        return true;
17440|  3.58k|    }
_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|  3.58k|    {
17567|  3.58k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 2, False: 3.58k]
  ------------------
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|  3.58k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.58k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 2.52k, False: 1.06k]
  |  Branch (17578:9): [True: 1.06k, False: 0]
  |  Branch (17578:9): [True: 3.58k, False: 0]
  ------------------
17579|       |
17580|  3.58k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 2.52k, False: 1.06k]
  ------------------
17581|  2.52k|        {
17582|  2.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|  2.52k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  2.52k|        }
17590|       |
17591|  1.06k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.06k, False: 0]
  ------------------
17592|  1.06k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.06k, False: 0]
  ------------------
17593|  1.06k|        *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.06k|        return object_element;
17600|  1.06k|    }
_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|  19.0k|    {
17450|  19.0k|        handle_value(val);
17451|  19.0k|        return true;
17452|  19.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|  19.0k|    {
17567|  19.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 299, False: 18.7k]
  ------------------
17568|    299|        {
17569|    299|            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|    299|            return &root;
17576|    299|        }
17577|       |
17578|  18.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  18.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 13.7k, False: 5.06k]
  |  Branch (17578:9): [True: 5.06k, False: 0]
  |  Branch (17578:9): [True: 18.7k, False: 0]
  ------------------
17579|       |
17580|  18.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 13.7k, False: 5.06k]
  ------------------
17581|  13.7k|        {
17582|  13.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|  13.7k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  13.7k|        }
17590|       |
17591|  5.06k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  5.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 5.06k, False: 0]
  ------------------
17592|  5.06k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  5.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 5.06k, False: 0]
  ------------------
17593|  5.06k|        *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|  5.06k|        return object_element;
17600|  5.06k|    }
_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|  23.4k|    {
17456|  23.4k|        handle_value(val);
17457|  23.4k|        return true;
17458|  23.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_valueIRmEEPSG_OT_:
17566|  23.4k|    {
17567|  23.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 255, False: 23.2k]
  ------------------
17568|    255|        {
17569|    255|            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|    255|            return &root;
17576|    255|        }
17577|       |
17578|  23.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 20.2k, False: 3.00k]
  |  Branch (17578:9): [True: 3.00k, False: 0]
  |  Branch (17578:9): [True: 23.2k, False: 0]
  ------------------
17579|       |
17580|  23.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 20.2k, False: 3.00k]
  ------------------
17581|  20.2k|        {
17582|  20.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|  20.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  20.2k|        }
17590|       |
17591|  3.00k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.00k, False: 0]
  ------------------
17592|  3.00k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.00k, False: 0]
  ------------------
17593|  3.00k|        *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.00k|        return object_element;
17600|  3.00k|    }
_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_floatIeEEbT_:
23034|    416|    {
23035|    416|        const auto result = static_cast<number_float_t>(number);
23036|    416|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|    832|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 416]
  |  |  |  Branch (1697:94): [True: 416, False: 0]
  |  |  |  Branch (1697:94): [True: 0, False: 416]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|    416|        return sax->number_float(result, no_source);
23041|    416|    }
_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_toImEEbRT_PKc:
22855|  4.25k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  4.25k|        auto new_chars_read = ia.get_elements(&dest);
22859|  4.25k|        chars_read += new_chars_read;
22860|  4.25k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  4.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 116, False: 4.14k]
  |  |  ------------------
  ------------------
22861|    116|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|    116|            ++chars_read;
22864|    116|            static_cast<void>(report_eof(context));
22865|    116|            return false;
22866|    116|        }
22867|  4.14k|        return true;
22868|  4.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsImEEmPT_m:
10174|  4.25k|    {
10175|  4.25k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  4.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implImEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  4.25k|    {
10255|  4.25k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  37.5k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 33.4k, False: 4.14k]
  ------------------
10257|  33.4k|        {
10258|  33.4k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  33.4k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 33.3k, False: 116]
  |  |  ------------------
  ------------------
10259|  33.3k|            {
10260|  33.3k|                ptr[read_index] = static_cast<char>(*current);
10261|  33.3k|                std::advance(current, 1);
10262|  33.3k|            }
10263|    116|            else
10264|    116|            {
10265|    116|                return read_index;
10266|    116|            }
10267|  33.4k|        }
10268|  4.14k|        return count * sizeof(T);
10269|  4.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_EEE9byte_swapImEEvRT_:
22907|  4.14k|    {
22908|  4.14k|        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|  4.14k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  20.7k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 16.5k, False: 4.14k]
  ------------------
22924|  16.5k|            {
22925|  16.5k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  16.5k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.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_EEE13emit_unsignedImEEbT_:
23008|    885|    {
23009|    885|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    885|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 885, False: 0]
  |  |  ------------------
  ------------------
23010|    885|        {
23011|    885|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    885|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    885|    }
_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_cbor_internalENS1_18cbor_tag_handler_tE:
20247|  8.58k|    {
20248|       |        // whether the next value starts at a fresh byte or at the one already
20249|       |        // read into `current`
20250|  8.58k|        bool fetch = true;
20251|       |
20252|       |        // the key currently being read; hoisted out of the loop so that its
20253|       |        // capacity is reused across elements and across nesting levels
20254|  8.58k|        string_t key;
20255|       |
20256|   350k|        while (true)
  ------------------
  |  Branch (20256:16): [True: 346k, Folded]
  ------------------
20257|   346k|        {
20258|   346k|            if (!container_stack.empty())
  ------------------
  |  Branch (20258:17): [True: 337k, False: 8.58k]
  ------------------
20259|   337k|            {
20260|       |                // a copy, not a reference: it must stay valid across the
20261|       |                // pop_back() below, which destroys the container_stack element
20262|       |                // it would otherwise alias
20263|   337k|                const container_frame top = container_stack.back();
20264|   337k|                const bool is_object = top.is_object;
20265|   337k|                bool at_end = false;
20266|       |
20267|   337k|                if (top.remaining != npos)
  ------------------
  |  Branch (20267:21): [True: 233k, False: 104k]
  ------------------
20268|   233k|                {
20269|       |                    // definite length: the container ends once its elements
20270|       |                    // have been read
20271|   233k|                    at_end = (top.remaining == 0);
20272|   233k|                    if (!at_end)
  ------------------
  |  Branch (20272:25): [True: 133k, False: 99.6k]
  ------------------
20273|   133k|                    {
20274|       |                        // claim the element about to be read
20275|   133k|                        --container_stack.back().remaining;
20276|   133k|                        if (is_object)
  ------------------
  |  Branch (20276:29): [True: 21.6k, False: 111k]
  ------------------
20277|  21.6k|                        {
20278|  21.6k|                            get();
20279|  21.6k|                        }
20280|   133k|                    }
20281|   233k|                    fetch = true;
20282|   233k|                }
20283|   104k|                else
20284|   104k|                {
20285|       |                    // indefinite length: the container ends at a break marker.
20286|       |                    // Testing for it consumes a byte, which is the first byte
20287|       |                    // of the next element when it is not one.
20288|   104k|                    at_end = (get() == 0xFF);
20289|   104k|                    fetch = is_object;
20290|   104k|                }
20291|       |
20292|   337k|                if (at_end)
  ------------------
  |  Branch (20292:21): [True: 102k, False: 235k]
  ------------------
20293|   102k|                {
20294|   102k|                    bool value_complete = false;
20295|   102k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container_and_check(value_complete)))
  ------------------
  |  | 1697|   102k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 102k]
  |  |  ------------------
  ------------------
20296|      0|                    {
20297|      0|                        return false;
20298|      0|                    }
20299|   102k|                    if (value_complete)
  ------------------
  |  Branch (20299:25): [True: 2.67k, False: 99.5k]
  ------------------
20300|  2.67k|                    {
20301|  2.67k|                        return true;
20302|  2.67k|                    }
20303|  99.5k|                    continue;
20304|   102k|                }
20305|       |
20306|   235k|                if (is_object)
  ------------------
  |  Branch (20306:21): [True: 35.3k, False: 199k]
  ------------------
20307|  35.3k|                {
20308|  35.3k|                    if (JSON_HEDLEY_UNLIKELY(!skip_cbor_key_tags(tag_handler)))
  ------------------
  |  | 1697|  35.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 35.3k]
  |  |  ------------------
  ------------------
20309|      0|                    {
20310|      0|                        return false;
20311|      0|                    }
20312|  35.3k|                    if (JSON_HEDLEY_UNLIKELY(!read_object_key<&binary_reader::get_cbor_object_key>(key)))
  ------------------
  |  | 1697|  35.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 35.3k]
  |  |  ------------------
  ------------------
20313|      0|                    {
20314|      0|                        return false;
20315|      0|                    }
20316|  35.3k|                    fetch = true;
20317|  35.3k|                }
20318|   235k|            }
20319|       |
20320|       |            // a tag is not a value of its own: read on until the tagged value
20321|   243k|            bool tag_pending = false;
20322|   243k|            bool item_read = false;
20323|   243k|            do
20324|   243k|            {
20325|   243k|                if (JSON_HEDLEY_UNLIKELY(!parse_cbor_value(fetch, tag_handler, tag_pending, item_read)))
  ------------------
  |  | 1697|   243k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 243k]
  |  |  ------------------
  ------------------
20326|      0|                {
20327|      0|                    return false;
20328|      0|                }
20329|   243k|                fetch = !item_read;
20330|   243k|            }
20331|   243k|            while (tag_pending);
  ------------------
  |  Branch (20331:20): [True: 0, False: 243k]
  ------------------
20332|       |
20333|       |            // a value that opened a container left it on the stack; one that
20334|       |            // did not, and that was not inside a container, was the whole value
20335|   243k|            if (container_stack.empty())
  ------------------
  |  Branch (20335:17): [True: 1.71k, False: 242k]
  ------------------
20336|  1.71k|            {
20337|  1.71k|                return true;
20338|  1.71k|            }
20339|   243k|        }
20340|  8.58k|    }
_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|   102k|    {
18668|   102k|        if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1697|   102k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 102k]
  |  |  ------------------
  ------------------
18669|      0|        {
18670|      0|            return false;
18671|      0|        }
18672|   102k|        value_complete = container_stack.empty();
18673|   102k|        return true;
18674|   102k|    }
_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_EEE18skip_cbor_key_tagsENS1_18cbor_tag_handler_tE:
19765|  35.3k|    {
19766|  35.3k|        if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (19766:13): [True: 35.3k, False: 0]
  ------------------
19767|  35.3k|        {
19768|  35.3k|            return true;
19769|  35.3k|        }
19770|       |
19771|       |        // 0xC0..0xDB: tag with the tag number in the head (0xC0..0xD7) or in
19772|       |        // the 1, 2, 4, or 8 bytes that follow (0xD8..0xDB)
19773|      0|        while (current >= 0xC0 && current <= 0xDB)
  ------------------
  |  Branch (19773:16): [True: 0, False: 0]
  |  Branch (19773:35): [True: 0, False: 0]
  ------------------
19774|      0|        {
19775|      0|            if (current >= 0xD8)
  ------------------
  |  Branch (19775:17): [True: 0, False: 0]
  ------------------
19776|      0|            {
19777|      0|                std::uint64_t tag_to_ignore{};
19778|      0|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_argument(tag_to_ignore)))
  ------------------
  |  | 1697|      0|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19779|      0|                {
19780|      0|                    return false;
19781|      0|                }
19782|      0|            }
19783|      0|            get();
19784|      0|        }
19785|      0|        return true;
19786|      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_EEE17get_cbor_argumentERm:
20005|  3.74k|    {
20006|  3.74k|        switch (current & 0x1F)
20007|  3.74k|        {
20008|  1.21k|            case 0x18: // 1 byte
  ------------------
  |  Branch (20008:13): [True: 1.21k, False: 2.53k]
  ------------------
20009|  1.21k|            {
20010|  1.21k|                std::uint8_t n{};
20011|  1.21k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  1.21k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.21k]
  |  |  ------------------
  ------------------
20012|      0|                {
20013|      0|                    return false;
20014|      0|                }
20015|  1.21k|                value = n;
20016|  1.21k|                return true;
20017|  1.21k|            }
20018|       |
20019|  1.11k|            case 0x19: // 2 bytes
  ------------------
  |  Branch (20019:13): [True: 1.11k, False: 2.63k]
  ------------------
20020|  1.11k|            {
20021|  1.11k|                std::uint16_t n{};
20022|  1.11k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  1.11k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.11k]
  |  |  ------------------
  ------------------
20023|      0|                {
20024|      0|                    return false;
20025|      0|                }
20026|  1.11k|                value = n;
20027|  1.11k|                return true;
20028|  1.11k|            }
20029|       |
20030|    649|            case 0x1A: // 4 bytes
  ------------------
  |  Branch (20030:13): [True: 649, False: 3.09k]
  ------------------
20031|    649|            {
20032|    649|                std::uint32_t n{};
20033|    649|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|    649|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 649]
  |  |  ------------------
  ------------------
20034|      0|                {
20035|      0|                    return false;
20036|      0|                }
20037|    649|                value = n;
20038|    649|                return true;
20039|    649|            }
20040|       |
20041|    768|            case 0x1B: // 8 bytes
  ------------------
  |  Branch (20041:13): [True: 768, False: 2.98k]
  ------------------
20042|    768|            {
20043|    768|                std::uint64_t n{};
20044|    768|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|    768|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 768]
  |  |  ------------------
  ------------------
20045|      0|                {
20046|      0|                    return false;
20047|      0|                }
20048|    768|                value = n;
20049|    768|                return true;
20050|    768|            }
20051|       |
20052|      0|            default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (20052:13): [True: 0, False: 3.74k]
  ------------------
20053|      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 (20053:17): [Folded, False: 0]
  ------------------
20054|      0|                return false;        // LCOV_EXCL_LINE
20055|  3.74k|        }
20056|  3.74k|    }
_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_numberItLb0EEEbRT_:
22948|  4.18k|    {
22949|       |        // read in the original format
22950|       |
22951|  4.18k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  4.18k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 4.18k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  4.18k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 4.10k, False: 80]
  |  Branch (22955:34): [Folded, False: 4.10k]
  |  Branch (22955:57): [True: 0, False: 4.10k]
  ------------------
22956|  4.10k|        {
22957|  4.10k|            byte_swap(result);
22958|  4.10k|        }
22959|  4.18k|        return true;
22960|  4.18k|    }
_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_toItEEbRT_PKc:
22855|  4.18k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  4.18k|        auto new_chars_read = ia.get_elements(&dest);
22859|  4.18k|        chars_read += new_chars_read;
22860|  4.18k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  4.18k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 80, False: 4.10k]
  |  |  ------------------
  ------------------
22861|     80|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     80|            ++chars_read;
22864|     80|            static_cast<void>(report_eof(context));
22865|     80|            return false;
22866|     80|        }
22867|  4.10k|        return true;
22868|  4.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsItEEmPT_m:
10174|  4.18k|    {
10175|  4.18k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  4.18k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implItEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  4.18k|    {
10255|  4.18k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  12.4k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 8.32k, False: 4.10k]
  ------------------
10257|  8.32k|        {
10258|  8.32k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  8.32k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 8.24k, False: 80]
  |  |  ------------------
  ------------------
10259|  8.24k|            {
10260|  8.24k|                ptr[read_index] = static_cast<char>(*current);
10261|  8.24k|                std::advance(current, 1);
10262|  8.24k|            }
10263|     80|            else
10264|     80|            {
10265|     80|                return read_index;
10266|     80|            }
10267|  8.32k|        }
10268|  4.10k|        return count * sizeof(T);
10269|  4.18k|    }
_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_swapItEEvRT_:
22907|  4.10k|    {
22908|  4.10k|        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|  4.10k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  8.21k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.10k, False: 4.10k]
  ------------------
22924|  4.10k|            {
22925|  4.10k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.10k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.10k|    }
_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_numberIjLb0EEEbRT_:
22948|  2.49k|    {
22949|       |        // read in the original format
22950|       |
22951|  2.49k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  2.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.49k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  2.49k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 2.40k, False: 93]
  |  Branch (22955:34): [Folded, False: 2.40k]
  |  Branch (22955:57): [True: 0, False: 2.40k]
  ------------------
22956|  2.40k|        {
22957|  2.40k|            byte_swap(result);
22958|  2.40k|        }
22959|  2.49k|        return true;
22960|  2.49k|    }
_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_toIjEEbRT_PKc:
22855|  2.49k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  2.49k|        auto new_chars_read = ia.get_elements(&dest);
22859|  2.49k|        chars_read += new_chars_read;
22860|  2.49k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  2.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 93, False: 2.40k]
  |  |  ------------------
  ------------------
22861|     93|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     93|            ++chars_read;
22864|     93|            static_cast<void>(report_eof(context));
22865|     93|            return false;
22866|     93|        }
22867|  2.40k|        return true;
22868|  2.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIjEEmPT_m:
10174|  2.49k|    {
10175|  2.49k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|  2.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIjEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|  2.49k|    {
10255|  2.49k|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  12.1k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 9.78k, False: 2.40k]
  ------------------
10257|  9.78k|        {
10258|  9.78k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  9.78k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 9.68k, False: 93]
  |  |  ------------------
  ------------------
10259|  9.68k|            {
10260|  9.68k|                ptr[read_index] = static_cast<char>(*current);
10261|  9.68k|                std::advance(current, 1);
10262|  9.68k|            }
10263|     93|            else
10264|     93|            {
10265|     93|                return read_index;
10266|     93|            }
10267|  9.78k|        }
10268|  2.40k|        return count * sizeof(T);
10269|  2.49k|    }
_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_swapIjEEvRT_:
22907|  2.40k|    {
22908|  2.40k|        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|  2.40k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  7.20k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.80k, False: 2.40k]
  ------------------
22924|  4.80k|            {
22925|  4.80k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.80k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  2.40k|    }
_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_numberImLb0EEEbRT_:
22948|  4.25k|    {
22949|       |        // read in the original format
22950|       |
22951|  4.25k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  4.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 4.25k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  4.25k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 4.14k, False: 116]
  |  Branch (22955:34): [Folded, False: 4.14k]
  |  Branch (22955:57): [True: 0, False: 4.14k]
  ------------------
22956|  4.14k|        {
22957|  4.14k|            byte_swap(result);
22958|  4.14k|        }
22959|  4.25k|        return true;
22960|  4.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_EEE15read_object_keyIXadL_ZNSO_19get_cbor_object_keyERSC_EEEEbSQ_:
18685|  35.3k|    {
18686|  35.3k|        key.clear();
18687|  35.3k|        return (this->*GetKey)(key) && sax->key(key);
  ------------------
  |  Branch (18687:16): [True: 34.7k, False: 585]
  |  Branch (18687:40): [True: 34.7k, False: 0]
  ------------------
18688|  35.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_EEE19get_cbor_object_keyERSC_:
19801|  35.3k|    {
19802|       |        // EOF and major type 3 (text string) are left to get_cbor_string
19803|  35.3k|        if (current == char_traits<char_type>::eof() || (static_cast<unsigned int>(current) & 0xE0u) == 0x60u)
  ------------------
  |  Branch (19803:13): [True: 514, False: 34.8k]
  |  Branch (19803:57): [True: 34.7k, False: 58]
  ------------------
19804|  35.2k|        {
19805|  35.2k|            return get_cbor_string(result, "key");
19806|  35.2k|        }
19807|       |
19808|     58|        const char* found = nullptr;
19809|     58|        switch (static_cast<unsigned int>(current) >> 5u)
19810|     58|        {
19811|     10|            case 0:
  ------------------
  |  Branch (19811:13): [True: 10, False: 48]
  ------------------
19812|     10|                found = "an unsigned integer";
19813|     10|                break;
19814|      7|            case 1:
  ------------------
  |  Branch (19814:13): [True: 7, False: 51]
  ------------------
19815|      7|                found = "a negative integer";
19816|      7|                break;
19817|      9|            case 2:
  ------------------
  |  Branch (19817:13): [True: 9, False: 49]
  ------------------
19818|      9|                found = "a byte string";
19819|      9|                break;
19820|      3|            case 4:
  ------------------
  |  Branch (19820:13): [True: 3, False: 55]
  ------------------
19821|      3|                found = "an array";
19822|      3|                break;
19823|      7|            case 5:
  ------------------
  |  Branch (19823:13): [True: 7, False: 51]
  ------------------
19824|      7|                found = "a map";
19825|      7|                break;
19826|      7|            case 6:
  ------------------
  |  Branch (19826:13): [True: 7, False: 51]
  ------------------
19827|      7|                found = "a tag";
19828|      7|                break;
19829|     15|            default: // major type 7
  ------------------
  |  Branch (19829:13): [True: 15, False: 43]
  ------------------
19830|     15|                switch (current)
19831|     15|                {
19832|      0|                    case 0xF4:
  ------------------
  |  Branch (19832:21): [True: 0, False: 15]
  ------------------
19833|      0|                    case 0xF5:
  ------------------
  |  Branch (19833:21): [True: 0, False: 15]
  ------------------
19834|      0|                        found = "a boolean";
19835|      0|                        break;
19836|      1|                    case 0xF6:
  ------------------
  |  Branch (19836:21): [True: 1, False: 14]
  ------------------
19837|      1|                        found = "null";
19838|      1|                        break;
19839|      1|                    case 0xF7:
  ------------------
  |  Branch (19839:21): [True: 1, False: 14]
  ------------------
19840|      1|                        found = "undefined";
19841|      1|                        break;
19842|      1|                    case 0xF9:
  ------------------
  |  Branch (19842:21): [True: 1, False: 14]
  ------------------
19843|      1|                    case 0xFA:
  ------------------
  |  Branch (19843:21): [True: 0, False: 15]
  ------------------
19844|      1|                    case 0xFB:
  ------------------
  |  Branch (19844:21): [True: 0, False: 15]
  ------------------
19845|      1|                        found = "a floating-point number";
19846|      1|                        break;
19847|      2|                    case 0xFF:
  ------------------
  |  Branch (19847:21): [True: 2, False: 13]
  ------------------
19848|      2|                        found = "a break stop code";
19849|      2|                        break;
19850|     10|                    default:
  ------------------
  |  Branch (19850:21): [True: 10, False: 5]
  ------------------
19851|     10|                        found = "a simple value";
19852|     10|                        break;
19853|     15|                }
19854|     15|                break;
19855|     58|        }
19856|       |
19857|     58|        return unsupported_key_type(found);
19858|     58|    }
_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_cbor_stringERSC_PKc:
19684|  52.2k|    {
19685|       |        // read chunks iteratively, but reject a second indefinite-length
19686|       |        // level as required by RFC 8949, Section 3.2.3
19687|  52.2k|        bool indefinite = false;
19688|       |
19689|       |        // the chunk currently being validated; only used for the chunks of an
19690|       |        // indefinite-length string when the UTF-8 check can do something
19691|  52.2k|        string_t chunk;
19692|       |
19693|  55.4k|        while (true)
  ------------------
  |  Branch (19693:16): [True: 54.8k, Folded]
  ------------------
19694|  54.8k|        {
19695|  54.8k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1697|  54.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 54.8k]
  |  |  ------------------
  ------------------
19696|      0|            {
19697|      0|                return false;
19698|      0|            }
19699|       |
19700|  54.8k|            if (current == 0x7F) // UTF-8 string (indefinite length)
  ------------------
  |  Branch (19700:17): [True: 780, False: 54.0k]
  ------------------
19701|    780|            {
19702|    780|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1697|    780|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1, False: 779]
  |  |  ------------------
  ------------------
19703|      1|                {
19704|      1|                    return cbor_indefinite_string_error("string", "string");
19705|      1|                }
19706|    779|                indefinite = true;
19707|    779|                get();
19708|    779|                continue;
19709|    780|            }
19710|       |
19711|       |            // a break marker closes the indefinite-length string; outside
19712|       |            // of one it falls through to the error below. Every chunk has
19713|       |            // been checked on its own, so there is nothing left to check.
19714|  54.0k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (19714:17): [True: 2.61k, False: 51.4k]
  |  Branch (19714:31): [True: 681, False: 1.93k]
  ------------------
19715|    681|            {
19716|    681|                return true;
19717|    681|            }
19718|       |
19719|  53.3k|            if (!indefinite)
  ------------------
  |  Branch (19719:17): [True: 50.9k, False: 2.47k]
  ------------------
19720|  50.9k|            {
19721|  50.9k|                return get_cbor_string_chunk(result, false) && check_string_utf8(result, context);
  ------------------
  |  Branch (19721:24): [True: 50.3k, False: 605]
  |  Branch (19721:64): [True: 50.3k, False: 0]
  ------------------
19722|  50.9k|            }
19723|       |
19724|  2.47k|            if (error_handler == error_handler_t::keep)
  ------------------
  |  Branch (19724:17): [True: 1.93k, False: 542]
  ------------------
19725|  1.93k|            {
19726|       |                // nothing to check: read the chunk directly into the result
19727|  1.93k|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(result, true)))
  ------------------
  |  | 1697|  1.93k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.93k]
  |  |  ------------------
  ------------------
19728|      0|                {
19729|      0|                    return false;
19730|      0|                }
19731|  1.93k|            }
19732|    542|            else
19733|    542|            {
19734|       |                // RFC 8949, Section 3.2.3: each chunk is a text string of its
19735|       |                // own and must be valid UTF-8 by itself, i.e., a code point
19736|       |                // cannot be spread over two chunks
19737|    542|                chunk.clear();
19738|    542|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(chunk, true) || !check_string_utf8(chunk, context)))
  ------------------
  |  | 1697|    542|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 542]
  |  |  |  Branch (1697:94): [True: 542, False: 0]
  |  |  |  Branch (1697:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19739|      0|                {
19740|      0|                    return false;
19741|      0|                }
19742|    542|                result.append(chunk.data(), chunk.size());
19743|    542|            }
19744|       |
19745|  2.47k|            get();
19746|  2.47k|        }
19747|  52.2k|    }
_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_EEE28cbor_indefinite_string_errorEPKcSQ_:
19565|      3|    {
19566|      3|        return last_byte_error(exception_id::invalid_string_or_size, concat("indefinite-length ", type_name, " is not allowed inside indefinite-length ", type_name, "; last byte: 0x", get_token_string()), context);
19567|      3|    }
_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_EEE21get_cbor_string_chunkERSC_b:
19613|  52.8k|    {
19614|  52.8k|        switch (current)
19615|  52.8k|        {
19616|       |            // UTF-8 string (0x00..0x17 bytes follow)
19617|  31.7k|            case 0x60:
  ------------------
  |  Branch (19617:13): [True: 31.7k, False: 21.1k]
  ------------------
19618|  43.1k|            case 0x61:
  ------------------
  |  Branch (19618:13): [True: 11.4k, False: 41.4k]
  ------------------
19619|  44.0k|            case 0x62:
  ------------------
  |  Branch (19619:13): [True: 887, False: 51.9k]
  ------------------
19620|  44.3k|            case 0x63:
  ------------------
  |  Branch (19620:13): [True: 368, False: 52.4k]
  ------------------
19621|  45.1k|            case 0x64:
  ------------------
  |  Branch (19621:13): [True: 767, False: 52.0k]
  ------------------
19622|  45.6k|            case 0x65:
  ------------------
  |  Branch (19622:13): [True: 471, False: 52.3k]
  ------------------
19623|  45.9k|            case 0x66:
  ------------------
  |  Branch (19623:13): [True: 325, False: 52.5k]
  ------------------
19624|  46.1k|            case 0x67:
  ------------------
  |  Branch (19624:13): [True: 247, False: 52.6k]
  ------------------
19625|  46.6k|            case 0x68:
  ------------------
  |  Branch (19625:13): [True: 437, False: 52.4k]
  ------------------
19626|  46.8k|            case 0x69:
  ------------------
  |  Branch (19626:13): [True: 194, False: 52.6k]
  ------------------
19627|  47.0k|            case 0x6A:
  ------------------
  |  Branch (19627:13): [True: 222, False: 52.6k]
  ------------------
19628|  47.2k|            case 0x6B:
  ------------------
  |  Branch (19628:13): [True: 149, False: 52.7k]
  ------------------
19629|  47.4k|            case 0x6C:
  ------------------
  |  Branch (19629:13): [True: 219, False: 52.6k]
  ------------------
19630|  47.5k|            case 0x6D:
  ------------------
  |  Branch (19630:13): [True: 151, False: 52.7k]
  ------------------
19631|  47.6k|            case 0x6E:
  ------------------
  |  Branch (19631:13): [True: 90, False: 52.7k]
  ------------------
19632|  47.7k|            case 0x6F:
  ------------------
  |  Branch (19632:13): [True: 116, False: 52.7k]
  ------------------
19633|  48.0k|            case 0x70:
  ------------------
  |  Branch (19633:13): [True: 281, False: 52.5k]
  ------------------
19634|  48.1k|            case 0x71:
  ------------------
  |  Branch (19634:13): [True: 113, False: 52.7k]
  ------------------
19635|  48.2k|            case 0x72:
  ------------------
  |  Branch (19635:13): [True: 109, False: 52.7k]
  ------------------
19636|  48.3k|            case 0x73:
  ------------------
  |  Branch (19636:13): [True: 68, False: 52.7k]
  ------------------
19637|  48.5k|            case 0x74:
  ------------------
  |  Branch (19637:13): [True: 185, False: 52.6k]
  ------------------
19638|  48.6k|            case 0x75:
  ------------------
  |  Branch (19638:13): [True: 80, False: 52.7k]
  ------------------
19639|  48.7k|            case 0x76:
  ------------------
  |  Branch (19639:13): [True: 96, False: 52.7k]
  ------------------
19640|  49.0k|            case 0x77:
  ------------------
  |  Branch (19640:13): [True: 365, False: 52.4k]
  ------------------
19641|  49.0k|            {
19642|  49.0k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result);
19643|  48.7k|            }
19644|       |
19645|  1.52k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19645:13): [True: 1.52k, False: 51.3k]
  ------------------
19646|  1.52k|            {
19647|  1.52k|                return get_cbor_sized_bytes<std::uint8_t>("string", result);
19648|  48.7k|            }
19649|       |
19650|  1.07k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19650:13): [True: 1.07k, False: 51.7k]
  ------------------
19651|  1.07k|            {
19652|  1.07k|                return get_cbor_sized_bytes<std::uint16_t>("string", result);
19653|  48.7k|            }
19654|       |
19655|    373|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19655:13): [True: 373, False: 52.4k]
  ------------------
19656|    373|            {
19657|    373|                return get_cbor_sized_bytes<std::uint32_t>("string", result);
19658|  48.7k|            }
19659|       |
19660|    780|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19660:13): [True: 780, False: 52.0k]
  ------------------
19661|    780|            {
19662|    780|                return get_cbor_sized_bytes<std::uint64_t>("string", result);
19663|  48.7k|            }
19664|       |
19665|     25|            default:
  ------------------
  |  Branch (19665:13): [True: 25, False: 52.8k]
  ------------------
19666|     25|            {
19667|     25|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x60-0x7B)", "string", inside_indefinite ? "" : " or indefinite string type (0x7F)");
  ------------------
  |  Branch (19667:133): [True: 24, False: 1]
  ------------------
19668|  48.7k|            }
19669|  52.8k|        }
19670|  52.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_EEE10get_stringIjEEbT_RSC_:
23119|  49.0k|    {
23120|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
23121|       |        // leaves the choice to the decoder), MessagePack (whose spec
23122|       |        // explicitly allows a str object to contain an invalid byte
23123|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
23124|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
23125|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
23126|       |        // @ref error_handler, applied by @ref check_string_utf8 at the call
23127|       |        // site to the whole string or, for an indefinite-length CBOR string,
23128|       |        // to each chunk on its own (RFC 8949, Section 3.2.3).
23129|  49.0k|        return get_bytes(len, "string", result);
23130|  49.0k|    }
_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_EEE9get_bytesIjSC_EEbT_PKcRT0_:
23245|  49.4k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  49.4k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [Folded, False: 49.4k]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  49.4k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 49.4k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  49.4k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  66.5k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 17.4k, False: 49.1k]
  ------------------
23258|  17.4k|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|  17.4k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 17.3k, False: 51]
  ------------------
23262|  17.4k|                                       ? static_cast<std::size_t>(len)
23263|  17.4k|                                       : chunk_size;
23264|  17.4k|            const std::size_t old_size = result.size();
23265|  17.4k|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|  17.4k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|  17.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 17.4k, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|  17.4k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|  17.4k|            chars_read += bytes_read;
23273|  17.4k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|  17.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 286, False: 17.1k]
  |  |  ------------------
  ------------------
23274|    286|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    286|                result.resize(old_size + bytes_read);
23279|    286|                ++chars_read;
23280|    286|                current = char_traits<char_type>::eof();
23281|    286|                return unexpect_eof(context);
23282|    286|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|  17.1k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|  17.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 17.1k, False: 0]
  ------------------
23285|  17.1k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|  17.1k|        }
23287|  49.1k|        return true;
23288|  49.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_EEE17append_from_blockIjSC_EEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  49.4k|    {
23317|  49.4k|        return false;
23318|  49.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_EEE20get_cbor_sized_bytesIhSC_EEbPKcRT0_:
19592|  1.52k|    {
19593|  1.52k|        NumberType len{};
19594|  1.52k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.51k, False: 12]
  |  Branch (19594:35): [True: 1.48k, False: 31]
  ------------------
19595|  1.52k|    }
_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_EEE9get_bytesIhSC_EEbT_PKcRT0_:
23245|  1.51k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  1.51k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [Folded, False: 1.51k]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  1.51k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 1.51k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  1.51k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  2.31k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 826, False: 1.48k]
  ------------------
23258|    826|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    826|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 826, False: 0]
  ------------------
23262|    826|                                       ? static_cast<std::size_t>(len)
23263|    826|                                       : chunk_size;
23264|    826|            const std::size_t old_size = result.size();
23265|    826|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    826|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    826|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 826, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    826|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    826|            chars_read += bytes_read;
23273|    826|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    826|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 31, False: 795]
  |  |  ------------------
  ------------------
23274|     31|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     31|                result.resize(old_size + bytes_read);
23279|     31|                ++chars_read;
23280|     31|                current = char_traits<char_type>::eof();
23281|     31|                return unexpect_eof(context);
23282|     31|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    795|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    795|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 795, False: 0]
  ------------------
23285|    795|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    795|        }
23287|  1.48k|        return true;
23288|  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_EEE17append_from_blockIhSC_EEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  1.51k|    {
23317|  1.51k|        return false;
23318|  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_EEE20get_cbor_sized_bytesItSC_EEbPKcRT0_:
19592|  1.07k|    {
19593|  1.07k|        NumberType len{};
19594|  1.07k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.06k, False: 14]
  |  Branch (19594:35): [True: 990, False: 72]
  ------------------
19595|  1.07k|    }
_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_EEE9get_bytesItSC_EEbT_PKcRT0_:
23245|  1.06k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  1.06k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [Folded, False: 1.06k]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  1.06k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 1.06k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  1.06k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.53k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 540, False: 990]
  ------------------
23258|    540|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    540|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 517, False: 23]
  ------------------
23262|    540|                                       ? static_cast<std::size_t>(len)
23263|    540|                                       : chunk_size;
23264|    540|            const std::size_t old_size = result.size();
23265|    540|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    540|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    540|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 540, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    540|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    540|            chars_read += bytes_read;
23273|    540|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    540|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 72, False: 468]
  |  |  ------------------
  ------------------
23274|     72|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     72|                result.resize(old_size + bytes_read);
23279|     72|                ++chars_read;
23280|     72|                current = char_traits<char_type>::eof();
23281|     72|                return unexpect_eof(context);
23282|     72|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    468|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    468|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 468, False: 0]
  ------------------
23285|    468|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    468|        }
23287|    990|        return true;
23288|  1.06k|    }
_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_EEE17append_from_blockItSC_EEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  1.06k|    {
23317|  1.06k|        return false;
23318|  1.06k|    }
_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_EEE20get_cbor_sized_bytesIjSC_EEbPKcRT0_:
19592|    373|    {
19593|    373|        NumberType len{};
19594|    373|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 357, False: 16]
  |  Branch (19594:35): [True: 275, False: 82]
  ------------------
19595|    373|    }
_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_EEE20get_cbor_sized_bytesImSC_EEbPKcRT0_:
19592|    780|    {
19593|    780|        NumberType len{};
19594|    780|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 761, False: 19]
  |  Branch (19594:35): [True: 562, False: 199]
  ------------------
19595|    780|    }
_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_EEE9get_bytesImSC_EEbT_PKcRT0_:
23245|    761|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    761|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [Folded, False: 761]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|    761|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 761]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    761|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.03k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 473, False: 562]
  ------------------
23258|    473|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    473|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 308, False: 165]
  ------------------
23262|    473|                                       ? static_cast<std::size_t>(len)
23263|    473|                                       : chunk_size;
23264|    473|            const std::size_t old_size = result.size();
23265|    473|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    473|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    473|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 473, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    473|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    473|            chars_read += bytes_read;
23273|    473|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    473|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 199, False: 274]
  |  |  ------------------
  ------------------
23274|    199|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    199|                result.resize(old_size + bytes_read);
23279|    199|                ++chars_read;
23280|    199|                current = char_traits<char_type>::eof();
23281|    199|                return unexpect_eof(context);
23282|    199|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    274|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    274|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 274, False: 0]
  ------------------
23285|    274|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    274|        }
23287|    562|        return true;
23288|    761|    }
_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_EEE17append_from_blockImSC_EEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    761|    {
23317|    761|        return false;
23318|    761|    }
_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_EEE20unsupported_key_typeEPKc:
19576|     58|    {
19577|     58|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
19578|     58|    }
_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_cbor_valueEbNS1_18cbor_tag_handler_tERbSQ_:
19179|   243k|    {
19180|   243k|        tag_pending = false;
19181|   243k|        item_read = false;
19182|       |
19183|   243k|        switch (get_char ? get() : current)
  ------------------
  |  Branch (19183:17): [True: 155k, False: 88.0k]
  ------------------
19184|   243k|        {
19185|       |            // EOF
19186|  1.67k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (19186:13): [True: 1.67k, False: 241k]
  ------------------
19187|  1.67k|                return unexpect_eof("value");
19188|       |
19189|       |            // Integer 0x00..0x17 (0..23)
19190|  9.26k|            case 0x00:
  ------------------
  |  Branch (19190:13): [True: 9.26k, False: 234k]
  ------------------
19191|  10.2k|            case 0x01:
  ------------------
  |  Branch (19191:13): [True: 984, False: 242k]
  ------------------
19192|  10.7k|            case 0x02:
  ------------------
  |  Branch (19192:13): [True: 512, False: 242k]
  ------------------
19193|  11.1k|            case 0x03:
  ------------------
  |  Branch (19193:13): [True: 350, False: 242k]
  ------------------
19194|  11.5k|            case 0x04:
  ------------------
  |  Branch (19194:13): [True: 440, False: 242k]
  ------------------
19195|  12.2k|            case 0x05:
  ------------------
  |  Branch (19195:13): [True: 656, False: 242k]
  ------------------
19196|  12.6k|            case 0x06:
  ------------------
  |  Branch (19196:13): [True: 430, False: 242k]
  ------------------
19197|  12.9k|            case 0x07:
  ------------------
  |  Branch (19197:13): [True: 352, False: 242k]
  ------------------
19198|  13.6k|            case 0x08:
  ------------------
  |  Branch (19198:13): [True: 650, False: 242k]
  ------------------
19199|  14.0k|            case 0x09:
  ------------------
  |  Branch (19199:13): [True: 424, False: 242k]
  ------------------
19200|  14.4k|            case 0x0A:
  ------------------
  |  Branch (19200:13): [True: 357, False: 242k]
  ------------------
19201|  14.7k|            case 0x0B:
  ------------------
  |  Branch (19201:13): [True: 307, False: 243k]
  ------------------
19202|  15.2k|            case 0x0C:
  ------------------
  |  Branch (19202:13): [True: 524, False: 242k]
  ------------------
19203|  15.6k|            case 0x0D:
  ------------------
  |  Branch (19203:13): [True: 428, False: 242k]
  ------------------
19204|  16.4k|            case 0x0E:
  ------------------
  |  Branch (19204:13): [True: 725, False: 242k]
  ------------------
19205|  16.7k|            case 0x0F:
  ------------------
  |  Branch (19205:13): [True: 378, False: 242k]
  ------------------
19206|  17.3k|            case 0x10:
  ------------------
  |  Branch (19206:13): [True: 563, False: 242k]
  ------------------
19207|  18.1k|            case 0x11:
  ------------------
  |  Branch (19207:13): [True: 774, False: 242k]
  ------------------
19208|  18.5k|            case 0x12:
  ------------------
  |  Branch (19208:13): [True: 453, False: 242k]
  ------------------
19209|  18.8k|            case 0x13:
  ------------------
  |  Branch (19209:13): [True: 324, False: 243k]
  ------------------
19210|  19.5k|            case 0x14:
  ------------------
  |  Branch (19210:13): [True: 681, False: 242k]
  ------------------
19211|  19.9k|            case 0x15:
  ------------------
  |  Branch (19211:13): [True: 330, False: 242k]
  ------------------
19212|  20.6k|            case 0x16:
  ------------------
  |  Branch (19212:13): [True: 699, False: 242k]
  ------------------
19213|  20.8k|            case 0x17:
  ------------------
  |  Branch (19213:13): [True: 296, False: 243k]
  ------------------
19214|  20.8k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
19215|       |
19216|    687|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (19216:13): [True: 687, False: 242k]
  ------------------
19217|    687|            {
19218|    687|                std::uint8_t number{};
19219|    687|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19219:24): [True: 681, False: 6]
  |  Branch (19219:46): [True: 681, False: 0]
  ------------------
19220|  20.6k|            }
19221|       |
19222|    564|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (19222:13): [True: 564, False: 242k]
  ------------------
19223|    564|            {
19224|    564|                std::uint16_t number{};
19225|    564|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19225:24): [True: 555, False: 9]
  |  Branch (19225:46): [True: 555, False: 0]
  ------------------
19226|  20.6k|            }
19227|       |
19228|    474|            case 0x1A: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (19228:13): [True: 474, False: 242k]
  ------------------
19229|    474|            {
19230|    474|                std::uint32_t number{};
19231|    474|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19231:24): [True: 460, False: 14]
  |  Branch (19231:46): [True: 460, False: 0]
  ------------------
19232|  20.6k|            }
19233|       |
19234|    905|            case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (19234:13): [True: 905, False: 242k]
  ------------------
19235|    905|            {
19236|    905|                std::uint64_t number{};
19237|    905|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19237:24): [True: 885, False: 20]
  |  Branch (19237:46): [True: 885, False: 0]
  ------------------
19238|  20.6k|            }
19239|       |
19240|       |            // Negative integer -1-0x00..-1-0x17 (-1..-24)
19241|  1.06k|            case 0x20:
  ------------------
  |  Branch (19241:13): [True: 1.06k, False: 242k]
  ------------------
19242|  1.90k|            case 0x21:
  ------------------
  |  Branch (19242:13): [True: 840, False: 242k]
  ------------------
19243|  2.98k|            case 0x22:
  ------------------
  |  Branch (19243:13): [True: 1.08k, False: 242k]
  ------------------
19244|  3.91k|            case 0x23:
  ------------------
  |  Branch (19244:13): [True: 935, False: 242k]
  ------------------
19245|  4.31k|            case 0x24:
  ------------------
  |  Branch (19245:13): [True: 394, False: 242k]
  ------------------
19246|  4.90k|            case 0x25:
  ------------------
  |  Branch (19246:13): [True: 599, False: 242k]
  ------------------
19247|  5.35k|            case 0x26:
  ------------------
  |  Branch (19247:13): [True: 449, False: 242k]
  ------------------
19248|  6.14k|            case 0x27:
  ------------------
  |  Branch (19248:13): [True: 789, False: 242k]
  ------------------
19249|  6.72k|            case 0x28:
  ------------------
  |  Branch (19249:13): [True: 575, False: 242k]
  ------------------
19250|  7.55k|            case 0x29:
  ------------------
  |  Branch (19250:13): [True: 831, False: 242k]
  ------------------
19251|  8.15k|            case 0x2A:
  ------------------
  |  Branch (19251:13): [True: 597, False: 242k]
  ------------------
19252|  9.07k|            case 0x2B:
  ------------------
  |  Branch (19252:13): [True: 926, False: 242k]
  ------------------
19253|  9.45k|            case 0x2C:
  ------------------
  |  Branch (19253:13): [True: 382, False: 242k]
  ------------------
19254|  10.1k|            case 0x2D:
  ------------------
  |  Branch (19254:13): [True: 725, False: 242k]
  ------------------
19255|  10.6k|            case 0x2E:
  ------------------
  |  Branch (19255:13): [True: 499, False: 242k]
  ------------------
19256|  11.4k|            case 0x2F:
  ------------------
  |  Branch (19256:13): [True: 723, False: 242k]
  ------------------
19257|  12.2k|            case 0x30:
  ------------------
  |  Branch (19257:13): [True: 889, False: 242k]
  ------------------
19258|  13.0k|            case 0x31:
  ------------------
  |  Branch (19258:13): [True: 719, False: 242k]
  ------------------
19259|  13.7k|            case 0x32:
  ------------------
  |  Branch (19259:13): [True: 759, False: 242k]
  ------------------
19260|  14.3k|            case 0x33:
  ------------------
  |  Branch (19260:13): [True: 548, False: 242k]
  ------------------
19261|  15.1k|            case 0x34:
  ------------------
  |  Branch (19261:13): [True: 796, False: 242k]
  ------------------
19262|  15.6k|            case 0x35:
  ------------------
  |  Branch (19262:13): [True: 516, False: 242k]
  ------------------
19263|  16.2k|            case 0x36:
  ------------------
  |  Branch (19263:13): [True: 636, False: 242k]
  ------------------
19264|  16.5k|            case 0x37:
  ------------------
  |  Branch (19264:13): [True: 323, False: 243k]
  ------------------
19265|  16.5k|                return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
19266|       |
19267|    617|            case 0x38: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (19267:13): [True: 617, False: 242k]
  ------------------
19268|    617|                return get_cbor_negative_integer<std::uint8_t>();
19269|       |
19270|    605|            case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (19270:13): [True: 605, False: 242k]
  ------------------
19271|    605|                return get_cbor_negative_integer<std::uint16_t>();
19272|       |
19273|    539|            case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (19273:13): [True: 539, False: 242k]
  ------------------
19274|    539|                return get_cbor_negative_integer<std::uint32_t>();
19275|       |
19276|  1.21k|            case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (19276:13): [True: 1.21k, False: 242k]
  ------------------
19277|  1.21k|                return get_cbor_negative_integer<std::uint64_t>();
19278|       |
19279|       |            // Binary data (0x00..0x17 bytes follow)
19280|  20.5k|            case 0x40:
  ------------------
  |  Branch (19280:13): [True: 20.5k, False: 222k]
  ------------------
19281|  21.8k|            case 0x41:
  ------------------
  |  Branch (19281:13): [True: 1.23k, False: 242k]
  ------------------
19282|  22.2k|            case 0x42:
  ------------------
  |  Branch (19282:13): [True: 402, False: 242k]
  ------------------
19283|  22.3k|            case 0x43:
  ------------------
  |  Branch (19283:13): [True: 119, False: 243k]
  ------------------
19284|  22.5k|            case 0x44:
  ------------------
  |  Branch (19284:13): [True: 207, False: 243k]
  ------------------
19285|  22.6k|            case 0x45:
  ------------------
  |  Branch (19285:13): [True: 118, False: 243k]
  ------------------
19286|  22.7k|            case 0x46:
  ------------------
  |  Branch (19286:13): [True: 126, False: 243k]
  ------------------
19287|  22.9k|            case 0x47:
  ------------------
  |  Branch (19287:13): [True: 182, False: 243k]
  ------------------
19288|  23.1k|            case 0x48:
  ------------------
  |  Branch (19288:13): [True: 143, False: 243k]
  ------------------
19289|  23.1k|            case 0x49:
  ------------------
  |  Branch (19289:13): [True: 87, False: 243k]
  ------------------
19290|  23.3k|            case 0x4A:
  ------------------
  |  Branch (19290:13): [True: 115, False: 243k]
  ------------------
19291|  23.4k|            case 0x4B:
  ------------------
  |  Branch (19291:13): [True: 124, False: 243k]
  ------------------
19292|  23.5k|            case 0x4C:
  ------------------
  |  Branch (19292:13): [True: 133, False: 243k]
  ------------------
19293|  23.6k|            case 0x4D:
  ------------------
  |  Branch (19293:13): [True: 116, False: 243k]
  ------------------
19294|  23.7k|            case 0x4E:
  ------------------
  |  Branch (19294:13): [True: 51, False: 243k]
  ------------------
19295|  23.7k|            case 0x4F:
  ------------------
  |  Branch (19295:13): [True: 49, False: 243k]
  ------------------
19296|  23.8k|            case 0x50:
  ------------------
  |  Branch (19296:13): [True: 94, False: 243k]
  ------------------
19297|  23.9k|            case 0x51:
  ------------------
  |  Branch (19297:13): [True: 51, False: 243k]
  ------------------
19298|  23.9k|            case 0x52:
  ------------------
  |  Branch (19298:13): [True: 49, False: 243k]
  ------------------
19299|  24.0k|            case 0x53:
  ------------------
  |  Branch (19299:13): [True: 56, False: 243k]
  ------------------
19300|  24.0k|            case 0x54:
  ------------------
  |  Branch (19300:13): [True: 52, False: 243k]
  ------------------
19301|  24.1k|            case 0x55:
  ------------------
  |  Branch (19301:13): [True: 54, False: 243k]
  ------------------
19302|  24.1k|            case 0x56:
  ------------------
  |  Branch (19302:13): [True: 47, False: 243k]
  ------------------
19303|  24.2k|            case 0x57:
  ------------------
  |  Branch (19303:13): [True: 55, False: 243k]
  ------------------
19304|  25.1k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19304:13): [True: 862, False: 242k]
  ------------------
19305|  25.8k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19305:13): [True: 783, False: 242k]
  ------------------
19306|  26.3k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19306:13): [True: 460, False: 242k]
  ------------------
19307|  26.9k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19307:13): [True: 593, False: 242k]
  ------------------
19308|  27.8k|            case 0x5F: // Binary data (indefinite length)
  ------------------
  |  Branch (19308:13): [True: 879, False: 242k]
  ------------------
19309|  27.8k|            {
19310|  27.8k|                binary_t b;
19311|  27.8k|                return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (19311:24): [True: 27.2k, False: 604]
  |  Branch (19311:46): [True: 27.2k, False: 0]
  ------------------
19312|  26.9k|            }
19313|       |
19314|       |            // UTF-8 string (0x00..0x17 bytes follow)
19315|  7.20k|            case 0x60:
  ------------------
  |  Branch (19315:13): [True: 7.20k, False: 236k]
  ------------------
19316|  8.22k|            case 0x61:
  ------------------
  |  Branch (19316:13): [True: 1.01k, False: 242k]
  ------------------
19317|  8.76k|            case 0x62:
  ------------------
  |  Branch (19317:13): [True: 539, False: 242k]
  ------------------
19318|  9.11k|            case 0x63:
  ------------------
  |  Branch (19318:13): [True: 348, False: 242k]
  ------------------
19319|  9.61k|            case 0x64:
  ------------------
  |  Branch (19319:13): [True: 503, False: 242k]
  ------------------
19320|  10.0k|            case 0x65:
  ------------------
  |  Branch (19320:13): [True: 456, False: 242k]
  ------------------
19321|  10.3k|            case 0x66:
  ------------------
  |  Branch (19321:13): [True: 281, False: 243k]
  ------------------
19322|  10.5k|            case 0x67:
  ------------------
  |  Branch (19322:13): [True: 239, False: 243k]
  ------------------
19323|  10.9k|            case 0x68:
  ------------------
  |  Branch (19323:13): [True: 339, False: 242k]
  ------------------
19324|  11.0k|            case 0x69:
  ------------------
  |  Branch (19324:13): [True: 164, False: 243k]
  ------------------
19325|  11.2k|            case 0x6A:
  ------------------
  |  Branch (19325:13): [True: 200, False: 243k]
  ------------------
19326|  11.4k|            case 0x6B:
  ------------------
  |  Branch (19326:13): [True: 136, False: 243k]
  ------------------
19327|  11.6k|            case 0x6C:
  ------------------
  |  Branch (19327:13): [True: 214, False: 243k]
  ------------------
19328|  11.7k|            case 0x6D:
  ------------------
  |  Branch (19328:13): [True: 150, False: 243k]
  ------------------
19329|  11.8k|            case 0x6E:
  ------------------
  |  Branch (19329:13): [True: 63, False: 243k]
  ------------------
19330|  11.9k|            case 0x6F:
  ------------------
  |  Branch (19330:13): [True: 94, False: 243k]
  ------------------
19331|  12.1k|            case 0x70:
  ------------------
  |  Branch (19331:13): [True: 230, False: 243k]
  ------------------
19332|  12.2k|            case 0x71:
  ------------------
  |  Branch (19332:13): [True: 97, False: 243k]
  ------------------
19333|  12.3k|            case 0x72:
  ------------------
  |  Branch (19333:13): [True: 105, False: 243k]
  ------------------
19334|  12.4k|            case 0x73:
  ------------------
  |  Branch (19334:13): [True: 64, False: 243k]
  ------------------
19335|  12.6k|            case 0x74:
  ------------------
  |  Branch (19335:13): [True: 178, False: 243k]
  ------------------
19336|  12.6k|            case 0x75:
  ------------------
  |  Branch (19336:13): [True: 70, False: 243k]
  ------------------
19337|  12.7k|            case 0x76:
  ------------------
  |  Branch (19337:13): [True: 83, False: 243k]
  ------------------
19338|  12.9k|            case 0x77:
  ------------------
  |  Branch (19338:13): [True: 149, False: 243k]
  ------------------
19339|  14.2k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19339:13): [True: 1.28k, False: 242k]
  ------------------
19340|  15.1k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19340:13): [True: 929, False: 242k]
  ------------------
19341|  15.5k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19341:13): [True: 373, False: 242k]
  ------------------
19342|  16.1k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19342:13): [True: 653, False: 242k]
  ------------------
19343|  16.9k|            case 0x7F: // UTF-8 string (indefinite length)
  ------------------
  |  Branch (19343:13): [True: 778, False: 242k]
  ------------------
19344|  16.9k|            {
19345|  16.9k|                string_t s;
19346|  16.9k|                return get_cbor_string(s) && sax->string(s);
  ------------------
  |  Branch (19346:24): [True: 16.2k, False: 690]
  |  Branch (19346:46): [True: 16.2k, False: 0]
  ------------------
19347|  16.1k|            }
19348|       |
19349|       |            // array (0x00..0x17 data items follow)
19350|  3.99k|            case 0x80:
  ------------------
  |  Branch (19350:13): [True: 3.99k, False: 239k]
  ------------------
19351|  92.9k|            case 0x81:
  ------------------
  |  Branch (19351:13): [True: 88.9k, False: 154k]
  ------------------
19352|  94.6k|            case 0x82:
  ------------------
  |  Branch (19352:13): [True: 1.63k, False: 241k]
  ------------------
19353|  95.0k|            case 0x83:
  ------------------
  |  Branch (19353:13): [True: 410, False: 242k]
  ------------------
19354|  95.3k|            case 0x84:
  ------------------
  |  Branch (19354:13): [True: 354, False: 242k]
  ------------------
19355|  95.7k|            case 0x85:
  ------------------
  |  Branch (19355:13): [True: 383, False: 242k]
  ------------------
19356|  96.0k|            case 0x86:
  ------------------
  |  Branch (19356:13): [True: 300, False: 243k]
  ------------------
19357|  96.9k|            case 0x87:
  ------------------
  |  Branch (19357:13): [True: 878, False: 242k]
  ------------------
19358|  97.4k|            case 0x88:
  ------------------
  |  Branch (19358:13): [True: 499, False: 242k]
  ------------------
19359|  97.8k|            case 0x89:
  ------------------
  |  Branch (19359:13): [True: 426, False: 242k]
  ------------------
19360|  98.1k|            case 0x8A:
  ------------------
  |  Branch (19360:13): [True: 298, False: 243k]
  ------------------
19361|  98.4k|            case 0x8B:
  ------------------
  |  Branch (19361:13): [True: 332, False: 242k]
  ------------------
19362|  98.7k|            case 0x8C:
  ------------------
  |  Branch (19362:13): [True: 273, False: 243k]
  ------------------
19363|  99.3k|            case 0x8D:
  ------------------
  |  Branch (19363:13): [True: 588, False: 242k]
  ------------------
19364|  99.8k|            case 0x8E:
  ------------------
  |  Branch (19364:13): [True: 463, False: 242k]
  ------------------
19365|   100k|            case 0x8F:
  ------------------
  |  Branch (19365:13): [True: 854, False: 242k]
  ------------------
19366|   101k|            case 0x90:
  ------------------
  |  Branch (19366:13): [True: 421, False: 242k]
  ------------------
19367|   101k|            case 0x91:
  ------------------
  |  Branch (19367:13): [True: 331, False: 242k]
  ------------------
19368|   101k|            case 0x92:
  ------------------
  |  Branch (19368:13): [True: 410, False: 242k]
  ------------------
19369|   102k|            case 0x93:
  ------------------
  |  Branch (19369:13): [True: 368, False: 242k]
  ------------------
19370|   102k|            case 0x94:
  ------------------
  |  Branch (19370:13): [True: 389, False: 242k]
  ------------------
19371|   103k|            case 0x95:
  ------------------
  |  Branch (19371:13): [True: 495, False: 242k]
  ------------------
19372|   103k|            case 0x96:
  ------------------
  |  Branch (19372:13): [True: 469, False: 242k]
  ------------------
19373|   104k|            case 0x97:
  ------------------
  |  Branch (19373:13): [True: 698, False: 242k]
  ------------------
19374|   104k|                return enter_cbor_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
19375|       |
19376|    905|            case 0x98: // array (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19376:13): [True: 905, False: 242k]
  ------------------
19377|  1.66k|            case 0x99: // array (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19377:13): [True: 758, False: 242k]
  ------------------
19378|  2.07k|            case 0x9A: // array (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19378:13): [True: 414, False: 242k]
  ------------------
19379|  2.47k|            case 0x9B: // array (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19379:13): [True: 400, False: 242k]
  ------------------
19380|  2.47k|            {
19381|  2.47k|                std::uint64_t len{};
19382|  2.47k|                std::size_t size{};
19383|  2.47k|                return get_cbor_argument(len) && get_container_size(len, size, "array") && enter_cbor_array(size);
  ------------------
  |  Branch (19383:24): [True: 2.40k, False: 72]
  |  Branch (19383:50): [True: 2.40k, False: 1]
  |  Branch (19383:92): [True: 2.27k, False: 132]
  ------------------
19384|  2.07k|            }
19385|       |
19386|  6.54k|            case 0x9F: // array (indefinite length)
  ------------------
  |  Branch (19386:13): [True: 6.54k, False: 236k]
  ------------------
19387|  6.54k|                return enter_array(detail::unknown_size());
19388|       |
19389|       |            // map (0x00..0x17 pairs of data items follow)
19390|  4.86k|            case 0xA0:
  ------------------
  |  Branch (19390:13): [True: 4.86k, False: 238k]
  ------------------
19391|  13.5k|            case 0xA1:
  ------------------
  |  Branch (19391:13): [True: 8.68k, False: 234k]
  ------------------
19392|  15.3k|            case 0xA2:
  ------------------
  |  Branch (19392:13): [True: 1.82k, False: 241k]
  ------------------
19393|  15.8k|            case 0xA3:
  ------------------
  |  Branch (19393:13): [True: 495, False: 242k]
  ------------------
19394|  16.1k|            case 0xA4:
  ------------------
  |  Branch (19394:13): [True: 268, False: 243k]
  ------------------
19395|  16.4k|            case 0xA5:
  ------------------
  |  Branch (19395:13): [True: 292, False: 243k]
  ------------------
19396|  16.7k|            case 0xA6:
  ------------------
  |  Branch (19396:13): [True: 294, False: 243k]
  ------------------
19397|  17.1k|            case 0xA7:
  ------------------
  |  Branch (19397:13): [True: 428, False: 242k]
  ------------------
19398|  17.4k|            case 0xA8:
  ------------------
  |  Branch (19398:13): [True: 262, False: 243k]
  ------------------
19399|  17.6k|            case 0xA9:
  ------------------
  |  Branch (19399:13): [True: 275, False: 243k]
  ------------------
19400|  17.9k|            case 0xAA:
  ------------------
  |  Branch (19400:13): [True: 257, False: 243k]
  ------------------
19401|  18.2k|            case 0xAB:
  ------------------
  |  Branch (19401:13): [True: 255, False: 243k]
  ------------------
19402|  18.4k|            case 0xAC:
  ------------------
  |  Branch (19402:13): [True: 265, False: 243k]
  ------------------
19403|  18.7k|            case 0xAD:
  ------------------
  |  Branch (19403:13): [True: 280, False: 243k]
  ------------------
19404|  19.0k|            case 0xAE:
  ------------------
  |  Branch (19404:13): [True: 279, False: 243k]
  ------------------
19405|  19.3k|            case 0xAF:
  ------------------
  |  Branch (19405:13): [True: 296, False: 243k]
  ------------------
19406|  19.6k|            case 0xB0:
  ------------------
  |  Branch (19406:13): [True: 289, False: 243k]
  ------------------
19407|  20.1k|            case 0xB1:
  ------------------
  |  Branch (19407:13): [True: 507, False: 242k]
  ------------------
19408|  20.4k|            case 0xB2:
  ------------------
  |  Branch (19408:13): [True: 311, False: 243k]
  ------------------
19409|  20.7k|            case 0xB3:
  ------------------
  |  Branch (19409:13): [True: 295, False: 243k]
  ------------------
19410|  20.9k|            case 0xB4:
  ------------------
  |  Branch (19410:13): [True: 272, False: 243k]
  ------------------
19411|  21.2k|            case 0xB5:
  ------------------
  |  Branch (19411:13): [True: 299, False: 243k]
  ------------------
19412|  21.5k|            case 0xB6:
  ------------------
  |  Branch (19412:13): [True: 257, False: 243k]
  ------------------
19413|  21.8k|            case 0xB7:
  ------------------
  |  Branch (19413:13): [True: 303, False: 243k]
  ------------------
19414|  21.8k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
19415|       |
19416|    312|            case 0xB8: // map (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19416:13): [True: 312, False: 243k]
  ------------------
19417|    668|            case 0xB9: // map (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19417:13): [True: 356, False: 242k]
  ------------------
19418|    903|            case 0xBA: // map (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19418:13): [True: 235, False: 243k]
  ------------------
19419|  1.27k|            case 0xBB: // map (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19419:13): [True: 368, False: 242k]
  ------------------
19420|  1.27k|            {
19421|  1.27k|                std::uint64_t len{};
19422|  1.27k|                std::size_t size{};
19423|  1.27k|                return get_cbor_argument(len) && get_container_size(len, size, "map") && enter_object(size);
  ------------------
  |  Branch (19423:24): [True: 1.22k, False: 43]
  |  Branch (19423:50): [True: 1.22k, False: 1]
  |  Branch (19423:90): [True: 1.07k, False: 149]
  ------------------
19424|    903|            }
19425|       |
19426|  1.50k|            case 0xBF: // map (indefinite length)
  ------------------
  |  Branch (19426:13): [True: 1.50k, False: 241k]
  ------------------
19427|  1.50k|                return enter_object(detail::unknown_size());
19428|       |
19429|      2|            case 0xC0: // tagged item (tag value 0-23, in the head itself)
  ------------------
  |  Branch (19429:13): [True: 2, False: 243k]
  ------------------
19430|      3|            case 0xC1:
  ------------------
  |  Branch (19430:13): [True: 1, False: 243k]
  ------------------
19431|      4|            case 0xC2:
  ------------------
  |  Branch (19431:13): [True: 1, False: 243k]
  ------------------
19432|      5|            case 0xC3:
  ------------------
  |  Branch (19432:13): [True: 1, False: 243k]
  ------------------
19433|      6|            case 0xC4:
  ------------------
  |  Branch (19433:13): [True: 1, False: 243k]
  ------------------
19434|      8|            case 0xC5:
  ------------------
  |  Branch (19434:13): [True: 2, False: 243k]
  ------------------
19435|     10|            case 0xC6:
  ------------------
  |  Branch (19435:13): [True: 2, False: 243k]
  ------------------
19436|     13|            case 0xC7:
  ------------------
  |  Branch (19436:13): [True: 3, False: 243k]
  ------------------
19437|     14|            case 0xC8:
  ------------------
  |  Branch (19437:13): [True: 1, False: 243k]
  ------------------
19438|     15|            case 0xC9:
  ------------------
  |  Branch (19438:13): [True: 1, False: 243k]
  ------------------
19439|     16|            case 0xCA:
  ------------------
  |  Branch (19439:13): [True: 1, False: 243k]
  ------------------
19440|     17|            case 0xCB:
  ------------------
  |  Branch (19440:13): [True: 1, False: 243k]
  ------------------
19441|     18|            case 0xCC:
  ------------------
  |  Branch (19441:13): [True: 1, False: 243k]
  ------------------
19442|     19|            case 0xCD:
  ------------------
  |  Branch (19442:13): [True: 1, False: 243k]
  ------------------
19443|     20|            case 0xCE:
  ------------------
  |  Branch (19443:13): [True: 1, False: 243k]
  ------------------
19444|     23|            case 0xCF:
  ------------------
  |  Branch (19444:13): [True: 3, False: 243k]
  ------------------
19445|     24|            case 0xD0:
  ------------------
  |  Branch (19445:13): [True: 1, False: 243k]
  ------------------
19446|     25|            case 0xD1:
  ------------------
  |  Branch (19446:13): [True: 1, False: 243k]
  ------------------
19447|     26|            case 0xD2:
  ------------------
  |  Branch (19447:13): [True: 1, False: 243k]
  ------------------
19448|     27|            case 0xD3:
  ------------------
  |  Branch (19448:13): [True: 1, False: 243k]
  ------------------
19449|     28|            case 0xD4:
  ------------------
  |  Branch (19449:13): [True: 1, False: 243k]
  ------------------
19450|     29|            case 0xD5:
  ------------------
  |  Branch (19450:13): [True: 1, False: 243k]
  ------------------
19451|     30|            case 0xD6:
  ------------------
  |  Branch (19451:13): [True: 1, False: 243k]
  ------------------
19452|     32|            case 0xD7:
  ------------------
  |  Branch (19452:13): [True: 2, False: 243k]
  ------------------
19453|     32|            {
19454|     32|                if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (19454:21): [True: 32, False: 0]
  ------------------
19455|     32|                {
19456|     32|                    return unexpected_byte("invalid byte", "value");
19457|     32|                }
19458|       |
19459|       |                // ignore and store: the tag value is already in the head, so
19460|       |                // there is nothing left to read here; the tagged value that
19461|       |                // follows is read by the loop in parse_cbor_internal() rather
19462|       |                // than by recursing here
19463|      0|                tag_pending = true;
19464|      0|                return true;
19465|     32|            }
19466|       |
19467|      1|            case 0xD8: // tagged item (1 byte follows)
  ------------------
  |  Branch (19467:13): [True: 1, False: 243k]
  ------------------
19468|      2|            case 0xD9: // tagged item (2 bytes follow)
  ------------------
  |  Branch (19468:13): [True: 1, False: 243k]
  ------------------
19469|      3|            case 0xDA: // tagged item (4 bytes follow)
  ------------------
  |  Branch (19469:13): [True: 1, False: 243k]
  ------------------
19470|      5|            case 0xDB: // tagged item (8 bytes follow)
  ------------------
  |  Branch (19470:13): [True: 2, False: 243k]
  ------------------
19471|      5|            {
19472|      5|                switch (tag_handler)
19473|      5|                {
19474|      5|                    case cbor_tag_handler_t::error:
  ------------------
  |  Branch (19474:21): [True: 5, False: 0]
  ------------------
19475|      5|                    {
19476|      5|                        return unexpected_byte("invalid byte", "value");
19477|      0|                    }
19478|       |
19479|      0|                    case cbor_tag_handler_t::ignore:
  ------------------
  |  Branch (19479:21): [True: 0, False: 5]
  ------------------
19480|      0|                    {
19481|       |                        // ignore the tag's binary subtype argument
19482|      0|                        std::uint64_t subtype_to_ignore{};
19483|      0|                        if (!get_cbor_argument(subtype_to_ignore))
  ------------------
  |  Branch (19483:29): [True: 0, False: 0]
  ------------------
19484|      0|                        {
19485|      0|                            return false;
19486|      0|                        }
19487|       |                        // the tagged value follows; it is read by the loop in
19488|       |                        // parse_cbor_internal() rather than by recursing here
19489|      0|                        tag_pending = true;
19490|      0|                        return true;
19491|      0|                    }
19492|       |
19493|      0|                    case cbor_tag_handler_t::store:
  ------------------
  |  Branch (19493:21): [True: 0, False: 5]
  ------------------
19494|      0|                    {
19495|       |                        // use binary subtype and store in a binary container
19496|      0|                        std::uint64_t subtype{};
19497|      0|                        if (!get_cbor_argument(subtype))
  ------------------
  |  Branch (19497:29): [True: 0, False: 0]
  ------------------
19498|      0|                        {
19499|      0|                            return false;
19500|      0|                        }
19501|      0|                        binary_t b;
19502|      0|                        b.set_subtype(detail::conditional_static_cast<typename binary_t::subtype_type>(subtype));
19503|       |
19504|      0|                        get();
19505|       |                        // a byte string (the heads accepted by get_cbor_binary) keeps the tag as subtype
19506|      0|                        if ((current >= 0x40 && current <= 0x5B) || current == 0x5F)
  ------------------
  |  Branch (19506:30): [True: 0, False: 0]
  |  Branch (19506:49): [True: 0, False: 0]
  |  Branch (19506:69): [True: 0, False: 0]
  ------------------
19507|      0|                        {
19508|      0|                            return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (19508:36): [True: 0, False: 0]
  |  Branch (19508:58): [True: 0, False: 0]
  ------------------
19509|      0|                        }
19510|       |
19511|       |                        // not a byte string: the tagged value, whose first byte
19512|       |                        // was just read, is read by the caller like for ignore
19513|      0|                        tag_pending = true;
19514|      0|                        item_read = true;
19515|      0|                        return true;
19516|      0|                    }
19517|       |
19518|      0|                    default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (19518:21): [True: 0, False: 5]
  ------------------
19519|      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 (19519:25): [Folded, False: 0]
  ------------------
19520|      0|                        return false;        // LCOV_EXCL_LINE
19521|      5|                }
19522|      5|            }
19523|       |
19524|  2.01k|            case 0xF4: // false
  ------------------
  |  Branch (19524:13): [True: 2.01k, False: 241k]
  ------------------
19525|  2.01k|                return sax->boolean(false);
19526|       |
19527|  2.56k|            case 0xF5: // true
  ------------------
  |  Branch (19527:13): [True: 2.56k, False: 240k]
  ------------------
19528|  2.56k|                return sax->boolean(true);
19529|       |
19530|  3.58k|            case 0xF6: // null
  ------------------
  |  Branch (19530:13): [True: 3.58k, False: 239k]
  ------------------
19531|  3.58k|                return sax->null();
19532|       |
19533|  5.83k|            case 0xF9: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (19533:13): [True: 5.83k, False: 237k]
  ------------------
19534|  5.83k|                return get_half_float(false);
19535|       |
19536|    768|            case 0xFA: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (19536:13): [True: 768, False: 242k]
  ------------------
19537|    768|                return get_cbor_float<float>();
19538|       |
19539|  1.06k|            case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (19539:13): [True: 1.06k, False: 242k]
  ------------------
19540|  1.06k|                return get_cbor_float<double>();
19541|       |
19542|     47|            default: // anything else (0xFF is handled inside the other types)
  ------------------
  |  Branch (19542:13): [True: 47, False: 243k]
  ------------------
19543|     47|            {
19544|     47|                return unexpected_byte("invalid byte", "value");
19545|      5|            }
19546|   243k|        }
19547|   243k|    }
_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_unsignedIhEEbT_:
23008|    681|    {
23009|    681|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    681|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 681, False: 0]
  |  |  ------------------
  ------------------
23010|    681|        {
23011|    681|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    681|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    681|    }
_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_unsignedItEEbT_:
23008|    555|    {
23009|    555|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    555|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 555, False: 0]
  |  |  ------------------
  ------------------
23010|    555|        {
23011|    555|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    555|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    555|    }
_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_unsignedIjEEbT_:
23008|    460|    {
23009|    460|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    460|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 460, False: 0]
  |  |  ------------------
  ------------------
23010|    460|        {
23011|    460|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    460|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    460|    }
_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_EEE25get_cbor_negative_integerIhEEbv:
19141|    617|    {
19142|    617|        NumberType number{};
19143|    617|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 608, False: 9]
  |  Branch (19143:38): [True: 608, False: 0]
  ------------------
19144|    617|    }
_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_EEE26emit_cbor_negative_integerIhEEbT_:
19149|    608|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    608|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    608|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 608, False: 0]
  |  |  ------------------
  ------------------
19154|    608|        {
19155|    608|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    608|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    608|    }
_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_EEE25get_cbor_negative_integerItEEbv:
19141|    605|    {
19142|    605|        NumberType number{};
19143|    605|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 594, False: 11]
  |  Branch (19143:38): [True: 594, False: 0]
  ------------------
19144|    605|    }
_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_EEE26emit_cbor_negative_integerItEEbT_:
19149|    594|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    594|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    594|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 594, False: 0]
  |  |  ------------------
  ------------------
19154|    594|        {
19155|    594|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    594|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    594|    }
_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_EEE25get_cbor_negative_integerIjEEbv:
19141|    539|    {
19142|    539|        NumberType number{};
19143|    539|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 523, False: 16]
  |  Branch (19143:38): [True: 523, False: 0]
  ------------------
19144|    539|    }
_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_EEE26emit_cbor_negative_integerIjEEbT_:
19149|    523|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    523|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    523|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 523, False: 0]
  |  |  ------------------
  ------------------
19154|    523|        {
19155|    523|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    523|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    523|    }
_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_EEE25get_cbor_negative_integerImEEbv:
19141|  1.21k|    {
19142|  1.21k|        NumberType number{};
19143|  1.21k|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 1.19k, False: 19]
  |  Branch (19143:38): [True: 1.19k, False: 0]
  ------------------
19144|  1.21k|    }
_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_EEE26emit_cbor_negative_integerImEEbT_:
19149|  1.19k|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|  1.19k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  1.19k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 777, False: 416]
  |  |  ------------------
  ------------------
19154|    777|        {
19155|    777|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    777|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|    416|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|  1.19k|    }
_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_cbor_binaryERNS0_27byte_container_with_subtypeISF_EE:
19947|  27.8k|    {
19948|       |        // read chunks iteratively, but reject a second indefinite-length
19949|       |        // level as required by RFC 8949, Section 3.2.3
19950|  27.8k|        bool indefinite = false;
19951|       |
19952|  30.6k|        while (true)
  ------------------
  |  Branch (19952:16): [True: 29.9k, Folded]
  ------------------
19953|  29.9k|        {
19954|  29.9k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("binary")))
  ------------------
  |  | 1697|  29.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 29.9k]
  |  |  ------------------
  ------------------
19955|      0|            {
19956|      0|                return false;
19957|      0|            }
19958|       |
19959|  29.9k|            if (current == 0x5F) // Binary data (indefinite length)
  ------------------
  |  Branch (19959:17): [True: 881, False: 29.1k]
  ------------------
19960|    881|            {
19961|    881|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1697|    881|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2, False: 879]
  |  |  ------------------
  ------------------
19962|      2|                {
19963|      2|                    return cbor_indefinite_string_error("binary array", "binary");
19964|      2|                }
19965|    879|                indefinite = true;
19966|    879|                get();
19967|    879|                continue;
19968|    881|            }
19969|       |
19970|       |            // a break marker closes the indefinite-length string; outside
19971|       |            // of one it falls through to the error below
19972|  29.1k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (19972:17): [True: 2.15k, False: 26.9k]
  |  Branch (19972:31): [True: 785, False: 1.36k]
  ------------------
19973|    785|            {
19974|    785|                return true;
19975|    785|            }
19976|       |
19977|  28.3k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_binary_chunk(result, indefinite)))
  ------------------
  |  | 1697|  28.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 28.3k]
  |  |  ------------------
  ------------------
19978|      0|            {
19979|      0|                return false;
19980|      0|            }
19981|       |
19982|  28.3k|            if (!indefinite)
  ------------------
  |  Branch (19982:17): [True: 26.4k, False: 1.90k]
  ------------------
19983|  26.4k|            {
19984|  26.4k|                return true;
19985|  26.4k|            }
19986|       |
19987|  1.90k|            get();
19988|  1.90k|        }
19989|  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_EEE21get_cbor_binary_chunkERNS0_27byte_container_with_subtypeISF_EEb:
19876|  28.3k|    {
19877|  28.3k|        switch (current)
19878|  28.3k|        {
19879|       |            // Binary data (0x00..0x17 bytes follow)
19880|  21.4k|            case 0x40:
  ------------------
  |  Branch (19880:13): [True: 21.4k, False: 6.88k]
  ------------------
19881|  22.9k|            case 0x41:
  ------------------
  |  Branch (19881:13): [True: 1.53k, False: 26.7k]
  ------------------
19882|  23.3k|            case 0x42:
  ------------------
  |  Branch (19882:13): [True: 406, False: 27.8k]
  ------------------
19883|  23.4k|            case 0x43:
  ------------------
  |  Branch (19883:13): [True: 124, False: 28.1k]
  ------------------
19884|  23.6k|            case 0x44:
  ------------------
  |  Branch (19884:13): [True: 209, False: 28.0k]
  ------------------
19885|  23.8k|            case 0x45:
  ------------------
  |  Branch (19885:13): [True: 125, False: 28.1k]
  ------------------
19886|  23.9k|            case 0x46:
  ------------------
  |  Branch (19886:13): [True: 126, False: 28.1k]
  ------------------
19887|  24.1k|            case 0x47:
  ------------------
  |  Branch (19887:13): [True: 185, False: 28.1k]
  ------------------
19888|  24.2k|            case 0x48:
  ------------------
  |  Branch (19888:13): [True: 144, False: 28.1k]
  ------------------
19889|  24.3k|            case 0x49:
  ------------------
  |  Branch (19889:13): [True: 87, False: 28.2k]
  ------------------
19890|  24.4k|            case 0x4A:
  ------------------
  |  Branch (19890:13): [True: 115, False: 28.1k]
  ------------------
19891|  24.6k|            case 0x4B:
  ------------------
  |  Branch (19891:13): [True: 126, False: 28.1k]
  ------------------
19892|  24.7k|            case 0x4C:
  ------------------
  |  Branch (19892:13): [True: 133, False: 28.1k]
  ------------------
19893|  24.8k|            case 0x4D:
  ------------------
  |  Branch (19893:13): [True: 118, False: 28.1k]
  ------------------
19894|  24.9k|            case 0x4E:
  ------------------
  |  Branch (19894:13): [True: 51, False: 28.2k]
  ------------------
19895|  24.9k|            case 0x4F:
  ------------------
  |  Branch (19895:13): [True: 50, False: 28.2k]
  ------------------
19896|  25.0k|            case 0x50:
  ------------------
  |  Branch (19896:13): [True: 104, False: 28.1k]
  ------------------
19897|  25.1k|            case 0x51:
  ------------------
  |  Branch (19897:13): [True: 53, False: 28.2k]
  ------------------
19898|  25.1k|            case 0x52:
  ------------------
  |  Branch (19898:13): [True: 58, False: 28.2k]
  ------------------
19899|  25.2k|            case 0x53:
  ------------------
  |  Branch (19899:13): [True: 56, False: 28.2k]
  ------------------
19900|  25.2k|            case 0x54:
  ------------------
  |  Branch (19900:13): [True: 54, False: 28.2k]
  ------------------
19901|  25.3k|            case 0x55:
  ------------------
  |  Branch (19901:13): [True: 60, False: 28.2k]
  ------------------
19902|  25.3k|            case 0x56:
  ------------------
  |  Branch (19902:13): [True: 48, False: 28.2k]
  ------------------
19903|  25.4k|            case 0x57:
  ------------------
  |  Branch (19903:13): [True: 58, False: 28.2k]
  ------------------
19904|  25.4k|            {
19905|  25.4k|                return get_binary(static_cast<unsigned int>(current) & 0x1Fu, result);
19906|  25.3k|            }
19907|       |
19908|    959|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19908:13): [True: 959, False: 27.3k]
  ------------------
19909|    959|            {
19910|    959|                return get_cbor_sized_bytes<std::uint8_t>("binary", result);
19911|  25.3k|            }
19912|       |
19913|    826|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19913:13): [True: 826, False: 27.4k]
  ------------------
19914|    826|            {
19915|    826|                return get_cbor_sized_bytes<std::uint16_t>("binary", result);
19916|  25.3k|            }
19917|       |
19918|    460|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19918:13): [True: 460, False: 27.8k]
  ------------------
19919|    460|            {
19920|    460|                return get_cbor_sized_bytes<std::uint32_t>("binary", result);
19921|  25.3k|            }
19922|       |
19923|    593|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19923:13): [True: 593, False: 27.7k]
  ------------------
19924|    593|            {
19925|    593|                return get_cbor_sized_bytes<std::uint64_t>("binary", result);
19926|  25.3k|            }
19927|       |
19928|     22|            default:
  ------------------
  |  Branch (19928:13): [True: 22, False: 28.2k]
  ------------------
19929|     22|            {
19930|     22|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x40-0x5B)", "binary", inside_indefinite ? "" : " or indefinite binary array type (0x5F)");
  ------------------
  |  Branch (19930:133): [True: 22, False: 0]
  ------------------
19931|  25.3k|            }
19932|  28.3k|        }
19933|  28.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_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
23219|  25.4k|    {
23220|  25.4k|        return get_bytes(len, "binary", result);
23221|  25.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_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|  25.8k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  25.8k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [Folded, False: 25.8k]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|  25.8k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 25.8k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  25.8k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  29.7k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 4.10k, False: 25.6k]
  ------------------
23258|  4.10k|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|  4.10k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 4.05k, False: 44]
  ------------------
23262|  4.10k|                                       ? static_cast<std::size_t>(len)
23263|  4.10k|                                       : chunk_size;
23264|  4.10k|            const std::size_t old_size = result.size();
23265|  4.10k|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|  4.10k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 4.10k, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|  4.10k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|  4.10k|            chars_read += bytes_read;
23273|  4.10k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|  4.10k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 265, False: 3.83k]
  |  |  ------------------
  ------------------
23274|    265|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    265|                result.resize(old_size + bytes_read);
23279|    265|                ++chars_read;
23280|    265|                current = char_traits<char_type>::eof();
23281|    265|                return unexpect_eof(context);
23282|    265|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|  3.83k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|  3.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 3.83k, False: 0]
  ------------------
23285|  3.83k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|  3.83k|        }
23287|  25.6k|        return true;
23288|  25.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_EEE17append_from_blockIjNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  25.8k|    {
23317|  25.8k|        return false;
23318|  25.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_EEE20get_cbor_sized_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    959|    {
19593|    959|        NumberType len{};
19594|    959|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 950, False: 9]
  |  Branch (19594:35): [True: 914, False: 36]
  ------------------
19595|    959|    }
_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_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    950|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    950|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [Folded, False: 950]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    950|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 950]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    950|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.44k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 531, False: 914]
  ------------------
23258|    531|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    531|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 531, False: 0]
  ------------------
23262|    531|                                       ? static_cast<std::size_t>(len)
23263|    531|                                       : chunk_size;
23264|    531|            const std::size_t old_size = result.size();
23265|    531|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    531|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    531|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 531, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    531|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    531|            chars_read += bytes_read;
23273|    531|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    531|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 36, False: 495]
  |  |  ------------------
  ------------------
23274|     36|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     36|                result.resize(old_size + bytes_read);
23279|     36|                ++chars_read;
23280|     36|                current = char_traits<char_type>::eof();
23281|     36|                return unexpect_eof(context);
23282|     36|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    495|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    495|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 495, False: 0]
  ------------------
23285|    495|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    495|        }
23287|    914|        return true;
23288|    950|    }
_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_EEE17append_from_blockIhNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    950|    {
23317|    950|        return false;
23318|    950|    }
_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_EEE20get_cbor_sized_bytesItNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    826|    {
19593|    826|        NumberType len{};
19594|    826|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 811, False: 15]
  |  Branch (19594:35): [True: 758, False: 53]
  ------------------
19595|    826|    }
_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_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    811|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    811|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [Folded, False: 811]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    811|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 811]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    811|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.17k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 417, False: 758]
  ------------------
23258|    417|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    417|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 402, False: 15]
  ------------------
23262|    417|                                       ? static_cast<std::size_t>(len)
23263|    417|                                       : chunk_size;
23264|    417|            const std::size_t old_size = result.size();
23265|    417|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    417|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    417|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 417, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    417|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    417|            chars_read += bytes_read;
23273|    417|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    417|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 53, False: 364]
  |  |  ------------------
  ------------------
23274|     53|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     53|                result.resize(old_size + bytes_read);
23279|     53|                ++chars_read;
23280|     53|                current = char_traits<char_type>::eof();
23281|     53|                return unexpect_eof(context);
23282|     53|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    364|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    364|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 364, False: 0]
  ------------------
23285|    364|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    364|        }
23287|    758|        return true;
23288|    811|    }
_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_EEE17append_from_blockItNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    811|    {
23317|    811|        return false;
23318|    811|    }
_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_EEE20get_cbor_sized_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    460|    {
19593|    460|        NumberType len{};
19594|    460|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 444, False: 16]
  |  Branch (19594:35): [True: 372, False: 72]
  ------------------
19595|    460|    }
_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_EEE20get_cbor_sized_bytesImNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    593|    {
19593|    593|        NumberType len{};
19594|    593|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 569, False: 24]
  |  Branch (19594:35): [True: 437, False: 132]
  ------------------
19595|    593|    }
_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_EEE9get_bytesImNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    569|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    569|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [Folded, False: 569]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    569|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 569]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    569|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    734|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 297, False: 437]
  ------------------
23258|    297|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    297|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 196, False: 101]
  ------------------
23262|    297|                                       ? static_cast<std::size_t>(len)
23263|    297|                                       : chunk_size;
23264|    297|            const std::size_t old_size = result.size();
23265|    297|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    297|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    297|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 297, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    297|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    297|            chars_read += bytes_read;
23273|    297|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    297|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 132, False: 165]
  |  |  ------------------
  ------------------
23274|    132|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    132|                result.resize(old_size + bytes_read);
23279|    132|                ++chars_read;
23280|    132|                current = char_traits<char_type>::eof();
23281|    132|                return unexpect_eof(context);
23282|    132|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    165|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    165|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 165, False: 0]
  ------------------
23285|    165|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    165|        }
23287|    437|        return true;
23288|    569|    }
_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_EEE17append_from_blockImNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    569|    {
23317|    569|        return false;
23318|    569|    }
_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_EEE16enter_cbor_arrayEm:
20225|   106k|    {
20226|   106k|        return enter_array(len) && (len <= 1 || parse_cbor_scalar_run(std::integral_constant<bool, bulk_scan> {}));
  ------------------
  |  Branch (20226:16): [True: 106k, False: 132]
  |  Branch (20226:37): [True: 93.4k, False: 13.0k]
  |  Branch (20226:49): [True: 13.0k, False: 0]
  ------------------
20227|   106k|    }
_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_EEE21parse_cbor_scalar_runENS4_17integral_constantIbLb0EEE:
20231|  13.0k|    {
20232|  13.0k|        return true;
20233|  13.0k|    }
_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_EEE18get_container_sizeEmRmPKc:
20073|  3.63k|    {
20074|  3.63k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::size_t>(len) || len == detail::unknown_size()))
  ------------------
  |  | 1697|  7.26k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2, False: 3.63k]
  |  |  |  Branch (1697:94): [True: 0, False: 3.63k]
  |  |  |  Branch (1697:94): [True: 2, False: 3.63k]
  |  |  ------------------
  ------------------
20075|      2|        {
20076|      2|            return container_size_error(context);
20077|      2|        }
20078|  3.63k|        result = conditional_static_cast<std::size_t>(len);
20079|  3.63k|        return true;
20080|  3.63k|    }
_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_EEE20container_size_errorEPKc:
23359|      2|    {
23360|      2|        return sax->parse_error(chars_read, get_token_string(), out_of_range::create(exception_id::container_too_large,
23361|      2|                                exception_message(concat("excessive ", what, " size"), "size"), nullptr));
23362|      2|    }
_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|   113k|    {
18631|   113k|        return enter_container(/*is_object*/false, len, type_marker);
18632|   113k|    }
_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|  24.5k|    {
18637|  24.5k|        return enter_container(/*is_object*/true, len, type_marker);
18638|  24.5k|    }
_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|     84|    {
23422|     84|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
23423|     84|    }
_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_EEE14get_half_floatEb:
23054|  5.83k|    {
23055|  5.83k|        const auto byte1_raw = get();
23056|  5.83k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.83k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.83k]
  |  |  ------------------
  ------------------
23057|      0|        {
23058|      0|            return false;
23059|      0|        }
23060|  5.83k|        const auto byte2_raw = get();
23061|  5.83k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.83k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.83k]
  |  |  ------------------
  ------------------
23062|      0|        {
23063|      0|            return false;
23064|      0|        }
23065|       |
23066|  5.83k|        const auto byte1 = static_cast<unsigned char>(byte1_raw);
23067|  5.83k|        const auto byte2 = static_cast<unsigned char>(byte2_raw);
23068|       |
23069|       |        // Code from RFC 8949, Appendix D, Figure 3:
23070|       |        // As half-precision floating-point numbers were only added
23071|       |        // to IEEE 754 in 2008, today's programming platforms often
23072|       |        // still only have limited support for them. It is very
23073|       |        // easy to include at least decoding support for them even
23074|       |        // without such support. An example of a small decoder for
23075|       |        // half-precision floating-point numbers in the C language
23076|       |        // is shown in Fig. 3.
23077|  5.83k|        const auto half = little_endian
  ------------------
  |  Branch (23077:27): [True: 0, False: 5.83k]
  ------------------
23078|  5.83k|                          ? static_cast<unsigned int>((byte2 << 8u) + byte1)
23079|  5.83k|                          : static_cast<unsigned int>((byte1 << 8u) + byte2);
23080|  5.83k|        const double val = [&half]
23081|  5.83k|        {
23082|  5.83k|            const int exp = (half >> 10u) & 0x1Fu;
23083|  5.83k|            const unsigned int mant = half & 0x3FFu;
23084|  5.83k|            JSON_ASSERT(exp <= 31);
23085|  5.83k|            JSON_ASSERT(mant <= 1023);
23086|  5.83k|            switch (exp)
23087|  5.83k|            {
23088|  5.83k|                case 0:
23089|  5.83k|                    return std::ldexp(mant, -24);
23090|  5.83k|                case 31:
23091|  5.83k|                    return (mant == 0)
23092|  5.83k|                    ? std::numeric_limits<double>::infinity()
23093|  5.83k|                    : std::numeric_limits<double>::quiet_NaN();
23094|  5.83k|                default:
23095|  5.83k|                    return std::ldexp(mant + 1024, exp - 25);
23096|  5.83k|            }
23097|  5.83k|        }();
23098|  5.83k|        return sax->number_float((half & 0x8000u) != 0
  ------------------
  |  Branch (23098:34): [True: 3.53k, False: 2.29k]
  ------------------
23099|  5.83k|                                 ? static_cast<number_float_t>(-val)
23100|  5.83k|                                 : static_cast<number_float_t>(val), no_source);
23101|  5.83k|    }
_ZZN8nlohmann16json_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_EEE14get_half_floatEbENKUlvE_clEv:
23081|  5.81k|        {
23082|  5.81k|            const int exp = (half >> 10u) & 0x1Fu;
23083|  5.81k|            const unsigned int mant = half & 0x3FFu;
23084|  5.81k|            JSON_ASSERT(exp <= 31);
  ------------------
  |  | 2643|  5.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23084:13): [True: 5.81k, False: 0]
  ------------------
23085|  5.81k|            JSON_ASSERT(mant <= 1023);
  ------------------
  |  | 2643|  5.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23085:13): [True: 5.81k, False: 0]
  ------------------
23086|  5.81k|            switch (exp)
23087|  5.81k|            {
23088|  1.17k|                case 0:
  ------------------
  |  Branch (23088:17): [True: 1.17k, False: 4.63k]
  ------------------
23089|  1.17k|                    return std::ldexp(mant, -24);
23090|    918|                case 31:
  ------------------
  |  Branch (23090:17): [True: 918, False: 4.89k]
  ------------------
23091|    918|                    return (mant == 0)
  ------------------
  |  Branch (23091:28): [True: 451, False: 467]
  ------------------
23092|    918|                    ? std::numeric_limits<double>::infinity()
23093|    918|                    : std::numeric_limits<double>::quiet_NaN();
23094|  3.71k|                default:
  ------------------
  |  Branch (23094:17): [True: 3.71k, False: 2.09k]
  ------------------
23095|  3.71k|                    return std::ldexp(mant + 1024, exp - 25);
23096|  5.81k|            }
23097|  5.81k|        }();
_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_EEE14get_cbor_floatIfEEbv:
19552|    768|    {
19553|    768|        NumberType number{};
19554|    768|        return get_number(number) && emit_float(number);
  ------------------
  |  Branch (19554:16): [True: 752, False: 16]
  |  Branch (19554:38): [True: 752, False: 0]
  ------------------
19555|    768|    }
_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|    768|    {
22949|       |        // read in the original format
22950|       |
22951|    768|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|    768|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 768]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|    768|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 752, False: 16]
  |  Branch (22955:34): [Folded, False: 752]
  |  Branch (22955:57): [True: 0, False: 752]
  ------------------
22956|    752|        {
22957|    752|            byte_swap(result);
22958|    752|        }
22959|    768|        return true;
22960|    768|    }
_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|    768|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|    768|        auto new_chars_read = ia.get_elements(&dest);
22859|    768|        chars_read += new_chars_read;
22860|    768|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|    768|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 752]
  |  |  ------------------
  ------------------
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|    752|        return true;
22868|    768|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIfEEmPT_m:
10174|    768|    {
10175|    768|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
10176|    768|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIfEEmPT_mNS3_17integral_constantIbLb0EEE:
10254|    768|    {
10255|    768|        auto* ptr = reinterpret_cast<char*>(dest);
10256|  3.79k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (10256:42): [True: 3.04k, False: 752]
  ------------------
10257|  3.04k|        {
10258|  3.04k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|  3.04k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 3.02k, False: 16]
  |  |  ------------------
  ------------------
10259|  3.02k|            {
10260|  3.02k|                ptr[read_index] = static_cast<char>(*current);
10261|  3.02k|                std::advance(current, 1);
10262|  3.02k|            }
10263|     16|            else
10264|     16|            {
10265|     16|                return read_index;
10266|     16|            }
10267|  3.04k|        }
10268|    752|        return count * sizeof(T);
10269|    768|    }
_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|    752|    {
22898|    752|        static_assert(sizeof(float) == sizeof(std::uint32_t), "float must have 32 bits");
22899|    752|        std::uint32_t bits{};
22900|    752|        std::memcpy(&bits, &number, sizeof(bits));
22901|    752|        bits = byteswap(bits);
22902|    752|        std::memcpy(&number, &bits, sizeof(bits));
22903|    752|    }
_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|    752|    {
23035|    752|        const auto result = static_cast<number_float_t>(number);
23036|    752|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  1.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 752]
  |  |  |  Branch (1697:94): [True: 741, False: 11]
  |  |  |  Branch (1697:94): [True: 0, False: 741]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|    752|        return sax->number_float(result, no_source);
23041|    752|    }
_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_EEE14get_cbor_floatIdEEbv:
19552|  1.06k|    {
19553|  1.06k|        NumberType number{};
19554|  1.06k|        return get_number(number) && emit_float(number);
  ------------------
  |  Branch (19554:16): [True: 1.04k, False: 19]
  |  Branch (19554:38): [True: 1.04k, False: 0]
  ------------------
19555|  1.06k|    }
_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.06k|    {
22949|       |        // read in the original format
22950|       |
22951|  1.06k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  1.06k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.06k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  1.06k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 1.04k, False: 19]
  |  Branch (22955:34): [Folded, False: 1.04k]
  |  Branch (22955:57): [True: 0, False: 1.04k]
  ------------------
22956|  1.04k|        {
22957|  1.04k|            byte_swap(result);
22958|  1.04k|        }
22959|  1.06k|        return true;
22960|  1.06k|    }
_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|   302k|    {
22841|   302k|        ++chars_read;
22842|   302k|        return current = ia.get_character();
22843|   302k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E13get_characterEv:
10120|   302k|    {
10121|   302k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1696|   302k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 295k, False: 6.53k]
  |  |  ------------------
  ------------------
10122|   295k|        {
10123|   295k|            auto result = char_traits<char_type>::to_int_type(*current);
10124|   295k|            std::advance(current, 1);
10125|   295k|            return result;
10126|   295k|        }
10127|       |
10128|  6.53k|        ++eof_reads;
10129|  6.53k|        return char_traits<char_type>::eof();
10130|   302k|    }
_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|    308|    {
23408|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
23409|    308|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
23410|    308|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (23410:51): [True: 87, False: 221]
  ------------------
23411|    308|    }
_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|  8.58k|    ~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|  8.58k|    ~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|  8.58k|{
10604|  8.58k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
10605|  8.58k|    return factory_type::create(first, last);
10606|  8.58k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryINSt3__121__list_const_iteratorIhPvEES6_vE6createES6_S6_:
10465|  8.58k|    {
10466|  8.58k|        return adapter_type(std::move(first), std::move(last));
10467|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_EC2ES6_S6_:
10116|  8.58k|        : begin(first), current(std::move(first)), end(std::move(last))
10117|  8.58k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9from_cborIRP8_IO_FILEEESE_OT_bbNS0_6detail18cbor_tag_handler_tENSL_15error_handler_tE:
45851|  8.58k|    {
45852|  8.58k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::cbor, strict, allow_exceptions, error_handler, tag_handler);
45853|  8.58k|    }
_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|  8.58k|    {
45630|  8.58k|        basic_json result;
45631|  8.58k|        detail::json_sax_dom_binary_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
45632|  8.58k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
45633|  8.58k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (45633:13): [True: 0, False: 8.58k]
  ------------------
45634|      0|        {
45635|      0|            result = value_t::discarded;
45636|      0|        }
45637|  8.58k|        return result;
45638|  8.58k|    }
_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|  8.58k|        : json_sax_dom_error_state(allow_exceptions_), root(r), m_lexer_ref(lexer_)
17427|  8.58k|    {}
_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|  8.58k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
18478|  8.58k|    {
18479|  8.58k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
18480|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterC2EOS2_:
 9396|  8.58k|        : m_file(rhs.m_file)
 9397|       |#if JSON_FILE_WINDOW
 9398|  8.58k|        , token_carry(std::move(rhs.token_carry))
 9399|  8.58k|        , token_segment(rhs.token_segment)
 9400|  8.58k|        , current_in_buffer(rhs.current_in_buffer)
 9401|  8.58k|        , tracking_token(rhs.tracking_token)
 9402|       |#endif
 9403|  8.58k|    {
 9404|       |        // the lock is owned by the thread, not the adapter: hand it over
 9405|  8.58k|        rhs.m_file = nullptr;
 9406|  8.58k|    }
_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|  8.58k|    {
18503|  8.58k|        sax = sax_;
18504|  8.58k|        container_stack.clear();
18505|  8.58k|        bon8_pushback_size = 0;
18506|  8.58k|        bool result = false;
18507|       |
18508|  8.58k|        switch (input_format)
18509|  8.58k|        {
18510|      0|            case input_format_t::bson:
  ------------------
  |  Branch (18510:13): [True: 0, False: 8.58k]
  ------------------
18511|      0|                result = parse_bson_internal();
18512|      0|                break;
18513|       |
18514|  8.58k|            case input_format_t::cbor:
  ------------------
  |  Branch (18514:13): [True: 8.58k, False: 0]
  ------------------
18515|  8.58k|                result = parse_cbor_internal(tag_handler);
18516|  8.58k|                break;
18517|       |
18518|      0|            case input_format_t::msgpack:
  ------------------
  |  Branch (18518:13): [True: 0, False: 8.58k]
  ------------------
18519|      0|                result = parse_msgpack_internal();
18520|      0|                break;
18521|       |
18522|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (18522:13): [True: 0, False: 8.58k]
  ------------------
18523|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (18523:13): [True: 0, False: 8.58k]
  ------------------
18524|      0|                result = parse_ubjson_internal();
18525|      0|                break;
18526|       |
18527|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (18527:13): [True: 0, False: 8.58k]
  ------------------
18528|      0|                result = parse_bon8_internal();
18529|      0|                break;
18530|       |
18531|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (18531:13): [True: 0, False: 8.58k]
  ------------------
18532|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (18532:13): [True: 0, False: 8.58k]
  ------------------
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|  8.58k|        }
18535|       |
18536|       |        // strict mode: next byte must be EOF
18537|  4.38k|        if (result && strict)
  ------------------
  |  Branch (18537:13): [True: 4.38k, False: 0]
  |  Branch (18537:23): [True: 4.38k, False: 0]
  ------------------
18538|  4.38k|        {
18539|  4.38k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (18539:17): [True: 0, False: 4.38k]
  |  Branch (18539:59): [True: 0, False: 4.38k]
  ------------------
18540|      0|            {
18541|      0|                get_ignore_noop();
18542|      0|            }
18543|  4.38k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (18543:22): [True: 0, False: 4.38k]
  ------------------
18544|      0|            {
18545|       |                // a string that ends a container hands back the byte after it
18546|      0|                get_bon8();
18547|      0|            }
18548|  4.38k|            else
18549|  4.38k|            {
18550|  4.38k|                get();
18551|  4.38k|            }
18552|       |
18553|  4.38k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  4.38k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 116, False: 4.27k]
  |  |  ------------------
  ------------------
18554|    116|            {
18555|    116|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
18556|    116|            }
18557|  4.38k|        }
18558|       |
18559|  4.27k|        return result;
18560|  4.38k|    }
_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|  3.71k|    {
23344|  3.71k|        return sax->parse_error(chars_read, "<end of file>",
23345|  3.71k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
23346|  3.71k|    }
_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|  4.02k|    {
23455|  4.02k|        std::string error_msg = "syntax error while parsing ";
23456|  4.02k|        error_msg += input_format_name(input_format);
23457|       |
23458|  4.02k|        return concat(error_msg, ' ', context, ": ", detail);
23459|  4.02k|    }
_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|   137k|    {
18619|   137k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1697|   275k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 137k]
  |  |  |  Branch (1697:94): [True: 24.5k, False: 113k]
  |  |  ------------------
  ------------------
18620|      0|        {
18621|      0|            return false;
18622|      0|        }
18623|       |
18624|   137k|        container_stack.emplace_back(len, is_object, type_marker);
18625|   137k|        return true;
18626|   137k|    }
_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|  24.5k|    {
17484|  24.5k|        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|  24.5k|        return check_container_size(*this, len, "object", ref_stack.back());
17492|  24.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_valueINS1_7value_tEEEPSG_OT_:
17566|   137k|    {
17567|   137k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 5.94k, False: 131k]
  ------------------
17568|  5.94k|        {
17569|  5.94k|            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|  5.94k|            return &root;
17576|  5.94k|        }
17577|       |
17578|   131k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|   131k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 115k, False: 16.6k]
  |  Branch (17578:9): [True: 16.6k, False: 0]
  |  Branch (17578:9): [True: 131k, False: 0]
  ------------------
17579|       |
17580|   131k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 115k, False: 16.6k]
  ------------------
17581|   115k|        {
17582|   115k|            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|   115k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|   115k|        }
17590|       |
17591|  16.6k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  16.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 16.6k, False: 0]
  ------------------
17592|  16.6k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  16.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 16.6k, False: 0]
  ------------------
17593|  16.6k|        *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|  16.6k|        return object_element;
17600|  16.6k|    }
_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|   137k|{
16180|   137k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1697|   267k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 281, False: 137k]
  |  |  |  Branch (1697:94): [True: 129k, False: 8.04k]
  |  |  |  Branch (1697:94): [True: 281, False: 129k]
  |  |  ------------------
  ------------------
16181|    281|    {
16182|    281|        return container_too_large_error(sax, len, kind, ref);
16183|    281|    }
16184|   137k|    return true;
16185|   137k|}
_ZN8nlohmann16json_abi_v3_12_06detail25container_too_large_errorINS1_26json_sax_dom_binary_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_18file_input_adapterEEESH_EEbRT_mPKcPT0_:
16173|    281|{
16174|    281|    return sax.parse_error(0, "", out_of_range::create(exception_id::container_too_large, concat("excessive ", kind, " size: ", std::to_string(len)), ref));
16175|    281|}
_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|   113k|    {
17521|   113k|        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|   113k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1697|   113k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 113k]
  |  |  ------------------
  ------------------
17529|      0|        {
17530|      0|            return false;
17531|      0|        }
17532|       |
17533|   113k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (17533:13): [True: 106k, False: 6.67k]
  ------------------
17534|   106k|        {
17535|   106k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
17536|   106k|        }
17537|       |
17538|   113k|        return true;
17539|   113k|    }
_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|   137k|            : 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|   102k|    {
18651|   102k|        const bool is_object = container_stack.back().is_object;
18652|   102k|        container_stack.pop_back();
18653|   102k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (18653:16): [True: 16.4k, False: 85.7k]
  ------------------
18654|   102k|    }
_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|  16.4k|    {
17507|  16.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  16.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17507:9): [True: 16.4k, False: 0]
  ------------------
17508|  16.4k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  16.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17508:9): [True: 16.4k, False: 0]
  ------------------
17509|       |
17510|       |#if JSON_DIAGNOSTIC_POSITIONS
17511|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
17512|       |#endif
17513|       |
17514|  16.4k|        ref_stack.back()->set_parents();
17515|  16.4k|        ref_stack.pop_back();
17516|  16.4k|        return true;
17517|  16.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_adapterEE9end_arrayEv:
17542|  85.7k|    {
17543|  85.7k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  85.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17543:9): [True: 85.7k, False: 0]
  ------------------
17544|  85.7k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2643|  85.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17544:9): [True: 85.7k, 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.7k|        ref_stack.back()->set_parents();
17551|  85.7k|        ref_stack.pop_back();
17552|  85.7k|        return true;
17553|  85.7k|    }
_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|  99.2k|    {
23327|  99.2k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1697|  99.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 3.33k, False: 95.9k]
  |  |  ------------------
  ------------------
23328|  3.33k|        {
23329|  3.33k|            return report_eof(context);
23330|  3.33k|        }
23331|  95.9k|        return true;
23332|  99.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18file_input_adapter14bulk_remainingEv:
 9464|  61.2k|    {
 9465|  61.2k|        if (!current_in_buffer)
  ------------------
  |  Branch (9465:13): [True: 0, False: 61.2k]
  ------------------
 9466|      0|        {
 9467|      0|            return 0;
 9468|      0|        }
 9469|  61.2k|        return static_cast<std::size_t>(buffer_end() - buffer_ptr());
 9470|  61.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18file_input_adapter10buffer_endEv:
 9529|   358k|    {
 9530|   358k|        return m_file->_IO_read_end;
 9531|   358k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18file_input_adapter10buffer_ptrEv:
 9525|   392k|    {
 9526|   392k|        return m_file->_IO_read_ptr;
 9527|   392k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail18file_input_adapter9bulk_dataEv:
 9458|  33.9k|    {
 9459|  33.9k|        return buffer_ptr();
 9460|  33.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter9bulk_skipEm:
 9474|  23.9k|    {
 9475|  23.9k|        JSON_ASSERT(n <= bulk_remaining());
  ------------------
  |  | 2643|  23.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (9475:9): [True: 23.9k, False: 0]
  ------------------
 9476|  23.9k|        buffer_bump(n);
 9477|  23.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter11buffer_bumpEm:
 9533|   305k|    {
 9534|   305k|        m_file->_IO_read_ptr += n;
 9535|   305k|    }
_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_EEE17check_string_utf8ERSC_PKc:
23163|  50.3k|    {
23164|  50.3k|        return error_handler == error_handler_t::keep || check_string_utf8_handler(result, context);
  ------------------
  |  Branch (23164:16): [True: 50.3k, False: 0]
  |  Branch (23164:58): [True: 0, False: 0]
  ------------------
23165|  50.3k|    }
_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|  34.7k|    {
17496|  34.7k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2643|  34.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17496:9): [True: 34.7k, False: 0]
  ------------------
17497|  34.7k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  34.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17497:9): [True: 34.7k, 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|  34.7k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](std::move(val)));
17502|  34.7k|        return true;
17503|  34.7k|    }
_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|    918|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|    918|        auto new_chars_read = ia.get_elements(&dest);
22859|    918|        chars_read += new_chars_read;
22860|    918|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|    918|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 19, False: 899]
  |  |  ------------------
  ------------------
22861|     19|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     19|            ++chars_read;
22864|     19|            static_cast<void>(report_eof(context));
22865|     19|            return false;
22866|     19|        }
22867|    899|        return true;
22868|    918|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIdEEmPT_m:
 9445|    918|    {
 9446|    918|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|    918|    }
_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.04k|    {
22888|  1.04k|        static_assert(sizeof(double) == sizeof(std::uint64_t), "double must have 64 bits");
22889|  1.04k|        std::uint64_t bits{};
22890|  1.04k|        std::memcpy(&bits, &number, sizeof(bits));
22891|  1.04k|        bits = byteswap(bits);
22892|  1.04k|        std::memcpy(&number, &bits, sizeof(bits));
22893|  1.04k|    }
_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.04k|    {
23035|  1.04k|        const auto result = static_cast<number_float_t>(number);
23036|  1.04k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  2.08k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.04k]
  |  |  |  Branch (1697:94): [True: 1.04k, False: 3]
  |  |  |  Branch (1697:94): [True: 0, False: 1.04k]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|  1.04k|        return sax->number_float(result, no_source);
23041|  1.04k|    }
_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|    618|    {
23444|    618|        return hex_byte(static_cast<std::uint8_t>(current));
23445|    618|    }
_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|  8.02k|    {
17462|  8.02k|        handle_value(val);
17463|  8.02k|        return true;
17464|  8.02k|    }
_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|  8.02k|    {
17567|  8.02k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 587, False: 7.44k]
  ------------------
17568|    587|        {
17569|    587|            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|    587|            return &root;
17576|    587|        }
17577|       |
17578|  7.44k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  7.44k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 6.69k, False: 751]
  |  Branch (17578:9): [True: 751, False: 0]
  |  Branch (17578:9): [True: 7.44k, False: 0]
  ------------------
17579|       |
17580|  7.44k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 6.69k, False: 751]
  ------------------
17581|  6.69k|        {
17582|  6.69k|            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|  6.69k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  6.69k|        }
17590|       |
17591|    751|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|    751|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 751, False: 0]
  ------------------
17592|    751|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|    751|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 751, False: 0]
  ------------------
17593|    751|        *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|    751|        return object_element;
17600|    751|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIcEEmPT_m:
 9445|    588|    {
 9446|    588|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|    588|    }
_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|  16.2k|    {
17468|       |        // json_sax documents that the passed value may be moved from,
17469|       |        // so hand the buffer over instead of copying it
17470|  16.2k|        handle_value(std::move(val));
17471|  16.2k|        return true;
17472|  16.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_valueISC_EEPSG_OT_:
17566|  16.2k|    {
17567|  16.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 460, False: 15.7k]
  ------------------
17568|    460|        {
17569|    460|            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|    460|            return &root;
17576|    460|        }
17577|       |
17578|  15.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  15.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 11.5k, False: 4.25k]
  |  Branch (17578:9): [True: 4.25k, False: 0]
  |  Branch (17578:9): [True: 15.7k, False: 0]
  ------------------
17579|       |
17580|  15.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 11.5k, False: 4.25k]
  ------------------
17581|  11.5k|        {
17582|  11.5k|            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|  11.5k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  11.5k|        }
17590|       |
17591|  4.25k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.25k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 4.25k, False: 0]
  ------------------
17592|  4.25k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  4.25k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 4.25k, False: 0]
  ------------------
17593|  4.25k|        *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.25k|        return object_element;
17600|  4.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIhEEmPT_m:
 9445|  9.86k|    {
 9446|  9.86k|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|  9.86k|    }
_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_adapterEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
17475|  27.2k|    {
17476|       |        // json_sax documents that the passed value may be moved from,
17477|       |        // so hand the buffer over instead of copying it
17478|  27.2k|        handle_value(std::move(val));
17479|  27.2k|        return true;
17480|  27.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_valueINS0_27byte_container_with_subtypeISF_EEEEPSG_OT_:
17566|  27.2k|    {
17567|  27.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 107, False: 27.1k]
  ------------------
17568|    107|        {
17569|    107|            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|    107|            return &root;
17576|    107|        }
17577|       |
17578|  27.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  27.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 24.3k, False: 2.71k]
  |  Branch (17578:9): [True: 2.71k, False: 0]
  |  Branch (17578:9): [True: 27.1k, False: 0]
  ------------------
17579|       |
17580|  27.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 24.3k, False: 2.71k]
  ------------------
17581|  24.3k|        {
17582|  24.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|  24.3k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  24.3k|        }
17590|       |
17591|  2.71k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 2.71k, False: 0]
  ------------------
17592|  2.71k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 2.71k, False: 0]
  ------------------
17593|  2.71k|        *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|  2.71k|        return object_element;
17600|  2.71k|    }
_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_numberIhLb0EEEbRT_:
22948|  4.51k|    {
22949|       |        // read in the original format
22950|       |
22951|  4.51k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  4.51k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 4.51k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  4.51k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 4.45k, False: 55]
  |  Branch (22955:34): [Folded, False: 4.45k]
  |  Branch (22955:57): [True: 0, False: 4.45k]
  ------------------
22956|  4.45k|        {
22957|  4.45k|            byte_swap(result);
22958|  4.45k|        }
22959|  4.51k|        return true;
22960|  4.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_EEE6get_toIhEEbRT_PKc:
22855|  4.51k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  4.51k|        auto new_chars_read = ia.get_elements(&dest);
22859|  4.51k|        chars_read += new_chars_read;
22860|  4.51k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  4.51k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 55, False: 4.45k]
  |  |  ------------------
  ------------------
22861|     55|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     55|            ++chars_read;
22864|     55|            static_cast<void>(report_eof(context));
22865|     55|            return false;
22866|     55|        }
22867|  4.45k|        return true;
22868|  4.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_EEE9byte_swapIhEEvRT_:
22907|  4.45k|    {
22908|  4.45k|        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|  4.45k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  4.45k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 0, False: 4.45k]
  ------------------
22924|      0|            {
22925|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|      0|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.45k|    }
_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|  4.57k|    {
17444|  4.57k|        handle_value(val);
17445|  4.57k|        return true;
17446|  4.57k|    }
_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|  4.57k|    {
17567|  4.57k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 3, False: 4.57k]
  ------------------
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|  4.57k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  4.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 3.65k, False: 924]
  |  Branch (17578:9): [True: 924, False: 0]
  |  Branch (17578:9): [True: 4.57k, False: 0]
  ------------------
17579|       |
17580|  4.57k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 3.65k, False: 924]
  ------------------
17581|  3.65k|        {
17582|  3.65k|            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|  3.65k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  3.65k|        }
17590|       |
17591|    924|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|    924|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 924, False: 0]
  ------------------
17592|    924|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|    924|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 924, False: 0]
  ------------------
17593|    924|        *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|    924|        return object_element;
17600|    924|    }
_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|  3.58k|    {
17438|  3.58k|        handle_value(nullptr);
17439|  3.58k|        return true;
17440|  3.58k|    }
_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|  3.58k|    {
17567|  3.58k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 2, False: 3.58k]
  ------------------
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|  3.58k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.58k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 2.52k, False: 1.06k]
  |  Branch (17578:9): [True: 1.06k, False: 0]
  |  Branch (17578:9): [True: 3.58k, False: 0]
  ------------------
17579|       |
17580|  3.58k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 2.52k, False: 1.06k]
  ------------------
17581|  2.52k|        {
17582|  2.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|  2.52k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  2.52k|        }
17590|       |
17591|  1.06k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  1.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 1.06k, False: 0]
  ------------------
17592|  1.06k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  1.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 1.06k, False: 0]
  ------------------
17593|  1.06k|        *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.06k|        return object_element;
17600|  1.06k|    }
_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|  19.0k|    {
17450|  19.0k|        handle_value(val);
17451|  19.0k|        return true;
17452|  19.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|  19.0k|    {
17567|  19.0k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 299, False: 18.7k]
  ------------------
17568|    299|        {
17569|    299|            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|    299|            return &root;
17576|    299|        }
17577|       |
17578|  18.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  18.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 13.7k, False: 5.06k]
  |  Branch (17578:9): [True: 5.06k, False: 0]
  |  Branch (17578:9): [True: 18.7k, False: 0]
  ------------------
17579|       |
17580|  18.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 13.7k, False: 5.06k]
  ------------------
17581|  13.7k|        {
17582|  13.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|  13.7k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  13.7k|        }
17590|       |
17591|  5.06k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  5.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 5.06k, False: 0]
  ------------------
17592|  5.06k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  5.06k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 5.06k, False: 0]
  ------------------
17593|  5.06k|        *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|  5.06k|        return object_element;
17600|  5.06k|    }
_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|  23.4k|    {
17456|  23.4k|        handle_value(val);
17457|  23.4k|        return true;
17458|  23.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_valueIRmEEPSG_OT_:
17566|  23.4k|    {
17567|  23.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (17567:13): [True: 255, False: 23.2k]
  ------------------
17568|    255|        {
17569|    255|            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|    255|            return &root;
17576|    255|        }
17577|       |
17578|  23.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2643|  23.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17578:9): [True: 20.2k, False: 3.00k]
  |  Branch (17578:9): [True: 3.00k, False: 0]
  |  Branch (17578:9): [True: 23.2k, False: 0]
  ------------------
17579|       |
17580|  23.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (17580:13): [True: 20.2k, False: 3.00k]
  ------------------
17581|  20.2k|        {
17582|  20.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|  20.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
17589|  20.2k|        }
17590|       |
17591|  3.00k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2643|  3.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17591:9): [True: 3.00k, False: 0]
  ------------------
17592|  3.00k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2643|  3.00k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (17592:9): [True: 3.00k, False: 0]
  ------------------
17593|  3.00k|        *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.00k|        return object_element;
17600|  3.00k|    }
_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_floatIeEEbT_:
23034|    416|    {
23035|    416|        const auto result = static_cast<number_float_t>(number);
23036|    416|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|    832|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 416]
  |  |  |  Branch (1697:94): [True: 416, False: 0]
  |  |  |  Branch (1697:94): [True: 0, False: 416]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|    416|        return sax->number_float(result, no_source);
23041|    416|    }
_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_toImEEbRT_PKc:
22855|  3.52k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  3.52k|        auto new_chars_read = ia.get_elements(&dest);
22859|  3.52k|        chars_read += new_chars_read;
22860|  3.52k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  3.52k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 116, False: 3.40k]
  |  |  ------------------
  ------------------
22861|    116|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|    116|            ++chars_read;
22864|    116|            static_cast<void>(report_eof(context));
22865|    116|            return false;
22866|    116|        }
22867|  3.40k|        return true;
22868|  3.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsImEEmPT_m:
 9445|  3.52k|    {
 9446|  3.52k|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|  3.52k|    }
_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_swapImEEvRT_:
22907|  4.14k|    {
22908|  4.14k|        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|  4.14k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  20.7k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 16.5k, False: 4.14k]
  ------------------
22924|  16.5k|            {
22925|  16.5k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  16.5k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.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_EEE13emit_unsignedImEEbT_:
23008|    885|    {
23009|    885|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    885|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 885, False: 0]
  |  |  ------------------
  ------------------
23010|    885|        {
23011|    885|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    885|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    885|    }
_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_cbor_internalENS1_18cbor_tag_handler_tE:
20247|  8.58k|    {
20248|       |        // whether the next value starts at a fresh byte or at the one already
20249|       |        // read into `current`
20250|  8.58k|        bool fetch = true;
20251|       |
20252|       |        // the key currently being read; hoisted out of the loop so that its
20253|       |        // capacity is reused across elements and across nesting levels
20254|  8.58k|        string_t key;
20255|       |
20256|   345k|        while (true)
  ------------------
  |  Branch (20256:16): [True: 340k, Folded]
  ------------------
20257|   340k|        {
20258|   340k|            if (!container_stack.empty())
  ------------------
  |  Branch (20258:17): [True: 332k, False: 8.58k]
  ------------------
20259|   332k|            {
20260|       |                // a copy, not a reference: it must stay valid across the
20261|       |                // pop_back() below, which destroys the container_stack element
20262|       |                // it would otherwise alias
20263|   332k|                const container_frame top = container_stack.back();
20264|   332k|                const bool is_object = top.is_object;
20265|   332k|                bool at_end = false;
20266|       |
20267|   332k|                if (top.remaining != npos)
  ------------------
  |  Branch (20267:21): [True: 227k, False: 104k]
  ------------------
20268|   227k|                {
20269|       |                    // definite length: the container ends once its elements
20270|       |                    // have been read
20271|   227k|                    at_end = (top.remaining == 0);
20272|   227k|                    if (!at_end)
  ------------------
  |  Branch (20272:25): [True: 128k, False: 99.6k]
  ------------------
20273|   128k|                    {
20274|       |                        // claim the element about to be read
20275|   128k|                        --container_stack.back().remaining;
20276|   128k|                        if (is_object)
  ------------------
  |  Branch (20276:29): [True: 21.6k, False: 106k]
  ------------------
20277|  21.6k|                        {
20278|  21.6k|                            get();
20279|  21.6k|                        }
20280|   128k|                    }
20281|   227k|                    fetch = true;
20282|   227k|                }
20283|   104k|                else
20284|   104k|                {
20285|       |                    // indefinite length: the container ends at a break marker.
20286|       |                    // Testing for it consumes a byte, which is the first byte
20287|       |                    // of the next element when it is not one.
20288|   104k|                    at_end = (get() == 0xFF);
20289|   104k|                    fetch = is_object;
20290|   104k|                }
20291|       |
20292|   332k|                if (at_end)
  ------------------
  |  Branch (20292:21): [True: 102k, False: 230k]
  ------------------
20293|   102k|                {
20294|   102k|                    bool value_complete = false;
20295|   102k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container_and_check(value_complete)))
  ------------------
  |  | 1697|   102k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 102k]
  |  |  ------------------
  ------------------
20296|      0|                    {
20297|      0|                        return false;
20298|      0|                    }
20299|   102k|                    if (value_complete)
  ------------------
  |  Branch (20299:25): [True: 2.67k, False: 99.5k]
  ------------------
20300|  2.67k|                    {
20301|  2.67k|                        return true;
20302|  2.67k|                    }
20303|  99.5k|                    continue;
20304|   102k|                }
20305|       |
20306|   230k|                if (is_object)
  ------------------
  |  Branch (20306:21): [True: 35.3k, False: 194k]
  ------------------
20307|  35.3k|                {
20308|  35.3k|                    if (JSON_HEDLEY_UNLIKELY(!skip_cbor_key_tags(tag_handler)))
  ------------------
  |  | 1697|  35.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 35.3k]
  |  |  ------------------
  ------------------
20309|      0|                    {
20310|      0|                        return false;
20311|      0|                    }
20312|  35.3k|                    if (JSON_HEDLEY_UNLIKELY(!read_object_key<&binary_reader::get_cbor_object_key>(key)))
  ------------------
  |  | 1697|  35.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 35.3k]
  |  |  ------------------
  ------------------
20313|      0|                    {
20314|      0|                        return false;
20315|      0|                    }
20316|  35.3k|                    fetch = true;
20317|  35.3k|                }
20318|   230k|            }
20319|       |
20320|       |            // a tag is not a value of its own: read on until the tagged value
20321|   238k|            bool tag_pending = false;
20322|   238k|            bool item_read = false;
20323|   238k|            do
20324|   238k|            {
20325|   238k|                if (JSON_HEDLEY_UNLIKELY(!parse_cbor_value(fetch, tag_handler, tag_pending, item_read)))
  ------------------
  |  | 1697|   238k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 238k]
  |  |  ------------------
  ------------------
20326|      0|                {
20327|      0|                    return false;
20328|      0|                }
20329|   238k|                fetch = !item_read;
20330|   238k|            }
20331|   238k|            while (tag_pending);
  ------------------
  |  Branch (20331:20): [True: 0, False: 238k]
  ------------------
20332|       |
20333|       |            // a value that opened a container left it on the stack; one that
20334|       |            // did not, and that was not inside a container, was the whole value
20335|   238k|            if (container_stack.empty())
  ------------------
  |  Branch (20335:17): [True: 1.71k, False: 236k]
  ------------------
20336|  1.71k|            {
20337|  1.71k|                return true;
20338|  1.71k|            }
20339|   238k|        }
20340|  8.58k|    }
_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|   102k|    {
18668|   102k|        if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1697|   102k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 102k]
  |  |  ------------------
  ------------------
18669|      0|        {
18670|      0|            return false;
18671|      0|        }
18672|   102k|        value_complete = container_stack.empty();
18673|   102k|        return true;
18674|   102k|    }
_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_EEE18skip_cbor_key_tagsENS1_18cbor_tag_handler_tE:
19765|  35.3k|    {
19766|  35.3k|        if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (19766:13): [True: 35.3k, False: 0]
  ------------------
19767|  35.3k|        {
19768|  35.3k|            return true;
19769|  35.3k|        }
19770|       |
19771|       |        // 0xC0..0xDB: tag with the tag number in the head (0xC0..0xD7) or in
19772|       |        // the 1, 2, 4, or 8 bytes that follow (0xD8..0xDB)
19773|      0|        while (current >= 0xC0 && current <= 0xDB)
  ------------------
  |  Branch (19773:16): [True: 0, False: 0]
  |  Branch (19773:35): [True: 0, False: 0]
  ------------------
19774|      0|        {
19775|      0|            if (current >= 0xD8)
  ------------------
  |  Branch (19775:17): [True: 0, False: 0]
  ------------------
19776|      0|            {
19777|      0|                std::uint64_t tag_to_ignore{};
19778|      0|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_argument(tag_to_ignore)))
  ------------------
  |  | 1697|      0|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19779|      0|                {
19780|      0|                    return false;
19781|      0|                }
19782|      0|            }
19783|      0|            get();
19784|      0|        }
19785|      0|        return true;
19786|      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_EEE17get_cbor_argumentERm:
20005|  3.74k|    {
20006|  3.74k|        switch (current & 0x1F)
20007|  3.74k|        {
20008|  1.21k|            case 0x18: // 1 byte
  ------------------
  |  Branch (20008:13): [True: 1.21k, False: 2.53k]
  ------------------
20009|  1.21k|            {
20010|  1.21k|                std::uint8_t n{};
20011|  1.21k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  1.21k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.21k]
  |  |  ------------------
  ------------------
20012|      0|                {
20013|      0|                    return false;
20014|      0|                }
20015|  1.21k|                value = n;
20016|  1.21k|                return true;
20017|  1.21k|            }
20018|       |
20019|  1.11k|            case 0x19: // 2 bytes
  ------------------
  |  Branch (20019:13): [True: 1.11k, False: 2.63k]
  ------------------
20020|  1.11k|            {
20021|  1.11k|                std::uint16_t n{};
20022|  1.11k|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|  1.11k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.11k]
  |  |  ------------------
  ------------------
20023|      0|                {
20024|      0|                    return false;
20025|      0|                }
20026|  1.11k|                value = n;
20027|  1.11k|                return true;
20028|  1.11k|            }
20029|       |
20030|    649|            case 0x1A: // 4 bytes
  ------------------
  |  Branch (20030:13): [True: 649, False: 3.09k]
  ------------------
20031|    649|            {
20032|    649|                std::uint32_t n{};
20033|    649|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|    649|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 649]
  |  |  ------------------
  ------------------
20034|      0|                {
20035|      0|                    return false;
20036|      0|                }
20037|    649|                value = n;
20038|    649|                return true;
20039|    649|            }
20040|       |
20041|    768|            case 0x1B: // 8 bytes
  ------------------
  |  Branch (20041:13): [True: 768, False: 2.98k]
  ------------------
20042|    768|            {
20043|    768|                std::uint64_t n{};
20044|    768|                if (JSON_HEDLEY_UNLIKELY(!get_number(n)))
  ------------------
  |  | 1697|    768|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 768]
  |  |  ------------------
  ------------------
20045|      0|                {
20046|      0|                    return false;
20047|      0|                }
20048|    768|                value = n;
20049|    768|                return true;
20050|    768|            }
20051|       |
20052|      0|            default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (20052:13): [True: 0, False: 3.74k]
  ------------------
20053|      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 (20053:17): [Folded, False: 0]
  ------------------
20054|      0|                return false;        // LCOV_EXCL_LINE
20055|  3.74k|        }
20056|  3.74k|    }
_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_numberItLb0EEEbRT_:
22948|  3.68k|    {
22949|       |        // read in the original format
22950|       |
22951|  3.68k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  3.68k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 3.68k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  3.68k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 3.60k, False: 80]
  |  Branch (22955:34): [Folded, False: 3.60k]
  |  Branch (22955:57): [True: 0, False: 3.60k]
  ------------------
22956|  3.60k|        {
22957|  3.60k|            byte_swap(result);
22958|  3.60k|        }
22959|  3.68k|        return true;
22960|  3.68k|    }
_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_toItEEbRT_PKc:
22855|  3.68k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  3.68k|        auto new_chars_read = ia.get_elements(&dest);
22859|  3.68k|        chars_read += new_chars_read;
22860|  3.68k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  3.68k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 80, False: 3.60k]
  |  |  ------------------
  ------------------
22861|     80|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     80|            ++chars_read;
22864|     80|            static_cast<void>(report_eof(context));
22865|     80|            return false;
22866|     80|        }
22867|  3.60k|        return true;
22868|  3.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsItEEmPT_m:
 9445|  3.68k|    {
 9446|  3.68k|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|  3.68k|    }
_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_swapItEEvRT_:
22907|  4.10k|    {
22908|  4.10k|        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|  4.10k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  8.21k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.10k, False: 4.10k]
  ------------------
22924|  4.10k|            {
22925|  4.10k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.10k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  4.10k|    }
_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_numberIjLb0EEEbRT_:
22948|  2.25k|    {
22949|       |        // read in the original format
22950|       |
22951|  2.25k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  2.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 2.25k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  2.25k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 2.16k, False: 93]
  |  Branch (22955:34): [Folded, False: 2.16k]
  |  Branch (22955:57): [True: 0, False: 2.16k]
  ------------------
22956|  2.16k|        {
22957|  2.16k|            byte_swap(result);
22958|  2.16k|        }
22959|  2.25k|        return true;
22960|  2.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_EEE6get_toIjEEbRT_PKc:
22855|  2.25k|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|  2.25k|        auto new_chars_read = ia.get_elements(&dest);
22859|  2.25k|        chars_read += new_chars_read;
22860|  2.25k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|  2.25k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 93, False: 2.16k]
  |  |  ------------------
  ------------------
22861|     93|        {
22862|       |            // in case of failure, advance position by 1 to report the failing location
22863|     93|            ++chars_read;
22864|     93|            static_cast<void>(report_eof(context));
22865|     93|            return false;
22866|     93|        }
22867|  2.16k|        return true;
22868|  2.25k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIjEEmPT_m:
 9445|  2.25k|    {
 9446|  2.25k|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|  2.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_EEE9byte_swapIjEEvRT_:
22907|  2.40k|    {
22908|  2.40k|        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|  2.40k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
22923|  7.20k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (22923:37): [True: 4.80k, False: 2.40k]
  ------------------
22924|  4.80k|            {
22925|  4.80k|                std::swap(ptr[i], ptr[sz - i - 1]);
22926|  4.80k|            }
22927|       |#ifdef __cpp_lib_byteswap
22928|       |        }
22929|       |#endif
22930|  2.40k|    }
_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_numberImLb0EEEbRT_:
22948|  3.52k|    {
22949|       |        // read in the original format
22950|       |
22951|  3.52k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|  3.52k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 3.52k]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|  3.52k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 3.40k, False: 116]
  |  Branch (22955:34): [Folded, False: 3.40k]
  |  Branch (22955:57): [True: 0, False: 3.40k]
  ------------------
22956|  3.40k|        {
22957|  3.40k|            byte_swap(result);
22958|  3.40k|        }
22959|  3.52k|        return true;
22960|  3.52k|    }
_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_19get_cbor_object_keyERSC_EEEEbSM_:
18685|  35.3k|    {
18686|  35.3k|        key.clear();
18687|  35.3k|        return (this->*GetKey)(key) && sax->key(key);
  ------------------
  |  Branch (18687:16): [True: 34.7k, False: 585]
  |  Branch (18687:40): [True: 34.7k, False: 0]
  ------------------
18688|  35.3k|    }
_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_EEE19get_cbor_object_keyERSC_:
19801|  35.3k|    {
19802|       |        // EOF and major type 3 (text string) are left to get_cbor_string
19803|  35.3k|        if (current == char_traits<char_type>::eof() || (static_cast<unsigned int>(current) & 0xE0u) == 0x60u)
  ------------------
  |  Branch (19803:13): [True: 514, False: 34.8k]
  |  Branch (19803:57): [True: 34.7k, False: 58]
  ------------------
19804|  35.2k|        {
19805|  35.2k|            return get_cbor_string(result, "key");
19806|  35.2k|        }
19807|       |
19808|     58|        const char* found = nullptr;
19809|     58|        switch (static_cast<unsigned int>(current) >> 5u)
19810|     58|        {
19811|     10|            case 0:
  ------------------
  |  Branch (19811:13): [True: 10, False: 48]
  ------------------
19812|     10|                found = "an unsigned integer";
19813|     10|                break;
19814|      7|            case 1:
  ------------------
  |  Branch (19814:13): [True: 7, False: 51]
  ------------------
19815|      7|                found = "a negative integer";
19816|      7|                break;
19817|      9|            case 2:
  ------------------
  |  Branch (19817:13): [True: 9, False: 49]
  ------------------
19818|      9|                found = "a byte string";
19819|      9|                break;
19820|      3|            case 4:
  ------------------
  |  Branch (19820:13): [True: 3, False: 55]
  ------------------
19821|      3|                found = "an array";
19822|      3|                break;
19823|      7|            case 5:
  ------------------
  |  Branch (19823:13): [True: 7, False: 51]
  ------------------
19824|      7|                found = "a map";
19825|      7|                break;
19826|      7|            case 6:
  ------------------
  |  Branch (19826:13): [True: 7, False: 51]
  ------------------
19827|      7|                found = "a tag";
19828|      7|                break;
19829|     15|            default: // major type 7
  ------------------
  |  Branch (19829:13): [True: 15, False: 43]
  ------------------
19830|     15|                switch (current)
19831|     15|                {
19832|      0|                    case 0xF4:
  ------------------
  |  Branch (19832:21): [True: 0, False: 15]
  ------------------
19833|      0|                    case 0xF5:
  ------------------
  |  Branch (19833:21): [True: 0, False: 15]
  ------------------
19834|      0|                        found = "a boolean";
19835|      0|                        break;
19836|      1|                    case 0xF6:
  ------------------
  |  Branch (19836:21): [True: 1, False: 14]
  ------------------
19837|      1|                        found = "null";
19838|      1|                        break;
19839|      1|                    case 0xF7:
  ------------------
  |  Branch (19839:21): [True: 1, False: 14]
  ------------------
19840|      1|                        found = "undefined";
19841|      1|                        break;
19842|      1|                    case 0xF9:
  ------------------
  |  Branch (19842:21): [True: 1, False: 14]
  ------------------
19843|      1|                    case 0xFA:
  ------------------
  |  Branch (19843:21): [True: 0, False: 15]
  ------------------
19844|      1|                    case 0xFB:
  ------------------
  |  Branch (19844:21): [True: 0, False: 15]
  ------------------
19845|      1|                        found = "a floating-point number";
19846|      1|                        break;
19847|      2|                    case 0xFF:
  ------------------
  |  Branch (19847:21): [True: 2, False: 13]
  ------------------
19848|      2|                        found = "a break stop code";
19849|      2|                        break;
19850|     10|                    default:
  ------------------
  |  Branch (19850:21): [True: 10, False: 5]
  ------------------
19851|     10|                        found = "a simple value";
19852|     10|                        break;
19853|     15|                }
19854|     15|                break;
19855|     58|        }
19856|       |
19857|     58|        return unsupported_key_type(found);
19858|     58|    }
_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_cbor_stringERSC_PKc:
19684|  52.2k|    {
19685|       |        // read chunks iteratively, but reject a second indefinite-length
19686|       |        // level as required by RFC 8949, Section 3.2.3
19687|  52.2k|        bool indefinite = false;
19688|       |
19689|       |        // the chunk currently being validated; only used for the chunks of an
19690|       |        // indefinite-length string when the UTF-8 check can do something
19691|  52.2k|        string_t chunk;
19692|       |
19693|  55.4k|        while (true)
  ------------------
  |  Branch (19693:16): [True: 54.8k, Folded]
  ------------------
19694|  54.8k|        {
19695|  54.8k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1697|  54.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 54.8k]
  |  |  ------------------
  ------------------
19696|      0|            {
19697|      0|                return false;
19698|      0|            }
19699|       |
19700|  54.8k|            if (current == 0x7F) // UTF-8 string (indefinite length)
  ------------------
  |  Branch (19700:17): [True: 780, False: 54.0k]
  ------------------
19701|    780|            {
19702|    780|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1697|    780|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 1, False: 779]
  |  |  ------------------
  ------------------
19703|      1|                {
19704|      1|                    return cbor_indefinite_string_error("string", "string");
19705|      1|                }
19706|    779|                indefinite = true;
19707|    779|                get();
19708|    779|                continue;
19709|    780|            }
19710|       |
19711|       |            // a break marker closes the indefinite-length string; outside
19712|       |            // of one it falls through to the error below. Every chunk has
19713|       |            // been checked on its own, so there is nothing left to check.
19714|  54.0k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (19714:17): [True: 2.61k, False: 51.4k]
  |  Branch (19714:31): [True: 681, False: 1.93k]
  ------------------
19715|    681|            {
19716|    681|                return true;
19717|    681|            }
19718|       |
19719|  53.3k|            if (!indefinite)
  ------------------
  |  Branch (19719:17): [True: 50.9k, False: 2.47k]
  ------------------
19720|  50.9k|            {
19721|  50.9k|                return get_cbor_string_chunk(result, false) && check_string_utf8(result, context);
  ------------------
  |  Branch (19721:24): [True: 50.3k, False: 605]
  |  Branch (19721:64): [True: 50.3k, False: 0]
  ------------------
19722|  50.9k|            }
19723|       |
19724|  2.47k|            if (error_handler == error_handler_t::keep)
  ------------------
  |  Branch (19724:17): [True: 1.93k, False: 542]
  ------------------
19725|  1.93k|            {
19726|       |                // nothing to check: read the chunk directly into the result
19727|  1.93k|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(result, true)))
  ------------------
  |  | 1697|  1.93k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 1.93k]
  |  |  ------------------
  ------------------
19728|      0|                {
19729|      0|                    return false;
19730|      0|                }
19731|  1.93k|            }
19732|    542|            else
19733|    542|            {
19734|       |                // RFC 8949, Section 3.2.3: each chunk is a text string of its
19735|       |                // own and must be valid UTF-8 by itself, i.e., a code point
19736|       |                // cannot be spread over two chunks
19737|    542|                chunk.clear();
19738|    542|                if (JSON_HEDLEY_UNLIKELY(!get_cbor_string_chunk(chunk, true) || !check_string_utf8(chunk, context)))
  ------------------
  |  | 1697|    542|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 542]
  |  |  |  Branch (1697:94): [True: 542, False: 0]
  |  |  |  Branch (1697:94): [True: 0, False: 0]
  |  |  ------------------
  ------------------
19739|      0|                {
19740|      0|                    return false;
19741|      0|                }
19742|    542|                result.append(chunk.data(), chunk.size());
19743|    542|            }
19744|       |
19745|  2.47k|            get();
19746|  2.47k|        }
19747|  52.2k|    }
_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_EEE28cbor_indefinite_string_errorEPKcSM_:
19565|      3|    {
19566|      3|        return last_byte_error(exception_id::invalid_string_or_size, concat("indefinite-length ", type_name, " is not allowed inside indefinite-length ", type_name, "; last byte: 0x", get_token_string()), context);
19567|      3|    }
_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_EEE21get_cbor_string_chunkERSC_b:
19613|  52.8k|    {
19614|  52.8k|        switch (current)
19615|  52.8k|        {
19616|       |            // UTF-8 string (0x00..0x17 bytes follow)
19617|  31.7k|            case 0x60:
  ------------------
  |  Branch (19617:13): [True: 31.7k, False: 21.1k]
  ------------------
19618|  43.1k|            case 0x61:
  ------------------
  |  Branch (19618:13): [True: 11.4k, False: 41.4k]
  ------------------
19619|  44.0k|            case 0x62:
  ------------------
  |  Branch (19619:13): [True: 887, False: 51.9k]
  ------------------
19620|  44.3k|            case 0x63:
  ------------------
  |  Branch (19620:13): [True: 368, False: 52.4k]
  ------------------
19621|  45.1k|            case 0x64:
  ------------------
  |  Branch (19621:13): [True: 767, False: 52.0k]
  ------------------
19622|  45.6k|            case 0x65:
  ------------------
  |  Branch (19622:13): [True: 471, False: 52.3k]
  ------------------
19623|  45.9k|            case 0x66:
  ------------------
  |  Branch (19623:13): [True: 325, False: 52.5k]
  ------------------
19624|  46.1k|            case 0x67:
  ------------------
  |  Branch (19624:13): [True: 247, False: 52.6k]
  ------------------
19625|  46.6k|            case 0x68:
  ------------------
  |  Branch (19625:13): [True: 437, False: 52.4k]
  ------------------
19626|  46.8k|            case 0x69:
  ------------------
  |  Branch (19626:13): [True: 194, False: 52.6k]
  ------------------
19627|  47.0k|            case 0x6A:
  ------------------
  |  Branch (19627:13): [True: 222, False: 52.6k]
  ------------------
19628|  47.2k|            case 0x6B:
  ------------------
  |  Branch (19628:13): [True: 149, False: 52.7k]
  ------------------
19629|  47.4k|            case 0x6C:
  ------------------
  |  Branch (19629:13): [True: 219, False: 52.6k]
  ------------------
19630|  47.5k|            case 0x6D:
  ------------------
  |  Branch (19630:13): [True: 151, False: 52.7k]
  ------------------
19631|  47.6k|            case 0x6E:
  ------------------
  |  Branch (19631:13): [True: 90, False: 52.7k]
  ------------------
19632|  47.7k|            case 0x6F:
  ------------------
  |  Branch (19632:13): [True: 116, False: 52.7k]
  ------------------
19633|  48.0k|            case 0x70:
  ------------------
  |  Branch (19633:13): [True: 281, False: 52.5k]
  ------------------
19634|  48.1k|            case 0x71:
  ------------------
  |  Branch (19634:13): [True: 113, False: 52.7k]
  ------------------
19635|  48.2k|            case 0x72:
  ------------------
  |  Branch (19635:13): [True: 109, False: 52.7k]
  ------------------
19636|  48.3k|            case 0x73:
  ------------------
  |  Branch (19636:13): [True: 68, False: 52.7k]
  ------------------
19637|  48.5k|            case 0x74:
  ------------------
  |  Branch (19637:13): [True: 185, False: 52.6k]
  ------------------
19638|  48.6k|            case 0x75:
  ------------------
  |  Branch (19638:13): [True: 80, False: 52.7k]
  ------------------
19639|  48.7k|            case 0x76:
  ------------------
  |  Branch (19639:13): [True: 96, False: 52.7k]
  ------------------
19640|  49.0k|            case 0x77:
  ------------------
  |  Branch (19640:13): [True: 365, False: 52.4k]
  ------------------
19641|  49.0k|            {
19642|  49.0k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result);
19643|  48.7k|            }
19644|       |
19645|  1.52k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19645:13): [True: 1.52k, False: 51.3k]
  ------------------
19646|  1.52k|            {
19647|  1.52k|                return get_cbor_sized_bytes<std::uint8_t>("string", result);
19648|  48.7k|            }
19649|       |
19650|  1.07k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19650:13): [True: 1.07k, False: 51.7k]
  ------------------
19651|  1.07k|            {
19652|  1.07k|                return get_cbor_sized_bytes<std::uint16_t>("string", result);
19653|  48.7k|            }
19654|       |
19655|    373|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19655:13): [True: 373, False: 52.4k]
  ------------------
19656|    373|            {
19657|    373|                return get_cbor_sized_bytes<std::uint32_t>("string", result);
19658|  48.7k|            }
19659|       |
19660|    780|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19660:13): [True: 780, False: 52.0k]
  ------------------
19661|    780|            {
19662|    780|                return get_cbor_sized_bytes<std::uint64_t>("string", result);
19663|  48.7k|            }
19664|       |
19665|     25|            default:
  ------------------
  |  Branch (19665:13): [True: 25, False: 52.8k]
  ------------------
19666|     25|            {
19667|     25|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x60-0x7B)", "string", inside_indefinite ? "" : " or indefinite string type (0x7F)");
  ------------------
  |  Branch (19667:133): [True: 24, False: 1]
  ------------------
19668|  48.7k|            }
19669|  52.8k|        }
19670|  52.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_EEE10get_stringIjEEbT_RSC_:
23119|  49.0k|    {
23120|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
23121|       |        // leaves the choice to the decoder), MessagePack (whose spec
23122|       |        // explicitly allows a str object to contain an invalid byte
23123|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
23124|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
23125|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
23126|       |        // @ref error_handler, applied by @ref check_string_utf8 at the call
23127|       |        // site to the whole string or, for an indefinite-length CBOR string,
23128|       |        // to each chunk on its own (RFC 8949, Section 3.2.3).
23129|  49.0k|        return get_bytes(len, "string", result);
23130|  49.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_EEE9get_bytesIjSC_EEbT_PKcRT0_:
23245|  49.4k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  49.4k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  49.4k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 17.1k, False: 32.2k]
  ------------------
23250|  17.1k|        {
23251|  17.1k|            return true;
23252|  17.1k|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  32.2k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  32.2k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 286, False: 31.9k]
  ------------------
23258|    286|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    286|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 235, False: 51]
  ------------------
23262|    286|                                       ? static_cast<std::size_t>(len)
23263|    286|                                       : chunk_size;
23264|    286|            const std::size_t old_size = result.size();
23265|    286|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    286|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    286|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 286, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    286|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    286|            chars_read += bytes_read;
23273|    286|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    286|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 286, False: 0]
  |  |  ------------------
  ------------------
23274|    286|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    286|                result.resize(old_size + bytes_read);
23279|    286|                ++chars_read;
23280|    286|                current = char_traits<char_type>::eof();
23281|    286|                return unexpect_eof(context);
23282|    286|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|  31.9k|        return true;
23288|  32.2k|    }
_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_EEE17append_from_blockIjEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  49.4k|    {
23295|  49.4k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 31.9k, False: 17.4k]
  ------------------
23296|  31.9k|        {
23297|  31.9k|            return false;
23298|  31.9k|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|  17.4k|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|  17.4k|        const std::size_t remaining = ia.bulk_remaining();
23303|  17.4k|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 286, False: 17.1k]
  ------------------
23304|    286|        {
23305|    286|            return false; // (the loop reports the premature end)
23306|    286|        }
23307|  17.1k|        const auto n = static_cast<std::size_t>(ulen);
23308|  17.1k|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|  17.1k|        ia.bulk_skip(n);
23310|  17.1k|        chars_read += n;
23311|  17.1k|        return true;
23312|  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_EEE20get_cbor_sized_bytesIhSC_EEbPKcRT0_:
19592|  1.52k|    {
19593|  1.52k|        NumberType len{};
19594|  1.52k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.51k, False: 12]
  |  Branch (19594:35): [True: 1.48k, False: 31]
  ------------------
19595|  1.52k|    }
_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_EEE9get_bytesIhSC_EEbT_PKcRT0_:
23245|  1.51k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  1.51k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  1.51k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 795, False: 722]
  ------------------
23250|    795|        {
23251|    795|            return true;
23252|    795|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    722|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    722|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 31, False: 691]
  ------------------
23258|     31|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|     31|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 31, False: 0]
  ------------------
23262|     31|                                       ? static_cast<std::size_t>(len)
23263|     31|                                       : chunk_size;
23264|     31|            const std::size_t old_size = result.size();
23265|     31|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|     31|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|     31|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 31, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|     31|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|     31|            chars_read += bytes_read;
23273|     31|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|     31|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 31, False: 0]
  |  |  ------------------
  ------------------
23274|     31|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     31|                result.resize(old_size + bytes_read);
23279|     31|                ++chars_read;
23280|     31|                current = char_traits<char_type>::eof();
23281|     31|                return unexpect_eof(context);
23282|     31|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|    691|        return true;
23288|    722|    }
_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_EEE17append_from_blockIhEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  1.51k|    {
23295|  1.51k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 691, False: 826]
  ------------------
23296|    691|        {
23297|    691|            return false;
23298|    691|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|    826|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|    826|        const std::size_t remaining = ia.bulk_remaining();
23303|    826|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 31, False: 795]
  ------------------
23304|     31|        {
23305|     31|            return false; // (the loop reports the premature end)
23306|     31|        }
23307|    795|        const auto n = static_cast<std::size_t>(ulen);
23308|    795|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|    795|        ia.bulk_skip(n);
23310|    795|        chars_read += n;
23311|    795|        return true;
23312|    826|    }
_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_cbor_sized_bytesItSC_EEbPKcRT0_:
19592|  1.07k|    {
19593|  1.07k|        NumberType len{};
19594|  1.07k|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 1.06k, False: 14]
  |  Branch (19594:35): [True: 990, False: 72]
  ------------------
19595|  1.07k|    }
_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_EEE9get_bytesItSC_EEbT_PKcRT0_:
23245|  1.06k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  1.06k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|  1.06k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 468, False: 594]
  ------------------
23250|    468|        {
23251|    468|            return true;
23252|    468|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    594|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    594|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 72, False: 522]
  ------------------
23258|     72|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|     72|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 49, False: 23]
  ------------------
23262|     72|                                       ? static_cast<std::size_t>(len)
23263|     72|                                       : chunk_size;
23264|     72|            const std::size_t old_size = result.size();
23265|     72|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|     72|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|     72|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 72, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|     72|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|     72|            chars_read += bytes_read;
23273|     72|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|     72|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 72, False: 0]
  |  |  ------------------
  ------------------
23274|     72|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     72|                result.resize(old_size + bytes_read);
23279|     72|                ++chars_read;
23280|     72|                current = char_traits<char_type>::eof();
23281|     72|                return unexpect_eof(context);
23282|     72|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|    522|        return true;
23288|    594|    }
_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_EEE17append_from_blockItEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|  1.06k|    {
23295|  1.06k|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 522, False: 540]
  ------------------
23296|    522|        {
23297|    522|            return false;
23298|    522|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|    540|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|    540|        const std::size_t remaining = ia.bulk_remaining();
23303|    540|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 72, False: 468]
  ------------------
23304|     72|        {
23305|     72|            return false; // (the loop reports the premature end)
23306|     72|        }
23307|    468|        const auto n = static_cast<std::size_t>(ulen);
23308|    468|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|    468|        ia.bulk_skip(n);
23310|    468|        chars_read += n;
23311|    468|        return true;
23312|    540|    }
_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_cbor_sized_bytesIjSC_EEbPKcRT0_:
19592|    373|    {
19593|    373|        NumberType len{};
19594|    373|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 357, False: 16]
  |  Branch (19594:35): [True: 275, False: 82]
  ------------------
19595|    373|    }
_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_cbor_sized_bytesImSC_EEbPKcRT0_:
19592|    780|    {
19593|    780|        NumberType len{};
19594|    780|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 761, False: 19]
  |  Branch (19594:35): [True: 562, False: 199]
  ------------------
19595|    780|    }
_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_EEE9get_bytesImSC_EEbT_PKcRT0_:
23245|    761|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    761|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [True: 0, Folded]
  ------------------
23249|    761|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 274, False: 487]
  ------------------
23250|    274|        {
23251|    274|            return true;
23252|    274|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    487|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    487|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 199, False: 288]
  ------------------
23258|    199|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    199|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 34, False: 165]
  ------------------
23262|    199|                                       ? static_cast<std::size_t>(len)
23263|    199|                                       : chunk_size;
23264|    199|            const std::size_t old_size = result.size();
23265|    199|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    199|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    199|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 199, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    199|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    199|            chars_read += bytes_read;
23273|    199|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    199|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 199, False: 0]
  |  |  ------------------
  ------------------
23274|    199|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    199|                result.resize(old_size + bytes_read);
23279|    199|                ++chars_read;
23280|    199|                current = char_traits<char_type>::eof();
23281|    199|                return unexpect_eof(context);
23282|    199|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|      0|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 0, False: 0]
  ------------------
23285|      0|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|      0|        }
23287|    288|        return true;
23288|    487|    }
_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_EEE17append_from_blockImEEbT_RSC_NS4_17integral_constantIbLb1EEE:
23294|    761|    {
23295|    761|        if (len <= 0)
  ------------------
  |  Branch (23295:13): [True: 288, False: 473]
  ------------------
23296|    288|        {
23297|    288|            return false;
23298|    288|        }
23299|       |        // (len > 0, so the unsigned type holds it; casting a signed char
23300|       |        // straight to std::size_t would trip bugprone-signed-char-misuse)
23301|    473|        const auto ulen = static_cast<typename std::make_unsigned<NumberType>::type>(len);
23302|    473|        const std::size_t remaining = ia.bulk_remaining();
23303|    473|        if (static_cast<std::uintmax_t>(ulen) > static_cast<std::uintmax_t>(remaining))
  ------------------
  |  Branch (23303:13): [True: 199, False: 274]
  ------------------
23304|    199|        {
23305|    199|            return false; // (the loop reports the premature end)
23306|    199|        }
23307|    274|        const auto n = static_cast<std::size_t>(ulen);
23308|    274|        result.append(reinterpret_cast<const typename string_t::value_type*>(ia.bulk_data()), n);
23309|    274|        ia.bulk_skip(n);
23310|    274|        chars_read += n;
23311|    274|        return true;
23312|    473|    }
_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_EEE20unsupported_key_typeEPKc:
19576|     58|    {
19577|     58|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
19578|     58|    }
_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_cbor_valueEbNS1_18cbor_tag_handler_tERbSM_:
19179|   238k|    {
19180|   238k|        tag_pending = false;
19181|   238k|        item_read = false;
19182|       |
19183|   238k|        switch (get_char ? get() : current)
  ------------------
  |  Branch (19183:17): [True: 149k, False: 88.0k]
  ------------------
19184|   238k|        {
19185|       |            // EOF
19186|  1.67k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (19186:13): [True: 1.67k, False: 236k]
  ------------------
19187|  1.67k|                return unexpect_eof("value");
19188|       |
19189|       |            // Integer 0x00..0x17 (0..23)
19190|  8.45k|            case 0x00:
  ------------------
  |  Branch (19190:13): [True: 8.45k, False: 229k]
  ------------------
19191|  9.41k|            case 0x01:
  ------------------
  |  Branch (19191:13): [True: 963, False: 237k]
  ------------------
19192|  9.92k|            case 0x02:
  ------------------
  |  Branch (19192:13): [True: 510, False: 237k]
  ------------------
19193|  10.2k|            case 0x03:
  ------------------
  |  Branch (19193:13): [True: 350, False: 237k]
  ------------------
19194|  10.7k|            case 0x04:
  ------------------
  |  Branch (19194:13): [True: 433, False: 237k]
  ------------------
19195|  11.2k|            case 0x05:
  ------------------
  |  Branch (19195:13): [True: 503, False: 237k]
  ------------------
19196|  11.6k|            case 0x06:
  ------------------
  |  Branch (19196:13): [True: 421, False: 237k]
  ------------------
19197|  11.9k|            case 0x07:
  ------------------
  |  Branch (19197:13): [True: 347, False: 237k]
  ------------------
19198|  12.6k|            case 0x08:
  ------------------
  |  Branch (19198:13): [True: 636, False: 237k]
  ------------------
19199|  13.0k|            case 0x09:
  ------------------
  |  Branch (19199:13): [True: 423, False: 237k]
  ------------------
19200|  13.3k|            case 0x0A:
  ------------------
  |  Branch (19200:13): [True: 353, False: 237k]
  ------------------
19201|  13.6k|            case 0x0B:
  ------------------
  |  Branch (19201:13): [True: 302, False: 237k]
  ------------------
19202|  14.2k|            case 0x0C:
  ------------------
  |  Branch (19202:13): [True: 522, False: 237k]
  ------------------
19203|  14.6k|            case 0x0D:
  ------------------
  |  Branch (19203:13): [True: 427, False: 237k]
  ------------------
19204|  15.1k|            case 0x0E:
  ------------------
  |  Branch (19204:13): [True: 498, False: 237k]
  ------------------
19205|  15.5k|            case 0x0F:
  ------------------
  |  Branch (19205:13): [True: 363, False: 237k]
  ------------------
19206|  16.0k|            case 0x10:
  ------------------
  |  Branch (19206:13): [True: 561, False: 237k]
  ------------------
19207|  16.8k|            case 0x11:
  ------------------
  |  Branch (19207:13): [True: 750, False: 237k]
  ------------------
19208|  17.2k|            case 0x12:
  ------------------
  |  Branch (19208:13): [True: 416, False: 237k]
  ------------------
19209|  17.5k|            case 0x13:
  ------------------
  |  Branch (19209:13): [True: 295, False: 237k]
  ------------------
19210|  18.2k|            case 0x14:
  ------------------
  |  Branch (19210:13): [True: 680, False: 237k]
  ------------------
19211|  18.5k|            case 0x15:
  ------------------
  |  Branch (19211:13): [True: 307, False: 237k]
  ------------------
19212|  19.2k|            case 0x16:
  ------------------
  |  Branch (19212:13): [True: 697, False: 237k]
  ------------------
19213|  19.5k|            case 0x17:
  ------------------
  |  Branch (19213:13): [True: 296, False: 237k]
  ------------------
19214|  19.5k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
19215|       |
19216|    431|            case 0x18: // Unsigned integer (one-byte uint8_t follows)
  ------------------
  |  Branch (19216:13): [True: 431, False: 237k]
  ------------------
19217|    431|            {
19218|    431|                std::uint8_t number{};
19219|    431|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19219:24): [True: 425, False: 6]
  |  Branch (19219:46): [True: 425, False: 0]
  ------------------
19220|  19.2k|            }
19221|       |
19222|    311|            case 0x19: // Unsigned integer (two-byte uint16_t follows)
  ------------------
  |  Branch (19222:13): [True: 311, False: 237k]
  ------------------
19223|    311|            {
19224|    311|                std::uint16_t number{};
19225|    311|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19225:24): [True: 302, False: 9]
  |  Branch (19225:46): [True: 302, False: 0]
  ------------------
19226|  19.2k|            }
19227|       |
19228|    354|            case 0x1A: // Unsigned integer (four-byte uint32_t follows)
  ------------------
  |  Branch (19228:13): [True: 354, False: 237k]
  ------------------
19229|    354|            {
19230|    354|                std::uint32_t number{};
19231|    354|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19231:24): [True: 340, False: 14]
  |  Branch (19231:46): [True: 340, False: 0]
  ------------------
19232|  19.2k|            }
19233|       |
19234|    637|            case 0x1B: // Unsigned integer (eight-byte uint64_t follows)
  ------------------
  |  Branch (19234:13): [True: 637, False: 237k]
  ------------------
19235|    637|            {
19236|    637|                std::uint64_t number{};
19237|    637|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (19237:24): [True: 617, False: 20]
  |  Branch (19237:46): [True: 617, False: 0]
  ------------------
19238|  19.2k|            }
19239|       |
19240|       |            // Negative integer -1-0x00..-1-0x17 (-1..-24)
19241|  1.04k|            case 0x20:
  ------------------
  |  Branch (19241:13): [True: 1.04k, False: 236k]
  ------------------
19242|  1.85k|            case 0x21:
  ------------------
  |  Branch (19242:13): [True: 812, False: 237k]
  ------------------
19243|  2.85k|            case 0x22:
  ------------------
  |  Branch (19243:13): [True: 1.00k, False: 237k]
  ------------------
19244|  3.79k|            case 0x23:
  ------------------
  |  Branch (19244:13): [True: 935, False: 237k]
  ------------------
19245|  4.18k|            case 0x24:
  ------------------
  |  Branch (19245:13): [True: 390, False: 237k]
  ------------------
19246|  4.77k|            case 0x25:
  ------------------
  |  Branch (19246:13): [True: 595, False: 237k]
  ------------------
19247|  5.22k|            case 0x26:
  ------------------
  |  Branch (19247:13): [True: 446, False: 237k]
  ------------------
19248|  5.99k|            case 0x27:
  ------------------
  |  Branch (19248:13): [True: 775, False: 237k]
  ------------------
19249|  6.56k|            case 0x28:
  ------------------
  |  Branch (19249:13): [True: 564, False: 237k]
  ------------------
19250|  7.39k|            case 0x29:
  ------------------
  |  Branch (19250:13): [True: 830, False: 237k]
  ------------------
19251|  7.97k|            case 0x2A:
  ------------------
  |  Branch (19251:13): [True: 582, False: 237k]
  ------------------
19252|  8.64k|            case 0x2B:
  ------------------
  |  Branch (19252:13): [True: 673, False: 237k]
  ------------------
19253|  9.02k|            case 0x2C:
  ------------------
  |  Branch (19253:13): [True: 381, False: 237k]
  ------------------
19254|  9.72k|            case 0x2D:
  ------------------
  |  Branch (19254:13): [True: 696, False: 237k]
  ------------------
19255|  10.1k|            case 0x2E:
  ------------------
  |  Branch (19255:13): [True: 464, False: 237k]
  ------------------
19256|  10.9k|            case 0x2F:
  ------------------
  |  Branch (19256:13): [True: 720, False: 237k]
  ------------------
19257|  11.7k|            case 0x30:
  ------------------
  |  Branch (19257:13): [True: 883, False: 237k]
  ------------------
19258|  12.4k|            case 0x31:
  ------------------
  |  Branch (19258:13): [True: 706, False: 237k]
  ------------------
19259|  13.2k|            case 0x32:
  ------------------
  |  Branch (19259:13): [True: 707, False: 237k]
  ------------------
19260|  13.7k|            case 0x33:
  ------------------
  |  Branch (19260:13): [True: 544, False: 237k]
  ------------------
19261|  14.5k|            case 0x34:
  ------------------
  |  Branch (19261:13): [True: 793, False: 237k]
  ------------------
19262|  15.0k|            case 0x35:
  ------------------
  |  Branch (19262:13): [True: 512, False: 237k]
  ------------------
19263|  15.6k|            case 0x36:
  ------------------
  |  Branch (19263:13): [True: 623, False: 237k]
  ------------------
19264|  15.9k|            case 0x37:
  ------------------
  |  Branch (19264:13): [True: 315, False: 237k]
  ------------------
19265|  15.9k|                return sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - current));
19266|       |
19267|    378|            case 0x38: // Negative integer (one-byte uint8_t follows)
  ------------------
  |  Branch (19267:13): [True: 378, False: 237k]
  ------------------
19268|    378|                return get_cbor_negative_integer<std::uint8_t>();
19269|       |
19270|    356|            case 0x39: // Negative integer -1-n (two-byte uint16_t follows)
  ------------------
  |  Branch (19270:13): [True: 356, False: 237k]
  ------------------
19271|    356|                return get_cbor_negative_integer<std::uint16_t>();
19272|       |
19273|    423|            case 0x3A: // Negative integer -1-n (four-byte uint32_t follows)
  ------------------
  |  Branch (19273:13): [True: 423, False: 237k]
  ------------------
19274|    423|                return get_cbor_negative_integer<std::uint32_t>();
19275|       |
19276|    747|            case 0x3B: // Negative integer -1-n (eight-byte uint64_t follows)
  ------------------
  |  Branch (19276:13): [True: 747, False: 237k]
  ------------------
19277|    747|                return get_cbor_negative_integer<std::uint64_t>();
19278|       |
19279|       |            // Binary data (0x00..0x17 bytes follow)
19280|  20.5k|            case 0x40:
  ------------------
  |  Branch (19280:13): [True: 20.5k, False: 217k]
  ------------------
19281|  21.8k|            case 0x41:
  ------------------
  |  Branch (19281:13): [True: 1.23k, False: 236k]
  ------------------
19282|  22.2k|            case 0x42:
  ------------------
  |  Branch (19282:13): [True: 402, False: 237k]
  ------------------
19283|  22.3k|            case 0x43:
  ------------------
  |  Branch (19283:13): [True: 119, False: 237k]
  ------------------
19284|  22.5k|            case 0x44:
  ------------------
  |  Branch (19284:13): [True: 207, False: 237k]
  ------------------
19285|  22.6k|            case 0x45:
  ------------------
  |  Branch (19285:13): [True: 118, False: 237k]
  ------------------
19286|  22.7k|            case 0x46:
  ------------------
  |  Branch (19286:13): [True: 126, False: 237k]
  ------------------
19287|  22.9k|            case 0x47:
  ------------------
  |  Branch (19287:13): [True: 182, False: 237k]
  ------------------
19288|  23.1k|            case 0x48:
  ------------------
  |  Branch (19288:13): [True: 143, False: 237k]
  ------------------
19289|  23.1k|            case 0x49:
  ------------------
  |  Branch (19289:13): [True: 87, False: 237k]
  ------------------
19290|  23.3k|            case 0x4A:
  ------------------
  |  Branch (19290:13): [True: 115, False: 237k]
  ------------------
19291|  23.4k|            case 0x4B:
  ------------------
  |  Branch (19291:13): [True: 124, False: 237k]
  ------------------
19292|  23.5k|            case 0x4C:
  ------------------
  |  Branch (19292:13): [True: 133, False: 237k]
  ------------------
19293|  23.6k|            case 0x4D:
  ------------------
  |  Branch (19293:13): [True: 116, False: 237k]
  ------------------
19294|  23.7k|            case 0x4E:
  ------------------
  |  Branch (19294:13): [True: 51, False: 237k]
  ------------------
19295|  23.7k|            case 0x4F:
  ------------------
  |  Branch (19295:13): [True: 49, False: 237k]
  ------------------
19296|  23.8k|            case 0x50:
  ------------------
  |  Branch (19296:13): [True: 94, False: 237k]
  ------------------
19297|  23.9k|            case 0x51:
  ------------------
  |  Branch (19297:13): [True: 51, False: 237k]
  ------------------
19298|  23.9k|            case 0x52:
  ------------------
  |  Branch (19298:13): [True: 49, False: 237k]
  ------------------
19299|  24.0k|            case 0x53:
  ------------------
  |  Branch (19299:13): [True: 56, False: 237k]
  ------------------
19300|  24.0k|            case 0x54:
  ------------------
  |  Branch (19300:13): [True: 52, False: 237k]
  ------------------
19301|  24.1k|            case 0x55:
  ------------------
  |  Branch (19301:13): [True: 54, False: 237k]
  ------------------
19302|  24.1k|            case 0x56:
  ------------------
  |  Branch (19302:13): [True: 47, False: 237k]
  ------------------
19303|  24.2k|            case 0x57:
  ------------------
  |  Branch (19303:13): [True: 55, False: 237k]
  ------------------
19304|  25.1k|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19304:13): [True: 862, False: 237k]
  ------------------
19305|  25.8k|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19305:13): [True: 783, False: 237k]
  ------------------
19306|  26.3k|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19306:13): [True: 460, False: 237k]
  ------------------
19307|  26.9k|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19307:13): [True: 593, False: 237k]
  ------------------
19308|  27.8k|            case 0x5F: // Binary data (indefinite length)
  ------------------
  |  Branch (19308:13): [True: 879, False: 237k]
  ------------------
19309|  27.8k|            {
19310|  27.8k|                binary_t b;
19311|  27.8k|                return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (19311:24): [True: 27.2k, False: 604]
  |  Branch (19311:46): [True: 27.2k, False: 0]
  ------------------
19312|  26.9k|            }
19313|       |
19314|       |            // UTF-8 string (0x00..0x17 bytes follow)
19315|  7.20k|            case 0x60:
  ------------------
  |  Branch (19315:13): [True: 7.20k, False: 230k]
  ------------------
19316|  8.22k|            case 0x61:
  ------------------
  |  Branch (19316:13): [True: 1.01k, False: 237k]
  ------------------
19317|  8.76k|            case 0x62:
  ------------------
  |  Branch (19317:13): [True: 539, False: 237k]
  ------------------
19318|  9.11k|            case 0x63:
  ------------------
  |  Branch (19318:13): [True: 348, False: 237k]
  ------------------
19319|  9.61k|            case 0x64:
  ------------------
  |  Branch (19319:13): [True: 503, False: 237k]
  ------------------
19320|  10.0k|            case 0x65:
  ------------------
  |  Branch (19320:13): [True: 456, False: 237k]
  ------------------
19321|  10.3k|            case 0x66:
  ------------------
  |  Branch (19321:13): [True: 281, False: 237k]
  ------------------
19322|  10.5k|            case 0x67:
  ------------------
  |  Branch (19322:13): [True: 239, False: 237k]
  ------------------
19323|  10.9k|            case 0x68:
  ------------------
  |  Branch (19323:13): [True: 339, False: 237k]
  ------------------
19324|  11.0k|            case 0x69:
  ------------------
  |  Branch (19324:13): [True: 164, False: 237k]
  ------------------
19325|  11.2k|            case 0x6A:
  ------------------
  |  Branch (19325:13): [True: 200, False: 237k]
  ------------------
19326|  11.4k|            case 0x6B:
  ------------------
  |  Branch (19326:13): [True: 136, False: 237k]
  ------------------
19327|  11.6k|            case 0x6C:
  ------------------
  |  Branch (19327:13): [True: 214, False: 237k]
  ------------------
19328|  11.7k|            case 0x6D:
  ------------------
  |  Branch (19328:13): [True: 150, False: 237k]
  ------------------
19329|  11.8k|            case 0x6E:
  ------------------
  |  Branch (19329:13): [True: 63, False: 237k]
  ------------------
19330|  11.9k|            case 0x6F:
  ------------------
  |  Branch (19330:13): [True: 94, False: 237k]
  ------------------
19331|  12.1k|            case 0x70:
  ------------------
  |  Branch (19331:13): [True: 230, False: 237k]
  ------------------
19332|  12.2k|            case 0x71:
  ------------------
  |  Branch (19332:13): [True: 97, False: 237k]
  ------------------
19333|  12.3k|            case 0x72:
  ------------------
  |  Branch (19333:13): [True: 105, False: 237k]
  ------------------
19334|  12.4k|            case 0x73:
  ------------------
  |  Branch (19334:13): [True: 64, False: 237k]
  ------------------
19335|  12.6k|            case 0x74:
  ------------------
  |  Branch (19335:13): [True: 178, False: 237k]
  ------------------
19336|  12.6k|            case 0x75:
  ------------------
  |  Branch (19336:13): [True: 70, False: 237k]
  ------------------
19337|  12.7k|            case 0x76:
  ------------------
  |  Branch (19337:13): [True: 83, False: 237k]
  ------------------
19338|  12.9k|            case 0x77:
  ------------------
  |  Branch (19338:13): [True: 149, False: 237k]
  ------------------
19339|  14.2k|            case 0x78: // UTF-8 string (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19339:13): [True: 1.28k, False: 236k]
  ------------------
19340|  15.1k|            case 0x79: // UTF-8 string (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19340:13): [True: 929, False: 237k]
  ------------------
19341|  15.5k|            case 0x7A: // UTF-8 string (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19341:13): [True: 373, False: 237k]
  ------------------
19342|  16.1k|            case 0x7B: // UTF-8 string (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19342:13): [True: 653, False: 237k]
  ------------------
19343|  16.9k|            case 0x7F: // UTF-8 string (indefinite length)
  ------------------
  |  Branch (19343:13): [True: 778, False: 237k]
  ------------------
19344|  16.9k|            {
19345|  16.9k|                string_t s;
19346|  16.9k|                return get_cbor_string(s) && sax->string(s);
  ------------------
  |  Branch (19346:24): [True: 16.2k, False: 690]
  |  Branch (19346:46): [True: 16.2k, False: 0]
  ------------------
19347|  16.1k|            }
19348|       |
19349|       |            // array (0x00..0x17 data items follow)
19350|  3.99k|            case 0x80:
  ------------------
  |  Branch (19350:13): [True: 3.99k, False: 234k]
  ------------------
19351|  92.9k|            case 0x81:
  ------------------
  |  Branch (19351:13): [True: 88.9k, False: 149k]
  ------------------
19352|  94.6k|            case 0x82:
  ------------------
  |  Branch (19352:13): [True: 1.63k, False: 236k]
  ------------------
19353|  95.0k|            case 0x83:
  ------------------
  |  Branch (19353:13): [True: 410, False: 237k]
  ------------------
19354|  95.3k|            case 0x84:
  ------------------
  |  Branch (19354:13): [True: 354, False: 237k]
  ------------------
19355|  95.7k|            case 0x85:
  ------------------
  |  Branch (19355:13): [True: 383, False: 237k]
  ------------------
19356|  96.0k|            case 0x86:
  ------------------
  |  Branch (19356:13): [True: 300, False: 237k]
  ------------------
19357|  96.9k|            case 0x87:
  ------------------
  |  Branch (19357:13): [True: 878, False: 237k]
  ------------------
19358|  97.4k|            case 0x88:
  ------------------
  |  Branch (19358:13): [True: 499, False: 237k]
  ------------------
19359|  97.8k|            case 0x89:
  ------------------
  |  Branch (19359:13): [True: 426, False: 237k]
  ------------------
19360|  98.1k|            case 0x8A:
  ------------------
  |  Branch (19360:13): [True: 298, False: 237k]
  ------------------
19361|  98.4k|            case 0x8B:
  ------------------
  |  Branch (19361:13): [True: 332, False: 237k]
  ------------------
19362|  98.7k|            case 0x8C:
  ------------------
  |  Branch (19362:13): [True: 273, False: 237k]
  ------------------
19363|  99.3k|            case 0x8D:
  ------------------
  |  Branch (19363:13): [True: 588, False: 237k]
  ------------------
19364|  99.8k|            case 0x8E:
  ------------------
  |  Branch (19364:13): [True: 463, False: 237k]
  ------------------
19365|   100k|            case 0x8F:
  ------------------
  |  Branch (19365:13): [True: 854, False: 237k]
  ------------------
19366|   101k|            case 0x90:
  ------------------
  |  Branch (19366:13): [True: 421, False: 237k]
  ------------------
19367|   101k|            case 0x91:
  ------------------
  |  Branch (19367:13): [True: 331, False: 237k]
  ------------------
19368|   101k|            case 0x92:
  ------------------
  |  Branch (19368:13): [True: 410, False: 237k]
  ------------------
19369|   102k|            case 0x93:
  ------------------
  |  Branch (19369:13): [True: 368, False: 237k]
  ------------------
19370|   102k|            case 0x94:
  ------------------
  |  Branch (19370:13): [True: 389, False: 237k]
  ------------------
19371|   103k|            case 0x95:
  ------------------
  |  Branch (19371:13): [True: 495, False: 237k]
  ------------------
19372|   103k|            case 0x96:
  ------------------
  |  Branch (19372:13): [True: 469, False: 237k]
  ------------------
19373|   104k|            case 0x97:
  ------------------
  |  Branch (19373:13): [True: 698, False: 237k]
  ------------------
19374|   104k|                return enter_cbor_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
19375|       |
19376|    905|            case 0x98: // array (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19376:13): [True: 905, False: 237k]
  ------------------
19377|  1.66k|            case 0x99: // array (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19377:13): [True: 758, False: 237k]
  ------------------
19378|  2.07k|            case 0x9A: // array (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19378:13): [True: 414, False: 237k]
  ------------------
19379|  2.47k|            case 0x9B: // array (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19379:13): [True: 400, False: 237k]
  ------------------
19380|  2.47k|            {
19381|  2.47k|                std::uint64_t len{};
19382|  2.47k|                std::size_t size{};
19383|  2.47k|                return get_cbor_argument(len) && get_container_size(len, size, "array") && enter_cbor_array(size);
  ------------------
  |  Branch (19383:24): [True: 2.40k, False: 72]
  |  Branch (19383:50): [True: 2.40k, False: 1]
  |  Branch (19383:92): [True: 2.27k, False: 132]
  ------------------
19384|  2.07k|            }
19385|       |
19386|  6.54k|            case 0x9F: // array (indefinite length)
  ------------------
  |  Branch (19386:13): [True: 6.54k, False: 231k]
  ------------------
19387|  6.54k|                return enter_array(detail::unknown_size());
19388|       |
19389|       |            // map (0x00..0x17 pairs of data items follow)
19390|  4.86k|            case 0xA0:
  ------------------
  |  Branch (19390:13): [True: 4.86k, False: 233k]
  ------------------
19391|  13.5k|            case 0xA1:
  ------------------
  |  Branch (19391:13): [True: 8.68k, False: 229k]
  ------------------
19392|  15.3k|            case 0xA2:
  ------------------
  |  Branch (19392:13): [True: 1.82k, False: 236k]
  ------------------
19393|  15.8k|            case 0xA3:
  ------------------
  |  Branch (19393:13): [True: 495, False: 237k]
  ------------------
19394|  16.1k|            case 0xA4:
  ------------------
  |  Branch (19394:13): [True: 268, False: 237k]
  ------------------
19395|  16.4k|            case 0xA5:
  ------------------
  |  Branch (19395:13): [True: 292, False: 237k]
  ------------------
19396|  16.7k|            case 0xA6:
  ------------------
  |  Branch (19396:13): [True: 294, False: 237k]
  ------------------
19397|  17.1k|            case 0xA7:
  ------------------
  |  Branch (19397:13): [True: 428, False: 237k]
  ------------------
19398|  17.4k|            case 0xA8:
  ------------------
  |  Branch (19398:13): [True: 262, False: 237k]
  ------------------
19399|  17.6k|            case 0xA9:
  ------------------
  |  Branch (19399:13): [True: 275, False: 237k]
  ------------------
19400|  17.9k|            case 0xAA:
  ------------------
  |  Branch (19400:13): [True: 257, False: 237k]
  ------------------
19401|  18.2k|            case 0xAB:
  ------------------
  |  Branch (19401:13): [True: 255, False: 237k]
  ------------------
19402|  18.4k|            case 0xAC:
  ------------------
  |  Branch (19402:13): [True: 265, False: 237k]
  ------------------
19403|  18.7k|            case 0xAD:
  ------------------
  |  Branch (19403:13): [True: 280, False: 237k]
  ------------------
19404|  19.0k|            case 0xAE:
  ------------------
  |  Branch (19404:13): [True: 279, False: 237k]
  ------------------
19405|  19.3k|            case 0xAF:
  ------------------
  |  Branch (19405:13): [True: 296, False: 237k]
  ------------------
19406|  19.6k|            case 0xB0:
  ------------------
  |  Branch (19406:13): [True: 289, False: 237k]
  ------------------
19407|  20.1k|            case 0xB1:
  ------------------
  |  Branch (19407:13): [True: 507, False: 237k]
  ------------------
19408|  20.4k|            case 0xB2:
  ------------------
  |  Branch (19408:13): [True: 311, False: 237k]
  ------------------
19409|  20.7k|            case 0xB3:
  ------------------
  |  Branch (19409:13): [True: 295, False: 237k]
  ------------------
19410|  20.9k|            case 0xB4:
  ------------------
  |  Branch (19410:13): [True: 272, False: 237k]
  ------------------
19411|  21.2k|            case 0xB5:
  ------------------
  |  Branch (19411:13): [True: 299, False: 237k]
  ------------------
19412|  21.5k|            case 0xB6:
  ------------------
  |  Branch (19412:13): [True: 257, False: 237k]
  ------------------
19413|  21.8k|            case 0xB7:
  ------------------
  |  Branch (19413:13): [True: 303, False: 237k]
  ------------------
19414|  21.8k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x1Fu));
19415|       |
19416|    312|            case 0xB8: // map (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19416:13): [True: 312, False: 237k]
  ------------------
19417|    668|            case 0xB9: // map (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19417:13): [True: 356, False: 237k]
  ------------------
19418|    903|            case 0xBA: // map (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19418:13): [True: 235, False: 237k]
  ------------------
19419|  1.27k|            case 0xBB: // map (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19419:13): [True: 368, False: 237k]
  ------------------
19420|  1.27k|            {
19421|  1.27k|                std::uint64_t len{};
19422|  1.27k|                std::size_t size{};
19423|  1.27k|                return get_cbor_argument(len) && get_container_size(len, size, "map") && enter_object(size);
  ------------------
  |  Branch (19423:24): [True: 1.22k, False: 43]
  |  Branch (19423:50): [True: 1.22k, False: 1]
  |  Branch (19423:90): [True: 1.07k, False: 149]
  ------------------
19424|    903|            }
19425|       |
19426|  1.50k|            case 0xBF: // map (indefinite length)
  ------------------
  |  Branch (19426:13): [True: 1.50k, False: 236k]
  ------------------
19427|  1.50k|                return enter_object(detail::unknown_size());
19428|       |
19429|      2|            case 0xC0: // tagged item (tag value 0-23, in the head itself)
  ------------------
  |  Branch (19429:13): [True: 2, False: 238k]
  ------------------
19430|      3|            case 0xC1:
  ------------------
  |  Branch (19430:13): [True: 1, False: 238k]
  ------------------
19431|      4|            case 0xC2:
  ------------------
  |  Branch (19431:13): [True: 1, False: 238k]
  ------------------
19432|      5|            case 0xC3:
  ------------------
  |  Branch (19432:13): [True: 1, False: 238k]
  ------------------
19433|      6|            case 0xC4:
  ------------------
  |  Branch (19433:13): [True: 1, False: 238k]
  ------------------
19434|      8|            case 0xC5:
  ------------------
  |  Branch (19434:13): [True: 2, False: 238k]
  ------------------
19435|     10|            case 0xC6:
  ------------------
  |  Branch (19435:13): [True: 2, False: 238k]
  ------------------
19436|     13|            case 0xC7:
  ------------------
  |  Branch (19436:13): [True: 3, False: 238k]
  ------------------
19437|     14|            case 0xC8:
  ------------------
  |  Branch (19437:13): [True: 1, False: 238k]
  ------------------
19438|     15|            case 0xC9:
  ------------------
  |  Branch (19438:13): [True: 1, False: 238k]
  ------------------
19439|     16|            case 0xCA:
  ------------------
  |  Branch (19439:13): [True: 1, False: 238k]
  ------------------
19440|     17|            case 0xCB:
  ------------------
  |  Branch (19440:13): [True: 1, False: 238k]
  ------------------
19441|     18|            case 0xCC:
  ------------------
  |  Branch (19441:13): [True: 1, False: 238k]
  ------------------
19442|     19|            case 0xCD:
  ------------------
  |  Branch (19442:13): [True: 1, False: 238k]
  ------------------
19443|     20|            case 0xCE:
  ------------------
  |  Branch (19443:13): [True: 1, False: 238k]
  ------------------
19444|     23|            case 0xCF:
  ------------------
  |  Branch (19444:13): [True: 3, False: 238k]
  ------------------
19445|     24|            case 0xD0:
  ------------------
  |  Branch (19445:13): [True: 1, False: 238k]
  ------------------
19446|     25|            case 0xD1:
  ------------------
  |  Branch (19446:13): [True: 1, False: 238k]
  ------------------
19447|     26|            case 0xD2:
  ------------------
  |  Branch (19447:13): [True: 1, False: 238k]
  ------------------
19448|     27|            case 0xD3:
  ------------------
  |  Branch (19448:13): [True: 1, False: 238k]
  ------------------
19449|     28|            case 0xD4:
  ------------------
  |  Branch (19449:13): [True: 1, False: 238k]
  ------------------
19450|     29|            case 0xD5:
  ------------------
  |  Branch (19450:13): [True: 1, False: 238k]
  ------------------
19451|     30|            case 0xD6:
  ------------------
  |  Branch (19451:13): [True: 1, False: 238k]
  ------------------
19452|     32|            case 0xD7:
  ------------------
  |  Branch (19452:13): [True: 2, False: 238k]
  ------------------
19453|     32|            {
19454|     32|                if (tag_handler == cbor_tag_handler_t::error)
  ------------------
  |  Branch (19454:21): [True: 32, False: 0]
  ------------------
19455|     32|                {
19456|     32|                    return unexpected_byte("invalid byte", "value");
19457|     32|                }
19458|       |
19459|       |                // ignore and store: the tag value is already in the head, so
19460|       |                // there is nothing left to read here; the tagged value that
19461|       |                // follows is read by the loop in parse_cbor_internal() rather
19462|       |                // than by recursing here
19463|      0|                tag_pending = true;
19464|      0|                return true;
19465|     32|            }
19466|       |
19467|      1|            case 0xD8: // tagged item (1 byte follows)
  ------------------
  |  Branch (19467:13): [True: 1, False: 238k]
  ------------------
19468|      2|            case 0xD9: // tagged item (2 bytes follow)
  ------------------
  |  Branch (19468:13): [True: 1, False: 238k]
  ------------------
19469|      3|            case 0xDA: // tagged item (4 bytes follow)
  ------------------
  |  Branch (19469:13): [True: 1, False: 238k]
  ------------------
19470|      5|            case 0xDB: // tagged item (8 bytes follow)
  ------------------
  |  Branch (19470:13): [True: 2, False: 238k]
  ------------------
19471|      5|            {
19472|      5|                switch (tag_handler)
19473|      5|                {
19474|      5|                    case cbor_tag_handler_t::error:
  ------------------
  |  Branch (19474:21): [True: 5, False: 0]
  ------------------
19475|      5|                    {
19476|      5|                        return unexpected_byte("invalid byte", "value");
19477|      0|                    }
19478|       |
19479|      0|                    case cbor_tag_handler_t::ignore:
  ------------------
  |  Branch (19479:21): [True: 0, False: 5]
  ------------------
19480|      0|                    {
19481|       |                        // ignore the tag's binary subtype argument
19482|      0|                        std::uint64_t subtype_to_ignore{};
19483|      0|                        if (!get_cbor_argument(subtype_to_ignore))
  ------------------
  |  Branch (19483:29): [True: 0, False: 0]
  ------------------
19484|      0|                        {
19485|      0|                            return false;
19486|      0|                        }
19487|       |                        // the tagged value follows; it is read by the loop in
19488|       |                        // parse_cbor_internal() rather than by recursing here
19489|      0|                        tag_pending = true;
19490|      0|                        return true;
19491|      0|                    }
19492|       |
19493|      0|                    case cbor_tag_handler_t::store:
  ------------------
  |  Branch (19493:21): [True: 0, False: 5]
  ------------------
19494|      0|                    {
19495|       |                        // use binary subtype and store in a binary container
19496|      0|                        std::uint64_t subtype{};
19497|      0|                        if (!get_cbor_argument(subtype))
  ------------------
  |  Branch (19497:29): [True: 0, False: 0]
  ------------------
19498|      0|                        {
19499|      0|                            return false;
19500|      0|                        }
19501|      0|                        binary_t b;
19502|      0|                        b.set_subtype(detail::conditional_static_cast<typename binary_t::subtype_type>(subtype));
19503|       |
19504|      0|                        get();
19505|       |                        // a byte string (the heads accepted by get_cbor_binary) keeps the tag as subtype
19506|      0|                        if ((current >= 0x40 && current <= 0x5B) || current == 0x5F)
  ------------------
  |  Branch (19506:30): [True: 0, False: 0]
  |  Branch (19506:49): [True: 0, False: 0]
  |  Branch (19506:69): [True: 0, False: 0]
  ------------------
19507|      0|                        {
19508|      0|                            return get_cbor_binary(b) && sax->binary(b);
  ------------------
  |  Branch (19508:36): [True: 0, False: 0]
  |  Branch (19508:58): [True: 0, False: 0]
  ------------------
19509|      0|                        }
19510|       |
19511|       |                        // not a byte string: the tagged value, whose first byte
19512|       |                        // was just read, is read by the caller like for ignore
19513|      0|                        tag_pending = true;
19514|      0|                        item_read = true;
19515|      0|                        return true;
19516|      0|                    }
19517|       |
19518|      0|                    default:                 // LCOV_EXCL_LINE
  ------------------
  |  Branch (19518:21): [True: 0, False: 5]
  ------------------
19519|      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 (19519:25): [Folded, False: 0]
  ------------------
19520|      0|                        return false;        // LCOV_EXCL_LINE
19521|      5|                }
19522|      5|            }
19523|       |
19524|  1.73k|            case 0xF4: // false
  ------------------
  |  Branch (19524:13): [True: 1.73k, False: 236k]
  ------------------
19525|  1.73k|                return sax->boolean(false);
19526|       |
19527|  2.16k|            case 0xF5: // true
  ------------------
  |  Branch (19527:13): [True: 2.16k, False: 235k]
  ------------------
19528|  2.16k|                return sax->boolean(true);
19529|       |
19530|  3.18k|            case 0xF6: // null
  ------------------
  |  Branch (19530:13): [True: 3.18k, False: 234k]
  ------------------
19531|  3.18k|                return sax->null();
19532|       |
19533|  5.83k|            case 0xF9: // Half-Precision Float (two-byte IEEE 754)
  ------------------
  |  Branch (19533:13): [True: 5.83k, False: 232k]
  ------------------
19534|  5.83k|                return get_half_float(false);
19535|       |
19536|    649|            case 0xFA: // Single-Precision Float (four-byte IEEE 754)
  ------------------
  |  Branch (19536:13): [True: 649, False: 237k]
  ------------------
19537|    649|                return get_cbor_float<float>();
19538|       |
19539|    918|            case 0xFB: // Double-Precision Float (eight-byte IEEE 754)
  ------------------
  |  Branch (19539:13): [True: 918, False: 237k]
  ------------------
19540|    918|                return get_cbor_float<double>();
19541|       |
19542|     47|            default: // anything else (0xFF is handled inside the other types)
  ------------------
  |  Branch (19542:13): [True: 47, False: 237k]
  ------------------
19543|     47|            {
19544|     47|                return unexpected_byte("invalid byte", "value");
19545|      5|            }
19546|   238k|        }
19547|   238k|    }
_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_unsignedIhEEbT_:
23008|    681|    {
23009|    681|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    681|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 681, False: 0]
  |  |  ------------------
  ------------------
23010|    681|        {
23011|    681|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    681|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    681|    }
_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_unsignedItEEbT_:
23008|    555|    {
23009|    555|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    555|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 555, False: 0]
  |  |  ------------------
  ------------------
23010|    555|        {
23011|    555|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    555|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    555|    }
_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_unsignedIjEEbT_:
23008|    460|    {
23009|    460|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1696|    460|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 460, False: 0]
  |  |  ------------------
  ------------------
23010|    460|        {
23011|    460|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
23012|    460|        }
23013|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
23014|      0|        return emit_float(static_cast<long double>(number));
23015|    460|    }
_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_EEE25get_cbor_negative_integerIhEEbv:
19141|    378|    {
19142|    378|        NumberType number{};
19143|    378|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 369, False: 9]
  |  Branch (19143:38): [True: 369, False: 0]
  ------------------
19144|    378|    }
_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_EEE26emit_cbor_negative_integerIhEEbT_:
19149|    608|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    608|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    608|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 608, False: 0]
  |  |  ------------------
  ------------------
19154|    608|        {
19155|    608|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    608|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    608|    }
_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_EEE25get_cbor_negative_integerItEEbv:
19141|    356|    {
19142|    356|        NumberType number{};
19143|    356|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 345, False: 11]
  |  Branch (19143:38): [True: 345, False: 0]
  ------------------
19144|    356|    }
_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_EEE26emit_cbor_negative_integerItEEbT_:
19149|    594|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    594|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    594|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 594, False: 0]
  |  |  ------------------
  ------------------
19154|    594|        {
19155|    594|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    594|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    594|    }
_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_EEE25get_cbor_negative_integerIjEEbv:
19141|    423|    {
19142|    423|        NumberType number{};
19143|    423|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 407, False: 16]
  |  Branch (19143:38): [True: 407, False: 0]
  ------------------
19144|    423|    }
_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_EEE26emit_cbor_negative_integerIjEEbT_:
19149|    523|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|    523|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|    523|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 523, False: 0]
  |  |  ------------------
  ------------------
19154|    523|        {
19155|    523|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    523|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|      0|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|    523|    }
_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_EEE25get_cbor_negative_integerImEEbv:
19141|    747|    {
19142|    747|        NumberType number{};
19143|    747|        return get_number(number) && emit_cbor_negative_integer(number);
  ------------------
  |  Branch (19143:16): [True: 728, False: 19]
  |  Branch (19143:38): [True: 728, False: 0]
  ------------------
19144|    747|    }
_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_EEE26emit_cbor_negative_integerImEEbT_:
19149|  1.19k|    {
19150|       |        // the value is -1 - number, which fits into number_integer_t
19151|       |        // whenever number does; the outer cast undoes the integral promotion
19152|       |        // for number_integer_t types narrower than int
19153|  1.19k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1696|  1.19k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 777, False: 416]
  |  |  ------------------
  ------------------
19154|    777|        {
19155|    777|            return sax->number_integer(conditional_static_cast<number_integer_t>(static_cast<number_integer_t>(-1) - static_cast<number_integer_t>(number)));
19156|    777|        }
19157|       |
19158|       |        // like the lexer does for JSON text, store a value too small for
19159|       |        // number_integer_t as number_float_t; compute it as long double so
19160|       |        // that emit_float sees a finite value and can detect an overflow of
19161|       |        // number_float_t
19162|    416|        return emit_float(static_cast<long double>(-1) - static_cast<long double>(number));
19163|  1.19k|    }
_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_cbor_binaryERNS0_27byte_container_with_subtypeISF_EE:
19947|  27.8k|    {
19948|       |        // read chunks iteratively, but reject a second indefinite-length
19949|       |        // level as required by RFC 8949, Section 3.2.3
19950|  27.8k|        bool indefinite = false;
19951|       |
19952|  30.6k|        while (true)
  ------------------
  |  Branch (19952:16): [True: 29.9k, Folded]
  ------------------
19953|  29.9k|        {
19954|  29.9k|            if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("binary")))
  ------------------
  |  | 1697|  29.9k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 29.9k]
  |  |  ------------------
  ------------------
19955|      0|            {
19956|      0|                return false;
19957|      0|            }
19958|       |
19959|  29.9k|            if (current == 0x5F) // Binary data (indefinite length)
  ------------------
  |  Branch (19959:17): [True: 881, False: 29.1k]
  ------------------
19960|    881|            {
19961|    881|                if (JSON_HEDLEY_UNLIKELY(indefinite))
  ------------------
  |  | 1697|    881|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2, False: 879]
  |  |  ------------------
  ------------------
19962|      2|                {
19963|      2|                    return cbor_indefinite_string_error("binary array", "binary");
19964|      2|                }
19965|    879|                indefinite = true;
19966|    879|                get();
19967|    879|                continue;
19968|    881|            }
19969|       |
19970|       |            // a break marker closes the indefinite-length string; outside
19971|       |            // of one it falls through to the error below
19972|  29.1k|            if (indefinite && current == 0xFF)
  ------------------
  |  Branch (19972:17): [True: 2.15k, False: 26.9k]
  |  Branch (19972:31): [True: 785, False: 1.36k]
  ------------------
19973|    785|            {
19974|    785|                return true;
19975|    785|            }
19976|       |
19977|  28.3k|            if (JSON_HEDLEY_UNLIKELY(!get_cbor_binary_chunk(result, indefinite)))
  ------------------
  |  | 1697|  28.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 28.3k]
  |  |  ------------------
  ------------------
19978|      0|            {
19979|      0|                return false;
19980|      0|            }
19981|       |
19982|  28.3k|            if (!indefinite)
  ------------------
  |  Branch (19982:17): [True: 26.4k, False: 1.90k]
  ------------------
19983|  26.4k|            {
19984|  26.4k|                return true;
19985|  26.4k|            }
19986|       |
19987|  1.90k|            get();
19988|  1.90k|        }
19989|  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_EEE21get_cbor_binary_chunkERNS0_27byte_container_with_subtypeISF_EEb:
19876|  28.3k|    {
19877|  28.3k|        switch (current)
19878|  28.3k|        {
19879|       |            // Binary data (0x00..0x17 bytes follow)
19880|  21.4k|            case 0x40:
  ------------------
  |  Branch (19880:13): [True: 21.4k, False: 6.88k]
  ------------------
19881|  22.9k|            case 0x41:
  ------------------
  |  Branch (19881:13): [True: 1.53k, False: 26.7k]
  ------------------
19882|  23.3k|            case 0x42:
  ------------------
  |  Branch (19882:13): [True: 406, False: 27.8k]
  ------------------
19883|  23.4k|            case 0x43:
  ------------------
  |  Branch (19883:13): [True: 124, False: 28.1k]
  ------------------
19884|  23.6k|            case 0x44:
  ------------------
  |  Branch (19884:13): [True: 209, False: 28.0k]
  ------------------
19885|  23.8k|            case 0x45:
  ------------------
  |  Branch (19885:13): [True: 125, False: 28.1k]
  ------------------
19886|  23.9k|            case 0x46:
  ------------------
  |  Branch (19886:13): [True: 126, False: 28.1k]
  ------------------
19887|  24.1k|            case 0x47:
  ------------------
  |  Branch (19887:13): [True: 185, False: 28.1k]
  ------------------
19888|  24.2k|            case 0x48:
  ------------------
  |  Branch (19888:13): [True: 144, False: 28.1k]
  ------------------
19889|  24.3k|            case 0x49:
  ------------------
  |  Branch (19889:13): [True: 87, False: 28.2k]
  ------------------
19890|  24.4k|            case 0x4A:
  ------------------
  |  Branch (19890:13): [True: 115, False: 28.1k]
  ------------------
19891|  24.6k|            case 0x4B:
  ------------------
  |  Branch (19891:13): [True: 126, False: 28.1k]
  ------------------
19892|  24.7k|            case 0x4C:
  ------------------
  |  Branch (19892:13): [True: 133, False: 28.1k]
  ------------------
19893|  24.8k|            case 0x4D:
  ------------------
  |  Branch (19893:13): [True: 118, False: 28.1k]
  ------------------
19894|  24.9k|            case 0x4E:
  ------------------
  |  Branch (19894:13): [True: 51, False: 28.2k]
  ------------------
19895|  24.9k|            case 0x4F:
  ------------------
  |  Branch (19895:13): [True: 50, False: 28.2k]
  ------------------
19896|  25.0k|            case 0x50:
  ------------------
  |  Branch (19896:13): [True: 104, False: 28.1k]
  ------------------
19897|  25.1k|            case 0x51:
  ------------------
  |  Branch (19897:13): [True: 53, False: 28.2k]
  ------------------
19898|  25.1k|            case 0x52:
  ------------------
  |  Branch (19898:13): [True: 58, False: 28.2k]
  ------------------
19899|  25.2k|            case 0x53:
  ------------------
  |  Branch (19899:13): [True: 56, False: 28.2k]
  ------------------
19900|  25.2k|            case 0x54:
  ------------------
  |  Branch (19900:13): [True: 54, False: 28.2k]
  ------------------
19901|  25.3k|            case 0x55:
  ------------------
  |  Branch (19901:13): [True: 60, False: 28.2k]
  ------------------
19902|  25.3k|            case 0x56:
  ------------------
  |  Branch (19902:13): [True: 48, False: 28.2k]
  ------------------
19903|  25.4k|            case 0x57:
  ------------------
  |  Branch (19903:13): [True: 58, False: 28.2k]
  ------------------
19904|  25.4k|            {
19905|  25.4k|                return get_binary(static_cast<unsigned int>(current) & 0x1Fu, result);
19906|  25.3k|            }
19907|       |
19908|    959|            case 0x58: // Binary data (one-byte uint8_t for n follows)
  ------------------
  |  Branch (19908:13): [True: 959, False: 27.3k]
  ------------------
19909|    959|            {
19910|    959|                return get_cbor_sized_bytes<std::uint8_t>("binary", result);
19911|  25.3k|            }
19912|       |
19913|    826|            case 0x59: // Binary data (two-byte uint16_t for n follow)
  ------------------
  |  Branch (19913:13): [True: 826, False: 27.4k]
  ------------------
19914|    826|            {
19915|    826|                return get_cbor_sized_bytes<std::uint16_t>("binary", result);
19916|  25.3k|            }
19917|       |
19918|    460|            case 0x5A: // Binary data (four-byte uint32_t for n follow)
  ------------------
  |  Branch (19918:13): [True: 460, False: 27.8k]
  ------------------
19919|    460|            {
19920|    460|                return get_cbor_sized_bytes<std::uint32_t>("binary", result);
19921|  25.3k|            }
19922|       |
19923|    593|            case 0x5B: // Binary data (eight-byte uint64_t for n follow)
  ------------------
  |  Branch (19923:13): [True: 593, False: 27.7k]
  ------------------
19924|    593|            {
19925|    593|                return get_cbor_sized_bytes<std::uint64_t>("binary", result);
19926|  25.3k|            }
19927|       |
19928|     22|            default:
  ------------------
  |  Branch (19928:13): [True: 22, False: 28.2k]
  ------------------
19929|     22|            {
19930|     22|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0x40-0x5B)", "binary", inside_indefinite ? "" : " or indefinite binary array type (0x5F)");
  ------------------
  |  Branch (19930:133): [True: 22, False: 0]
  ------------------
19931|  25.3k|            }
19932|  28.3k|        }
19933|  28.3k|    }
_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_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
23219|  25.4k|    {
23220|  25.4k|        return get_bytes(len, "binary", result);
23221|  25.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_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|  25.8k|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|  25.8k|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|  25.8k|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 25.8k]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|  25.8k|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  29.7k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 4.10k, False: 25.6k]
  ------------------
23258|  4.10k|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|  4.10k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 4.05k, False: 44]
  ------------------
23262|  4.10k|                                       ? static_cast<std::size_t>(len)
23263|  4.10k|                                       : chunk_size;
23264|  4.10k|            const std::size_t old_size = result.size();
23265|  4.10k|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|  4.10k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|  4.10k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 4.10k, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|  4.10k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|  4.10k|            chars_read += bytes_read;
23273|  4.10k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|  4.10k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 265, False: 3.83k]
  |  |  ------------------
  ------------------
23274|    265|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    265|                result.resize(old_size + bytes_read);
23279|    265|                ++chars_read;
23280|    265|                current = char_traits<char_type>::eof();
23281|    265|                return unexpect_eof(context);
23282|    265|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|  3.83k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|  3.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 3.83k, False: 0]
  ------------------
23285|  3.83k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|  3.83k|        }
23287|  25.6k|        return true;
23288|  25.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_EEE17append_from_blockIjNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|  25.8k|    {
23317|  25.8k|        return false;
23318|  25.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_EEE20get_cbor_sized_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    959|    {
19593|    959|        NumberType len{};
19594|    959|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 950, False: 9]
  |  Branch (19594:35): [True: 914, False: 36]
  ------------------
19595|    959|    }
_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_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    950|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    950|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    950|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 950]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    950|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.44k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 531, False: 914]
  ------------------
23258|    531|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    531|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 531, False: 0]
  ------------------
23262|    531|                                       ? static_cast<std::size_t>(len)
23263|    531|                                       : chunk_size;
23264|    531|            const std::size_t old_size = result.size();
23265|    531|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    531|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    531|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 531, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    531|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    531|            chars_read += bytes_read;
23273|    531|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    531|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 36, False: 495]
  |  |  ------------------
  ------------------
23274|     36|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     36|                result.resize(old_size + bytes_read);
23279|     36|                ++chars_read;
23280|     36|                current = char_traits<char_type>::eof();
23281|     36|                return unexpect_eof(context);
23282|     36|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    495|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    495|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 495, False: 0]
  ------------------
23285|    495|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    495|        }
23287|    914|        return true;
23288|    950|    }
_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_EEE17append_from_blockIhNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    950|    {
23317|    950|        return false;
23318|    950|    }
_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_cbor_sized_bytesItNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    826|    {
19593|    826|        NumberType len{};
19594|    826|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 811, False: 15]
  |  Branch (19594:35): [True: 758, False: 53]
  ------------------
19595|    826|    }
_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_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    811|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    811|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    811|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 811]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    811|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|  1.17k|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 417, False: 758]
  ------------------
23258|    417|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    417|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 402, False: 15]
  ------------------
23262|    417|                                       ? static_cast<std::size_t>(len)
23263|    417|                                       : chunk_size;
23264|    417|            const std::size_t old_size = result.size();
23265|    417|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    417|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    417|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 417, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    417|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    417|            chars_read += bytes_read;
23273|    417|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    417|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 53, False: 364]
  |  |  ------------------
  ------------------
23274|     53|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|     53|                result.resize(old_size + bytes_read);
23279|     53|                ++chars_read;
23280|     53|                current = char_traits<char_type>::eof();
23281|     53|                return unexpect_eof(context);
23282|     53|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    364|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    364|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 364, False: 0]
  ------------------
23285|    364|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    364|        }
23287|    758|        return true;
23288|    811|    }
_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_EEE17append_from_blockItNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    811|    {
23317|    811|        return false;
23318|    811|    }
_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_cbor_sized_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    460|    {
19593|    460|        NumberType len{};
19594|    460|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 444, False: 16]
  |  Branch (19594:35): [True: 372, False: 72]
  ------------------
19595|    460|    }
_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_cbor_sized_bytesImNS0_27byte_container_with_subtypeISF_EEEEbPKcRT0_:
19592|    593|    {
19593|    593|        NumberType len{};
19594|    593|        return get_number(len) && get_bytes(len, context, result);
  ------------------
  |  Branch (19594:16): [True: 569, False: 24]
  |  Branch (19594:35): [True: 437, False: 132]
  ------------------
19595|    593|    }
_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_EEE9get_bytesImNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
23245|    569|    {
23246|       |        // a string that is in the block of input as a whole is appended from
23247|       |        // it, without the zero-filling resize() below
23248|    569|        constexpr bool from_block = bulk_scan && std::is_same<ContainerType, string_t>::value;
  ------------------
  |  Branch (23248:37): [True: 0, Folded]
  |  Branch (23248:50): [Folded, False: 0]
  ------------------
23249|    569|        if (append_from_block(len, result, std::integral_constant<bool, from_block> {}))
  ------------------
  |  Branch (23249:13): [True: 0, False: 569]
  ------------------
23250|      0|        {
23251|      0|            return true;
23252|      0|        }
23253|       |
23254|       |        // upper bound on the number of bytes read (and allocated) per chunk
23255|    569|        constexpr std::size_t chunk_size = 4096;
23256|       |
23257|    734|        while (len > 0)
  ------------------
  |  Branch (23257:16): [True: 297, False: 437]
  ------------------
23258|    297|        {
23259|       |            // number of bytes to read this iteration: min(chunk_size, len),
23260|       |            // computed without truncating chunk_size to a narrow NumberType
23261|    297|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (23261:40): [True: 196, False: 101]
  ------------------
23262|    297|                                       ? static_cast<std::size_t>(len)
23263|    297|                                       : chunk_size;
23264|    297|            const std::size_t old_size = result.size();
23265|    297|            result.resize(old_size + wanted);
23266|       |            // resize() is required to make size() exactly old_size + wanted;
23267|       |            // that is the room get_elements() is allowed to write into
23268|    297|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2643|    297|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23268:13): [True: 297, False: 0]
  ------------------
23269|       |            // false positive: bytes_read is read on the next lines
23270|       |            // @infer-ignore DEAD_STORE
23271|    297|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
23272|    297|            chars_read += bytes_read;
23273|    297|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1697|    297|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 132, False: 165]
  |  |  ------------------
  ------------------
23274|    132|            {
23275|       |                // premature end of input: shrink to what was actually read and
23276|       |                // report the failure at the first missing byte (same position
23277|       |                // accounting as get_to() for partial number reads)
23278|    132|                result.resize(old_size + bytes_read);
23279|    132|                ++chars_read;
23280|    132|                current = char_traits<char_type>::eof();
23281|    132|                return unexpect_eof(context);
23282|    132|            }
23283|       |            // a full chunk was read; get_elements() never returns more than requested
23284|    165|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2643|    165|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23284:13): [True: 165, False: 0]
  ------------------
23285|    165|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
23286|    165|        }
23287|    437|        return true;
23288|    569|    }
_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_EEE17append_from_blockImNS0_27byte_container_with_subtypeISF_EEEEbT_RT0_NS4_17integral_constantIbLb0EEE:
23316|    569|    {
23317|    569|        return false;
23318|    569|    }
_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_EEE16enter_cbor_arrayEm:
20225|   106k|    {
20226|   106k|        return enter_array(len) && (len <= 1 || parse_cbor_scalar_run(std::integral_constant<bool, bulk_scan> {}));
  ------------------
  |  Branch (20226:16): [True: 106k, False: 132]
  |  Branch (20226:37): [True: 93.4k, False: 13.0k]
  |  Branch (20226:49): [True: 13.0k, False: 0]
  ------------------
20227|   106k|    }
_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_EEE21parse_cbor_scalar_runENS4_17integral_constantIbLb1EEE:
20115|  13.0k|    {
20116|       |        // nothing pushes onto the stack while the run reads scalars
20117|  13.0k|        std::size_t& remaining = container_stack.back().remaining;
20118|  18.3k|        while (remaining != 0 && ia.bulk_remaining() >= 9)
  ------------------
  |  Branch (20118:16): [True: 17.9k, False: 398]
  |  Branch (20118:34): [True: 15.2k, False: 2.63k]
  ------------------
20119|  15.2k|        {
20120|  15.2k|            const auto* const data = reinterpret_cast<const unsigned char*>(ia.bulk_data());
20121|  15.2k|            const unsigned char head = data[0];
20122|  15.2k|            std::size_t size = 0;
20123|  15.2k|            bool accepted = false;
20124|  15.2k|            switch (head)
20125|  15.2k|            {
20126|    256|                case 0x18:
  ------------------
  |  Branch (20126:17): [True: 256, False: 15.0k]
  ------------------
20127|    256|                    size = 2;
20128|    256|                    accepted = emit_unsigned(data[1]);
20129|    256|                    break;
20130|    253|                case 0x19:
  ------------------
  |  Branch (20130:17): [True: 253, False: 15.0k]
  ------------------
20131|    253|                    size = 3;
20132|    253|                    accepted = emit_unsigned(load_big_endian<std::uint16_t>(data + 1));
20133|    253|                    break;
20134|    120|                case 0x1A:
  ------------------
  |  Branch (20134:17): [True: 120, False: 15.1k]
  ------------------
20135|    120|                    size = 5;
20136|    120|                    accepted = emit_unsigned(load_big_endian<std::uint32_t>(data + 1));
20137|    120|                    break;
20138|    268|                case 0x1B:
  ------------------
  |  Branch (20138:17): [True: 268, False: 15.0k]
  ------------------
20139|    268|                    size = 9;
20140|    268|                    accepted = emit_unsigned(load_big_endian<std::uint64_t>(data + 1));
20141|    268|                    break;
20142|    239|                case 0x38:
  ------------------
  |  Branch (20142:17): [True: 239, False: 15.0k]
  ------------------
20143|    239|                    size = 2;
20144|    239|                    accepted = emit_cbor_negative_integer(data[1]);
20145|    239|                    break;
20146|    249|                case 0x39:
  ------------------
  |  Branch (20146:17): [True: 249, False: 15.0k]
  ------------------
20147|    249|                    size = 3;
20148|    249|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint16_t>(data + 1));
20149|    249|                    break;
20150|    116|                case 0x3A:
  ------------------
  |  Branch (20150:17): [True: 116, False: 15.1k]
  ------------------
20151|    116|                    size = 5;
20152|    116|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint32_t>(data + 1));
20153|    116|                    break;
20154|    465|                case 0x3B:
  ------------------
  |  Branch (20154:17): [True: 465, False: 14.8k]
  ------------------
20155|    465|                    size = 9;
20156|    465|                    accepted = emit_cbor_negative_integer(load_big_endian<std::uint64_t>(data + 1));
20157|    465|                    break;
20158|    278|                case 0xF4:
  ------------------
  |  Branch (20158:17): [True: 278, False: 15.0k]
  ------------------
20159|    278|                    size = 1;
20160|    278|                    accepted = sax->boolean(false);
20161|    278|                    break;
20162|    395|                case 0xF5:
  ------------------
  |  Branch (20162:17): [True: 395, False: 14.8k]
  ------------------
20163|    395|                    size = 1;
20164|    395|                    accepted = sax->boolean(true);
20165|    395|                    break;
20166|    398|                case 0xF6:
  ------------------
  |  Branch (20166:17): [True: 398, False: 14.8k]
  ------------------
20167|    398|                    size = 1;
20168|    398|                    accepted = sax->null();
20169|    398|                    break;
20170|    119|                case 0xFA:
  ------------------
  |  Branch (20170:17): [True: 119, False: 15.1k]
  ------------------
20171|    119|                    size = 5;
20172|    119|                    accepted = emit_float(load_big_endian<float>(data + 1));
20173|    119|                    break;
20174|    147|                case 0xFB:
  ------------------
  |  Branch (20174:17): [True: 147, False: 15.1k]
  ------------------
20175|    147|                    size = 9;
20176|    147|                    accepted = emit_float(load_big_endian<double>(data + 1));
20177|    147|                    break;
20178|  11.9k|                default:
  ------------------
  |  Branch (20178:17): [True: 11.9k, False: 3.30k]
  ------------------
20179|  11.9k|                    if (head <= 0x17)
  ------------------
  |  Branch (20179:25): [True: 1.38k, False: 10.5k]
  ------------------
20180|  1.38k|                    {
20181|  1.38k|                        size = 1;
20182|  1.38k|                        accepted = sax->number_unsigned(static_cast<number_unsigned_t>(head));
20183|  1.38k|                    }
20184|  10.5k|                    else if (head >= 0x20 && head <= 0x37)
  ------------------
  |  Branch (20184:30): [True: 10.5k, False: 2]
  |  Branch (20184:46): [True: 600, False: 9.99k]
  ------------------
20185|    600|                    {
20186|    600|                        size = 1;
20187|    600|                        accepted = sax->number_integer(static_cast<std::int8_t>(0x20 - 1 - head));
20188|    600|                    }
20189|  9.99k|                    else
20190|  9.99k|                    {
20191|       |                        // any other value is read by parse_cbor_value
20192|  9.99k|                        return true;
20193|  9.99k|                    }
20194|  1.98k|                    break;
20195|  15.2k|            }
20196|       |            // as if read by get() and get_number(): current is the head byte
20197|  5.29k|            ia.bulk_skip(size);
20198|  5.29k|            chars_read += size;
20199|  5.29k|            current = head;
20200|  5.29k|            --remaining;
20201|  5.29k|            if (JSON_HEDLEY_UNLIKELY(!accepted))
  ------------------
  |  | 1697|  5.29k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.29k]
  |  |  ------------------
  ------------------
20202|      0|            {
20203|      0|                return false;
20204|      0|            }
20205|  5.29k|        }
20206|  3.03k|        return true;
20207|  13.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_EEE15load_big_endianItEET_PKh:
20087|    502|    {
20088|    502|        NumberType result{};
20089|    502|        std::memcpy(&result, data, sizeof(NumberType));
20090|    502|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 502, False: 0]
  ------------------
20091|    502|        {
20092|    502|            byte_swap(result);
20093|    502|        }
20094|    502|        return result;
20095|    502|    }
_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_EEE15load_big_endianIjEET_PKh:
20087|    236|    {
20088|    236|        NumberType result{};
20089|    236|        std::memcpy(&result, data, sizeof(NumberType));
20090|    236|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 236, False: 0]
  ------------------
20091|    236|        {
20092|    236|            byte_swap(result);
20093|    236|        }
20094|    236|        return result;
20095|    236|    }
_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_EEE15load_big_endianImEET_PKh:
20087|    733|    {
20088|    733|        NumberType result{};
20089|    733|        std::memcpy(&result, data, sizeof(NumberType));
20090|    733|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 733, False: 0]
  ------------------
20091|    733|        {
20092|    733|            byte_swap(result);
20093|    733|        }
20094|    733|        return result;
20095|    733|    }
_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|    752|    {
23035|    752|        const auto result = static_cast<number_float_t>(number);
23036|    752|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1697|  1.49k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 752]
  |  |  |  Branch (1697:94): [True: 741, False: 11]
  |  |  |  Branch (1697:94): [True: 0, False: 741]
  |  |  ------------------
  ------------------
23037|      0|        {
23038|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
23039|      0|        }
23040|    752|        return sax->number_float(result, no_source);
23041|    752|    }
_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_EEE15load_big_endianIfEET_PKh:
20087|    119|    {
20088|    119|        NumberType result{};
20089|    119|        std::memcpy(&result, data, sizeof(NumberType));
20090|    119|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 119, False: 0]
  ------------------
20091|    119|        {
20092|    119|            byte_swap(result);
20093|    119|        }
20094|    119|        return result;
20095|    119|    }
_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|    752|    {
22898|    752|        static_assert(sizeof(float) == sizeof(std::uint32_t), "float must have 32 bits");
22899|    752|        std::uint32_t bits{};
22900|    752|        std::memcpy(&bits, &number, sizeof(bits));
22901|    752|        bits = byteswap(bits);
22902|    752|        std::memcpy(&number, &bits, sizeof(bits));
22903|    752|    }
_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_EEE15load_big_endianIdEET_PKh:
20087|    147|    {
20088|    147|        NumberType result{};
20089|    147|        std::memcpy(&result, data, sizeof(NumberType));
20090|    147|        if (is_little_endian)
  ------------------
  |  Branch (20090:13): [True: 147, False: 0]
  ------------------
20091|    147|        {
20092|    147|            byte_swap(result);
20093|    147|        }
20094|    147|        return result;
20095|    147|    }
_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_EEE18get_container_sizeEmRmPKc:
20073|  3.63k|    {
20074|  3.63k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::size_t>(len) || len == detail::unknown_size()))
  ------------------
  |  | 1697|  7.26k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 2, False: 3.63k]
  |  |  |  Branch (1697:94): [True: 0, False: 3.63k]
  |  |  |  Branch (1697:94): [True: 2, False: 3.63k]
  |  |  ------------------
  ------------------
20075|      2|        {
20076|      2|            return container_size_error(context);
20077|      2|        }
20078|  3.63k|        result = conditional_static_cast<std::size_t>(len);
20079|  3.63k|        return true;
20080|  3.63k|    }
_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_EEE20container_size_errorEPKc:
23359|      2|    {
23360|      2|        return sax->parse_error(chars_read, get_token_string(), out_of_range::create(exception_id::container_too_large,
23361|      2|                                exception_message(concat("excessive ", what, " size"), "size"), nullptr));
23362|      2|    }
_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|   113k|    {
18631|   113k|        return enter_container(/*is_object*/false, len, type_marker);
18632|   113k|    }
_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|  24.5k|    {
18637|  24.5k|        return enter_container(/*is_object*/true, len, type_marker);
18638|  24.5k|    }
_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|     84|    {
23422|     84|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
23423|     84|    }
_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_EEE14get_half_floatEb:
23054|  5.83k|    {
23055|  5.83k|        const auto byte1_raw = get();
23056|  5.83k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.83k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.83k]
  |  |  ------------------
  ------------------
23057|      0|        {
23058|      0|            return false;
23059|      0|        }
23060|  5.83k|        const auto byte2_raw = get();
23061|  5.83k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("number")))
  ------------------
  |  | 1697|  5.83k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 5.83k]
  |  |  ------------------
  ------------------
23062|      0|        {
23063|      0|            return false;
23064|      0|        }
23065|       |
23066|  5.83k|        const auto byte1 = static_cast<unsigned char>(byte1_raw);
23067|  5.83k|        const auto byte2 = static_cast<unsigned char>(byte2_raw);
23068|       |
23069|       |        // Code from RFC 8949, Appendix D, Figure 3:
23070|       |        // As half-precision floating-point numbers were only added
23071|       |        // to IEEE 754 in 2008, today's programming platforms often
23072|       |        // still only have limited support for them. It is very
23073|       |        // easy to include at least decoding support for them even
23074|       |        // without such support. An example of a small decoder for
23075|       |        // half-precision floating-point numbers in the C language
23076|       |        // is shown in Fig. 3.
23077|  5.83k|        const auto half = little_endian
  ------------------
  |  Branch (23077:27): [True: 0, False: 5.83k]
  ------------------
23078|  5.83k|                          ? static_cast<unsigned int>((byte2 << 8u) + byte1)
23079|  5.83k|                          : static_cast<unsigned int>((byte1 << 8u) + byte2);
23080|  5.83k|        const double val = [&half]
23081|  5.83k|        {
23082|  5.83k|            const int exp = (half >> 10u) & 0x1Fu;
23083|  5.83k|            const unsigned int mant = half & 0x3FFu;
23084|  5.83k|            JSON_ASSERT(exp <= 31);
23085|  5.83k|            JSON_ASSERT(mant <= 1023);
23086|  5.83k|            switch (exp)
23087|  5.83k|            {
23088|  5.83k|                case 0:
23089|  5.83k|                    return std::ldexp(mant, -24);
23090|  5.83k|                case 31:
23091|  5.83k|                    return (mant == 0)
23092|  5.83k|                    ? std::numeric_limits<double>::infinity()
23093|  5.83k|                    : std::numeric_limits<double>::quiet_NaN();
23094|  5.83k|                default:
23095|  5.83k|                    return std::ldexp(mant + 1024, exp - 25);
23096|  5.83k|            }
23097|  5.83k|        }();
23098|  5.83k|        return sax->number_float((half & 0x8000u) != 0
  ------------------
  |  Branch (23098:34): [True: 3.53k, False: 2.29k]
  ------------------
23099|  5.83k|                                 ? static_cast<number_float_t>(-val)
23100|  5.83k|                                 : static_cast<number_float_t>(val), no_source);
23101|  5.83k|    }
_ZZN8nlohmann16json_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_EEE14get_half_floatEbENKUlvE_clEv:
23081|  5.81k|        {
23082|  5.81k|            const int exp = (half >> 10u) & 0x1Fu;
23083|  5.81k|            const unsigned int mant = half & 0x3FFu;
23084|  5.81k|            JSON_ASSERT(exp <= 31);
  ------------------
  |  | 2643|  5.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23084:13): [True: 5.81k, False: 0]
  ------------------
23085|  5.81k|            JSON_ASSERT(mant <= 1023);
  ------------------
  |  | 2643|  5.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (23085:13): [True: 5.81k, False: 0]
  ------------------
23086|  5.81k|            switch (exp)
23087|  5.81k|            {
23088|  1.17k|                case 0:
  ------------------
  |  Branch (23088:17): [True: 1.17k, False: 4.63k]
  ------------------
23089|  1.17k|                    return std::ldexp(mant, -24);
23090|    918|                case 31:
  ------------------
  |  Branch (23090:17): [True: 918, False: 4.89k]
  ------------------
23091|    918|                    return (mant == 0)
  ------------------
  |  Branch (23091:28): [True: 451, False: 467]
  ------------------
23092|    918|                    ? std::numeric_limits<double>::infinity()
23093|    918|                    : std::numeric_limits<double>::quiet_NaN();
23094|  3.71k|                default:
  ------------------
  |  Branch (23094:17): [True: 3.71k, False: 2.09k]
  ------------------
23095|  3.71k|                    return std::ldexp(mant + 1024, exp - 25);
23096|  5.81k|            }
23097|  5.81k|        }();
_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_EEE14get_cbor_floatIfEEbv:
19552|    649|    {
19553|    649|        NumberType number{};
19554|    649|        return get_number(number) && emit_float(number);
  ------------------
  |  Branch (19554:16): [True: 633, False: 16]
  |  Branch (19554:38): [True: 633, False: 0]
  ------------------
19555|    649|    }
_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|    649|    {
22949|       |        // read in the original format
22950|       |
22951|    649|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|    649|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 649]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|    649|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 633, False: 16]
  |  Branch (22955:34): [Folded, False: 633]
  |  Branch (22955:57): [True: 0, False: 633]
  ------------------
22956|    633|        {
22957|    633|            byte_swap(result);
22958|    633|        }
22959|    649|        return true;
22960|    649|    }
_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|    649|    {
22856|       |        // false positive: new_chars_read is read on the next lines
22857|       |        // @infer-ignore DEAD_STORE
22858|    649|        auto new_chars_read = ia.get_elements(&dest);
22859|    649|        chars_read += new_chars_read;
22860|    649|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1697|    649|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 16, False: 633]
  |  |  ------------------
  ------------------
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|    633|        return true;
22868|    649|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIfEEmPT_m:
 9445|    649|    {
 9446|    649|        return fread(dest, 1, sizeof(T) * count, m_file);
 9447|    649|    }
_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_EEE14get_cbor_floatIdEEbv:
19552|    918|    {
19553|    918|        NumberType number{};
19554|    918|        return get_number(number) && emit_float(number);
  ------------------
  |  Branch (19554:16): [True: 899, False: 19]
  |  Branch (19554:38): [True: 899, False: 0]
  ------------------
19555|    918|    }
_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|    918|    {
22949|       |        // read in the original format
22950|       |
22951|    918|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1697|    918|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1697:57): [True: 0, False: 918]
  |  |  ------------------
  ------------------
22952|      0|        {
22953|      0|            return false;
22954|      0|        }
22955|    918|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (22955:13): [True: 899, False: 19]
  |  Branch (22955:34): [Folded, False: 899]
  |  Branch (22955:57): [True: 0, False: 899]
  ------------------
22956|    899|        {
22957|    899|            byte_swap(result);
22958|    899|        }
22959|    918|        return true;
22960|    918|    }
_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|   296k|    {
22841|   296k|        ++chars_read;
22842|   296k|        return current = ia.get_character();
22843|   296k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter13get_characterEv:
 9416|   296k|    {
 9417|       |        // what getc_unlocked() does, while the buffer has characters
 9418|   296k|        const char* const next = buffer_ptr();
 9419|   296k|        if (JSON_HEDLEY_LIKELY(next != buffer_end()))
  ------------------
  |  | 1696|   296k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1696:57): [True: 281k, False: 15.1k]
  |  |  ------------------
  ------------------
 9420|   281k|        {
 9421|   281k|            current_in_buffer = true;
 9422|   281k|            buffer_bump(1);
 9423|   281k|            return std::char_traits<char>::to_int_type(*next);
 9424|   281k|        }
 9425|  15.1k|        return get_character_slow();
 9426|   296k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter18get_character_slowEv:
 9554|  15.1k|    {
 9555|  15.1k|        if (token_segment != nullptr)
  ------------------
  |  Branch (9555:13): [True: 0, False: 15.1k]
  ------------------
 9556|      0|        {
 9557|      0|            token_carry.append(token_segment, buffer_end());
 9558|      0|            token_segment = nullptr;
 9559|      0|        }
 9560|  15.1k|        const auto res = getc_unlocked(m_file);
 9561|  15.1k|        if (res == EOF)
  ------------------
  |  Branch (9561:13): [True: 6.53k, False: 8.58k]
  ------------------
 9562|  6.53k|        {
 9563|  6.53k|            current_in_buffer = false;
 9564|  6.53k|            return std::char_traits<char>::eof();
 9565|  6.53k|        }
 9566|       |        // the character was taken from the refilled buffer, at buffer_ptr() - 1
 9567|  8.58k|        current_in_buffer = true;
 9568|  8.58k|        if (tracking_token)
  ------------------
  |  Branch (9568:13): [True: 0, False: 8.58k]
  ------------------
 9569|      0|        {
 9570|      0|            token_segment = buffer_ptr() - 1;
 9571|      0|        }
 9572|  8.58k|        return res;
 9573|  15.1k|    }
_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|    308|    {
23408|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
23409|    308|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
23410|    308|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (23410:51): [True: 87, False: 221]
  ------------------
23411|    308|    }
_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|  8.58k|    ~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|  8.58k|    ~json_sax_dom_binary_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterEP8_IO_FILE:
10710|  8.58k|{
10711|  8.58k|    if (file == nullptr)
  ------------------
  |  Branch (10711:9): [True: 0, False: 8.58k]
  ------------------
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|  8.58k|    return file_input_adapter(file);
10716|  8.58k|}
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterC2EP8_IO_FILE:
 9387|  8.58k|        : m_file(f)
 9388|  8.58k|    {
 9389|  8.58k|        JSON_ASSERT(m_file != nullptr);
  ------------------
  |  | 2643|  8.58k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (9389:9): [True: 8.58k, False: 0]
  ------------------
 9390|  8.58k|        lock();
 9391|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter4lockEv:
 9581|  8.58k|    {
 9582|  8.58k|#if JSON_UNLOCKED_FILE_IO == 1
 9583|  8.58k|        flockfile(m_file);
 9584|       |#elif JSON_UNLOCKED_FILE_IO == 2
 9585|       |        _lock_file(m_file);
 9586|       |#endif
 9587|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterD2Ev:
 9410|  17.1k|    {
 9411|  17.1k|        unlock();
 9412|  17.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter6unlockEv:
 9590|  17.1k|    {
 9591|       |        // a moved-from adapter has no file and holds no lock
 9592|  17.1k|        if (m_file == nullptr)
  ------------------
  |  Branch (9592:13): [True: 8.58k, False: 8.58k]
  ------------------
 9593|  8.58k|        {
 9594|  8.58k|            return;
 9595|  8.58k|        }
 9596|  8.58k|#if JSON_UNLOCKED_FILE_IO == 1
 9597|  8.58k|        funlockfile(m_file);
 9598|       |#elif JSON_UNLOCKED_FILE_IO == 2
 9599|       |        _unlock_file(m_file);
 9600|       |#endif
 9601|  8.58k|    }

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

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

