_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12is_discardedEv:
32970|  7.51k|    {
32971|  7.51k|        return m_data.m_type == value_t::discarded;
32972|  7.51k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dumpEicbNS0_6detail15error_handler_tE:
32842|  27.9k|    {
32843|  27.9k|        string_t result;
32844|  27.9k|        detail::output_string_adapter<char, string_t> string_adapter(result);
32845|       |
32846|  27.9k|        if (indent >= 0)
  ------------------
  |  Branch (32846:13): [True: 0, False: 27.9k]
  ------------------
32847|      0|        {
32848|      0|            serializer s(string_adapter, indent_char,
32849|      0|                         true, ensure_ascii, static_cast<std::size_t>(indent), error_handler);
32850|      0|            s.dump(*this);
32851|      0|        }
32852|  27.9k|        else
32853|  27.9k|        {
32854|  27.9k|            serializer s(string_adapter, indent_char,
32855|  27.9k|                         false, ensure_ascii, 0, error_handler);
32856|  27.9k|            s.dump(*this);
32857|  27.9k|        }
32858|       |
32859|  27.9k|        return result;
32860|  27.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEC2ERS9_:
22821|  27.9k|        : str(s)
22822|  27.9k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcEC2Ev:
22716|  27.9k|    output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail23output_adapter_protocolIcED2Ev:
22714|  27.9k|    virtual ~output_adapter_protocol() = default;
_ZN8nlohmann16json_abi_v3_12_06detail21output_string_adapterIcNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEE16write_charactersEPKcm:
22830|  29.8k|    {
22831|  29.8k|        str.append(s, length);
22832|  29.8k|    }
_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:
28044|  27.9k|        : o(&s)
28045|  27.9k|        , indent_char(ichar)
28046|  27.9k|        , pretty_print(pretty_print_)
28047|  27.9k|        , ensure_ascii(ensure_ascii_)
28048|  27.9k|        , indent_step(indent_step_)
28049|  27.9k|        , error_handler(error_handler_)
28050|  27.9k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE4dumpERKSG_m:
28079|  27.9k|    {
28080|  27.9k|        dump_internal(val, current_indent);
28081|  27.9k|        flush();
28082|  27.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13dump_internalERKSG_mm:
28105|   561k|    {
28106|   561k|        switch (val.m_data.m_type)
28107|   561k|        {
28108|  32.2k|            case value_t::object:
  ------------------
  |  Branch (28108:13): [True: 32.2k, False: 529k]
  ------------------
28109|  32.2k|            {
28110|  32.2k|                if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1667|  32.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 1.92k, False: 30.3k]
  |  |  ------------------
  ------------------
28111|  1.92k|                {
28112|  1.92k|                    dump_iteratively(val, current_indent);
28113|  1.92k|                    return;
28114|  1.92k|                }
28115|       |
28116|  30.3k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (28116:21): [True: 4.38k, False: 25.9k]
  ------------------
28117|  4.38k|                {
28118|  4.38k|                    put_literal("{}");
28119|  4.38k|                    return;
28120|  4.38k|                }
28121|       |
28122|  25.9k|                if (pretty_print)
  ------------------
  |  Branch (28122:21): [True: 0, False: 25.9k]
  ------------------
28123|      0|                {
28124|      0|                    put_literal("{\n");
28125|       |
28126|       |                    // variable to hold indentation for recursive calls
28127|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28128|       |
28129|       |                    // first n-1 elements
28130|      0|                    auto i = val.m_data.m_value.object->cbegin();
28131|      0|                    for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (28131:47): [True: 0, False: 0]
  ------------------
28132|      0|                    {
28133|      0|                        put_indent(new_indent);
28134|      0|                        put_char('"');
28135|      0|                        dump_escaped(i->first);
28136|      0|                        put_literal("\": ");
28137|      0|                        dump_internal(i->second, new_indent, depth + 1);
28138|      0|                        put_literal(",\n");
28139|      0|                    }
28140|       |
28141|       |                    // last element
28142|      0|                    JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28142:21): [True: 0, False: 0]
  ------------------
28143|      0|                    JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28143:21): [True: 0, False: 0]
  ------------------
28144|      0|                    put_indent(new_indent);
28145|      0|                    put_char('"');
28146|      0|                    dump_escaped(i->first);
28147|      0|                    put_literal("\": ");
28148|      0|                    dump_internal(i->second, new_indent, depth + 1);
28149|       |
28150|      0|                    put_char('\n');
28151|      0|                    put_indent(current_indent);
28152|      0|                    put_char('}');
28153|      0|                }
28154|  25.9k|                else
28155|  25.9k|                {
28156|  25.9k|                    put_char('{');
28157|       |
28158|       |                    // first n-1 elements
28159|  25.9k|                    auto i = val.m_data.m_value.object->cbegin();
28160|  45.4k|                    for (std::size_t cnt = 0; cnt < val.m_data.m_value.object->size() - 1; ++cnt, ++i)
  ------------------
  |  Branch (28160:47): [True: 19.4k, False: 25.9k]
  ------------------
28161|  19.4k|                    {
28162|  19.4k|                        put_char('"');
28163|  19.4k|                        dump_escaped(i->first);
28164|  19.4k|                        put_literal("\":");
28165|  19.4k|                        dump_internal(i->second, current_indent, depth + 1);
28166|  19.4k|                        put_char(',');
28167|  19.4k|                    }
28168|       |
28169|       |                    // last element
28170|  25.9k|                    JSON_ASSERT(i != val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|  25.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28170:21): [True: 25.9k, False: 0]
  ------------------
28171|  25.9k|                    JSON_ASSERT(std::next(i) == val.m_data.m_value.object->cend());
  ------------------
  |  | 2591|  25.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28171:21): [True: 25.9k, False: 0]
  ------------------
28172|  25.9k|                    put_char('"');
28173|  25.9k|                    dump_escaped(i->first);
28174|  25.9k|                    put_literal("\":");
28175|  25.9k|                    dump_internal(i->second, current_indent, depth + 1);
28176|       |
28177|  25.9k|                    put_char('}');
28178|  25.9k|                }
28179|       |
28180|  25.9k|                return;
28181|  25.9k|            }
28182|       |
28183|   253k|            case value_t::array:
  ------------------
  |  Branch (28183:13): [True: 253k, False: 308k]
  ------------------
28184|   253k|            {
28185|   253k|                if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()))
  ------------------
  |  | 1667|   253k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3.10k, False: 250k]
  |  |  ------------------
  ------------------
28186|  3.10k|                {
28187|  3.10k|                    dump_iteratively(val, current_indent);
28188|  3.10k|                    return;
28189|  3.10k|                }
28190|       |
28191|   250k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (28191:21): [True: 6.32k, False: 244k]
  ------------------
28192|  6.32k|                {
28193|  6.32k|                    put_literal("[]");
28194|  6.32k|                    return;
28195|  6.32k|                }
28196|       |
28197|   244k|                if (pretty_print)
  ------------------
  |  Branch (28197:21): [True: 0, False: 244k]
  ------------------
28198|      0|                {
28199|      0|                    put_literal("[\n");
28200|       |
28201|       |                    // variable to hold indentation for recursive calls
28202|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28203|       |
28204|       |                    // first n-1 elements
28205|      0|                    for (auto i = val.m_data.m_value.array->cbegin();
28206|      0|                            i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (28206:29): [True: 0, False: 0]
  ------------------
28207|      0|                    {
28208|      0|                        put_indent(new_indent);
28209|      0|                        dump_internal(*i, new_indent, depth + 1);
28210|      0|                        put_literal(",\n");
28211|      0|                    }
28212|       |
28213|       |                    // last element
28214|      0|                    JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28214:21): [True: 0, False: 0]
  ------------------
28215|      0|                    put_indent(new_indent);
28216|      0|                    dump_internal(val.m_data.m_value.array->back(), new_indent, depth + 1);
28217|       |
28218|      0|                    put_char('\n');
28219|      0|                    put_indent(current_indent);
28220|      0|                    put_char(']');
28221|      0|                }
28222|   244k|                else
28223|   244k|                {
28224|   244k|                    put_char('[');
28225|       |
28226|       |                    // first n-1 elements
28227|   244k|                    for (auto i = val.m_data.m_value.array->cbegin();
28228|   488k|                            i != val.m_data.m_value.array->cend() - 1; ++i)
  ------------------
  |  Branch (28228:29): [True: 244k, False: 244k]
  ------------------
28229|   244k|                    {
28230|   244k|                        dump_internal(*i, current_indent, depth + 1);
28231|   244k|                        put_char(',');
28232|   244k|                    }
28233|       |
28234|       |                    // last element
28235|   244k|                    JSON_ASSERT(!val.m_data.m_value.array->empty());
  ------------------
  |  | 2591|   244k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28235:21): [True: 244k, False: 0]
  ------------------
28236|   244k|                    dump_internal(val.m_data.m_value.array->back(), current_indent, depth + 1);
28237|       |
28238|   244k|                    put_char(']');
28239|   244k|                }
28240|       |
28241|   244k|                return;
28242|   244k|            }
28243|       |
28244|   244k|            case value_t::string:
  ------------------
  |  Branch (28244:13): [True: 20.7k, False: 541k]
  ------------------
28245|  76.0k|            case value_t::binary:
  ------------------
  |  Branch (28245:13): [True: 55.3k, False: 506k]
  ------------------
28246|  84.7k|            case value_t::boolean:
  ------------------
  |  Branch (28246:13): [True: 8.64k, False: 553k]
  ------------------
28247|   130k|            case value_t::number_integer:
  ------------------
  |  Branch (28247:13): [True: 45.4k, False: 516k]
  ------------------
28248|   256k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28248:13): [True: 125k, False: 435k]
  ------------------
28249|   271k|            case value_t::number_float:
  ------------------
  |  Branch (28249:13): [True: 15.0k, False: 546k]
  ------------------
28250|   271k|            case value_t::discarded:
  ------------------
  |  Branch (28250:13): [True: 0, False: 561k]
  ------------------
28251|   275k|            case value_t::null:
  ------------------
  |  Branch (28251:13): [True: 4.54k, False: 557k]
  ------------------
28252|   275k|            default:
  ------------------
  |  Branch (28252:13): [True: 0, False: 561k]
  ------------------
28253|   275k|                dump_scalar(val, current_indent);
28254|   275k|                return;
28255|   561k|        }
28256|   561k|    }
_ZN8nlohmann16json_abi_v3_12_06detail21recursion_depth_limitEv:
 8044|   963k|{
 8045|   963k|    return 128;
 8046|   963k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE16dump_iterativelyERKSG_m:
28270|  5.02k|    {
28271|       |        // Scalars, empty containers and binary values are written by dump_value
28272|       |        // alone, so nothing is allocated for them: only a container with
28273|       |        // elements is ever pushed.
28274|  5.02k|        std::vector<dump_frame> stack;
28275|       |
28276|  5.02k|        dump_value(val, current_indent, stack);
28277|       |
28278|   379k|        while (!stack.empty())
  ------------------
  |  Branch (28278:16): [True: 374k, False: 5.02k]
  ------------------
28279|   374k|        {
28280|   374k|            dump_frame& frame = stack.back();
28281|       |
28282|   374k|            if (frame.value->m_data.m_type == value_t::object)
  ------------------
  |  Branch (28282:17): [True: 16.2k, False: 358k]
  ------------------
28283|  16.2k|            {
28284|  16.2k|                const auto* object = frame.value->m_data.m_value.object;
28285|       |
28286|  16.2k|                if (frame.object_it == object->cend())
  ------------------
  |  Branch (28286:21): [True: 5.20k, False: 11.0k]
  ------------------
28287|  5.20k|                {
28288|  5.20k|                    if (pretty_print)
  ------------------
  |  Branch (28288:25): [True: 0, False: 5.20k]
  ------------------
28289|      0|                    {
28290|      0|                        put_char('\n');
28291|      0|                        put_indent(frame.current_indent);
28292|      0|                    }
28293|       |
28294|  5.20k|                    put_char('}');
28295|  5.20k|                    stack.pop_back();
28296|  5.20k|                    continue;
28297|  5.20k|                }
28298|       |
28299|       |                // the separator goes in front of every element but the first,
28300|       |                // which puts exactly one between each pair and none at the end
28301|  11.0k|                if (frame.object_it != object->cbegin())
  ------------------
  |  Branch (28301:21): [True: 5.83k, False: 5.20k]
  ------------------
28302|  5.83k|                {
28303|  5.83k|                    if (pretty_print)
  ------------------
  |  Branch (28303:25): [True: 0, False: 5.83k]
  ------------------
28304|      0|                    {
28305|      0|                        put_literal(",\n");
28306|      0|                    }
28307|  5.83k|                    else
28308|  5.83k|                    {
28309|  5.83k|                        put_char(',');
28310|  5.83k|                    }
28311|  5.83k|                }
28312|       |
28313|  11.0k|                if (pretty_print)
  ------------------
  |  Branch (28313:21): [True: 0, False: 11.0k]
  ------------------
28314|      0|                {
28315|      0|                    put_indent(frame.child_indent);
28316|      0|                }
28317|       |
28318|  11.0k|                put_char('"');
28319|  11.0k|                dump_escaped(frame.object_it->first);
28320|       |
28321|  11.0k|                if (pretty_print)
  ------------------
  |  Branch (28321:21): [True: 0, False: 11.0k]
  ------------------
28322|      0|                {
28323|      0|                    put_literal("\": ");
28324|      0|                }
28325|  11.0k|                else
28326|  11.0k|                {
28327|  11.0k|                    put_literal("\":");
28328|  11.0k|                }
28329|       |
28330|  11.0k|                const BasicJsonType& element = frame.object_it->second;
28331|  11.0k|                ++frame.object_it;
28332|       |
28333|       |                // read everything needed from the frame before this: entering a
28334|       |                // container pushes another one and can move them all
28335|  11.0k|                const std::size_t element_indent = frame.child_indent;
28336|  11.0k|                dump_value(element, element_indent, stack);
28337|  11.0k|            }
28338|   358k|            else
28339|   358k|            {
28340|   358k|                const auto* array = frame.value->m_data.m_value.array;
28341|       |
28342|   358k|                if (frame.array_it == array->cend())
  ------------------
  |  Branch (28342:21): [True: 172k, False: 185k]
  ------------------
28343|   172k|                {
28344|   172k|                    if (pretty_print)
  ------------------
  |  Branch (28344:25): [True: 0, False: 172k]
  ------------------
28345|      0|                    {
28346|      0|                        put_char('\n');
28347|      0|                        put_indent(frame.current_indent);
28348|      0|                    }
28349|       |
28350|   172k|                    put_char(']');
28351|   172k|                    stack.pop_back();
28352|   172k|                    continue;
28353|   172k|                }
28354|       |
28355|   185k|                if (frame.array_it != array->cbegin())
  ------------------
  |  Branch (28355:21): [True: 13.2k, False: 172k]
  ------------------
28356|  13.2k|                {
28357|  13.2k|                    if (pretty_print)
  ------------------
  |  Branch (28357:25): [True: 0, False: 13.2k]
  ------------------
28358|      0|                    {
28359|      0|                        put_literal(",\n");
28360|      0|                    }
28361|  13.2k|                    else
28362|  13.2k|                    {
28363|  13.2k|                        put_char(',');
28364|  13.2k|                    }
28365|  13.2k|                }
28366|       |
28367|   185k|                if (pretty_print)
  ------------------
  |  Branch (28367:21): [True: 0, False: 185k]
  ------------------
28368|      0|                {
28369|      0|                    put_indent(frame.child_indent);
28370|      0|                }
28371|       |
28372|   185k|                const BasicJsonType& element = *frame.array_it;
28373|   185k|                ++frame.array_it;
28374|       |
28375|       |                // see above
28376|   185k|                const std::size_t element_indent = frame.child_indent;
28377|   185k|                dump_value(element, element_indent, stack);
28378|   185k|            }
28379|   374k|        }
28380|  5.02k|    }
_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:
28418|   201k|    {
28419|   201k|        switch (val.m_data.m_type)
28420|   201k|        {
28421|  8.67k|            case value_t::object:
  ------------------
  |  Branch (28421:13): [True: 8.67k, False: 193k]
  ------------------
28422|  8.67k|            {
28423|  8.67k|                if (val.m_data.m_value.object->empty())
  ------------------
  |  Branch (28423:21): [True: 3.47k, False: 5.20k]
  ------------------
28424|  3.47k|                {
28425|  3.47k|                    put_literal("{}");
28426|  3.47k|                    return;
28427|  3.47k|                }
28428|       |
28429|  5.20k|                std::size_t child_indent = current_indent;
28430|       |
28431|  5.20k|                if (pretty_print)
  ------------------
  |  Branch (28431:21): [True: 0, False: 5.20k]
  ------------------
28432|      0|                {
28433|      0|                    put_literal("{\n");
28434|      0|                    child_indent = next_indent(current_indent, indent_step);
28435|      0|                }
28436|  5.20k|                else
28437|  5.20k|                {
28438|  5.20k|                    put_char('{');
28439|  5.20k|                }
28440|       |
28441|  5.20k|                stack.emplace_back(&val, current_indent, child_indent);
28442|  5.20k|                stack.back().object_it = val.m_data.m_value.object->cbegin();
28443|  5.20k|                return;
28444|  8.67k|            }
28445|       |
28446|   177k|            case value_t::array:
  ------------------
  |  Branch (28446:13): [True: 177k, False: 24.2k]
  ------------------
28447|   177k|            {
28448|   177k|                if (val.m_data.m_value.array->empty())
  ------------------
  |  Branch (28448:21): [True: 5.02k, False: 172k]
  ------------------
28449|  5.02k|                {
28450|  5.02k|                    put_literal("[]");
28451|  5.02k|                    return;
28452|  5.02k|                }
28453|       |
28454|   172k|                std::size_t child_indent = current_indent;
28455|       |
28456|   172k|                if (pretty_print)
  ------------------
  |  Branch (28456:21): [True: 0, False: 172k]
  ------------------
28457|      0|                {
28458|      0|                    put_literal("[\n");
28459|      0|                    child_indent = next_indent(current_indent, indent_step);
28460|      0|                }
28461|   172k|                else
28462|   172k|                {
28463|   172k|                    put_char('[');
28464|   172k|                }
28465|       |
28466|   172k|                stack.emplace_back(&val, current_indent, child_indent);
28467|   172k|                stack.back().array_it = val.m_data.m_value.array->cbegin();
28468|   172k|                return;
28469|   177k|            }
28470|       |
28471|  1.28k|            case value_t::string:
  ------------------
  |  Branch (28471:13): [True: 1.28k, False: 200k]
  ------------------
28472|  3.21k|            case value_t::binary:
  ------------------
  |  Branch (28472:13): [True: 1.92k, False: 199k]
  ------------------
28473|  3.64k|            case value_t::boolean:
  ------------------
  |  Branch (28473:13): [True: 432, False: 201k]
  ------------------
28474|  5.43k|            case value_t::number_integer:
  ------------------
  |  Branch (28474:13): [True: 1.78k, False: 199k]
  ------------------
28475|  14.8k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28475:13): [True: 9.46k, False: 192k]
  ------------------
28476|  15.4k|            case value_t::number_float:
  ------------------
  |  Branch (28476:13): [True: 522, False: 201k]
  ------------------
28477|  15.4k|            case value_t::discarded:
  ------------------
  |  Branch (28477:13): [True: 0, False: 201k]
  ------------------
28478|  15.5k|            case value_t::null:
  ------------------
  |  Branch (28478:13): [True: 168, False: 201k]
  ------------------
28479|  15.5k|            default:
  ------------------
  |  Branch (28479:13): [True: 0, False: 201k]
  ------------------
28480|  15.5k|                dump_scalar(val, current_indent);
28481|  15.5k|                return;
28482|   201k|        }
28483|   201k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_frameC2EPKSG_mm:
28388|   177k|            : value(value_)
28389|   177k|            , current_indent(current_indent_)
28390|   177k|            , child_indent(child_indent_)
28391|   177k|        {}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm3EEEvRAT__Kc:
29090|  75.6k|    {
29091|  75.6k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  75.6k|        constexpr std::size_t length = N - 1;
29094|  75.6k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  75.6k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  75.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 108, False: 75.5k]
  |  |  ------------------
  ------------------
29097|    108|        {
29098|    108|            flush();
29099|    108|        }
29100|  75.6k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  75.6k|        write_buffer_pos += length;
29102|  75.6k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE8put_charEc:
29019|  1.41M|    {
29020|  1.41M|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos == write_buffer.size()))
  ------------------
  |  | 1667|  1.41M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 726, False: 1.41M]
  |  |  ------------------
  ------------------
29021|    726|        {
29022|    726|            flush();
29023|    726|        }
29024|  1.41M|        write_buffer[write_buffer_pos++] = c;
29025|  1.41M|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_escapedERKSC_:
28657|  78.5k|    {
28658|       |        // dispatch once here rather than test the flag inside the loop: it does
28659|       |        // not change while a string is written, and folding it lets each of the
28660|       |        // two scanners be inlined into a loop of its own
28661|  78.5k|        if (ensure_ascii)
  ------------------
  |  Branch (28661:13): [True: 0, False: 78.5k]
  ------------------
28662|      0|        {
28663|      0|            dump_escaped_impl<true>(s);
28664|      0|        }
28665|  78.5k|        else
28666|  78.5k|        {
28667|  78.5k|            dump_escaped_impl<false>(s);
28668|  78.5k|        }
28669|  78.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail16read_eight_bytesEPKh:
 9376|   130k|{
 9377|   130k|#if defined(_MSC_VER) || defined(__x86_64__) || defined(__i386__) || (defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__)
 9378|       |    // the byte order already matches (all MSVC targets are little-endian)
 9379|   130k|    std::uint64_t result = 0;
 9380|   130k|    std::memcpy(&result, b, sizeof(result));
 9381|   130k|    return result;
 9382|       |#else
 9383|       |    return static_cast<std::uint64_t>(b[0]) | (static_cast<std::uint64_t>(b[1]) << 8u)
 9384|       |           | (static_cast<std::uint64_t>(b[2]) << 16u) | (static_cast<std::uint64_t>(b[3]) << 24u)
 9385|       |           | (static_cast<std::uint64_t>(b[4]) << 32u) | (static_cast<std::uint64_t>(b[5]) << 40u)
 9386|       |           | (static_cast<std::uint64_t>(b[6]) << 48u) | (static_cast<std::uint64_t>(b[7]) << 56u);
 9387|       |#endif
 9388|   130k|}
_ZN8nlohmann16json_abi_v3_12_06detail20count_trailing_zerosEm:
 9319|   130k|{
 9320|   130k|#if defined(__GNUC__) || defined(__clang__)
 9321|   130k|    return __builtin_ctzll(x);
 9322|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9323|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9324|       |    _BitScanForward64(&index, x);
 9325|       |    return static_cast<int>(index);
 9326|       |#else
 9327|       |    int n = 0;
 9328|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9329|       |    {
 9330|       |        if ((x << (64 - shift)) == 0)
 9331|       |        {
 9332|       |            n += shift;
 9333|       |            x >>= shift;
 9334|       |        }
 9335|       |    }
 9336|       |    return n;
 9337|       |#endif
 9338|   130k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_bufferILm512EEEvRKNS4_5arrayIcXT_EEEm:
29141|  43.0k|    {
29142|  43.0k|        put_string(buffer, 0, length);
29143|  43.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringINS4_5arrayIcLm512EEEEEvRKT_mm:
29115|  43.0k|    {
29116|  43.0k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2591|  43.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29116:9): [True: 43.0k, False: 0]
  ------------------
29117|  43.0k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2591|  43.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29117:9): [True: 43.0k, False: 0]
  ------------------
29118|       |
29119|  43.0k|        const char* const s = str.data() + start;
29120|  43.0k|        const std::size_t length = end - start;
29121|       |
29122|  43.0k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1667|  43.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 43.0k]
  |  |  ------------------
  ------------------
29123|      0|        {
29124|      0|            flush();
29125|      0|            o->write_characters(s, length);
29126|      0|            return;
29127|      0|        }
29128|  43.0k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  43.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 24, False: 43.0k]
  |  |  ------------------
  ------------------
29129|     24|        {
29130|     24|            flush();
29131|     24|        }
29132|  43.0k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29133|  43.0k|        write_buffer_pos += length;
29134|  43.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10put_stringISC_EEvRKT_mm:
29115|  32.2k|    {
29116|  32.2k|        JSON_ASSERT(start <= end);
  ------------------
  |  | 2591|  32.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29116:9): [True: 32.2k, False: 0]
  ------------------
29117|  32.2k|        JSON_ASSERT(end <= str.size());
  ------------------
  |  | 2591|  32.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29117:9): [True: 32.2k, False: 0]
  ------------------
29118|       |
29119|  32.2k|        const char* const s = str.data() + start;
29120|  32.2k|        const std::size_t length = end - start;
29121|       |
29122|  32.2k|        if (JSON_HEDLEY_UNLIKELY(length >= write_buffer.size()))
  ------------------
  |  | 1667|  32.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 32.2k]
  |  |  ------------------
  ------------------
29123|      0|        {
29124|      0|            flush();
29125|      0|            o->write_characters(s, length);
29126|      0|            return;
29127|      0|        }
29128|  32.2k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  32.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 6, False: 32.2k]
  |  |  ------------------
  ------------------
29129|      6|        {
29130|      6|            flush();
29131|      6|        }
29132|  32.2k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29133|  32.2k|        write_buffer_pos += length;
29134|  32.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE13ascii_escapesEv:
29208|  58.3k|    {
29209|  58.3k|        static const std::array<std::array<char, 8>, 0x60> escapes =
29210|  58.3k|        {
29211|  58.3k|            {
29212|  58.3k|                {{'\\', 'u', '0', '0', '0', '0', 0, 6}}, // 0x00
29213|  58.3k|                {{'\\', 'u', '0', '0', '0', '1', 0, 6}}, // 0x01
29214|  58.3k|                {{'\\', 'u', '0', '0', '0', '2', 0, 6}}, // 0x02
29215|  58.3k|                {{'\\', 'u', '0', '0', '0', '3', 0, 6}}, // 0x03
29216|  58.3k|                {{'\\', 'u', '0', '0', '0', '4', 0, 6}}, // 0x04
29217|  58.3k|                {{'\\', 'u', '0', '0', '0', '5', 0, 6}}, // 0x05
29218|  58.3k|                {{'\\', 'u', '0', '0', '0', '6', 0, 6}}, // 0x06
29219|  58.3k|                {{'\\', 'u', '0', '0', '0', '7', 0, 6}}, // 0x07
29220|  58.3k|                {{'\\', 'b', 0, 0, 0, 0, 0, 2}}, // 0x08
29221|  58.3k|                {{'\\', 't', 0, 0, 0, 0, 0, 2}}, // 0x09
29222|  58.3k|                {{'\\', 'n', 0, 0, 0, 0, 0, 2}}, // 0x0A
29223|  58.3k|                {{'\\', 'u', '0', '0', '0', 'b', 0, 6}}, // 0x0B
29224|  58.3k|                {{'\\', 'f', 0, 0, 0, 0, 0, 2}}, // 0x0C
29225|  58.3k|                {{'\\', 'r', 0, 0, 0, 0, 0, 2}}, // 0x0D
29226|  58.3k|                {{'\\', 'u', '0', '0', '0', 'e', 0, 6}}, // 0x0E
29227|  58.3k|                {{'\\', 'u', '0', '0', '0', 'f', 0, 6}}, // 0x0F
29228|  58.3k|                {{'\\', 'u', '0', '0', '1', '0', 0, 6}}, // 0x10
29229|  58.3k|                {{'\\', 'u', '0', '0', '1', '1', 0, 6}}, // 0x11
29230|  58.3k|                {{'\\', 'u', '0', '0', '1', '2', 0, 6}}, // 0x12
29231|  58.3k|                {{'\\', 'u', '0', '0', '1', '3', 0, 6}}, // 0x13
29232|  58.3k|                {{'\\', 'u', '0', '0', '1', '4', 0, 6}}, // 0x14
29233|  58.3k|                {{'\\', 'u', '0', '0', '1', '5', 0, 6}}, // 0x15
29234|  58.3k|                {{'\\', 'u', '0', '0', '1', '6', 0, 6}}, // 0x16
29235|  58.3k|                {{'\\', 'u', '0', '0', '1', '7', 0, 6}}, // 0x17
29236|  58.3k|                {{'\\', 'u', '0', '0', '1', '8', 0, 6}}, // 0x18
29237|  58.3k|                {{'\\', 'u', '0', '0', '1', '9', 0, 6}}, // 0x19
29238|  58.3k|                {{'\\', 'u', '0', '0', '1', 'a', 0, 6}}, // 0x1A
29239|  58.3k|                {{'\\', 'u', '0', '0', '1', 'b', 0, 6}}, // 0x1B
29240|  58.3k|                {{'\\', 'u', '0', '0', '1', 'c', 0, 6}}, // 0x1C
29241|  58.3k|                {{'\\', 'u', '0', '0', '1', 'd', 0, 6}}, // 0x1D
29242|  58.3k|                {{'\\', 'u', '0', '0', '1', 'e', 0, 6}}, // 0x1E
29243|  58.3k|                {{'\\', 'u', '0', '0', '1', 'f', 0, 6}}, // 0x1F
29244|  58.3k|                {{' ', 0, 0, 0, 0, 0, 0, 1}}, // 0x20
29245|  58.3k|                {{'!', 0, 0, 0, 0, 0, 0, 1}}, // 0x21
29246|  58.3k|                {{'\\', '"', 0, 0, 0, 0, 0, 2}}, // 0x22
29247|  58.3k|                {{'#', 0, 0, 0, 0, 0, 0, 1}}, // 0x23
29248|  58.3k|                {{'$', 0, 0, 0, 0, 0, 0, 1}}, // 0x24
29249|  58.3k|                {{'%', 0, 0, 0, 0, 0, 0, 1}}, // 0x25
29250|  58.3k|                {{'&', 0, 0, 0, 0, 0, 0, 1}}, // 0x26
29251|  58.3k|                {{'\'', 0, 0, 0, 0, 0, 0, 1}}, // 0x27
29252|  58.3k|                {{'(', 0, 0, 0, 0, 0, 0, 1}}, // 0x28
29253|  58.3k|                {{')', 0, 0, 0, 0, 0, 0, 1}}, // 0x29
29254|  58.3k|                {{'*', 0, 0, 0, 0, 0, 0, 1}}, // 0x2A
29255|  58.3k|                {{'+', 0, 0, 0, 0, 0, 0, 1}}, // 0x2B
29256|  58.3k|                {{',', 0, 0, 0, 0, 0, 0, 1}}, // 0x2C
29257|  58.3k|                {{'-', 0, 0, 0, 0, 0, 0, 1}}, // 0x2D
29258|  58.3k|                {{'.', 0, 0, 0, 0, 0, 0, 1}}, // 0x2E
29259|  58.3k|                {{'/', 0, 0, 0, 0, 0, 0, 1}}, // 0x2F
29260|  58.3k|                {{'0', 0, 0, 0, 0, 0, 0, 1}}, // 0x30
29261|  58.3k|                {{'1', 0, 0, 0, 0, 0, 0, 1}}, // 0x31
29262|  58.3k|                {{'2', 0, 0, 0, 0, 0, 0, 1}}, // 0x32
29263|  58.3k|                {{'3', 0, 0, 0, 0, 0, 0, 1}}, // 0x33
29264|  58.3k|                {{'4', 0, 0, 0, 0, 0, 0, 1}}, // 0x34
29265|  58.3k|                {{'5', 0, 0, 0, 0, 0, 0, 1}}, // 0x35
29266|  58.3k|                {{'6', 0, 0, 0, 0, 0, 0, 1}}, // 0x36
29267|  58.3k|                {{'7', 0, 0, 0, 0, 0, 0, 1}}, // 0x37
29268|  58.3k|                {{'8', 0, 0, 0, 0, 0, 0, 1}}, // 0x38
29269|  58.3k|                {{'9', 0, 0, 0, 0, 0, 0, 1}}, // 0x39
29270|  58.3k|                {{':', 0, 0, 0, 0, 0, 0, 1}}, // 0x3A
29271|  58.3k|                {{';', 0, 0, 0, 0, 0, 0, 1}}, // 0x3B
29272|  58.3k|                {{'<', 0, 0, 0, 0, 0, 0, 1}}, // 0x3C
29273|  58.3k|                {{'=', 0, 0, 0, 0, 0, 0, 1}}, // 0x3D
29274|  58.3k|                {{'>', 0, 0, 0, 0, 0, 0, 1}}, // 0x3E
29275|  58.3k|                {{'?', 0, 0, 0, 0, 0, 0, 1}}, // 0x3F
29276|  58.3k|                {{'@', 0, 0, 0, 0, 0, 0, 1}}, // 0x40
29277|  58.3k|                {{'A', 0, 0, 0, 0, 0, 0, 1}}, // 0x41
29278|  58.3k|                {{'B', 0, 0, 0, 0, 0, 0, 1}}, // 0x42
29279|  58.3k|                {{'C', 0, 0, 0, 0, 0, 0, 1}}, // 0x43
29280|  58.3k|                {{'D', 0, 0, 0, 0, 0, 0, 1}}, // 0x44
29281|  58.3k|                {{'E', 0, 0, 0, 0, 0, 0, 1}}, // 0x45
29282|  58.3k|                {{'F', 0, 0, 0, 0, 0, 0, 1}}, // 0x46
29283|  58.3k|                {{'G', 0, 0, 0, 0, 0, 0, 1}}, // 0x47
29284|  58.3k|                {{'H', 0, 0, 0, 0, 0, 0, 1}}, // 0x48
29285|  58.3k|                {{'I', 0, 0, 0, 0, 0, 0, 1}}, // 0x49
29286|  58.3k|                {{'J', 0, 0, 0, 0, 0, 0, 1}}, // 0x4A
29287|  58.3k|                {{'K', 0, 0, 0, 0, 0, 0, 1}}, // 0x4B
29288|  58.3k|                {{'L', 0, 0, 0, 0, 0, 0, 1}}, // 0x4C
29289|  58.3k|                {{'M', 0, 0, 0, 0, 0, 0, 1}}, // 0x4D
29290|  58.3k|                {{'N', 0, 0, 0, 0, 0, 0, 1}}, // 0x4E
29291|  58.3k|                {{'O', 0, 0, 0, 0, 0, 0, 1}}, // 0x4F
29292|  58.3k|                {{'P', 0, 0, 0, 0, 0, 0, 1}}, // 0x50
29293|  58.3k|                {{'Q', 0, 0, 0, 0, 0, 0, 1}}, // 0x51
29294|  58.3k|                {{'R', 0, 0, 0, 0, 0, 0, 1}}, // 0x52
29295|  58.3k|                {{'S', 0, 0, 0, 0, 0, 0, 1}}, // 0x53
29296|  58.3k|                {{'T', 0, 0, 0, 0, 0, 0, 1}}, // 0x54
29297|  58.3k|                {{'U', 0, 0, 0, 0, 0, 0, 1}}, // 0x55
29298|  58.3k|                {{'V', 0, 0, 0, 0, 0, 0, 1}}, // 0x56
29299|  58.3k|                {{'W', 0, 0, 0, 0, 0, 0, 1}}, // 0x57
29300|  58.3k|                {{'X', 0, 0, 0, 0, 0, 0, 1}}, // 0x58
29301|  58.3k|                {{'Y', 0, 0, 0, 0, 0, 0, 1}}, // 0x59
29302|  58.3k|                {{'Z', 0, 0, 0, 0, 0, 0, 1}}, // 0x5A
29303|  58.3k|                {{'[', 0, 0, 0, 0, 0, 0, 1}}, // 0x5B
29304|  58.3k|                {{'\\', '\\', 0, 0, 0, 0, 0, 2}}, // 0x5C
29305|  58.3k|                {{']', 0, 0, 0, 0, 0, 0, 1}}, // 0x5D
29306|  58.3k|                {{'^', 0, 0, 0, 0, 0, 0, 1}}, // 0x5E
29307|  58.3k|                {{'_', 0, 0, 0, 0, 0, 0, 1}}, // 0x5F
29308|  58.3k|            }
29309|  58.3k|        };
29310|  58.3k|        return escapes;
29311|  58.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6decodeERhRjh:
 6798|   191k|{
 6799|   191k|    static const std::array<std::uint8_t, 400> utf8d =
 6800|   191k|    {
 6801|   191k|        {
 6802|   191k|            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
 6803|   191k|            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
 6804|   191k|            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
 6805|   191k|            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
 6806|   191k|            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
 6807|   191k|            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
 6808|   191k|            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
 6809|   191k|            0xA, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x3, 0x4, 0x3, 0x3, // E0..EF
 6810|   191k|            0xB, 0x6, 0x6, 0x6, 0x5, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, 0x8, // F0..FF
 6811|   191k|            0x0, 0x1, 0x2, 0x3, 0x5, 0x8, 0x7, 0x1, 0x1, 0x1, 0x4, 0x6, 0x1, 0x1, 0x1, 0x1, // s0..s0
 6812|   191k|            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
 6813|   191k|            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
 6814|   191k|            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
 6815|   191k|            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
 6816|   191k|        }
 6817|   191k|    };
 6818|       |
 6819|   191k|    JSON_ASSERT(static_cast<std::size_t>(byte) < utf8d.size());
  ------------------
  |  | 2591|   191k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (6819:5): [True: 191k, False: 0]
  ------------------
 6820|   191k|    const std::uint8_t type = utf8d[byte];
 6821|       |
 6822|   191k|    codep = (state != UTF8_ACCEPT)
  ------------------
  |  Branch (6822:13): [True: 49.6k, False: 141k]
  ------------------
 6823|   191k|            ? (byte & 0x3fu) | (codep << 6u)
 6824|   191k|            : (0xFFu >> type) & (byte);
 6825|       |
 6826|   191k|    const std::size_t index = 256u + (static_cast<std::size_t>(state) * 16u) + static_cast<std::size_t>(type);
 6827|   191k|    JSON_ASSERT(index < utf8d.size());
  ------------------
  |  | 2591|   191k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (6827:5): [True: 191k, False: 0]
  ------------------
 6828|   191k|    state = utf8d[index];
 6829|   191k|    return state;
 6830|   191k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_EEEmRKT_DpRKT0_:
 5228|  17.1k|{
 5229|  17.1k|    return str.size() + concat_length(rest...);
 5230|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJEEEmRKT_DpRKT0_:
 5228|  53.6k|{
 5229|  53.6k|    return str.size() + concat_length(rest...);
 5230|  53.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthEv:
 5204|  70.8k|{
 5205|  70.8k|    return 0;
 5206|  70.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSD_OSE_DpOT1_:
 5281|  34.3k|{
 5282|  34.3k|    out.append(std::forward<Arg>(arg));
 5283|  34.3k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  34.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEvRT_:
 5234|  70.8k|{}
_ZN8nlohmann16json_abi_v3_12_06detail9exception4nameERKNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEi:
 5446|  17.1k|    {
 5447|  17.1k|        return concat("[json.exception.", ename, '.', std::to_string(id_), "] ");
 5448|  17.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA17_KcRKS9_cS9_RA3_SA_EEET_DpOT0_:
 5318|  17.1k|{
 5319|  17.1k|    OutStringType str;
 5320|  17.1k|    str.reserve(concat_length(args...));
 5321|  17.1k|    concat_into(str, std::forward<Args>(args)...);
 5322|  17.1k|    return str;
 5323|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEcS9_A3_cEEEmPKcDpRKT_:
 5222|  17.1k|{
 5223|  17.1k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cEEEmRKT_DpRKT0_:
 5228|  17.1k|{
 5229|  17.1k|    return str.size() + concat_length(rest...);
 5230|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cEEEmcDpRKT_:
 5216|  17.1k|{
 5217|  17.1k|    return 1 + concat_length(rest...);
 5218|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cEEEmRKT_DpRKT0_:
 5228|  17.1k|{
 5229|  17.1k|    return str.size() + concat_length(rest...);
 5230|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJEEEmPKcDpRKT_:
 5222|  17.1k|{
 5223|  17.1k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  17.1k|}
_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_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JcS9_RA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_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_:
 5290|  17.1k|{
 5291|  17.1k|    out += std::forward<Arg>(arg);
 5292|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5293|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JRA3_KcETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail9exception11diagnosticsEDn:
 5451|  17.1k|    {
 5452|  17.1k|        return "";
 5453|  17.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9exceptionC2EiPKc:
 5443|  17.1k|    exception(int id_, const char* what_arg) : id(id_), m(what_arg) {} // NOLINT(bugprone-throw-keyword-missing)
_ZNK8nlohmann16json_abi_v3_12_06detail9exception4whatEv:
 5434|  11.4k|    {
 5435|  11.4k|        return m.what();
 5436|  11.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|  36.5k|{
 5223|  36.5k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  36.5k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA5_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|     18|{
 5282|     18|    out.append(std::forward<Arg>(arg));
 5283|     18|    concat_into(out, std::forward<Args>(rest)...);
 5284|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_JETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSB_OSC_DpOT1_:
 5281|  19.3k|{
 5282|  19.3k|    out.append(std::forward<Arg>(arg));
 5283|  19.3k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  19.3k|}
_ZN8nlohmann16json_abi_v3_12_06detail8hex_byteEh:
 6692|  4.34k|{
 6693|  4.34k|    std::string result = "00";
 6694|  4.34k|    constexpr const char* nibble_to_hex = "0123456789ABCDEF";
 6695|  4.34k|    result[0] = nibble_to_hex[byte / 16];
 6696|  4.34k|    result[1] = nibble_to_hex[byte % 16];
 6697|  4.34k|    return result;
 6698|  4.34k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE17dump_escaped_implILb0EEEvRKSC_:
28684|  78.5k|    {
28685|  78.5k|        std::uint32_t codepoint{};
28686|  78.5k|        std::uint8_t state = UTF8_ACCEPT;
28687|  78.5k|        std::size_t bytes = 0;  // number of bytes written to string_buffer
28688|       |
28689|       |        // number of bytes written at the point of the last valid byte
28690|  78.5k|        std::size_t bytes_after_last_accept = 0;
28691|  78.5k|        std::size_t undumped_chars = 0;
28692|       |
28693|   328k|        for (std::size_t i = 0; i < s.size(); ++i)
  ------------------
  |  Branch (28693:33): [True: 265k, False: 62.5k]
  ------------------
28694|   265k|        {
28695|       |            // Fast path: at a character boundary (state == UTF8_ACCEPT),
28696|       |            // bulk-copy the longest run of bytes that need no escaping using a
28697|       |            // SWAR scanner shared with the lexer's contiguous path. The scanner
28698|       |            // stops exactly at the first byte dump_escaped would handle
28699|       |            // individually, so that byte is left to the byte-at-a-time path
28700|       |            // below, keeping escaping output and error diagnostics unchanged.
28701|       |            //
28702|       |            // - EnsureAscii == false: string_bulk_run() copies ordinary bytes
28703|       |            //   and complete well-formed UTF-8, stopping at a quote, backslash,
28704|       |            //   control character (< 0x20), or ill-formed/truncated sequence.
28705|       |            // - EnsureAscii == true: only printable ASCII may be copied
28706|       |            //   verbatim; find_ascii_copyable_run() additionally stops at 0x7F
28707|       |            //   and every non-ASCII byte (>= 0x80), which must be \u-escaped.
28708|   265k|            if (state == UTF8_ACCEPT)
  ------------------
  |  Branch (28708:17): [True: 216k, False: 49.6k]
  ------------------
28709|   216k|            {
28710|   216k|                const auto* const data = reinterpret_cast<const unsigned char*>(s.data());
28711|       |                // A run can only be non-empty when the very first byte is one
28712|       |                // the scanner may copy, so test that single byte before paying
28713|       |                // for the scan. Without it, text whose characters all have to be
28714|       |                // escaped - CJK under ensure_ascii, where every byte is >= 0x80 -
28715|       |                // runs the scanner once per character only to be told zero.
28716|   216k|                std::size_t run = 0;
28717|   216k|                if (!EnsureAscii)
  ------------------
  |  Branch (28717:21): [True: 216k, Folded]
  ------------------
28718|   216k|                {
28719|   216k|                    run = string_bulk_run(data + i, s.size() - i);
28720|   216k|                }
28721|      0|                else if (is_ascii_copyable(data[i]))
  ------------------
  |  Branch (28721:26): [True: 0, False: 0]
  ------------------
28722|      0|                {
28723|      0|                    run = find_ascii_copyable_run(data + i, s.size() - i);
28724|      0|                }
28725|   216k|                if (run != 0)
  ------------------
  |  Branch (28725:21): [True: 32.2k, False: 184k]
  ------------------
28726|  32.2k|                {
28727|       |                    // emit any bytes still pending in string_buffer first to
28728|       |                    // preserve output order, then write the run directly
28729|  32.2k|                    if (bytes != 0)
  ------------------
  |  Branch (28729:25): [True: 12.8k, False: 19.4k]
  ------------------
28730|  12.8k|                    {
28731|  12.8k|                        put_buffer(string_buffer, bytes);
28732|  12.8k|                        bytes = 0;
28733|  12.8k|                    }
28734|  32.2k|                    put_string(s, i, i + run);
28735|  32.2k|                    bytes_after_last_accept = 0;
28736|  32.2k|                    undumped_chars = 0;
28737|  32.2k|                    i += run;
28738|  32.2k|                    if (i >= s.size())
  ------------------
  |  Branch (28738:25): [True: 15.9k, False: 16.2k]
  ------------------
28739|  15.9k|                    {
28740|  15.9k|                        break;
28741|  15.9k|                    }
28742|  32.2k|                }
28743|       |
28744|       |                // A byte below 0x60 is a complete code point and needs no
28745|       |                // UTF-8 decoding. The scanner stops only at a control
28746|       |                // character, a quote, or a backslash in that range, so look up
28747|       |                // its escape sequence and write all 8 bytes of the table entry
28748|       |                // straight into the write buffer; only the length stored in the
28749|       |                // last byte of the entry is kept.
28750|   200k|                if (data[i] < 0x60)
  ------------------
  |  Branch (28750:21): [True: 58.3k, False: 141k]
  ------------------
28751|  58.3k|                {
28752|       |                    // emit any bytes still pending in string_buffer first to
28753|       |                    // preserve output order
28754|  58.3k|                    if (bytes != 0)
  ------------------
  |  Branch (28754:25): [True: 9.31k, False: 49.0k]
  ------------------
28755|  9.31k|                    {
28756|  9.31k|                        put_buffer(string_buffer, bytes);
28757|  9.31k|                        bytes = 0;
28758|  9.31k|                    }
28759|  58.3k|                    const auto& escape = ascii_escapes()[data[i]];
28760|  58.3k|                    if (JSON_HEDLEY_UNLIKELY(write_buffer.size() - write_buffer_pos < escape.size()))
  ------------------
  |  | 1667|  58.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 66, False: 58.2k]
  |  |  ------------------
  ------------------
28761|     66|                    {
28762|     66|                        flush();
28763|     66|                    }
28764|  58.3k|                    std::memcpy(write_buffer.data() + write_buffer_pos, escape.data(), escape.size());
28765|  58.3k|                    write_buffer_pos += static_cast<std::size_t>(escape[7]);
28766|  58.3k|                    bytes_after_last_accept = 0;
28767|  58.3k|                    undumped_chars = 0;
28768|  58.3k|                    continue;
28769|  58.3k|                }
28770|   200k|            }
28771|       |
28772|   191k|            const auto byte = static_cast<std::uint8_t>(s[i]);
28773|       |
28774|   191k|            switch (decode(state, codepoint, byte))
28775|   191k|            {
28776|      0|                case UTF8_ACCEPT:  // decode found a new code point
  ------------------
  |  Branch (28776:17): [True: 0, False: 191k]
  ------------------
28777|      0|                {
28778|       |                    // the code point is at least 0x60 (smaller ones are handled
28779|       |                    // above) and is not printable ASCII (which the scanner
28780|       |                    // copies): it is DEL (0x7F) under EnsureAscii or a non-ASCII
28781|       |                    // character
28782|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (28782:25): [Folded, False: 0]
  ------------------
28783|      0|                    {
28784|      0|                        JSON_ASSERT(codepoint >= 0x7F);
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28784:25): [True: 0, False: 0]
  ------------------
28785|      0|                        if (error_handler == error_handler_t::keep)
  ------------------
  |  Branch (28785:29): [True: 0, False: 0]
  ------------------
28786|      0|                        {
28787|       |                            // this character was buffered as raw bytes below
28788|       |                            // in case it turned out to be part of an
28789|       |                            // ill-formed sequence (which is kept as is); now
28790|       |                            // that it decoded to a well-formed code point,
28791|       |                            // undo that and \u-escape it like any other
28792|       |                            // character instead
28793|      0|                            bytes = bytes_after_last_accept;
28794|      0|                        }
28795|      0|                        if (codepoint <= 0xFFFF)
  ------------------
  |  Branch (28795:29): [True: 0, False: 0]
  ------------------
28796|      0|                        {
28797|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(codepoint));
28798|      0|                        }
28799|      0|                        else
28800|      0|                        {
28801|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(0xD7C0u + (codepoint >> 10u)));
28802|      0|                            write_u_escape(bytes, static_cast<std::uint16_t>(0xDC00u + (codepoint & 0x3FFu)));
28803|      0|                        }
28804|      0|                    }
28805|      0|                    else
28806|      0|                    {
28807|       |                        // copy byte to buffer (all previous bytes of the
28808|       |                        // sequence have been copied in the default case below)
28809|      0|                        string_buffer[bytes++] = s[i];
28810|      0|                    }
28811|       |
28812|       |                    // write buffer and reset index; there must be 13 bytes
28813|       |                    // left, as this is the maximal number of bytes to be
28814|       |                    // written ("\uxxxx\uxxxx\0") for one code point
28815|      0|                    if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28815:25): [True: 0, False: 0]
  ------------------
28816|      0|                    {
28817|      0|                        put_buffer(string_buffer, bytes);
28818|      0|                        bytes = 0;
28819|      0|                    }
28820|       |
28821|       |                    // remember the byte position of this accept
28822|      0|                    bytes_after_last_accept = bytes;
28823|      0|                    undumped_chars = 0;
28824|      0|                    break;
28825|      0|                }
28826|       |
28827|   136k|                case UTF8_REJECT:  // decode found invalid UTF-8 byte
  ------------------
  |  Branch (28827:17): [True: 136k, False: 55.1k]
  ------------------
28828|   136k|                {
28829|   136k|                    switch (error_handler)
28830|   136k|                    {
28831|      0|                        case error_handler_t::strict:
  ------------------
  |  Branch (28831:25): [True: 0, False: 136k]
  ------------------
28832|      0|                        {
28833|      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));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
28834|      0|                        }
28835|       |
28836|      0|                        case error_handler_t::ignore:
  ------------------
  |  Branch (28836:25): [True: 0, False: 136k]
  ------------------
28837|      0|                        case error_handler_t::replace:
  ------------------
  |  Branch (28837:25): [True: 0, False: 136k]
  ------------------
28838|      0|                        {
28839|       |                            // in case we saw this character the first time, we
28840|       |                            // would like to read it again, because the byte
28841|       |                            // may be OK for itself, but just not OK for the
28842|       |                            // previous sequence
28843|      0|                            if (undumped_chars > 0)
  ------------------
  |  Branch (28843:33): [True: 0, False: 0]
  ------------------
28844|      0|                            {
28845|      0|                                --i;
28846|      0|                            }
28847|       |
28848|       |                            // reset length buffer to the last accepted index;
28849|       |                            // thus removing/ignoring the invalid characters
28850|      0|                            bytes = bytes_after_last_accept;
28851|       |
28852|      0|                            if (error_handler == error_handler_t::replace)
  ------------------
  |  Branch (28852:33): [True: 0, False: 0]
  ------------------
28853|      0|                            {
28854|       |                                // add a replacement character
28855|      0|                                if (EnsureAscii)
  ------------------
  |  Branch (28855:37): [Folded, False: 0]
  ------------------
28856|      0|                                {
28857|      0|                                    string_buffer[bytes++] = '\\';
28858|      0|                                    string_buffer[bytes++] = 'u';
28859|      0|                                    string_buffer[bytes++] = 'f';
28860|      0|                                    string_buffer[bytes++] = 'f';
28861|      0|                                    string_buffer[bytes++] = 'f';
28862|      0|                                    string_buffer[bytes++] = 'd';
28863|      0|                                }
28864|      0|                                else
28865|      0|                                {
28866|      0|                                    string_buffer[bytes++] = '\xEF';
28867|      0|                                    string_buffer[bytes++] = '\xBF';
28868|      0|                                    string_buffer[bytes++] = '\xBD';
28869|      0|                                }
28870|       |
28871|       |                                // write buffer and reset index; there must be 13 bytes
28872|       |                                // left, as this is the maximal number of bytes to be
28873|       |                                // written ("\uxxxx\uxxxx\0") for one code point
28874|      0|                                if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28874:37): [True: 0, False: 0]
  ------------------
28875|      0|                                {
28876|      0|                                    put_buffer(string_buffer, bytes);
28877|      0|                                    bytes = 0;
28878|      0|                                }
28879|       |
28880|      0|                                bytes_after_last_accept = bytes;
28881|      0|                            }
28882|       |
28883|      0|                            undumped_chars = 0;
28884|       |
28885|       |                            // continue processing the string
28886|      0|                            state = UTF8_ACCEPT;
28887|      0|                            break;
28888|      0|                        }
28889|       |
28890|   136k|                        case error_handler_t::keep:
  ------------------
  |  Branch (28890:25): [True: 136k, False: 0]
  ------------------
28891|   136k|                        {
28892|       |                            // the bytes of this (now abandoned) ill-formed
28893|       |                            // sequence seen so far are already buffered below
28894|       |                            // and are kept unchanged in the output
28895|   136k|                            if (undumped_chars > 0)
  ------------------
  |  Branch (28895:33): [True: 39.1k, False: 97.3k]
  ------------------
28896|  39.1k|                            {
28897|       |                                // the byte that ended the sequence may be OK
28898|       |                                // for itself (e.g., a quote that must still be
28899|       |                                // escaped, or the lead byte of a well-formed
28900|       |                                // code point), so read it again
28901|  39.1k|                                --i;
28902|  39.1k|                            }
28903|  97.3k|                            else
28904|  97.3k|                            {
28905|       |                                // a byte that cannot start a sequence (e.g.,
28906|       |                                // 0xFF or a stray continuation byte) is kept
28907|       |                                // as well
28908|  97.3k|                                string_buffer[bytes++] = s[i];
28909|  97.3k|                            }
28910|       |
28911|       |                            // write buffer and reset index; there must be 13 bytes
28912|       |                            // left, as this is the maximal number of bytes to be
28913|       |                            // written ("\uxxxx\uxxxx\0") for one code point
28914|   136k|                            if (string_buffer.size() - bytes < 13)
  ------------------
  |  Branch (28914:33): [True: 0, False: 136k]
  ------------------
28915|      0|                            {
28916|      0|                                put_buffer(string_buffer, bytes);
28917|      0|                                bytes = 0;
28918|      0|                            }
28919|       |
28920|   136k|                            bytes_after_last_accept = bytes;
28921|   136k|                            undumped_chars = 0;
28922|       |
28923|       |                            // continue processing the string
28924|   136k|                            state = UTF8_ACCEPT;
28925|   136k|                            break;
28926|      0|                        }
28927|       |
28928|      0|                        default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (28928:25): [True: 0, False: 136k]
  ------------------
28929|      0|                            JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28929:29): [Folded, False: 0]
  ------------------
28930|   136k|                    }
28931|   136k|                    break;
28932|   136k|                }
28933|       |
28934|   136k|                default:  // decode found yet incomplete multibyte code point
  ------------------
  |  Branch (28934:17): [True: 55.1k, False: 136k]
  ------------------
28935|  55.1k|                {
28936|  55.1k|                    if (!EnsureAscii || error_handler == error_handler_t::keep)
  ------------------
  |  Branch (28936:25): [True: 55.1k, Folded]
  |  Branch (28936:41): [True: 0, False: 0]
  ------------------
28937|  55.1k|                    {
28938|       |                        // code point will not be escaped (or will be kept as
28939|       |                        // is if it turns out to be ill-formed) - copy byte to
28940|       |                        // buffer; dropped again above if it decodes to a
28941|       |                        // well-formed code point that needs \u-escaping
28942|  55.1k|                        string_buffer[bytes++] = s[i];
28943|  55.1k|                    }
28944|  55.1k|                    ++undumped_chars;
28945|  55.1k|                    break;
28946|   136k|                }
28947|   191k|            }
28948|   191k|        }
28949|       |
28950|       |        // we finished processing the string
28951|  78.5k|        if (JSON_HEDLEY_LIKELY(state == UTF8_ACCEPT))
  ------------------
  |  | 1666|  78.5k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 73.0k, False: 5.46k]
  |  |  ------------------
  ------------------
28952|  73.0k|        {
28953|       |            // write buffer
28954|  73.0k|            if (bytes > 0)
  ------------------
  |  Branch (28954:17): [True: 15.4k, False: 57.5k]
  ------------------
28955|  15.4k|            {
28956|  15.4k|                put_buffer(string_buffer, bytes);
28957|  15.4k|            }
28958|  73.0k|        }
28959|  5.46k|        else
28960|  5.46k|        {
28961|       |            // we finish reading, but do not accept: string was incomplete
28962|  5.46k|            switch (error_handler)
28963|  5.46k|            {
28964|      0|                case error_handler_t::strict:
  ------------------
  |  Branch (28964:17): [True: 0, False: 5.46k]
  ------------------
28965|      0|                {
28966|      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));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
28967|      0|                }
28968|       |
28969|      0|                case error_handler_t::ignore:
  ------------------
  |  Branch (28969:17): [True: 0, False: 5.46k]
  ------------------
28970|      0|                {
28971|       |                    // write all accepted bytes
28972|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
28973|      0|                    break;
28974|      0|                }
28975|       |
28976|      0|                case error_handler_t::replace:
  ------------------
  |  Branch (28976:17): [True: 0, False: 5.46k]
  ------------------
28977|      0|                {
28978|       |                    // write all accepted bytes
28979|      0|                    put_buffer(string_buffer, bytes_after_last_accept);
28980|       |                    // add a replacement character
28981|      0|                    if (EnsureAscii)
  ------------------
  |  Branch (28981:25): [Folded, False: 0]
  ------------------
28982|      0|                    {
28983|      0|                        put_literal("\\ufffd");
28984|      0|                    }
28985|      0|                    else
28986|      0|                    {
28987|      0|                        put_literal("\xEF\xBF\xBD");
28988|      0|                    }
28989|      0|                    break;
28990|      0|                }
28991|       |
28992|  5.46k|                case error_handler_t::keep:
  ------------------
  |  Branch (28992:17): [True: 5.46k, False: 0]
  ------------------
28993|  5.46k|                {
28994|       |                    // write the ill-formed trailing bytes as is; they were
28995|       |                    // buffered above regardless of EnsureAscii
28996|  5.46k|                    put_buffer(string_buffer, bytes);
28997|  5.46k|                    break;
28998|      0|                }
28999|       |
29000|      0|                default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (29000:17): [True: 0, False: 5.46k]
  ------------------
29001|       |                    JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29001:21): [Folded, False: 0]
  ------------------
29002|  5.46k|            }
29003|  5.46k|        }
29004|  78.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail15string_bulk_runEPKhm:
11148|   216k|{
11149|       |#if defined(JSON_USE_SIMDUTF) && defined(JSON_HAS_CPP_17)
11150|       |    const std::size_t run = find_string_delimiter(data, n);
11151|       |    if (run != 0 && simdutf::validate_utf8(reinterpret_cast<const char*>(data), run))
11152|       |    {
11153|       |        return run;
11154|       |    }
11155|       |#endif
11156|   216k|    return scalar_string_bulk_run(data, n);
11157|   216k|}
_ZN8nlohmann16json_abi_v3_12_06detail22scalar_string_bulk_runEPKhm:
11084|   216k|{
11085|   216k|    std::size_t pos = 0;
11086|   218k|    while (pos < n)
  ------------------
  |  Branch (11086:12): [True: 217k, False: 1.41k]
  ------------------
11087|   217k|    {
11088|   217k|        pos += find_string_special(data + pos, n - pos);
11089|   217k|        if (pos >= n || data[pos] < 0x80u)
  ------------------
  |  Branch (11089:13): [True: 14.5k, False: 202k]
  |  Branch (11089:25): [True: 58.3k, False: 144k]
  ------------------
11090|  72.8k|        {
11091|  72.8k|            break; // end of buffer, or a quote/escape/control byte
11092|  72.8k|        }
11093|       |        // a run of multi-byte sequences (e.g. CJK text) is validated sequence
11094|       |        // by sequence without searching for the next special byte in between
11095|   144k|        do
11096|   147k|        {
11097|   147k|            const std::size_t seq = validate_one_utf8(data + pos, n - pos);
11098|   147k|            if (seq == 0)
  ------------------
  |  Branch (11098:17): [True: 141k, False: 5.61k]
  ------------------
11099|   141k|            {
11100|   141k|                return pos; // ill-formed or truncated: let the byte path diagnose it
11101|   141k|            }
11102|  5.61k|            pos += seq;
11103|  5.61k|        }
11104|   144k|        while (pos < n && data[pos] >= 0x80u);
  ------------------
  |  Branch (11104:16): [True: 4.20k, False: 1.41k]
  |  Branch (11104:27): [True: 3.48k, False: 726]
  ------------------
11105|   144k|    }
11106|  74.2k|    return pos;
11107|   216k|}
_ZN8nlohmann16json_abi_v3_12_06detail19find_string_specialEPKhm:
10910|   217k|{
10911|   217k|    std::size_t i = 0;
10912|   218k|    for (; i + 8 <= n; i += 8)
  ------------------
  |  Branch (10912:12): [True: 130k, False: 88.1k]
  ------------------
10913|   130k|    {
10914|   130k|        const std::uint64_t special = swar_string_special(read_eight_bytes(data + i));
10915|   130k|        if (special != 0)
  ------------------
  |  Branch (10915:13): [True: 128k, False: 1.95k]
  ------------------
10916|   128k|        {
10917|       |            // the lowest flagged byte is the first special one: the borrows of
10918|       |            // the subtractions can only flag bytes above a true hit
10919|   128k|            return i + (static_cast<std::size_t>(count_trailing_zeros(special)) / 8);
10920|   128k|        }
10921|   130k|    }
10922|   108k|    for (; i < n; ++i)
  ------------------
  |  Branch (10922:12): [True: 93.6k, False: 14.5k]
  ------------------
10923|  93.6k|    {
10924|  93.6k|        if (is_string_special(data[i]))
  ------------------
  |  Branch (10924:13): [True: 73.5k, False: 20.1k]
  ------------------
10925|  73.5k|        {
10926|  73.5k|            return i;
10927|  73.5k|        }
10928|  93.6k|    }
10929|  14.5k|    return n;
10930|  88.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail19swar_string_specialEm:
10895|   130k|{
10896|   130k|    constexpr std::uint64_t ones = 0x0101010101010101ull;
10897|   130k|    constexpr std::uint64_t high = 0x8080808080808080ull;
10898|   130k|    const std::uint64_t q = v ^ 0x2222222222222222ull; // '"'  (0x22)
10899|   130k|    const std::uint64_t b = v ^ 0x5C5C5C5C5C5C5C5Cull; // '\\' (0x5C)
10900|   130k|    const std::uint64_t has_quote     = (q - ones) & ~q & high;
10901|   130k|    const std::uint64_t has_backslash = (b - ones) & ~b & high;
10902|   130k|    const std::uint64_t has_control   = (v - 0x2020202020202020ull) & ~v & high; // < 0x20
10903|   130k|    const std::uint64_t has_non_ascii = v & high;                                // >= 0x80
10904|   130k|    return has_quote | has_backslash | has_control | has_non_ascii;
10905|   130k|}
_ZN8nlohmann16json_abi_v3_12_06detail17is_string_specialEh:
10888|  93.6k|{
10889|  93.6k|    return c == '\"' || c == '\\' || c < 0x20u || c >= 0x80u;
  ------------------
  |  Branch (10889:12): [True: 654, False: 93.0k]
  |  Branch (10889:25): [True: 912, False: 92.1k]
  |  Branch (10889:38): [True: 13.9k, False: 78.1k]
  |  Branch (10889:51): [True: 58.0k, False: 20.1k]
  ------------------
10890|  93.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail17validate_one_utf8EPKhm:
10987|   147k|{
10988|   147k|    const unsigned char c0 = data[0];
10989|   147k|    if (c0 >= 0xC2 && c0 <= 0xDF)  // U+0080..U+07FF
  ------------------
  |  Branch (10989:9): [True: 62.7k, False: 84.8k]
  |  Branch (10989:23): [True: 13.6k, False: 49.0k]
  ------------------
10990|  13.6k|    {
10991|  13.6k|        if (avail >= 2 && data[1] >= 0x80 && data[1] <= 0xBF)
  ------------------
  |  Branch (10991:13): [True: 11.8k, False: 1.77k]
  |  Branch (10991:27): [True: 8.38k, False: 3.49k]
  |  Branch (10991:46): [True: 1.87k, False: 6.51k]
  ------------------
10992|  1.87k|        {
10993|  1.87k|            return 2;
10994|  1.87k|        }
10995|  13.6k|    }
10996|   133k|    else if (c0 == 0xE0)  // U+0800..U+0FFF
  ------------------
  |  Branch (10996:14): [True: 5.47k, False: 128k]
  ------------------
10997|  5.47k|    {
10998|  5.47k|        if (avail >= 3 && data[1] >= 0xA0 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (10998:13): [True: 4.62k, False: 852]
  |  Branch (10998:27): [True: 3.87k, False: 744]
  |  Branch (10998:46): [True: 1.54k, False: 2.33k]
  |  Branch (10998:65): [True: 1.06k, False: 480]
  |  Branch (10998:84): [True: 234, False: 828]
  ------------------
10999|    234|        {
11000|    234|            return 3;
11001|    234|        }
11002|  5.47k|    }
11003|   128k|    else if ((c0 >= 0xE1 && c0 <= 0xEC) || c0 == 0xEE || c0 == 0xEF)  // U+1000..U+CFFF, U+E000..U+FFFF
  ------------------
  |  Branch (11003:15): [True: 43.6k, False: 84.8k]
  |  Branch (11003:29): [True: 5.21k, False: 38.4k]
  |  Branch (11003:44): [True: 1.57k, False: 121k]
  |  Branch (11003:58): [True: 3.01k, False: 118k]
  ------------------
11004|  9.81k|    {
11005|  9.81k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (11005:13): [True: 8.01k, False: 1.80k]
  |  Branch (11005:27): [True: 7.17k, False: 834]
  |  Branch (11005:46): [True: 1.81k, False: 5.36k]
  |  Branch (11005:65): [True: 1.60k, False: 210]
  |  Branch (11005:84): [True: 786, False: 816]
  ------------------
11006|    786|        {
11007|    786|            return 3;
11008|    786|        }
11009|  9.81k|    }
11010|   118k|    else if (c0 == 0xED)  // U+D000..U+D7FF (excludes surrogates)
  ------------------
  |  Branch (11010:14): [True: 3.75k, False: 114k]
  ------------------
11011|  3.75k|    {
11012|  3.75k|        if (avail >= 3 && data[1] >= 0x80 && data[1] <= 0x9F && data[2] >= 0x80 && data[2] <= 0xBF)
  ------------------
  |  Branch (11012:13): [True: 2.98k, False: 774]
  |  Branch (11012:27): [True: 2.68k, False: 300]
  |  Branch (11012:46): [True: 1.48k, False: 1.20k]
  |  Branch (11012:65): [True: 1.12k, False: 354]
  |  Branch (11012:84): [True: 690, False: 438]
  ------------------
11013|    690|        {
11014|    690|            return 3;
11015|    690|        }
11016|  3.75k|    }
11017|   114k|    else if (c0 == 0xF0)  // U+10000..U+3FFFF
  ------------------
  |  Branch (11017:14): [True: 6.18k, False: 108k]
  ------------------
11018|  6.18k|    {
11019|  6.18k|        if (avail >= 4 && data[1] >= 0x90 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11019:13): [True: 5.17k, False: 1.01k]
  |  Branch (11019:27): [True: 4.60k, False: 570]
  |  Branch (11019:46): [True: 2.73k, False: 1.86k]
  |  Branch (11019:65): [True: 2.41k, False: 324]
  |  Branch (11019:84): [True: 1.20k, False: 1.20k]
  |  Branch (11019:103): [True: 810, False: 396]
  |  Branch (11019:122): [True: 360, False: 450]
  ------------------
11020|    360|        {
11021|    360|            return 4;
11022|    360|        }
11023|  6.18k|    }
11024|   108k|    else if (c0 >= 0xF1 && c0 <= 0xF3)  // U+40000..U+FFFFF
  ------------------
  |  Branch (11024:14): [True: 23.8k, False: 84.8k]
  |  Branch (11024:28): [True: 5.71k, False: 18.1k]
  ------------------
11025|  5.71k|    {
11026|  5.71k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0xBF && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11026:13): [True: 4.29k, False: 1.42k]
  |  Branch (11026:27): [True: 3.99k, False: 294]
  |  Branch (11026:46): [True: 2.27k, False: 1.72k]
  |  Branch (11026:65): [True: 2.01k, False: 264]
  |  Branch (11026:84): [True: 1.38k, False: 630]
  |  Branch (11026:103): [True: 1.18k, False: 192]
  |  Branch (11026:122): [True: 738, False: 450]
  ------------------
11027|    738|        {
11028|    738|            return 4;
11029|    738|        }
11030|  5.71k|    }
11031|   103k|    else if (c0 == 0xF4)  // U+100000..U+10FFFF
  ------------------
  |  Branch (11031:14): [True: 5.61k, False: 97.3k]
  ------------------
11032|  5.61k|    {
11033|  5.61k|        if (avail >= 4 && data[1] >= 0x80 && data[1] <= 0x8F && data[2] >= 0x80 && data[2] <= 0xBF && data[3] >= 0x80 && data[3] <= 0xBF)
  ------------------
  |  Branch (11033:13): [True: 5.30k, False: 306]
  |  Branch (11033:27): [True: 4.61k, False: 690]
  |  Branch (11033:46): [True: 1.99k, False: 2.61k]
  |  Branch (11033:65): [True: 1.66k, False: 336]
  |  Branch (11033:84): [True: 1.38k, False: 282]
  |  Branch (11033:103): [True: 1.23k, False: 144]
  |  Branch (11033:122): [True: 936, False: 300]
  ------------------
11034|    936|        {
11035|    936|            return 4;
11036|    936|        }
11037|  5.61k|    }
11038|   141k|    return 0; // invalid, incomplete, or must be diagnosed by the byte path
11039|   147k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11dump_scalarERKSG_m:
28497|   291k|    {
28498|   291k|        switch (val.m_data.m_type)
28499|   291k|        {
28500|  22.0k|            case value_t::string:
  ------------------
  |  Branch (28500:13): [True: 22.0k, False: 269k]
  ------------------
28501|  22.0k|            {
28502|  22.0k|                put_char('"');
28503|  22.0k|                dump_escaped(*val.m_data.m_value.string);
28504|  22.0k|                put_char('"');
28505|  22.0k|                return;
28506|      0|            }
28507|       |
28508|  57.2k|            case value_t::binary:
  ------------------
  |  Branch (28508:13): [True: 57.2k, False: 234k]
  ------------------
28509|  57.2k|            {
28510|  57.2k|                if (pretty_print)
  ------------------
  |  Branch (28510:21): [True: 0, False: 57.2k]
  ------------------
28511|      0|                {
28512|      0|                    put_literal("{\n");
28513|       |
28514|       |                    // variable to hold indentation for the bytes
28515|      0|                    const auto new_indent = next_indent(current_indent, indent_step);
28516|       |
28517|      0|                    put_indent(new_indent);
28518|       |
28519|      0|                    put_literal("\"bytes\": [");
28520|       |
28521|      0|                    if (!val.m_data.m_value.binary->empty())
  ------------------
  |  Branch (28521:25): [True: 0, False: 0]
  ------------------
28522|      0|                    {
28523|      0|                        for (auto i = val.m_data.m_value.binary->cbegin();
28524|      0|                                i != val.m_data.m_value.binary->cend() - 1; ++i)
  ------------------
  |  Branch (28524:33): [True: 0, False: 0]
  ------------------
28525|      0|                        {
28526|      0|                            dump_byte(*i);
28527|      0|                            put_literal(", ");
28528|      0|                        }
28529|      0|                        dump_byte(val.m_data.m_value.binary->back());
28530|      0|                    }
28531|       |
28532|      0|                    put_literal("],\n");
28533|      0|                    put_indent(new_indent);
28534|       |
28535|      0|                    put_literal("\"subtype\": ");
28536|      0|                    if (val.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (28536:25): [True: 0, False: 0]
  ------------------
28537|      0|                    {
28538|      0|                        dump_integer(val.m_data.m_value.binary->subtype());
28539|      0|                    }
28540|      0|                    else
28541|      0|                    {
28542|      0|                        put_literal("null");
28543|      0|                    }
28544|      0|                    put_char('\n');
28545|      0|                    put_indent(current_indent);
28546|      0|                    put_char('}');
28547|      0|                }
28548|  57.2k|                else
28549|  57.2k|                {
28550|  57.2k|                    put_literal("{\"bytes\":[");
28551|       |
28552|  57.2k|                    if (!val.m_data.m_value.binary->empty())
  ------------------
  |  Branch (28552:25): [True: 17.3k, False: 39.9k]
  ------------------
28553|  17.3k|                    {
28554|  17.3k|                        for (auto i = val.m_data.m_value.binary->cbegin();
28555|   105k|                                i != val.m_data.m_value.binary->cend() - 1; ++i)
  ------------------
  |  Branch (28555:33): [True: 88.2k, False: 17.3k]
  ------------------
28556|  88.2k|                        {
28557|  88.2k|                            dump_byte(*i);
28558|  88.2k|                            put_char(',');
28559|  88.2k|                        }
28560|  17.3k|                        dump_byte(val.m_data.m_value.binary->back());
28561|  17.3k|                    }
28562|       |
28563|  57.2k|                    put_literal("],\"subtype\":");
28564|  57.2k|                    if (val.m_data.m_value.binary->has_subtype())
  ------------------
  |  Branch (28564:25): [True: 15.9k, False: 41.3k]
  ------------------
28565|  15.9k|                    {
28566|  15.9k|                        dump_integer(val.m_data.m_value.binary->subtype());
28567|  15.9k|                        put_char('}');
28568|  15.9k|                    }
28569|  41.3k|                    else
28570|  41.3k|                    {
28571|  41.3k|                        put_literal("null}");
28572|  41.3k|                    }
28573|  57.2k|                }
28574|  57.2k|                return;
28575|      0|            }
28576|       |
28577|  9.07k|            case value_t::boolean:
  ------------------
  |  Branch (28577:13): [True: 9.07k, False: 282k]
  ------------------
28578|  9.07k|            {
28579|  9.07k|                if (val.m_data.m_value.boolean)
  ------------------
  |  Branch (28579:21): [True: 3.95k, False: 5.12k]
  ------------------
28580|  3.95k|                {
28581|  3.95k|                    put_literal("true");
28582|  3.95k|                }
28583|  5.12k|                else
28584|  5.12k|                {
28585|  5.12k|                    put_literal("false");
28586|  5.12k|                }
28587|  9.07k|                return;
28588|      0|            }
28589|       |
28590|  47.2k|            case value_t::number_integer:
  ------------------
  |  Branch (28590:13): [True: 47.2k, False: 244k]
  ------------------
28591|  47.2k|            {
28592|  47.2k|                dump_integer(val.m_data.m_value.number_integer);
28593|  47.2k|                return;
28594|      0|            }
28595|       |
28596|   135k|            case value_t::number_unsigned:
  ------------------
  |  Branch (28596:13): [True: 135k, False: 155k]
  ------------------
28597|   135k|            {
28598|   135k|                dump_integer(val.m_data.m_value.number_unsigned);
28599|   135k|                return;
28600|      0|            }
28601|       |
28602|  15.6k|            case value_t::number_float:
  ------------------
  |  Branch (28602:13): [True: 15.6k, False: 275k]
  ------------------
28603|  15.6k|            {
28604|  15.6k|                dump_float(val.m_data.m_value.number_float);
28605|  15.6k|                return;
28606|      0|            }
28607|       |
28608|      0|            case value_t::discarded:
  ------------------
  |  Branch (28608:13): [True: 0, False: 291k]
  ------------------
28609|      0|            {
28610|      0|                put_literal("<discarded>");
28611|      0|                return;
28612|      0|            }
28613|       |
28614|  4.71k|            case value_t::null:
  ------------------
  |  Branch (28614:13): [True: 4.71k, False: 286k]
  ------------------
28615|  4.71k|            {
28616|  4.71k|                put_literal("null");
28617|  4.71k|                return;
28618|      0|            }
28619|       |
28620|      0|            case value_t::object: // LCOV_EXCL_LINE
  ------------------
  |  Branch (28620:13): [True: 0, False: 291k]
  ------------------
28621|      0|            case value_t::array:  // LCOV_EXCL_LINE
  ------------------
  |  Branch (28621:13): [True: 0, False: 291k]
  ------------------
28622|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (28622:13): [True: 0, False: 291k]
  ------------------
28623|       |                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (28623:17): [Folded, False: 0]
  ------------------
28624|   291k|        }
28625|   291k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm11EEEvRAT__Kc:
29090|  57.2k|    {
29091|  57.2k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  57.2k|        constexpr std::size_t length = N - 1;
29094|  57.2k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  57.2k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  57.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 108, False: 57.1k]
  |  |  ------------------
  ------------------
29097|    108|        {
29098|    108|            flush();
29099|    108|        }
29100|  57.2k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  57.2k|        write_buffer_pos += length;
29102|  57.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9dump_byteIhEEvT_:
29380|   105k|    {
29381|   105k|        dump_byte(value, std::integral_constant < bool,
29382|   105k|                  std::is_unsigned<ByteType>::value && sizeof(ByteType) == 1
29383|   105k|                  && !std::is_same<ByteType, bool>::value > {});
29384|   105k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE9dump_byteIhEEvT_NS4_17integral_constantIbLb1EEE:
29394|   105k|    {
29395|   105k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + 3 > write_buffer.size()))
  ------------------
  |  | 1667|   105k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 60, False: 105k]
  |  |  ------------------
  ------------------
29396|     60|        {
29397|     60|            flush();
29398|     60|        }
29399|       |
29400|   105k|        const auto byte = static_cast<unsigned>(value);
29401|       |        // Accumulate the offset in a local and store it back once. Writing
29402|       |        // through write_buffer[] is a char write, which may alias any object,
29403|       |        // so with the member updated in place the compiler has to reload and
29404|       |        // store it around every digit - measured 2.4x slower on a dump of a
29405|       |        // multi-megabyte binary value.
29406|   105k|        std::size_t pos = write_buffer_pos;
29407|       |
29408|   105k|        if (byte >= 100)
  ------------------
  |  Branch (29408:13): [True: 73.6k, False: 31.9k]
  ------------------
29409|  73.6k|        {
29410|  73.6k|            write_buffer[pos++] = static_cast<char>('0' + (byte / 100));
29411|  73.6k|            write_buffer[pos++] = static_cast<char>('0' + ((byte / 10) % 10));
29412|  73.6k|        }
29413|  31.9k|        else if (byte >= 10)
  ------------------
  |  Branch (29413:18): [True: 14.7k, False: 17.2k]
  ------------------
29414|  14.7k|        {
29415|  14.7k|            write_buffer[pos++] = static_cast<char>('0' + (byte / 10));
29416|  14.7k|        }
29417|       |
29418|   105k|        write_buffer[pos++] = static_cast<char>('0' + (byte % 10));
29419|       |
29420|   105k|        write_buffer_pos = pos;
29421|   105k|    }
_ZNK8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEE11has_subtypeEv:
 7962|  76.3k|    {
 7963|  76.3k|        return m_has_subtype;
 7964|  76.3k|    }
_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_:
29439|   151k|    {
29440|   151k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
29441|   151k|        {
29442|   151k|            {
29443|   151k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
29444|   151k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
29445|   151k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
29446|   151k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
29447|   151k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
29448|   151k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
29449|   151k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
29450|   151k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
29451|   151k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
29452|   151k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
29453|   151k|            }
29454|   151k|        };
29455|       |
29456|       |        // special case for "0"
29457|   151k|        if (x == 0)
  ------------------
  |  Branch (29457:13): [True: 28.1k, False: 123k]
  ------------------
29458|  28.1k|        {
29459|  28.1k|            put_char('0');
29460|  28.1k|            return;
29461|  28.1k|        }
29462|       |
29463|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
29464|   123k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|   123k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 324, False: 122k]
  |  |  ------------------
  ------------------
29465|    324|        {
29466|    324|            flush();
29467|    324|        }
29468|   123k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
29469|       |
29470|   123k|        number_magnitude_t abs_value;
29471|       |
29472|       |        // one byte for the minus sign
29473|   123k|        unsigned int n_chars = 0;
29474|       |
29475|   123k|        if (is_negative_number(x))
  ------------------
  |  Branch (29475:13): [True: 0, False: 123k]
  ------------------
29476|      0|        {
29477|      0|            *buffer_ptr = '-';
29478|      0|            abs_value = remove_sign(static_cast<number_integer_t>(x));
29479|      0|            n_chars = 1;
29480|      0|        }
29481|   123k|        else
29482|   123k|        {
29483|   123k|            abs_value = static_cast<number_magnitude_t>(x);
29484|   123k|        }
29485|       |
29486|       |        // up to 16 digits: eight at a time (as the digits of floats), written
29487|       |        // without leading zeros
29488|   123k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (29488:13): [True: 120k, False: 3.07k]
  ------------------
29489|   120k|        {
29490|   120k|            const std::uint64_t value = abs_value;
29491|   120k|            const std::uint64_t upper = value / 100000000u;
29492|   120k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (29492:70): [True: 2.05k, False: 118k]
  ------------------
29493|   120k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
29494|   120k|            char* const p = buffer_ptr + n_chars;
29495|   120k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
29496|   120k|            n_chars += 8 - leading;
29497|   120k|            if (upper != 0)
  ------------------
  |  Branch (29497:17): [True: 2.05k, False: 118k]
  ------------------
29498|  2.05k|            {
29499|  2.05k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
29500|  2.05k|                n_chars += 8;
29501|  2.05k|            }
29502|   120k|            write_buffer_pos += n_chars;
29503|   120k|            return;
29504|   120k|        }
29505|       |
29506|  3.07k|        n_chars += count_digits(abs_value);
29507|       |
29508|       |        // spare 1 byte for '\0'
29509|  3.07k|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2591|  3.07k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29509:9): [True: 3.07k, False: 0]
  ------------------
29510|       |
29511|       |        // jump to the end to generate the string from backward,
29512|       |        // so we later avoid reversing the result
29513|  3.07k|        buffer_ptr += n_chars;
29514|       |
29515|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
29516|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
29517|  30.1k|        while (abs_value >= 100)
  ------------------
  |  Branch (29517:16): [True: 27.0k, False: 3.07k]
  ------------------
29518|  27.0k|        {
29519|  27.0k|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
29520|  27.0k|            abs_value /= 100;
29521|  27.0k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29522|  27.0k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29523|  27.0k|        }
29524|       |
29525|  3.07k|        if (abs_value >= 10)
  ------------------
  |  Branch (29525:13): [True: 2.41k, False: 660]
  ------------------
29526|  2.41k|        {
29527|  2.41k|            const auto digits_index = static_cast<unsigned>(abs_value);
29528|  2.41k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29529|  2.41k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29530|  2.41k|        }
29531|    660|        else
29532|    660|        {
29533|    660|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
29534|    660|        }
29535|       |
29536|  3.07k|        write_buffer_pos += n_chars;
29537|  3.07k|    }
_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_:
29361|   123k|    {
29362|   123k|        return false;
29363|   123k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11remove_signEl:
29661|  38.2k|    {
29662|  38.2k|        JSON_ASSERT(x < 0);
  ------------------
  |  | 2591|  38.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29662:9): [True: 38.2k, False: 0]
  ------------------
29663|  38.2k|        return static_cast<number_magnitude_t>(-(x + 1)) + 1;
29664|  38.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl17eight_digit_bytesEm:
27559|   171k|{
27560|   171k|    const std::uint64_t abcd_efgh = abcdefgh + (((std::uint64_t{1} << 32u) - 10000u) * ((abcdefgh * (((std::uint64_t{1} << 40u) / 10000u) + 1u)) >> 40u));
27561|   171k|    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));
27562|   171k|    return ab_cd_ef_gh + (((std::uint64_t{1} << 8u) - 10u) * (((ab_cd_ef_gh * (((std::uint64_t{1} << 10u) / 10u) + 1u)) >> 10u) & 0x000F000F000F000Fu));
27563|   171k|}
_ZN8nlohmann16json_abi_v3_12_06detail19count_leading_zerosEm:
 9296|   178k|{
 9297|   178k|#if defined(__GNUC__) || defined(__clang__)
 9298|   178k|    return __builtin_clzll(x);
 9299|       |#elif defined(_MSC_VER) && (defined(_M_X64) || defined(_M_ARM64))
 9300|       |    unsigned long index = 0; // NOLINT(runtime/int): the type _BitScan*64 takes
 9301|       |    _BitScanReverse64(&index, x);
 9302|       |    return 63 - static_cast<int>(index);
 9303|       |#else
 9304|       |    int n = 0;
 9305|       |    for (int shift = 32; shift != 0; shift >>= 1)
 9306|       |    {
 9307|       |        if ((x >> (64 - shift)) == 0)
 9308|       |        {
 9309|       |            n += shift;
 9310|       |            x <<= shift;
 9311|       |        }
 9312|       |    }
 9313|       |    return n;
 9314|       |#endif
 9315|   178k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl15store_msb_firstEPcm:
27569|   172k|{
27570|   172k|#if defined(__BYTE_ORDER__) && defined(__ORDER_LITTLE_ENDIAN__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
27571|   172k|    v = __builtin_bswap64(v);
27572|   172k|    std::memcpy(p, &v, sizeof(v));
27573|       |#elif defined(__BYTE_ORDER__) && defined(__ORDER_BIG_ENDIAN__) && __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
27574|       |    std::memcpy(p, &v, sizeof(v));
27575|       |#elif defined(_MSC_VER) // (little-endian on all its targets)
27576|       |    v = _byteswap_uint64(v);
27577|       |    std::memcpy(p, &v, sizeof(v));
27578|       |#else
27579|       |    for (unsigned i = 0; i < 8; ++i)
27580|       |    {
27581|       |        p[i] = static_cast<char>(v >> (56u - (8u * i)));
27582|       |    }
27583|       |#endif
27584|   172k|}
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12count_digitsEm:
29173|  5.92k|    {
29174|  5.92k|        unsigned int n_digits = 1;
29175|  5.92k|        for (;;)
29176|  29.6k|        {
29177|  29.6k|            if (x < 10)
  ------------------
  |  Branch (29177:17): [True: 570, False: 29.0k]
  ------------------
29178|    570|            {
29179|    570|                return n_digits;
29180|    570|            }
29181|  29.0k|            if (x < 100)
  ------------------
  |  Branch (29181:17): [True: 522, False: 28.5k]
  ------------------
29182|    522|            {
29183|    522|                return n_digits + 1;
29184|    522|            }
29185|  28.5k|            if (x < 1000)
  ------------------
  |  Branch (29185:17): [True: 2.74k, False: 25.8k]
  ------------------
29186|  2.74k|            {
29187|  2.74k|                return n_digits + 2;
29188|  2.74k|            }
29189|  25.8k|            if (x < 10000)
  ------------------
  |  Branch (29189:17): [True: 2.09k, False: 23.7k]
  ------------------
29190|  2.09k|            {
29191|  2.09k|                return n_digits + 3;
29192|  2.09k|            }
29193|  23.7k|            x = x / 10000u;
29194|  23.7k|            n_digits += 4;
29195|  23.7k|        }
29196|  5.92k|    }
_ZNK8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEE7subtypeEv:
 7955|  26.5k|    {
 7956|  26.5k|        return m_has_subtype ? m_subtype : static_cast<subtype_type>(-1);
  ------------------
  |  Branch (7956:16): [True: 26.5k, False: 0]
  ------------------
 7957|  26.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm5EEEvRAT__Kc:
29090|  9.84k|    {
29091|  9.84k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  9.84k|        constexpr std::size_t length = N - 1;
29094|  9.84k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  9.84k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  9.84k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 42, False: 9.80k]
  |  |  ------------------
  ------------------
29097|     42|        {
29098|     42|            flush();
29099|     42|        }
29100|  9.84k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  9.84k|        write_buffer_pos += length;
29102|  9.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm13EEEvRAT__Kc:
29090|  57.2k|    {
29091|  57.2k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  57.2k|        constexpr std::size_t length = N - 1;
29094|  57.2k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  57.2k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  57.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 90, False: 57.1k]
  |  |  ------------------
  ------------------
29097|     90|        {
29098|     90|            flush();
29099|     90|        }
29100|  57.2k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  57.2k|        write_buffer_pos += length;
29102|  57.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE11put_literalILm6EEEvRAT__Kc:
29090|  46.4k|    {
29091|  46.4k|        static_assert(N >= 2, "put_literal expects a non-empty string literal");
29092|       |        // the array bound counts the terminating NUL, which is not written
29093|  46.4k|        constexpr std::size_t length = N - 1;
29094|  46.4k|        static_assert(length < write_buffer_size, "string literal must fit into the write buffer");
29095|       |
29096|  46.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + length > write_buffer.size()))
  ------------------
  |  | 1667|  46.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 120, False: 46.3k]
  |  |  ------------------
  ------------------
29097|    120|        {
29098|    120|            flush();
29099|    120|        }
29100|  46.4k|        std::memcpy(write_buffer.data() + write_buffer_pos, s, length);
29101|  46.4k|        write_buffer_pos += length;
29102|  46.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE12dump_integerIlTnNS4_9enable_ifIXoooosr3std11is_integralIT_EE5valuesr3std7is_sameISK_mEE5valuesr3std7is_sameISK_lEE5valueEiE4typeELi0EEEvSK_:
29439|  47.2k|    {
29440|  47.2k|        static constexpr std::array<std::array<char, 2>, 100> digits_to_99
29441|  47.2k|        {
29442|  47.2k|            {
29443|  47.2k|                {{'0', '0'}}, {{'0', '1'}}, {{'0', '2'}}, {{'0', '3'}}, {{'0', '4'}}, {{'0', '5'}}, {{'0', '6'}}, {{'0', '7'}}, {{'0', '8'}}, {{'0', '9'}},
29444|  47.2k|                {{'1', '0'}}, {{'1', '1'}}, {{'1', '2'}}, {{'1', '3'}}, {{'1', '4'}}, {{'1', '5'}}, {{'1', '6'}}, {{'1', '7'}}, {{'1', '8'}}, {{'1', '9'}},
29445|  47.2k|                {{'2', '0'}}, {{'2', '1'}}, {{'2', '2'}}, {{'2', '3'}}, {{'2', '4'}}, {{'2', '5'}}, {{'2', '6'}}, {{'2', '7'}}, {{'2', '8'}}, {{'2', '9'}},
29446|  47.2k|                {{'3', '0'}}, {{'3', '1'}}, {{'3', '2'}}, {{'3', '3'}}, {{'3', '4'}}, {{'3', '5'}}, {{'3', '6'}}, {{'3', '7'}}, {{'3', '8'}}, {{'3', '9'}},
29447|  47.2k|                {{'4', '0'}}, {{'4', '1'}}, {{'4', '2'}}, {{'4', '3'}}, {{'4', '4'}}, {{'4', '5'}}, {{'4', '6'}}, {{'4', '7'}}, {{'4', '8'}}, {{'4', '9'}},
29448|  47.2k|                {{'5', '0'}}, {{'5', '1'}}, {{'5', '2'}}, {{'5', '3'}}, {{'5', '4'}}, {{'5', '5'}}, {{'5', '6'}}, {{'5', '7'}}, {{'5', '8'}}, {{'5', '9'}},
29449|  47.2k|                {{'6', '0'}}, {{'6', '1'}}, {{'6', '2'}}, {{'6', '3'}}, {{'6', '4'}}, {{'6', '5'}}, {{'6', '6'}}, {{'6', '7'}}, {{'6', '8'}}, {{'6', '9'}},
29450|  47.2k|                {{'7', '0'}}, {{'7', '1'}}, {{'7', '2'}}, {{'7', '3'}}, {{'7', '4'}}, {{'7', '5'}}, {{'7', '6'}}, {{'7', '7'}}, {{'7', '8'}}, {{'7', '9'}},
29451|  47.2k|                {{'8', '0'}}, {{'8', '1'}}, {{'8', '2'}}, {{'8', '3'}}, {{'8', '4'}}, {{'8', '5'}}, {{'8', '6'}}, {{'8', '7'}}, {{'8', '8'}}, {{'8', '9'}},
29452|  47.2k|                {{'9', '0'}}, {{'9', '1'}}, {{'9', '2'}}, {{'9', '3'}}, {{'9', '4'}}, {{'9', '5'}}, {{'9', '6'}}, {{'9', '7'}}, {{'9', '8'}}, {{'9', '9'}},
29453|  47.2k|            }
29454|  47.2k|        };
29455|       |
29456|       |        // special case for "0"
29457|  47.2k|        if (x == 0)
  ------------------
  |  Branch (29457:13): [True: 756, False: 46.4k]
  ------------------
29458|    756|        {
29459|    756|            put_char('0');
29460|    756|            return;
29461|    756|        }
29462|       |
29463|       |        // use a pointer to fill the buffer (room for as much as number_buffer holds)
29464|  46.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  46.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 168, False: 46.3k]
  |  |  ------------------
  ------------------
29465|    168|        {
29466|    168|            flush();
29467|    168|        }
29468|  46.4k|        auto* buffer_ptr = write_buffer.data() + write_buffer_pos;
29469|       |
29470|  46.4k|        number_magnitude_t abs_value;
29471|       |
29472|       |        // one byte for the minus sign
29473|  46.4k|        unsigned int n_chars = 0;
29474|       |
29475|  46.4k|        if (is_negative_number(x))
  ------------------
  |  Branch (29475:13): [True: 38.2k, False: 8.19k]
  ------------------
29476|  38.2k|        {
29477|  38.2k|            *buffer_ptr = '-';
29478|  38.2k|            abs_value = remove_sign(static_cast<number_integer_t>(x));
29479|  38.2k|            n_chars = 1;
29480|  38.2k|        }
29481|  8.19k|        else
29482|  8.19k|        {
29483|  8.19k|            abs_value = static_cast<number_magnitude_t>(x);
29484|  8.19k|        }
29485|       |
29486|       |        // up to 16 digits: eight at a time (as the digits of floats), written
29487|       |        // without leading zeros
29488|  46.4k|        if (abs_value < 10000000000000000u)
  ------------------
  |  Branch (29488:13): [True: 43.6k, False: 2.85k]
  ------------------
29489|  43.6k|        {
29490|  43.6k|            const std::uint64_t value = abs_value;
29491|  43.6k|            const std::uint64_t upper = value / 100000000u;
29492|  43.6k|            const std::uint64_t first = dtoa_impl::eight_digit_bytes(upper != 0 ? upper : value);
  ------------------
  |  Branch (29492:70): [True: 2.47k, False: 41.1k]
  ------------------
29493|  43.6k|            const auto leading = static_cast<unsigned>(count_leading_zeros(first) / 8); // (first is not 0)
29494|  43.6k|            char* const p = buffer_ptr + n_chars;
29495|  43.6k|            dtoa_impl::store_msb_first(p, (first << (8 * leading)) + 0x3030303030303030u);
29496|  43.6k|            n_chars += 8 - leading;
29497|  43.6k|            if (upper != 0)
  ------------------
  |  Branch (29497:17): [True: 2.47k, False: 41.1k]
  ------------------
29498|  2.47k|            {
29499|  2.47k|                dtoa_impl::store_msb_first(p + 8 - leading, dtoa_impl::eight_digit_bytes(value - (upper * 100000000u)) + 0x3030303030303030u);
29500|  2.47k|                n_chars += 8;
29501|  2.47k|            }
29502|  43.6k|            write_buffer_pos += n_chars;
29503|  43.6k|            return;
29504|  43.6k|        }
29505|       |
29506|  2.85k|        n_chars += count_digits(abs_value);
29507|       |
29508|       |        // spare 1 byte for '\0'
29509|  2.85k|        JSON_ASSERT(n_chars < number_buffer.size() - 1);
  ------------------
  |  | 2591|  2.85k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (29509:9): [True: 2.85k, False: 0]
  ------------------
29510|       |
29511|       |        // jump to the end to generate the string from backward,
29512|       |        // so we later avoid reversing the result
29513|  2.85k|        buffer_ptr += n_chars;
29514|       |
29515|       |        // Fast int2ascii implementation inspired by "Fastware" talk by Andrei Alexandrescu
29516|       |        // See: https://www.youtube.com/watch?v=o4-CwDo2zpg
29517|  28.0k|        while (abs_value >= 100)
  ------------------
  |  Branch (29517:16): [True: 25.2k, False: 2.85k]
  ------------------
29518|  25.2k|        {
29519|  25.2k|            const auto digits_index = static_cast<unsigned>((abs_value % 100));
29520|  25.2k|            abs_value /= 100;
29521|  25.2k|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29522|  25.2k|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29523|  25.2k|        }
29524|       |
29525|  2.85k|        if (abs_value >= 10)
  ------------------
  |  Branch (29525:13): [True: 204, False: 2.65k]
  ------------------
29526|    204|        {
29527|    204|            const auto digits_index = static_cast<unsigned>(abs_value);
29528|    204|            *(--buffer_ptr) = digits_to_99[digits_index][1];
29529|    204|            *(--buffer_ptr) = digits_to_99[digits_index][0];
29530|    204|        }
29531|  2.65k|        else
29532|  2.65k|        {
29533|  2.65k|            *(--buffer_ptr) = static_cast<char>('0' + abs_value);
29534|  2.65k|        }
29535|       |
29536|  2.85k|        write_buffer_pos += n_chars;
29537|  2.85k|    }
_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_:
29355|  46.4k|    {
29356|  46.4k|        return x < 0;
29357|  46.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEd:
29547|  15.6k|    {
29548|       |        // NaN / inf
29549|  15.6k|        if (!std::isfinite(x))
  ------------------
  |  Branch (29549:13): [True: 1.17k, False: 14.4k]
  ------------------
29550|  1.17k|        {
29551|  1.17k|            put_literal("null");
29552|  1.17k|            return;
29553|  1.17k|        }
29554|       |
29555|       |        // If number_float_t is an IEEE-754 single or double precision number,
29556|       |        // use the Grisu2 algorithm to produce short numbers which are
29557|       |        // guaranteed to round-trip, using strtof and strtod, resp.
29558|       |        //
29559|       |        // NB: The test below works if <long double> == <double>.
29560|  14.4k|        static constexpr bool is_ieee_single_or_double
29561|  14.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 (29561:16): [True: 0, Folded]
  |  Branch (29561:66): [Folded, False: 0]
  |  Branch (29561:119): [Folded, False: 0]
  ------------------
29562|      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 (29562:16): [True: 0, Folded]
  |  Branch (29562:66): [True: 0, Folded]
  |  Branch (29562:119): [True: 0, Folded]
  ------------------
29563|       |
29564|  14.4k|        dump_float(x, std::integral_constant<bool, is_ieee_single_or_double>());
29565|  14.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE10dump_floatEdNS4_17integral_constantIbLb1EEE:
29568|  14.4k|    {
29569|       |        // directly into the write buffer: copying the text from number_buffer
29570|       |        // right after to_chars() wrote it waits until its stores are done
29571|  14.4k|        if (JSON_HEDLEY_UNLIKELY(write_buffer_pos + number_buffer.size() > write_buffer.size()))
  ------------------
  |  | 1667|  14.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 132, False: 14.2k]
  |  |  ------------------
  ------------------
29572|    132|        {
29573|    132|            flush();
29574|    132|        }
29575|  14.4k|        auto* begin = write_buffer.data() + write_buffer_pos;
29576|  14.4k|        auto* end = ::nlohmann::detail::to_chars(begin, begin + number_buffer.size(), x);
29577|  14.4k|        write_buffer_pos += static_cast<std::size_t>(end - begin);
29578|  14.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail8to_charsIdEEPcS3_PKcT_:
27946|  14.4k|{
27947|  14.4k|    JSON_ASSERT(std::isfinite(value));
  ------------------
  |  | 2591|  14.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27947:5): [True: 14.4k, False: 0]
  ------------------
27948|       |
27949|       |    // Use signbit(value) instead of (value < 0) since signbit works for -0.
27950|  14.4k|    if (std::signbit(value))
  ------------------
  |  Branch (27950:9): [True: 5.30k, False: 9.12k]
  ------------------
27951|  5.30k|    {
27952|  5.30k|        value = -value;
27953|  5.30k|        *first++ = '-';
27954|  5.30k|    }
27955|       |
27956|  14.4k|#ifdef __GNUC__
27957|  14.4k|    JSON_HEDLEY_DIAGNOSTIC_PUSH
27958|  14.4k|    JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
27959|  14.4k|#endif
27960|  14.4k|    if (value == 0) // +-0
  ------------------
  |  Branch (27960:9): [True: 228, False: 14.2k]
  ------------------
27961|    228|    {
27962|    228|        *first++ = '0';
27963|       |        // Make it look like a floating-point number (#362, #378)
27964|    228|        *first++ = '.';
27965|    228|        *first++ = '0';
27966|    228|        return first;
27967|    228|    }
27968|  14.2k|#ifdef __GNUC__
27969|  14.2k|    JSON_HEDLEY_DIAGNOSTIC_POP
27970|  14.2k|#endif
27971|       |
27972|  14.2k|    return dtoa_impl::write_positive(first, last, value);
27973|  14.4k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_:
27926|  14.2k|{
27927|  14.2k|    return write_positive(first, last, value, is_binary64<FloatType> {});
27928|  14.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_positiveIdEEPcS4_PKcT_NSt3__117integral_constantIbLb1EEE:
27908|  14.2k|{
27909|  14.2k|    return write_positive_zmij(first, last, value);
27910|  14.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl19write_positive_zmijIdEEPcS4_PKcT_:
27885|  14.2k|{
27886|  14.2k|    static_assert(is_binary64<FloatType>::value,
27887|  14.2k|                  "internal error: the conversion of Zmij needs IEEE 754 binary64 numbers");
27888|  14.2k|    std::uint64_t bits = 0;
27889|  14.2k|    std::memcpy(&bits, &value, sizeof(bits));
27890|  14.2k|    const zmij::shortest_decimal d = zmij::to_shortest(bits);
27891|  14.2k|    if (JSON_HEDLEY_LIKELY(last - first >= 41))
  ------------------
  |  | 1666|  14.2k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 14.2k, False: 0]
  |  |  ------------------
  ------------------
27892|  14.2k|    {
27893|  14.2k|        return write_shortest(first, d);
27894|  14.2k|    }
27895|      0|    std::array<char, 64> buf; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27896|      0|    const auto len = static_cast<std::size_t>(write_shortest(buf.data(), d) - buf.data());
27897|      0|    JSON_ASSERT(last - first >= static_cast<std::ptrdiff_t>(len));
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27897:5): [True: 0, False: 0]
  ------------------
27898|      0|    std::memcpy(first, buf.data(), len);
27899|      0|    return first + len;
27900|      0|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11to_shortestEm:
26468|  14.2k|{
26469|  14.2k|    constexpr int extra_shift = 9;
26470|  14.2k|    const auto raw_exp = static_cast<int>((bits >> 52u) & 0x7FFu);
26471|  14.2k|    std::uint64_t bin_sig = bits & ((std::uint64_t{1} << 52u) - 1);
26472|       |    // a power of two has a narrower interval below (except the smallest normal)
26473|  14.2k|    const bool regular = bin_sig != 0 || raw_exp <= 1;
  ------------------
  |  Branch (26473:26): [True: 12.5k, False: 1.66k]
  |  Branch (26473:42): [True: 0, False: 1.66k]
  ------------------
26474|  14.2k|    const int bin_exp = (raw_exp == 0 ? 1 : raw_exp) - 1075;
  ------------------
  |  Branch (26474:26): [True: 1.42k, False: 12.7k]
  ------------------
26475|  14.2k|    if (raw_exp != 0)
  ------------------
  |  Branch (26475:9): [True: 12.7k, False: 1.42k]
  ------------------
26476|  12.7k|    {
26477|  12.7k|        bin_sig |= std::uint64_t{1} << 52u;
26478|  12.7k|    }
26479|       |    // floor(log10(2^bin_exp)), or floor(log10(3/4 * 2^bin_exp)) for the irregular case
26480|  14.2k|    const int dec_exp = ((bin_exp * 315653) - (regular ? 0 : 131072)) >> 20;
  ------------------
  |  Branch (26480:48): [True: 12.5k, False: 1.66k]
  ------------------
26481|       |    // scaled by 10^(-dec_exp - 1): the integral part is the shorter candidate
26482|  14.2k|    const int shift = bin_exp + ((-(dec_exp + 1) * 217707) >> 16) + 1 + extra_shift;
26483|  14.2k|    const uint128_parts p10 = pow10(-dec_exp - 1);
26484|  14.2k|    const uint128_parts p = umul192_hi128(p10.high, p10.low, bin_sig << static_cast<unsigned>(shift));
26485|  14.2k|    std::uint64_t integral = p.high >> static_cast<unsigned>(extra_shift);
26486|       |    // (no casts in the shifts: MSVC 2015 warns C4554 on them despite the parentheses)
26487|  14.2k|    constexpr auto fractional_low_shift = static_cast<unsigned>(extra_shift);
26488|  14.2k|    constexpr unsigned fractional_high_shift = 64u - fractional_low_shift;
26489|  14.2k|    const std::uint64_t fractional = (p.high << fractional_high_shift) | (p.low >> fractional_low_shift);
26490|  14.2k|    std::uint64_t digit = 0;
26491|  14.2k|    bool round_up = false;
26492|  14.2k|    bool round_down = false;
26493|  14.2k|    if (JSON_HEDLEY_LIKELY(regular))
  ------------------
  |  | 1666|  14.2k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 12.5k, False: 1.66k]
  |  |  ------------------
  ------------------
26494|  12.5k|    {
26495|  12.5k|        const std::uint64_t half_ulp = (p10.high >> static_cast<unsigned>(extra_shift + 1 - shift)) + (1 - (bin_sig & 1u));
26496|  12.5k|        round_up = fractional + half_ulp < fractional;
26497|  12.5k|        round_down = half_ulp > fractional;
26498|       |        // the last digit of the longer candidate, rounded to nearest
26499|  12.5k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) + 6);
26500|  12.5k|        if (fractional == (std::uint64_t{1} << 62u))
  ------------------
  |  Branch (26500:13): [True: 228, False: 12.3k]
  ------------------
26501|    228|        {
26502|    228|            digit = 2; // 2.5 rounds to 2
26503|    228|        }
26504|  12.5k|    }
26505|  1.66k|    else
26506|  1.66k|    {
26507|  1.66k|        const std::uint64_t half_ulp = p10.high >> static_cast<unsigned>(extra_shift + 1 - shift);
26508|  1.66k|        round_up = half_ulp > ~std::uint64_t{0} - fractional;
26509|  1.66k|        round_down = (half_ulp >> 1u) > fractional;
26510|  1.66k|        digit = umul128_add_hi64(fractional, 10, (std::uint64_t{1} << 63u) - 1);
26511|  1.66k|        const std::uint64_t lowest = umul128_add_hi64(fractional - (half_ulp >> 1u), 10, ~std::uint64_t{0});
26512|  1.66k|        digit = digit < lowest ? lowest : digit;
  ------------------
  |  Branch (26512:17): [True: 858, False: 804]
  ------------------
26513|  1.66k|    }
26514|  14.2k|    integral += round_up ? 1u : 0u;
  ------------------
  |  Branch (26514:17): [True: 1.89k, False: 12.3k]
  ------------------
26515|       |    // if the shorter candidate is outside the rounding interval: one digit more
26516|  14.2k|    return shortest_decimal{integral, dec_exp, static_cast<unsigned char>(digit), !round_up && !round_down};
  ------------------
  |  Branch (26516:83): [True: 12.3k, False: 1.89k]
  |  Branch (26516:96): [True: 6.36k, False: 5.94k]
  ------------------
26517|  14.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij5pow10Ei:
26422|  14.2k|{
26423|  14.2k|    if (k > pow5_128_largest_power)
  ------------------
  |  Branch (26423:9): [True: 1.78k, False: 12.4k]
  ------------------
26424|  1.78k|    {
26425|  1.78k|        return compute_pow10(k); // (only for the smallest doubles)
26426|  1.78k|    }
26427|  12.4k|    const auto i = 2 * static_cast<std::size_t>(k - pow5_128_smallest_power);
26428|  12.4k|    uint128_parts r{pow5_128()[i + 1], pow5_128()[i]};
26429|  12.4k|    const std::uint64_t adjust = static_cast<unsigned>(k + 27) < 27u ? 1u : 0u;
  ------------------
  |  Branch (26429:34): [True: 1.75k, False: 10.6k]
  ------------------
26430|  12.4k|    r.high -= r.low < adjust ? 1u : 0u;
  ------------------
  |  Branch (26430:15): [True: 0, False: 12.4k]
  ------------------
26431|  12.4k|    r.low -= adjust;
26432|  12.4k|    return r;
26433|  14.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13compute_pow10Ei:
26392|  1.78k|{
26393|  1.78k|    const auto i = static_cast<unsigned>(k + 307);
26394|  1.78k|    const std::uint64_t m = pow10_minor()[(i + 24) % 28];
26395|  1.78k|    const std::size_t j = 2 * static_cast<std::size_t>((i + 24) / 28);
26396|  1.78k|    const std::uint64_t h_hi = pow10_major()[j];
26397|  1.78k|    const std::uint64_t h_lo = pow10_major()[j + 1];
26398|  1.78k|    const std::uint64_t h1 = full_multiplication(h_lo, m).high;
26399|  1.78k|    const std::uint64_t c0 = h_lo * m;
26400|  1.78k|    const std::uint64_t c1 = h1 + (h_hi * m);
26401|  1.78k|    const std::uint64_t c2 = (c1 < h1 ? 1u : 0u) + full_multiplication(h_hi, m).high;
  ------------------
  |  Branch (26401:31): [True: 84, False: 1.69k]
  ------------------
26402|  1.78k|    uint128_parts r{};
26403|  1.78k|    if ((c2 >> 63u) != 0)
  ------------------
  |  Branch (26403:9): [True: 282, False: 1.50k]
  ------------------
26404|    282|    {
26405|    282|        r.high = c2;
26406|    282|        r.low = c1;
26407|    282|    }
26408|  1.50k|    else
26409|  1.50k|    {
26410|  1.50k|        r.high = (c2 << 1u) | (c1 >> 63u);
26411|  1.50k|        r.low = (c1 << 1u) | (c0 >> 63u);
26412|  1.50k|    }
26413|  1.78k|    r.low -= (pow10_fixups()[i >> 5u] >> (i & 31u)) & 1u;
26414|  1.78k|    return r;
26415|  1.78k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_minorEv:
26340|  1.78k|{
26341|  1.78k|    static const std::array<std::uint64_t, 28> table =
26342|  1.78k|    {
26343|  1.78k|        {
26344|  1.78k|            0x8000000000000000u, 0xa000000000000000u, 0xc800000000000000u, 0xfa00000000000000u, 0x9c40000000000000u,
26345|  1.78k|            0xc350000000000000u, 0xf424000000000000u, 0x9896800000000000u, 0xbebc200000000000u, 0xee6b280000000000u,
26346|  1.78k|            0x9502f90000000000u, 0xba43b74000000000u, 0xe8d4a51000000000u, 0x9184e72a00000000u, 0xb5e620f480000000u,
26347|  1.78k|            0xe35fa931a0000000u, 0x8e1bc9bf04000000u, 0xb1a2bc2ec5000000u, 0xde0b6b3a76400000u, 0x8ac7230489e80000u,
26348|  1.78k|            0xad78ebc5ac620000u, 0xd8d726b7177a8000u, 0x878678326eac9000u, 0xa968163f0a57b400u, 0xd3c21bcecceda100u,
26349|  1.78k|            0x84595161401484a0u, 0xa56fa5b99019a5c8u, 0xcecb8f27f4200f3au
26350|  1.78k|        }
26351|  1.78k|    };
26352|  1.78k|    return table;
26353|  1.78k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij11pow10_majorEv:
26357|  3.56k|{
26358|  3.56k|    static const std::array<std::uint64_t, 50> table =
26359|  3.56k|    {
26360|  3.56k|        {
26361|  3.56k|            0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3eu, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44ddau, 0xb1442798f49ffb4au, 0x99cd11cfdf41779du,
26362|  3.56k|            0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u, 0xb4bca50b065abe63u, 0x0fed077a756b53aau, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d543u,
26363|  3.56k|            0xb84687c269ef3bfbu, 0x3d5d514f40eea742u, 0xba121a4650e4ddebu, 0x92f34d62616ce413u, 0xbbe226efb628afeau, 0x890489f70a55368cu,
26364|  3.56k|            0xbdb6b8e905cb600fu, 0x5400e987bbc1c921u, 0xbf8fdb78849a5f96u, 0xde98520472bdd034u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
26365|  3.56k|            0xc350000000000000u, 0x0000000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef6u,
26366|  3.56k|            0xc913936dd571c84cu, 0x03bc3a19cd1e38eau, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc6u, 0xcd036837130890a1u, 0x36dba887c37a8c10u,
26367|  3.56k|            0xcf02b2c21207ef2eu, 0x94f967e45e03f4bcu, 0xd106f86e69d785c7u, 0xe13336d701beba52u, 0xd31045a8341ca07cu, 0x1ede48111209a051u,
26368|  3.56k|            0xd51ea6fa85785631u, 0x552a74227f3ea566u, 0xd732290fbacaf133u, 0xa97c177947ad4096u, 0xd94ad8b1c7380874u, 0x18375281ae7822bdu,
26369|  3.56k|            0xdb68c2ca82ed2a05u, 0xa67398db9f6820e1u
26370|  3.56k|        }
26371|  3.56k|    };
26372|  3.56k|    return table;
26373|  3.56k|}
_ZN8nlohmann16json_abi_v3_12_06detail19full_multiplicationEmm:
 9348|  47.8k|{
 9349|  47.8k|#if defined(__SIZEOF_INT128__)
 9350|  47.8k|    __extension__ using uint128 = unsigned __int128;
 9351|  47.8k|    const uint128 r = static_cast<uint128>(a) * b;
 9352|  47.8k|    return {static_cast<std::uint64_t>(r), static_cast<std::uint64_t>(r >> 64u)};
 9353|       |#elif defined(_MSC_VER) && defined(_M_X64)
 9354|       |    std::uint64_t high = 0;
 9355|       |    const std::uint64_t low = _umul128(a, b, &high);
 9356|       |    return {low, high};
 9357|       |#elif defined(_MSC_VER) && defined(_M_ARM64)
 9358|       |    return {a * b, __umulh(a, b)};
 9359|       |#else
 9360|       |    const std::uint64_t a_lo = a & 0xFFFFFFFFu;
 9361|       |    const std::uint64_t a_hi = a >> 32u;
 9362|       |    const std::uint64_t b_lo = b & 0xFFFFFFFFu;
 9363|       |    const std::uint64_t b_hi = b >> 32u;
 9364|       |    const std::uint64_t lo_lo = a_lo * b_lo;
 9365|       |    const std::uint64_t hi_lo = a_hi * b_lo;
 9366|       |    const std::uint64_t lo_hi = a_lo * b_hi;
 9367|       |    const std::uint64_t hi_hi = a_hi * b_hi;
 9368|       |    const std::uint64_t cross = (lo_lo >> 32u) + (hi_lo & 0xFFFFFFFFu) + lo_hi;
 9369|       |    return {(cross << 32u) | (lo_lo & 0xFFFFFFFFu), (hi_lo >> 32u) + (cross >> 32u) + hi_hi};
 9370|       |#endif
 9371|  47.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij12pow10_fixupsEv:
26377|  1.78k|{
26378|  1.78k|    static const std::array<std::uint32_t, 21> table =
26379|  1.78k|    {
26380|  1.78k|        {
26381|  1.78k|            0x8d8fc810u, 0x06100293u, 0x19000000u, 0x00100000u, 0x00000908u, 0x00000000u, 0x04e00300u, 0x3807e0b2u, 0x3d83d793u, 0x0006f5ccu,
26382|  1.78k|            0x00000000u, 0xffff0000u, 0x8076337du, 0x4ff45ba0u, 0x09405033u, 0x034376d9u, 0x09000000u, 0x4e100501u, 0x076d14dcu, 0xf964f45eu,
26383|  1.78k|            0x0000003du
26384|  1.78k|        }
26385|  1.78k|    };
26386|  1.78k|    return table;
26387|  1.78k|}
_ZN8nlohmann16json_abi_v3_12_06detail8pow5_128Ev:
 9468|  24.8k|{
 9469|  24.8k|    static const std::array<std::uint64_t, 1302> table =
 9470|  24.8k|    {
 9471|  24.8k|        {
 9472|  24.8k|            0xeef453d6923bd65au, 0x113faa2906a13b3fu, 0x9558b4661b6565f8u, 0x4ac7ca59a424c507u,
 9473|  24.8k|            0xbaaee17fa23ebf76u, 0x5d79bcf00d2df649u, 0xe95a99df8ace6f53u, 0xf4d82c2c107973dcu,
 9474|  24.8k|            0x91d8a02bb6c10594u, 0x79071b9b8a4be869u, 0xb64ec836a47146f9u, 0x9748e2826cdee284u,
 9475|  24.8k|            0xe3e27a444d8d98b7u, 0xfd1b1b2308169b25u, 0x8e6d8c6ab0787f72u, 0xfe30f0f5e50e20f7u,
 9476|  24.8k|            0xb208ef855c969f4fu, 0xbdbd2d335e51a935u, 0xde8b2b66b3bc4723u, 0xad2c788035e61382u,
 9477|  24.8k|            0x8b16fb203055ac76u, 0x4c3bcb5021afcc31u, 0xaddcb9e83c6b1793u, 0xdf4abe242a1bbf3du,
 9478|  24.8k|            0xd953e8624b85dd78u, 0xd71d6dad34a2af0du, 0x87d4713d6f33aa6bu, 0x8672648c40e5ad68u,
 9479|  24.8k|            0xa9c98d8ccb009506u, 0x680efdaf511f18c2u, 0xd43bf0effdc0ba48u, 0x0212bd1b2566def2u,
 9480|  24.8k|            0x84a57695fe98746du, 0x014bb630f7604b57u, 0xa5ced43b7e3e9188u, 0x419ea3bd35385e2du,
 9481|  24.8k|            0xcf42894a5dce35eau, 0x52064cac828675b9u, 0x818995ce7aa0e1b2u, 0x7343efebd1940993u,
 9482|  24.8k|            0xa1ebfb4219491a1fu, 0x1014ebe6c5f90bf8u, 0xca66fa129f9b60a6u, 0xd41a26e077774ef6u,
 9483|  24.8k|            0xfd00b897478238d0u, 0x8920b098955522b4u, 0x9e20735e8cb16382u, 0x55b46e5f5d5535b0u,
 9484|  24.8k|            0xc5a890362fddbc62u, 0xeb2189f734aa831du, 0xf712b443bbd52b7bu, 0xa5e9ec7501d523e4u,
 9485|  24.8k|            0x9a6bb0aa55653b2du, 0x47b233c92125366eu, 0xc1069cd4eabe89f8u, 0x999ec0bb696e840au,
 9486|  24.8k|            0xf148440a256e2c76u, 0xc00670ea43ca250du, 0x96cd2a865764dbcau, 0x380406926a5e5728u,
 9487|  24.8k|            0xbc807527ed3e12bcu, 0xc605083704f5ecf2u, 0xeba09271e88d976bu, 0xf7864a44c633682eu,
 9488|  24.8k|            0x93445b8731587ea3u, 0x7ab3ee6afbe0211du, 0xb8157268fdae9e4cu, 0x5960ea05bad82964u,
 9489|  24.8k|            0xe61acf033d1a45dfu, 0x6fb92487298e33bdu, 0x8fd0c16206306babu, 0xa5d3b6d479f8e056u,
 9490|  24.8k|            0xb3c4f1ba87bc8696u, 0x8f48a4899877186cu, 0xe0b62e2929aba83cu, 0x331acdabfe94de87u,
 9491|  24.8k|            0x8c71dcd9ba0b4925u, 0x9ff0c08b7f1d0b14u, 0xaf8e5410288e1b6fu, 0x07ecf0ae5ee44dd9u,
 9492|  24.8k|            0xdb71e91432b1a24au, 0xc9e82cd9f69d6150u, 0x892731ac9faf056eu, 0xbe311c083a225cd2u,
 9493|  24.8k|            0xab70fe17c79ac6cau, 0x6dbd630a48aaf406u, 0xd64d3d9db981787du, 0x092cbbccdad5b108u,
 9494|  24.8k|            0x85f0468293f0eb4eu, 0x25bbf56008c58ea5u, 0xa76c582338ed2621u, 0xaf2af2b80af6f24eu,
 9495|  24.8k|            0xd1476e2c07286faau, 0x1af5af660db4aee1u, 0x82cca4db847945cau, 0x50d98d9fc890ed4du,
 9496|  24.8k|            0xa37fce126597973cu, 0xe50ff107bab528a0u, 0xcc5fc196fefd7d0cu, 0x1e53ed49a96272c8u,
 9497|  24.8k|            0xff77b1fcbebcdc4fu, 0x25e8e89c13bb0f7au, 0x9faacf3df73609b1u, 0x77b191618c54e9acu,
 9498|  24.8k|            0xc795830d75038c1du, 0xd59df5b9ef6a2417u, 0xf97ae3d0d2446f25u, 0x4b0573286b44ad1du,
 9499|  24.8k|            0x9becce62836ac577u, 0x4ee367f9430aec32u, 0xc2e801fb244576d5u, 0x229c41f793cda73fu,
 9500|  24.8k|            0xf3a20279ed56d48au, 0x6b43527578c1110fu, 0x9845418c345644d6u, 0x830a13896b78aaa9u,
 9501|  24.8k|            0xbe5691ef416bd60cu, 0x23cc986bc656d553u, 0xedec366b11c6cb8fu, 0x2cbfbe86b7ec8aa8u,
 9502|  24.8k|            0x94b3a202eb1c3f39u, 0x7bf7d71432f3d6a9u, 0xb9e08a83a5e34f07u, 0xdaf5ccd93fb0cc53u,
 9503|  24.8k|            0xe858ad248f5c22c9u, 0xd1b3400f8f9cff68u, 0x91376c36d99995beu, 0x23100809b9c21fa1u,
 9504|  24.8k|            0xb58547448ffffb2du, 0xabd40a0c2832a78au, 0xe2e69915b3fff9f9u, 0x16c90c8f323f516cu,
 9505|  24.8k|            0x8dd01fad907ffc3bu, 0xae3da7d97f6792e3u, 0xb1442798f49ffb4au, 0x99cd11cfdf41779cu,
 9506|  24.8k|            0xdd95317f31c7fa1du, 0x40405643d711d583u, 0x8a7d3eef7f1cfc52u, 0x482835ea666b2572u,
 9507|  24.8k|            0xad1c8eab5ee43b66u, 0xda3243650005eecfu, 0xd863b256369d4a40u, 0x90bed43e40076a82u,
 9508|  24.8k|            0x873e4f75e2224e68u, 0x5a7744a6e804a291u, 0xa90de3535aaae202u, 0x711515d0a205cb36u,
 9509|  24.8k|            0xd3515c2831559a83u, 0x0d5a5b44ca873e03u, 0x8412d9991ed58091u, 0xe858790afe9486c2u,
 9510|  24.8k|            0xa5178fff668ae0b6u, 0x626e974dbe39a872u, 0xce5d73ff402d98e3u, 0xfb0a3d212dc8128fu,
 9511|  24.8k|            0x80fa687f881c7f8eu, 0x7ce66634bc9d0b99u, 0xa139029f6a239f72u, 0x1c1fffc1ebc44e80u,
 9512|  24.8k|            0xc987434744ac874eu, 0xa327ffb266b56220u, 0xfbe9141915d7a922u, 0x4bf1ff9f0062baa8u,
 9513|  24.8k|            0x9d71ac8fada6c9b5u, 0x6f773fc3603db4a9u, 0xc4ce17b399107c22u, 0xcb550fb4384d21d3u,
 9514|  24.8k|            0xf6019da07f549b2bu, 0x7e2a53a146606a48u, 0x99c102844f94e0fbu, 0x2eda7444cbfc426du,
 9515|  24.8k|            0xc0314325637a1939u, 0xfa911155fefb5308u, 0xf03d93eebc589f88u, 0x793555ab7eba27cau,
 9516|  24.8k|            0x96267c7535b763b5u, 0x4bc1558b2f3458deu, 0xbbb01b9283253ca2u, 0x9eb1aaedfb016f16u,
 9517|  24.8k|            0xea9c227723ee8bcbu, 0x465e15a979c1cadcu, 0x92a1958a7675175fu, 0x0bfacd89ec191ec9u,
 9518|  24.8k|            0xb749faed14125d36u, 0xcef980ec671f667bu, 0xe51c79a85916f484u, 0x82b7e12780e7401au,
 9519|  24.8k|            0x8f31cc0937ae58d2u, 0xd1b2ecb8b0908810u, 0xb2fe3f0b8599ef07u, 0x861fa7e6dcb4aa15u,
 9520|  24.8k|            0xdfbdcece67006ac9u, 0x67a791e093e1d49au, 0x8bd6a141006042bdu, 0xe0c8bb2c5c6d24e0u,
 9521|  24.8k|            0xaecc49914078536du, 0x58fae9f773886e18u, 0xda7f5bf590966848u, 0xaf39a475506a899eu,
 9522|  24.8k|            0x888f99797a5e012du, 0x6d8406c952429603u, 0xaab37fd7d8f58178u, 0xc8e5087ba6d33b83u,
 9523|  24.8k|            0xd5605fcdcf32e1d6u, 0xfb1e4a9a90880a64u, 0x855c3be0a17fcd26u, 0x5cf2eea09a55067fu,
 9524|  24.8k|            0xa6b34ad8c9dfc06fu, 0xf42faa48c0ea481eu, 0xd0601d8efc57b08bu, 0xf13b94daf124da26u,
 9525|  24.8k|            0x823c12795db6ce57u, 0x76c53d08d6b70858u, 0xa2cb1717b52481edu, 0x54768c4b0c64ca6eu,
 9526|  24.8k|            0xcb7ddcdda26da268u, 0xa9942f5dcf7dfd09u, 0xfe5d54150b090b02u, 0xd3f93b35435d7c4cu,
 9527|  24.8k|            0x9efa548d26e5a6e1u, 0xc47bc5014a1a6dafu, 0xc6b8e9b0709f109au, 0x359ab6419ca1091bu,
 9528|  24.8k|            0xf867241c8cc6d4c0u, 0xc30163d203c94b62u, 0x9b407691d7fc44f8u, 0x79e0de63425dcf1du,
 9529|  24.8k|            0xc21094364dfb5636u, 0x985915fc12f542e4u, 0xf294b943e17a2bc4u, 0x3e6f5b7b17b2939du,
 9530|  24.8k|            0x979cf3ca6cec5b5au, 0xa705992ceecf9c42u, 0xbd8430bd08277231u, 0x50c6ff782a838353u,
 9531|  24.8k|            0xece53cec4a314ebdu, 0xa4f8bf5635246428u, 0x940f4613ae5ed136u, 0x871b7795e136be99u,
 9532|  24.8k|            0xb913179899f68584u, 0x28e2557b59846e3fu, 0xe757dd7ec07426e5u, 0x331aeada2fe589cfu,
 9533|  24.8k|            0x9096ea6f3848984fu, 0x3ff0d2c85def7621u, 0xb4bca50b065abe63u, 0x0fed077a756b53a9u,
 9534|  24.8k|            0xe1ebce4dc7f16dfbu, 0xd3e8495912c62894u, 0x8d3360f09cf6e4bdu, 0x64712dd7abbbd95cu,
 9535|  24.8k|            0xb080392cc4349decu, 0xbd8d794d96aacfb3u, 0xdca04777f541c567u, 0xecf0d7a0fc5583a0u,
 9536|  24.8k|            0x89e42caaf9491b60u, 0xf41686c49db57244u, 0xac5d37d5b79b6239u, 0x311c2875c522ced5u,
 9537|  24.8k|            0xd77485cb25823ac7u, 0x7d633293366b828bu, 0x86a8d39ef77164bcu, 0xae5dff9c02033197u,
 9538|  24.8k|            0xa8530886b54dbdebu, 0xd9f57f830283fdfcu, 0xd267caa862a12d66u, 0xd072df63c324fd7bu,
 9539|  24.8k|            0x8380dea93da4bc60u, 0x4247cb9e59f71e6du, 0xa46116538d0deb78u, 0x52d9be85f074e608u,
 9540|  24.8k|            0xcd795be870516656u, 0x67902e276c921f8bu, 0x806bd9714632dff6u, 0x00ba1cd8a3db53b6u,
 9541|  24.8k|            0xa086cfcd97bf97f3u, 0x80e8a40eccd228a4u, 0xc8a883c0fdaf7df0u, 0x6122cd128006b2cdu,
 9542|  24.8k|            0xfad2a4b13d1b5d6cu, 0x796b805720085f81u, 0x9cc3a6eec6311a63u, 0xcbe3303674053bb0u,
 9543|  24.8k|            0xc3f490aa77bd60fcu, 0xbedbfc4411068a9cu, 0xf4f1b4d515acb93bu, 0xee92fb5515482d44u,
 9544|  24.8k|            0x991711052d8bf3c5u, 0x751bdd152d4d1c4au, 0xbf5cd54678eef0b6u, 0xd262d45a78a0635du,
 9545|  24.8k|            0xef340a98172aace4u, 0x86fb897116c87c34u, 0x9580869f0e7aac0eu, 0xd45d35e6ae3d4da0u,
 9546|  24.8k|            0xbae0a846d2195712u, 0x8974836059cca109u, 0xe998d258869facd7u, 0x2bd1a438703fc94bu,
 9547|  24.8k|            0x91ff83775423cc06u, 0x7b6306a34627ddcfu, 0xb67f6455292cbf08u, 0x1a3bc84c17b1d542u,
 9548|  24.8k|            0xe41f3d6a7377eecau, 0x20caba5f1d9e4a93u, 0x8e938662882af53eu, 0x547eb47b7282ee9cu,
 9549|  24.8k|            0xb23867fb2a35b28du, 0xe99e619a4f23aa43u, 0xdec681f9f4c31f31u, 0x6405fa00e2ec94d4u,
 9550|  24.8k|            0x8b3c113c38f9f37eu, 0xde83bc408dd3dd04u, 0xae0b158b4738705eu, 0x9624ab50b148d445u,
 9551|  24.8k|            0xd98ddaee19068c76u, 0x3badd624dd9b0957u, 0x87f8a8d4cfa417c9u, 0xe54ca5d70a80e5d6u,
 9552|  24.8k|            0xa9f6d30a038d1dbcu, 0x5e9fcf4ccd211f4cu, 0xd47487cc8470652bu, 0x7647c3200069671fu,
 9553|  24.8k|            0x84c8d4dfd2c63f3bu, 0x29ecd9f40041e073u, 0xa5fb0a17c777cf09u, 0xf468107100525890u,
 9554|  24.8k|            0xcf79cc9db955c2ccu, 0x7182148d4066eeb4u, 0x81ac1fe293d599bfu, 0xc6f14cd848405530u,
 9555|  24.8k|            0xa21727db38cb002fu, 0xb8ada00e5a506a7cu, 0xca9cf1d206fdc03bu, 0xa6d90811f0e4851cu,
 9556|  24.8k|            0xfd442e4688bd304au, 0x908f4a166d1da663u, 0x9e4a9cec15763e2eu, 0x9a598e4e043287feu,
 9557|  24.8k|            0xc5dd44271ad3cdbau, 0x40eff1e1853f29fdu, 0xf7549530e188c128u, 0xd12bee59e68ef47cu,
 9558|  24.8k|            0x9a94dd3e8cf578b9u, 0x82bb74f8301958ceu, 0xc13a148e3032d6e7u, 0xe36a52363c1faf01u,
 9559|  24.8k|            0xf18899b1bc3f8ca1u, 0xdc44e6c3cb279ac1u, 0x96f5600f15a7b7e5u, 0x29ab103a5ef8c0b9u,
 9560|  24.8k|            0xbcb2b812db11a5deu, 0x7415d448f6b6f0e7u, 0xebdf661791d60f56u, 0x111b495b3464ad21u,
 9561|  24.8k|            0x936b9fcebb25c995u, 0xcab10dd900beec34u, 0xb84687c269ef3bfbu, 0x3d5d514f40eea742u,
 9562|  24.8k|            0xe65829b3046b0afau, 0x0cb4a5a3112a5112u, 0x8ff71a0fe2c2e6dcu, 0x47f0e785eaba72abu,
 9563|  24.8k|            0xb3f4e093db73a093u, 0x59ed216765690f56u, 0xe0f218b8d25088b8u, 0x306869c13ec3532cu,
 9564|  24.8k|            0x8c974f7383725573u, 0x1e414218c73a13fbu, 0xafbd2350644eeacfu, 0xe5d1929ef90898fau,
 9565|  24.8k|            0xdbac6c247d62a583u, 0xdf45f746b74abf39u, 0x894bc396ce5da772u, 0x6b8bba8c328eb783u,
 9566|  24.8k|            0xab9eb47c81f5114fu, 0x066ea92f3f326564u, 0xd686619ba27255a2u, 0xc80a537b0efefebdu,
 9567|  24.8k|            0x8613fd0145877585u, 0xbd06742ce95f5f36u, 0xa798fc4196e952e7u, 0x2c48113823b73704u,
 9568|  24.8k|            0xd17f3b51fca3a7a0u, 0xf75a15862ca504c5u, 0x82ef85133de648c4u, 0x9a984d73dbe722fbu,
 9569|  24.8k|            0xa3ab66580d5fdaf5u, 0xc13e60d0d2e0ebbau, 0xcc963fee10b7d1b3u, 0x318df905079926a8u,
 9570|  24.8k|            0xffbbcfe994e5c61fu, 0xfdf17746497f7052u, 0x9fd561f1fd0f9bd3u, 0xfeb6ea8bedefa633u,
 9571|  24.8k|            0xc7caba6e7c5382c8u, 0xfe64a52ee96b8fc0u, 0xf9bd690a1b68637bu, 0x3dfdce7aa3c673b0u,
 9572|  24.8k|            0x9c1661a651213e2du, 0x06bea10ca65c084eu, 0xc31bfa0fe5698db8u, 0x486e494fcff30a62u,
 9573|  24.8k|            0xf3e2f893dec3f126u, 0x5a89dba3c3efccfau, 0x986ddb5c6b3a76b7u, 0xf89629465a75e01cu,
 9574|  24.8k|            0xbe89523386091465u, 0xf6bbb397f1135823u, 0xee2ba6c0678b597fu, 0x746aa07ded582e2cu,
 9575|  24.8k|            0x94db483840b717efu, 0xa8c2a44eb4571cdcu, 0xba121a4650e4ddebu, 0x92f34d62616ce413u,
 9576|  24.8k|            0xe896a0d7e51e1566u, 0x77b020baf9c81d17u, 0x915e2486ef32cd60u, 0x0ace1474dc1d122eu,
 9577|  24.8k|            0xb5b5ada8aaff80b8u, 0x0d819992132456bau, 0xe3231912d5bf60e6u, 0x10e1fff697ed6c69u,
 9578|  24.8k|            0x8df5efabc5979c8fu, 0xca8d3ffa1ef463c1u, 0xb1736b96b6fd83b3u, 0xbd308ff8a6b17cb2u,
 9579|  24.8k|            0xddd0467c64bce4a0u, 0xac7cb3f6d05ddbdeu, 0x8aa22c0dbef60ee4u, 0x6bcdf07a423aa96bu,
 9580|  24.8k|            0xad4ab7112eb3929du, 0x86c16c98d2c953c6u, 0xd89d64d57a607744u, 0xe871c7bf077ba8b7u,
 9581|  24.8k|            0x87625f056c7c4a8bu, 0x11471cd764ad4972u, 0xa93af6c6c79b5d2du, 0xd598e40d3dd89bcfu,
 9582|  24.8k|            0xd389b47879823479u, 0x4aff1d108d4ec2c3u, 0x843610cb4bf160cbu, 0xcedf722a585139bau,
 9583|  24.8k|            0xa54394fe1eedb8feu, 0xc2974eb4ee658828u, 0xce947a3da6a9273eu, 0x733d226229feea32u,
 9584|  24.8k|            0x811ccc668829b887u, 0x0806357d5a3f525fu, 0xa163ff802a3426a8u, 0xca07c2dcb0cf26f7u,
 9585|  24.8k|            0xc9bcff6034c13052u, 0xfc89b393dd02f0b5u, 0xfc2c3f3841f17c67u, 0xbbac2078d443ace2u,
 9586|  24.8k|            0x9d9ba7832936edc0u, 0xd54b944b84aa4c0du, 0xc5029163f384a931u, 0x0a9e795e65d4df11u,
 9587|  24.8k|            0xf64335bcf065d37du, 0x4d4617b5ff4a16d5u, 0x99ea0196163fa42eu, 0x504bced1bf8e4e45u,
 9588|  24.8k|            0xc06481fb9bcf8d39u, 0xe45ec2862f71e1d6u, 0xf07da27a82c37088u, 0x5d767327bb4e5a4cu,
 9589|  24.8k|            0x964e858c91ba2655u, 0x3a6a07f8d510f86fu, 0xbbe226efb628afeau, 0x890489f70a55368bu,
 9590|  24.8k|            0xeadab0aba3b2dbe5u, 0x2b45ac74ccea842eu, 0x92c8ae6b464fc96fu, 0x3b0b8bc90012929du,
 9591|  24.8k|            0xb77ada0617e3bbcbu, 0x09ce6ebb40173744u, 0xe55990879ddcaabdu, 0xcc420a6a101d0515u,
 9592|  24.8k|            0x8f57fa54c2a9eab6u, 0x9fa946824a12232du, 0xb32df8e9f3546564u, 0x47939822dc96abf9u,
 9593|  24.8k|            0xdff9772470297ebdu, 0x59787e2b93bc56f7u, 0x8bfbea76c619ef36u, 0x57eb4edb3c55b65au,
 9594|  24.8k|            0xaefae51477a06b03u, 0xede622920b6b23f1u, 0xdab99e59958885c4u, 0xe95fab368e45ecedu,
 9595|  24.8k|            0x88b402f7fd75539bu, 0x11dbcb0218ebb414u, 0xaae103b5fcd2a881u, 0xd652bdc29f26a119u,
 9596|  24.8k|            0xd59944a37c0752a2u, 0x4be76d3346f0495fu, 0x857fcae62d8493a5u, 0x6f70a4400c562ddbu,
 9597|  24.8k|            0xa6dfbd9fb8e5b88eu, 0xcb4ccd500f6bb952u, 0xd097ad07a71f26b2u, 0x7e2000a41346a7a7u,
 9598|  24.8k|            0x825ecc24c873782fu, 0x8ed400668c0c28c8u, 0xa2f67f2dfa90563bu, 0x728900802f0f32fau,
 9599|  24.8k|            0xcbb41ef979346bcau, 0x4f2b40a03ad2ffb9u, 0xfea126b7d78186bcu, 0xe2f610c84987bfa8u,
 9600|  24.8k|            0x9f24b832e6b0f436u, 0x0dd9ca7d2df4d7c9u, 0xc6ede63fa05d3143u, 0x91503d1c79720dbbu,
 9601|  24.8k|            0xf8a95fcf88747d94u, 0x75a44c6397ce912au, 0x9b69dbe1b548ce7cu, 0xc986afbe3ee11abau,
 9602|  24.8k|            0xc24452da229b021bu, 0xfbe85badce996168u, 0xf2d56790ab41c2a2u, 0xfae27299423fb9c3u,
 9603|  24.8k|            0x97c560ba6b0919a5u, 0xdccd879fc967d41au, 0xbdb6b8e905cb600fu, 0x5400e987bbc1c920u,
 9604|  24.8k|            0xed246723473e3813u, 0x290123e9aab23b68u, 0x9436c0760c86e30bu, 0xf9a0b6720aaf6521u,
 9605|  24.8k|            0xb94470938fa89bceu, 0xf808e40e8d5b3e69u, 0xe7958cb87392c2c2u, 0xb60b1d1230b20e04u,
 9606|  24.8k|            0x90bd77f3483bb9b9u, 0xb1c6f22b5e6f48c2u, 0xb4ecd5f01a4aa828u, 0x1e38aeb6360b1af3u,
 9607|  24.8k|            0xe2280b6c20dd5232u, 0x25c6da63c38de1b0u, 0x8d590723948a535fu, 0x579c487e5a38ad0eu,
 9608|  24.8k|            0xb0af48ec79ace837u, 0x2d835a9df0c6d851u, 0xdcdb1b2798182244u, 0xf8e431456cf88e65u,
 9609|  24.8k|            0x8a08f0f8bf0f156bu, 0x1b8e9ecb641b58ffu, 0xac8b2d36eed2dac5u, 0xe272467e3d222f3fu,
 9610|  24.8k|            0xd7adf884aa879177u, 0x5b0ed81dcc6abb0fu, 0x86ccbb52ea94baeau, 0x98e947129fc2b4e9u,
 9611|  24.8k|            0xa87fea27a539e9a5u, 0x3f2398d747b36224u, 0xd29fe4b18e88640eu, 0x8eec7f0d19a03aadu,
 9612|  24.8k|            0x83a3eeeef9153e89u, 0x1953cf68300424acu, 0xa48ceaaab75a8e2bu, 0x5fa8c3423c052dd7u,
 9613|  24.8k|            0xcdb02555653131b6u, 0x3792f412cb06794du, 0x808e17555f3ebf11u, 0xe2bbd88bbee40bd0u,
 9614|  24.8k|            0xa0b19d2ab70e6ed6u, 0x5b6aceaeae9d0ec4u, 0xc8de047564d20a8bu, 0xf245825a5a445275u,
 9615|  24.8k|            0xfb158592be068d2eu, 0xeed6e2f0f0d56712u, 0x9ced737bb6c4183du, 0x55464dd69685606bu,
 9616|  24.8k|            0xc428d05aa4751e4cu, 0xaa97e14c3c26b886u, 0xf53304714d9265dfu, 0xd53dd99f4b3066a8u,
 9617|  24.8k|            0x993fe2c6d07b7fabu, 0xe546a8038efe4029u, 0xbf8fdb78849a5f96u, 0xde98520472bdd033u,
 9618|  24.8k|            0xef73d256a5c0f77cu, 0x963e66858f6d4440u, 0x95a8637627989aadu, 0xdde7001379a44aa8u,
 9619|  24.8k|            0xbb127c53b17ec159u, 0x5560c018580d5d52u, 0xe9d71b689dde71afu, 0xaab8f01e6e10b4a6u,
 9620|  24.8k|            0x9226712162ab070du, 0xcab3961304ca70e8u, 0xb6b00d69bb55c8d1u, 0x3d607b97c5fd0d22u,
 9621|  24.8k|            0xe45c10c42a2b3b05u, 0x8cb89a7db77c506au, 0x8eb98a7a9a5b04e3u, 0x77f3608e92adb242u,
 9622|  24.8k|            0xb267ed1940f1c61cu, 0x55f038b237591ed3u, 0xdf01e85f912e37a3u, 0x6b6c46dec52f6688u,
 9623|  24.8k|            0x8b61313bbabce2c6u, 0x2323ac4b3b3da015u, 0xae397d8aa96c1b77u, 0xabec975e0a0d081au,
 9624|  24.8k|            0xd9c7dced53c72255u, 0x96e7bd358c904a21u, 0x881cea14545c7575u, 0x7e50d64177da2e54u,
 9625|  24.8k|            0xaa242499697392d2u, 0xdde50bd1d5d0b9e9u, 0xd4ad2dbfc3d07787u, 0x955e4ec64b44e864u,
 9626|  24.8k|            0x84ec3c97da624ab4u, 0xbd5af13bef0b113eu, 0xa6274bbdd0fadd61u, 0xecb1ad8aeacdd58eu,
 9627|  24.8k|            0xcfb11ead453994bau, 0x67de18eda5814af2u, 0x81ceb32c4b43fcf4u, 0x80eacf948770ced7u,
 9628|  24.8k|            0xa2425ff75e14fc31u, 0xa1258379a94d028du, 0xcad2f7f5359a3b3eu, 0x096ee45813a04330u,
 9629|  24.8k|            0xfd87b5f28300ca0du, 0x8bca9d6e188853fcu, 0x9e74d1b791e07e48u, 0x775ea264cf55347eu,
 9630|  24.8k|            0xc612062576589ddau, 0x95364afe032a819eu, 0xf79687aed3eec551u, 0x3a83ddbd83f52205u,
 9631|  24.8k|            0x9abe14cd44753b52u, 0xc4926a9672793543u, 0xc16d9a0095928a27u, 0x75b7053c0f178294u,
 9632|  24.8k|            0xf1c90080baf72cb1u, 0x5324c68b12dd6339u, 0x971da05074da7beeu, 0xd3f6fc16ebca5e04u,
 9633|  24.8k|            0xbce5086492111aeau, 0x88f4bb1ca6bcf585u, 0xec1e4a7db69561a5u, 0x2b31e9e3d06c32e6u,
 9634|  24.8k|            0x9392ee8e921d5d07u, 0x3aff322e62439fd0u, 0xb877aa3236a4b449u, 0x09befeb9fad487c3u,
 9635|  24.8k|            0xe69594bec44de15bu, 0x4c2ebe687989a9b4u, 0x901d7cf73ab0acd9u, 0x0f9d37014bf60a11u,
 9636|  24.8k|            0xb424dc35095cd80fu, 0x538484c19ef38c95u, 0xe12e13424bb40e13u, 0x2865a5f206b06fbau,
 9637|  24.8k|            0x8cbccc096f5088cbu, 0xf93f87b7442e45d4u, 0xafebff0bcb24aafeu, 0xf78f69a51539d749u,
 9638|  24.8k|            0xdbe6fecebdedd5beu, 0xb573440e5a884d1cu, 0x89705f4136b4a597u, 0x31680a88f8953031u,
 9639|  24.8k|            0xabcc77118461cefcu, 0xfdc20d2b36ba7c3eu, 0xd6bf94d5e57a42bcu, 0x3d32907604691b4du,
 9640|  24.8k|            0x8637bd05af6c69b5u, 0xa63f9a49c2c1b110u, 0xa7c5ac471b478423u, 0x0fcf80dc33721d54u,
 9641|  24.8k|            0xd1b71758e219652bu, 0xd3c36113404ea4a9u, 0x83126e978d4fdf3bu, 0x645a1cac083126eau,
 9642|  24.8k|            0xa3d70a3d70a3d70au, 0x3d70a3d70a3d70a4u, 0xccccccccccccccccu, 0xcccccccccccccccdu,
 9643|  24.8k|            0x8000000000000000u, 0x0000000000000000u, 0xa000000000000000u, 0x0000000000000000u,
 9644|  24.8k|            0xc800000000000000u, 0x0000000000000000u, 0xfa00000000000000u, 0x0000000000000000u,
 9645|  24.8k|            0x9c40000000000000u, 0x0000000000000000u, 0xc350000000000000u, 0x0000000000000000u,
 9646|  24.8k|            0xf424000000000000u, 0x0000000000000000u, 0x9896800000000000u, 0x0000000000000000u,
 9647|  24.8k|            0xbebc200000000000u, 0x0000000000000000u, 0xee6b280000000000u, 0x0000000000000000u,
 9648|  24.8k|            0x9502f90000000000u, 0x0000000000000000u, 0xba43b74000000000u, 0x0000000000000000u,
 9649|  24.8k|            0xe8d4a51000000000u, 0x0000000000000000u, 0x9184e72a00000000u, 0x0000000000000000u,
 9650|  24.8k|            0xb5e620f480000000u, 0x0000000000000000u, 0xe35fa931a0000000u, 0x0000000000000000u,
 9651|  24.8k|            0x8e1bc9bf04000000u, 0x0000000000000000u, 0xb1a2bc2ec5000000u, 0x0000000000000000u,
 9652|  24.8k|            0xde0b6b3a76400000u, 0x0000000000000000u, 0x8ac7230489e80000u, 0x0000000000000000u,
 9653|  24.8k|            0xad78ebc5ac620000u, 0x0000000000000000u, 0xd8d726b7177a8000u, 0x0000000000000000u,
 9654|  24.8k|            0x878678326eac9000u, 0x0000000000000000u, 0xa968163f0a57b400u, 0x0000000000000000u,
 9655|  24.8k|            0xd3c21bcecceda100u, 0x0000000000000000u, 0x84595161401484a0u, 0x0000000000000000u,
 9656|  24.8k|            0xa56fa5b99019a5c8u, 0x0000000000000000u, 0xcecb8f27f4200f3au, 0x0000000000000000u,
 9657|  24.8k|            0x813f3978f8940984u, 0x4000000000000000u, 0xa18f07d736b90be5u, 0x5000000000000000u,
 9658|  24.8k|            0xc9f2c9cd04674edeu, 0xa400000000000000u, 0xfc6f7c4045812296u, 0x4d00000000000000u,
 9659|  24.8k|            0x9dc5ada82b70b59du, 0xf020000000000000u, 0xc5371912364ce305u, 0x6c28000000000000u,
 9660|  24.8k|            0xf684df56c3e01bc6u, 0xc732000000000000u, 0x9a130b963a6c115cu, 0x3c7f400000000000u,
 9661|  24.8k|            0xc097ce7bc90715b3u, 0x4b9f100000000000u, 0xf0bdc21abb48db20u, 0x1e86d40000000000u,
 9662|  24.8k|            0x96769950b50d88f4u, 0x1314448000000000u, 0xbc143fa4e250eb31u, 0x17d955a000000000u,
 9663|  24.8k|            0xeb194f8e1ae525fdu, 0x5dcfab0800000000u, 0x92efd1b8d0cf37beu, 0x5aa1cae500000000u,
 9664|  24.8k|            0xb7abc627050305adu, 0xf14a3d9e40000000u, 0xe596b7b0c643c719u, 0x6d9ccd05d0000000u,
 9665|  24.8k|            0x8f7e32ce7bea5c6fu, 0xe4820023a2000000u, 0xb35dbf821ae4f38bu, 0xdda2802c8a800000u,
 9666|  24.8k|            0xe0352f62a19e306eu, 0xd50b2037ad200000u, 0x8c213d9da502de45u, 0x4526f422cc340000u,
 9667|  24.8k|            0xaf298d050e4395d6u, 0x9670b12b7f410000u, 0xdaf3f04651d47b4cu, 0x3c0cdd765f114000u,
 9668|  24.8k|            0x88d8762bf324cd0fu, 0xa5880a69fb6ac800u, 0xab0e93b6efee0053u, 0x8eea0d047a457a00u,
 9669|  24.8k|            0xd5d238a4abe98068u, 0x72a4904598d6d880u, 0x85a36366eb71f041u, 0x47a6da2b7f864750u,
 9670|  24.8k|            0xa70c3c40a64e6c51u, 0x999090b65f67d924u, 0xd0cf4b50cfe20765u, 0xfff4b4e3f741cf6du,
 9671|  24.8k|            0x82818f1281ed449fu, 0xbff8f10e7a8921a4u, 0xa321f2d7226895c7u, 0xaff72d52192b6a0du,
 9672|  24.8k|            0xcbea6f8ceb02bb39u, 0x9bf4f8a69f764490u, 0xfee50b7025c36a08u, 0x02f236d04753d5b4u,
 9673|  24.8k|            0x9f4f2726179a2245u, 0x01d762422c946590u, 0xc722f0ef9d80aad6u, 0x424d3ad2b7b97ef5u,
 9674|  24.8k|            0xf8ebad2b84e0d58bu, 0xd2e0898765a7deb2u, 0x9b934c3b330c8577u, 0x63cc55f49f88eb2fu,
 9675|  24.8k|            0xc2781f49ffcfa6d5u, 0x3cbf6b71c76b25fbu, 0xf316271c7fc3908au, 0x8bef464e3945ef7au,
 9676|  24.8k|            0x97edd871cfda3a56u, 0x97758bf0e3cbb5acu, 0xbde94e8e43d0c8ecu, 0x3d52eeed1cbea317u,
 9677|  24.8k|            0xed63a231d4c4fb27u, 0x4ca7aaa863ee4bddu, 0x945e455f24fb1cf8u, 0x8fe8caa93e74ef6au,
 9678|  24.8k|            0xb975d6b6ee39e436u, 0xb3e2fd538e122b44u, 0xe7d34c64a9c85d44u, 0x60dbbca87196b616u,
 9679|  24.8k|            0x90e40fbeea1d3a4au, 0xbc8955e946fe31cdu, 0xb51d13aea4a488ddu, 0x6babab6398bdbe41u,
 9680|  24.8k|            0xe264589a4dcdab14u, 0xc696963c7eed2dd1u, 0x8d7eb76070a08aecu, 0xfc1e1de5cf543ca2u,
 9681|  24.8k|            0xb0de65388cc8ada8u, 0x3b25a55f43294bcbu, 0xdd15fe86affad912u, 0x49ef0eb713f39ebeu,
 9682|  24.8k|            0x8a2dbf142dfcc7abu, 0x6e3569326c784337u, 0xacb92ed9397bf996u, 0x49c2c37f07965404u,
 9683|  24.8k|            0xd7e77a8f87daf7fbu, 0xdc33745ec97be906u, 0x86f0ac99b4e8dafdu, 0x69a028bb3ded71a3u,
 9684|  24.8k|            0xa8acd7c0222311bcu, 0xc40832ea0d68ce0cu, 0xd2d80db02aabd62bu, 0xf50a3fa490c30190u,
 9685|  24.8k|            0x83c7088e1aab65dbu, 0x792667c6da79e0fau, 0xa4b8cab1a1563f52u, 0x577001b891185938u,
 9686|  24.8k|            0xcde6fd5e09abcf26u, 0xed4c0226b55e6f86u, 0x80b05e5ac60b6178u, 0x544f8158315b05b4u,
 9687|  24.8k|            0xa0dc75f1778e39d6u, 0x696361ae3db1c721u, 0xc913936dd571c84cu, 0x03bc3a19cd1e38e9u,
 9688|  24.8k|            0xfb5878494ace3a5fu, 0x04ab48a04065c723u, 0x9d174b2dcec0e47bu, 0x62eb0d64283f9c76u,
 9689|  24.8k|            0xc45d1df942711d9au, 0x3ba5d0bd324f8394u, 0xf5746577930d6500u, 0xca8f44ec7ee36479u,
 9690|  24.8k|            0x9968bf6abbe85f20u, 0x7e998b13cf4e1ecbu, 0xbfc2ef456ae276e8u, 0x9e3fedd8c321a67eu,
 9691|  24.8k|            0xefb3ab16c59b14a2u, 0xc5cfe94ef3ea101eu, 0x95d04aee3b80ece5u, 0xbba1f1d158724a12u,
 9692|  24.8k|            0xbb445da9ca61281fu, 0x2a8a6e45ae8edc97u, 0xea1575143cf97226u, 0xf52d09d71a3293bdu,
 9693|  24.8k|            0x924d692ca61be758u, 0x593c2626705f9c56u, 0xb6e0c377cfa2e12eu, 0x6f8b2fb00c77836cu,
 9694|  24.8k|            0xe498f455c38b997au, 0x0b6dfb9c0f956447u, 0x8edf98b59a373fecu, 0x4724bd4189bd5eacu,
 9695|  24.8k|            0xb2977ee300c50fe7u, 0x58edec91ec2cb657u, 0xdf3d5e9bc0f653e1u, 0x2f2967b66737e3edu,
 9696|  24.8k|            0x8b865b215899f46cu, 0xbd79e0d20082ee74u, 0xae67f1e9aec07187u, 0xecd8590680a3aa11u,
 9697|  24.8k|            0xda01ee641a708de9u, 0xe80e6f4820cc9495u, 0x884134fe908658b2u, 0x3109058d147fdcddu,
 9698|  24.8k|            0xaa51823e34a7eedeu, 0xbd4b46f0599fd415u, 0xd4e5e2cdc1d1ea96u, 0x6c9e18ac7007c91au,
 9699|  24.8k|            0x850fadc09923329eu, 0x03e2cf6bc604ddb0u, 0xa6539930bf6bff45u, 0x84db8346b786151cu,
 9700|  24.8k|            0xcfe87f7cef46ff16u, 0xe612641865679a63u, 0x81f14fae158c5f6eu, 0x4fcb7e8f3f60c07eu,
 9701|  24.8k|            0xa26da3999aef7749u, 0xe3be5e330f38f09du, 0xcb090c8001ab551cu, 0x5cadf5bfd3072cc5u,
 9702|  24.8k|            0xfdcb4fa002162a63u, 0x73d9732fc7c8f7f6u, 0x9e9f11c4014dda7eu, 0x2867e7fddcdd9afau,
 9703|  24.8k|            0xc646d63501a1511du, 0xb281e1fd541501b8u, 0xf7d88bc24209a565u, 0x1f225a7ca91a4226u,
 9704|  24.8k|            0x9ae757596946075fu, 0x3375788de9b06958u, 0xc1a12d2fc3978937u, 0x0052d6b1641c83aeu,
 9705|  24.8k|            0xf209787bb47d6b84u, 0xc0678c5dbd23a49au, 0x9745eb4d50ce6332u, 0xf840b7ba963646e0u,
 9706|  24.8k|            0xbd176620a501fbffu, 0xb650e5a93bc3d898u, 0xec5d3fa8ce427affu, 0xa3e51f138ab4cebeu,
 9707|  24.8k|            0x93ba47c980e98cdfu, 0xc66f336c36b10137u, 0xb8a8d9bbe123f017u, 0xb80b0047445d4184u,
 9708|  24.8k|            0xe6d3102ad96cec1du, 0xa60dc059157491e5u, 0x9043ea1ac7e41392u, 0x87c89837ad68db2fu,
 9709|  24.8k|            0xb454e4a179dd1877u, 0x29babe4598c311fbu, 0xe16a1dc9d8545e94u, 0xf4296dd6fef3d67au,
 9710|  24.8k|            0x8ce2529e2734bb1du, 0x1899e4a65f58660cu, 0xb01ae745b101e9e4u, 0x5ec05dcff72e7f8fu,
 9711|  24.8k|            0xdc21a1171d42645du, 0x76707543f4fa1f73u, 0x899504ae72497ebau, 0x6a06494a791c53a8u,
 9712|  24.8k|            0xabfa45da0edbde69u, 0x0487db9d17636892u, 0xd6f8d7509292d603u, 0x45a9d2845d3c42b6u,
 9713|  24.8k|            0x865b86925b9bc5c2u, 0x0b8a2392ba45a9b2u, 0xa7f26836f282b732u, 0x8e6cac7768d7141eu,
 9714|  24.8k|            0xd1ef0244af2364ffu, 0x3207d795430cd926u, 0x8335616aed761f1fu, 0x7f44e6bd49e807b8u,
 9715|  24.8k|            0xa402b9c5a8d3a6e7u, 0x5f16206c9c6209a6u, 0xcd036837130890a1u, 0x36dba887c37a8c0fu,
 9716|  24.8k|            0x802221226be55a64u, 0xc2494954da2c9789u, 0xa02aa96b06deb0fdu, 0xf2db9baa10b7bd6cu,
 9717|  24.8k|            0xc83553c5c8965d3du, 0x6f92829494e5acc7u, 0xfa42a8b73abbf48cu, 0xcb772339ba1f17f9u,
 9718|  24.8k|            0x9c69a97284b578d7u, 0xff2a760414536efbu, 0xc38413cf25e2d70du, 0xfef5138519684abau,
 9719|  24.8k|            0xf46518c2ef5b8cd1u, 0x7eb258665fc25d69u, 0x98bf2f79d5993802u, 0xef2f773ffbd97a61u,
 9720|  24.8k|            0xbeeefb584aff8603u, 0xaafb550ffacfd8fau, 0xeeaaba2e5dbf6784u, 0x95ba2a53f983cf38u,
 9721|  24.8k|            0x952ab45cfa97a0b2u, 0xdd945a747bf26183u, 0xba756174393d88dfu, 0x94f971119aeef9e4u,
 9722|  24.8k|            0xe912b9d1478ceb17u, 0x7a37cd5601aab85du, 0x91abb422ccb812eeu, 0xac62e055c10ab33au,
 9723|  24.8k|            0xb616a12b7fe617aau, 0x577b986b314d6009u, 0xe39c49765fdf9d94u, 0xed5a7e85fda0b80bu,
 9724|  24.8k|            0x8e41ade9fbebc27du, 0x14588f13be847307u, 0xb1d219647ae6b31cu, 0x596eb2d8ae258fc8u,
 9725|  24.8k|            0xde469fbd99a05fe3u, 0x6fca5f8ed9aef3bbu, 0x8aec23d680043beeu, 0x25de7bb9480d5854u,
 9726|  24.8k|            0xada72ccc20054ae9u, 0xaf561aa79a10ae6au, 0xd910f7ff28069da4u, 0x1b2ba1518094da04u,
 9727|  24.8k|            0x87aa9aff79042286u, 0x90fb44d2f05d0842u, 0xa99541bf57452b28u, 0x353a1607ac744a53u,
 9728|  24.8k|            0xd3fa922f2d1675f2u, 0x42889b8997915ce8u, 0x847c9b5d7c2e09b7u, 0x69956135febada11u,
 9729|  24.8k|            0xa59bc234db398c25u, 0x43fab9837e699095u, 0xcf02b2c21207ef2eu, 0x94f967e45e03f4bbu,
 9730|  24.8k|            0x8161afb94b44f57du, 0x1d1be0eebac278f5u, 0xa1ba1ba79e1632dcu, 0x6462d92a69731732u,
 9731|  24.8k|            0xca28a291859bbf93u, 0x7d7b8f7503cfdcfeu, 0xfcb2cb35e702af78u, 0x5cda735244c3d43eu,
 9732|  24.8k|            0x9defbf01b061adabu, 0x3a0888136afa64a7u, 0xc56baec21c7a1916u, 0x088aaa1845b8fdd0u,
 9733|  24.8k|            0xf6c69a72a3989f5bu, 0x8aad549e57273d45u, 0x9a3c2087a63f6399u, 0x36ac54e2f678864bu,
 9734|  24.8k|            0xc0cb28a98fcf3c7fu, 0x84576a1bb416a7ddu, 0xf0fdf2d3f3c30b9fu, 0x656d44a2a11c51d5u,
 9735|  24.8k|            0x969eb7c47859e743u, 0x9f644ae5a4b1b325u, 0xbc4665b596706114u, 0x873d5d9f0dde1feeu,
 9736|  24.8k|            0xeb57ff22fc0c7959u, 0xa90cb506d155a7eau, 0x9316ff75dd87cbd8u, 0x09a7f12442d588f2u,
 9737|  24.8k|            0xb7dcbf5354e9beceu, 0x0c11ed6d538aeb2fu, 0xe5d3ef282a242e81u, 0x8f1668c8a86da5fau,
 9738|  24.8k|            0x8fa475791a569d10u, 0xf96e017d694487bcu, 0xb38d92d760ec4455u, 0x37c981dcc395a9acu,
 9739|  24.8k|            0xe070f78d3927556au, 0x85bbe253f47b1417u, 0x8c469ab843b89562u, 0x93956d7478ccec8eu,
 9740|  24.8k|            0xaf58416654a6babbu, 0x387ac8d1970027b2u, 0xdb2e51bfe9d0696au, 0x06997b05fcc0319eu,
 9741|  24.8k|            0x88fcf317f22241e2u, 0x441fece3bdf81f03u, 0xab3c2fddeeaad25au, 0xd527e81cad7626c3u,
 9742|  24.8k|            0xd60b3bd56a5586f1u, 0x8a71e223d8d3b074u, 0x85c7056562757456u, 0xf6872d5667844e49u,
 9743|  24.8k|            0xa738c6bebb12d16cu, 0xb428f8ac016561dbu, 0xd106f86e69d785c7u, 0xe13336d701beba52u,
 9744|  24.8k|            0x82a45b450226b39cu, 0xecc0024661173473u, 0xa34d721642b06084u, 0x27f002d7f95d0190u,
 9745|  24.8k|            0xcc20ce9bd35c78a5u, 0x31ec038df7b441f4u, 0xff290242c83396ceu, 0x7e67047175a15271u,
 9746|  24.8k|            0x9f79a169bd203e41u, 0x0f0062c6e984d386u, 0xc75809c42c684dd1u, 0x52c07b78a3e60868u,
 9747|  24.8k|            0xf92e0c3537826145u, 0xa7709a56ccdf8a82u, 0x9bbcc7a142b17ccbu, 0x88a66076400bb691u,
 9748|  24.8k|            0xc2abf989935ddbfeu, 0x6acff893d00ea435u, 0xf356f7ebf83552feu, 0x0583f6b8c4124d43u,
 9749|  24.8k|            0x98165af37b2153deu, 0xc3727a337a8b704au, 0xbe1bf1b059e9a8d6u, 0x744f18c0592e4c5cu,
 9750|  24.8k|            0xeda2ee1c7064130cu, 0x1162def06f79df73u, 0x9485d4d1c63e8be7u, 0x8addcb5645ac2ba8u,
 9751|  24.8k|            0xb9a74a0637ce2ee1u, 0x6d953e2bd7173692u, 0xe8111c87c5c1ba99u, 0xc8fa8db6ccdd0437u,
 9752|  24.8k|            0x910ab1d4db9914a0u, 0x1d9c9892400a22a2u, 0xb54d5e4a127f59c8u, 0x2503beb6d00cab4bu,
 9753|  24.8k|            0xe2a0b5dc971f303au, 0x2e44ae64840fd61du, 0x8da471a9de737e24u, 0x5ceaecfed289e5d2u,
 9754|  24.8k|            0xb10d8e1456105dadu, 0x7425a83e872c5f47u, 0xdd50f1996b947518u, 0xd12f124e28f77719u,
 9755|  24.8k|            0x8a5296ffe33cc92fu, 0x82bd6b70d99aaa6fu, 0xace73cbfdc0bfb7bu, 0x636cc64d1001550bu,
 9756|  24.8k|            0xd8210befd30efa5au, 0x3c47f7e05401aa4eu, 0x8714a775e3e95c78u, 0x65acfaec34810a71u,
 9757|  24.8k|            0xa8d9d1535ce3b396u, 0x7f1839a741a14d0du, 0xd31045a8341ca07cu, 0x1ede48111209a050u,
 9758|  24.8k|            0x83ea2b892091e44du, 0x934aed0aab460432u, 0xa4e4b66b68b65d60u, 0xf81da84d5617853fu,
 9759|  24.8k|            0xce1de40642e3f4b9u, 0x36251260ab9d668eu, 0x80d2ae83e9ce78f3u, 0xc1d72b7c6b426019u,
 9760|  24.8k|            0xa1075a24e4421730u, 0xb24cf65b8612f81fu, 0xc94930ae1d529cfcu, 0xdee033f26797b627u,
 9761|  24.8k|            0xfb9b7cd9a4a7443cu, 0x169840ef017da3b1u, 0x9d412e0806e88aa5u, 0x8e1f289560ee864eu,
 9762|  24.8k|            0xc491798a08a2ad4eu, 0xf1a6f2bab92a27e2u, 0xf5b5d7ec8acb58a2u, 0xae10af696774b1dbu,
 9763|  24.8k|            0x9991a6f3d6bf1765u, 0xacca6da1e0a8ef29u, 0xbff610b0cc6edd3fu, 0x17fd090a58d32af3u,
 9764|  24.8k|            0xeff394dcff8a948eu, 0xddfc4b4cef07f5b0u, 0x95f83d0a1fb69cd9u, 0x4abdaf101564f98eu,
 9765|  24.8k|            0xbb764c4ca7a4440fu, 0x9d6d1ad41abe37f1u, 0xea53df5fd18d5513u, 0x84c86189216dc5edu,
 9766|  24.8k|            0x92746b9be2f8552cu, 0x32fd3cf5b4e49bb4u, 0xb7118682dbb66a77u, 0x3fbc8c33221dc2a1u,
 9767|  24.8k|            0xe4d5e82392a40515u, 0x0fabaf3feaa5334au, 0x8f05b1163ba6832du, 0x29cb4d87f2a7400eu,
 9768|  24.8k|            0xb2c71d5bca9023f8u, 0x743e20e9ef511012u, 0xdf78e4b2bd342cf6u, 0x914da9246b255416u,
 9769|  24.8k|            0x8bab8eefb6409c1au, 0x1ad089b6c2f7548eu, 0xae9672aba3d0c320u, 0xa184ac2473b529b1u,
 9770|  24.8k|            0xda3c0f568cc4f3e8u, 0xc9e5d72d90a2741eu, 0x8865899617fb1871u, 0x7e2fa67c7a658892u,
 9771|  24.8k|            0xaa7eebfb9df9de8du, 0xddbb901b98feeab7u, 0xd51ea6fa85785631u, 0x552a74227f3ea565u,
 9772|  24.8k|            0x8533285c936b35deu, 0xd53a88958f87275fu, 0xa67ff273b8460356u, 0x8a892abaf368f137u,
 9773|  24.8k|            0xd01fef10a657842cu, 0x2d2b7569b0432d85u, 0x8213f56a67f6b29bu, 0x9c3b29620e29fc73u,
 9774|  24.8k|            0xa298f2c501f45f42u, 0x8349f3ba91b47b8fu, 0xcb3f2f7642717713u, 0x241c70a936219a73u,
 9775|  24.8k|            0xfe0efb53d30dd4d7u, 0xed238cd383aa0110u, 0x9ec95d1463e8a506u, 0xf4363804324a40aau,
 9776|  24.8k|            0xc67bb4597ce2ce48u, 0xb143c6053edcd0d5u, 0xf81aa16fdc1b81dau, 0xdd94b7868e94050au,
 9777|  24.8k|            0x9b10a4e5e9913128u, 0xca7cf2b4191c8326u, 0xc1d4ce1f63f57d72u, 0xfd1c2f611f63a3f0u,
 9778|  24.8k|            0xf24a01a73cf2dccfu, 0xbc633b39673c8cecu, 0x976e41088617ca01u, 0xd5be0503e085d813u,
 9779|  24.8k|            0xbd49d14aa79dbc82u, 0x4b2d8644d8a74e18u, 0xec9c459d51852ba2u, 0xddf8e7d60ed1219eu,
 9780|  24.8k|            0x93e1ab8252f33b45u, 0xcabb90e5c942b503u, 0xb8da1662e7b00a17u, 0x3d6a751f3b936243u,
 9781|  24.8k|            0xe7109bfba19c0c9du, 0x0cc512670a783ad4u, 0x906a617d450187e2u, 0x27fb2b80668b24c5u,
 9782|  24.8k|            0xb484f9dc9641e9dau, 0xb1f9f660802dedf6u, 0xe1a63853bbd26451u, 0x5e7873f8a0396973u,
 9783|  24.8k|            0x8d07e33455637eb2u, 0xdb0b487b6423e1e8u, 0xb049dc016abc5e5fu, 0x91ce1a9a3d2cda62u,
 9784|  24.8k|            0xdc5c5301c56b75f7u, 0x7641a140cc7810fbu, 0x89b9b3e11b6329bau, 0xa9e904c87fcb0a9du,
 9785|  24.8k|            0xac2820d9623bf429u, 0x546345fa9fbdcd44u, 0xd732290fbacaf133u, 0xa97c177947ad4095u,
 9786|  24.8k|            0x867f59a9d4bed6c0u, 0x49ed8eabcccc485du, 0xa81f301449ee8c70u, 0x5c68f256bfff5a74u,
 9787|  24.8k|            0xd226fc195c6a2f8cu, 0x73832eec6fff3111u, 0x83585d8fd9c25db7u, 0xc831fd53c5ff7eabu,
 9788|  24.8k|            0xa42e74f3d032f525u, 0xba3e7ca8b77f5e55u, 0xcd3a1230c43fb26fu, 0x28ce1bd2e55f35ebu,
 9789|  24.8k|            0x80444b5e7aa7cf85u, 0x7980d163cf5b81b3u, 0xa0555e361951c366u, 0xd7e105bcc332621fu,
 9790|  24.8k|            0xc86ab5c39fa63440u, 0x8dd9472bf3fefaa7u, 0xfa856334878fc150u, 0xb14f98f6f0feb951u,
 9791|  24.8k|            0x9c935e00d4b9d8d2u, 0x6ed1bf9a569f33d3u, 0xc3b8358109e84f07u, 0x0a862f80ec4700c8u,
 9792|  24.8k|            0xf4a642e14c6262c8u, 0xcd27bb612758c0fau, 0x98e7e9cccfbd7dbdu, 0x8038d51cb897789cu,
 9793|  24.8k|            0xbf21e44003acdd2cu, 0xe0470a63e6bd56c3u, 0xeeea5d5004981478u, 0x1858ccfce06cac74u,
 9794|  24.8k|            0x95527a5202df0ccbu, 0x0f37801e0c43ebc8u, 0xbaa718e68396cffdu, 0xd30560258f54e6bau,
 9795|  24.8k|            0xe950df20247c83fdu, 0x47c6b82ef32a2069u, 0x91d28b7416cdd27eu, 0x4cdc331d57fa5441u,
 9796|  24.8k|            0xb6472e511c81471du, 0xe0133fe4adf8e952u, 0xe3d8f9e563a198e5u, 0x58180fddd97723a6u,
 9797|  24.8k|            0x8e679c2f5e44ff8fu, 0x570f09eaa7ea7648u,
 9798|  24.8k|        }
 9799|  24.8k|    };
 9800|  24.8k|    return table;
 9801|  24.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij13umul192_hi128Emmm:
26437|  14.2k|{
26438|  14.2k|    const uint128_parts p = full_multiplication(x_hi, y);
26439|  14.2k|    uint128_parts r{};
26440|  14.2k|    r.low = p.low + full_multiplication(x_lo, y).high;
26441|  14.2k|    r.high = p.high + (r.low < p.low ? 1u : 0u);
  ------------------
  |  Branch (26441:24): [True: 180, False: 14.0k]
  ------------------
26442|  14.2k|    return r;
26443|  14.2k|}
_ZN8nlohmann16json_abi_v3_12_06detail4zmij16umul128_add_hi64Emmm:
26447|  15.8k|{
26448|  15.8k|    const uint128_parts p = full_multiplication(x, y);
26449|  15.8k|    return p.high + (p.low + c < p.low ? 1u : 0u);
  ------------------
  |  Branch (26449:22): [True: 6.93k, False: 8.92k]
  ------------------
26450|  15.8k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalE:
27689|  14.2k|{
27690|  14.2k|    const std::uint64_t sig = d.integral;
27691|  14.2k|    if (JSON_HEDLEY_UNLIKELY(sig < 100000000000000u || sig >= 10000000000000000u))
  ------------------
  |  | 1667|  27.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 1.35k, False: 12.8k]
  |  |  |  Branch (1667:94): [True: 1.35k, False: 12.8k]
  |  |  |  Branch (1667:94): [True: 0, False: 12.8k]
  |  |  ------------------
  ------------------
27692|  1.35k|    {
27693|       |        // (subnormals)
27694|  1.35k|        return d.has_digit ? write_decimal(first, (sig * 10) + d.digit, d.exponent) : write_decimal(first, sig, d.exponent + 1);
  ------------------
  |  Branch (27694:16): [True: 810, False: 546]
  ------------------
27695|  1.35k|    }
27696|  12.8k|    const bool sixteen = sig >= 1000000000000000u; // (else 15 digits)
27697|  12.8k|    const int last = d.has_digit ? d.digit : 0;
  ------------------
  |  Branch (27697:22): [True: 5.55k, False: 7.29k]
  ------------------
27698|  12.8k|    const std::uint64_t upper = sig / 100000000u;
27699|  12.8k|#if JSON_DTOA_SSE2
27700|       |    // NOLINTBEGIN(portability-simd-intrinsics)
27701|       |    // the two halves in the 64-bit lanes, each as abcd * 2^32 + efgh, then as
27702|       |    // bytes (as eight_digit_bytes(), one lane each)
27703|  12.8k|    const __m128i x = _mm_set_epi64x(static_cast<long long>(sig - (upper * 100000000u)), static_cast<long long>(upper)); // NOLINT(runtime/int)
27704|  12.8k|    const __m128i abcd = _mm_srli_epi64(_mm_mul_epu32(x, _mm_set1_epi64x(109951163)), 40); // 2^40 / 10000 + 1
27705|  12.8k|    const __m128i abcd_efgh = _mm_add_epi64(x, _mm_mul_epu32(abcd, _mm_set1_epi64x(4294957296))); // 2^32 - 10000
27706|       |    // 32-bit lanes in the order of the text: abcd, efgh of both halves
27707|  12.8k|    const __m128i fours = _mm_shuffle_epi32(abcd_efgh, _MM_SHUFFLE(2, 3, 0, 1));
27708|  12.8k|    const __m128i ab = _mm_srli_epi16(_mm_mulhi_epu16(fours, _mm_set1_epi32(5243)), 3);
27709|  12.8k|    const __m128i ab_cd = _mm_or_si128(_mm_slli_epi32(_mm_sub_epi16(fours, _mm_mullo_epi16(ab, _mm_set1_epi32(100))), 16), ab);
27710|       |    // 16-bit lanes ab (< 100) -> bytes a, b: 256 * ab - 2559 * (ab / 10)
27711|  12.8k|    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))));
27712|       |    // the last digit that is not 0 (sig is not 0)
27713|  12.8k|    const auto nonzero = static_cast<std::uint64_t>(_mm_movemask_epi8(_mm_cmpgt_epi8(bytes, _mm_setzero_si128())));
27714|  12.8k|    const int digits = 63 - count_leading_zeros(nonzero) + (sixteen ? 1 : 0); // without trailing zeros
  ------------------
  |  Branch (27714:61): [True: 9.95k, False: 2.89k]
  ------------------
27715|  12.8k|    const __m128i chars = _mm_add_epi8(bytes, _mm_set1_epi8('0'));
27716|       |    // the 16 characters from the first digit
27717|  12.8k|    const __m128i s = sixteen ? chars : _mm_or_si128(_mm_srli_si128(chars, 1), _mm_slli_si128(_mm_cvtsi32_si128('0' + last), 15));
  ------------------
  |  Branch (27717:23): [True: 9.95k, False: 2.89k]
  ------------------
27718|  12.8k|    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
  ------------------
  |  Branch (27718:40): [True: 9.95k, False: 2.89k]
  ------------------
27719|  12.8k|    const auto store_16 = [&s](char* p) noexcept
27720|  12.8k|    {
27721|  12.8k|        std::memcpy(p, &s, 16);
27722|  12.8k|    };
27723|  12.8k|    const char first_digit = static_cast<char>(_mm_cvtsi128_si32(s));
27724|       |    // NOLINTEND(portability-simd-intrinsics)
27725|       |#elif JSON_DTOA_NEON
27726|       |    // as with SSE2: the halves in 32-bit lanes, then abcd, efgh of both
27727|       |    const uint32x2_t halves = vcreate_u32(upper | ((sig - (upper * 100000000u)) << 32u));
27728|       |    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));
27729|       |    const uint32x2_t efgh = vmls_n_u32(halves, abcd, 10000u);
27730|       |    const uint32x4_t fours = vcombine_u32(vzip1_u32(abcd, efgh), vzip2_u32(abcd, efgh));
27731|       |    const uint32x4_t ab = vshrq_n_u32(vmulq_n_u32(fours, 5243u), 19);
27732|       |    const uint16x8_t ab_cd = vreinterpretq_u16_u32(vorrq_u32(ab, vshlq_n_u32(vmlsq_n_u32(fours, ab, 100u), 16)));
27733|       |    const uint16x8_t tens = vshrq_n_u16(vmulq_n_u16(ab_cd, 103u), 10);
27734|       |    const uint8x16_t bytes = vreinterpretq_u8_u16(vorrq_u16(tens, vshlq_n_u16(vmlsq_n_u16(ab_cd, tens, 10u), 8)));
27735|       |    // the last digit that is not 0 (sig is not 0): a nibble per byte
27736|       |    const std::uint64_t nonzero = vget_lane_u64(vreinterpret_u64_u8(vshrn_n_u16(vreinterpretq_u16_u8(vtstq_u8(bytes, bytes)), 4)), 0);
27737|       |    const int digits = ((63 - count_leading_zeros(nonzero)) / 4) + (sixteen ? 1 : 0); // without trailing zeros
27738|       |    const uint8x16_t chars = vaddq_u8(bytes, vdupq_n_u8('0'));
27739|       |    // the 16 characters from the first digit
27740|       |    const uint8x16_t s = sixteen ? chars : vextq_u8(chars, vdupq_n_u8(static_cast<std::uint8_t>('0' + last)), 1);
27741|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
27742|       |    const auto store_16 = [&s](char* p) noexcept
27743|       |    {
27744|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(p), s); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
27745|       |    };
27746|       |    const auto first_digit = static_cast<char>(vgetq_lane_u8(s, 0));
27747|       |#else
27748|       |    const std::uint64_t hi = eight_digit_bytes(upper);
27749|       |    const std::uint64_t lo = eight_digit_bytes(sig - (upper * 100000000u));
27750|       |    // trailing zero digits: zero bytes (sig is not 0)
27751|       |    const int zeros = lo != 0 ? count_trailing_zeros(lo) / 8 : 8 + (count_trailing_zeros(hi) / 8);
27752|       |    const int digits = 15 - zeros + (sixteen ? 1 : 0); // without trailing zeros
27753|       |    // the 16 characters from the first digit
27754|       |    const std::uint64_t s_hi = (sixteen ? hi : (hi << 8u) | (lo >> 56u)) + 0x3030303030303030u;
27755|       |    const std::uint64_t s_lo = (sixteen ? lo : (lo << 8u) | static_cast<std::uint64_t>(last)) + 0x3030303030303030u;
27756|       |    const char s16 = static_cast<char>(sixteen ? '0' + last : '0'); // the 17th
27757|       |    const auto store_16 = [s_hi, s_lo](char* p) noexcept
27758|       |    {
27759|       |        store_msb_first(p, s_hi);
27760|       |        store_msb_first(p + 8, s_lo);
27761|       |    };
27762|       |    const auto first_digit = static_cast<char>(s_hi >> 56u);
27763|       |#endif
27764|  12.8k|    const int len = d.has_digit ? 16 + (sixteen ? 1 : 0) : digits; // significant digits
  ------------------
  |  Branch (27764:21): [True: 5.55k, False: 7.29k]
  |  Branch (27764:41): [True: 4.04k, False: 1.51k]
  ------------------
27765|  12.8k|    const int n = 16 + (sixteen ? 1 : 0) + d.exponent;           // digits before the point
  ------------------
  |  Branch (27765:25): [True: 9.95k, False: 2.89k]
  ------------------
27766|       |
27767|  12.8k|    if (JSON_HEDLEY_LIKELY(n >= 1 && n <= 15))
  ------------------
  |  | 1666|  20.3k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.06k, False: 8.78k]
  |  |  |  Branch (1666:94): [True: 7.53k, False: 5.31k]
  |  |  |  Branch (1666:94): [True: 4.06k, False: 3.46k]
  |  |  ------------------
  ------------------
27768|  4.06k|    {
27769|       |        // "dig.its" and "digits[000].0": the digits after the point move by
27770|       |        // one byte ('0's follow the digits)
27771|  4.06k|#if JSON_DTOA_SSE2
27772|       |        // NOLINTBEGIN(portability-simd-intrinsics)
27773|       |        // (in the register: reading the digits back from memory right after
27774|       |        // storing them waits until the stores are done)
27775|  4.06k|        const __m128i at = _mm_set1_epi8(static_cast<char>(n));
27776|  4.06k|        const __m128i index = _mm_setr_epi8(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15);
27777|  4.06k|        const __m128i before = _mm_cmpgt_epi8(at, index);
27778|  4.06k|        const __m128i after = _mm_cmpgt_epi8(index, at);
27779|  4.06k|        const __m128i text = _mm_or_si128(_mm_or_si128(_mm_and_si128(s, before), _mm_and_si128(_mm_slli_si128(s, 1), after)),
27780|  4.06k|                                          _mm_andnot_si128(_mm_or_si128(before, after), _mm_set1_epi8('.')));
27781|  4.06k|        std::memcpy(first, &text, 16);
27782|  4.06k|        first[16] = static_cast<char>(_mm_extract_epi16(s, 7) >> 8);
27783|  4.06k|        first[17] = s16;
27784|       |        // NOLINTEND(portability-simd-intrinsics)
27785|       |#elif JSON_DTOA_NEON
27786|       |        const uint8x16_t index = vcombine_u8(vcreate_u8(0x0706050403020100u), vcreate_u8(0x0F0E0D0C0B0A0908u));
27787|       |        const uint8x16_t at = vdupq_n_u8(static_cast<std::uint8_t>(n));
27788|       |        const uint8x16_t after_point = vbslq_u8(vcgtq_u8(index, at), vextq_u8(vdupq_n_u8(0), s, 15), vdupq_n_u8('.'));
27789|       |        vst1q_u8(reinterpret_cast<std::uint8_t*>(first), vbslq_u8(vcltq_u8(index, at), s, after_point)); // NOLINT(cppcoreguidelines-pro-type-reinterpret-cast)
27790|       |        first[16] = static_cast<char>(vgetq_lane_u8(s, 15));
27791|       |        first[17] = s16;
27792|       |#else
27793|       |        store_16(first);
27794|       |        first[16] = s16;
27795|       |        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
27796|       |        std::memcpy(after_point, first + n, 16);
27797|       |        std::memcpy(first + n + 1, after_point, 16);
27798|       |        first[n] = '.';
27799|       |#endif
27800|  4.06k|        return first + (n >= len ? n + 2 : len + 1);
  ------------------
  |  Branch (27800:25): [True: 3.21k, False: 846]
  ------------------
27801|  4.06k|    }
27802|  8.78k|    if (n <= 0 && n > -4)
  ------------------
  |  Branch (27802:9): [True: 5.31k, False: 3.46k]
  |  Branch (27802:19): [True: 570, False: 4.74k]
  ------------------
27803|    570|    {
27804|       |        // "0.[000]digits"
27805|    570|        std::memset(first, '0', 8);
27806|    570|        first[1] = '.';
27807|    570|        store_16(first + 2 - n);
27808|    570|        first[18 - n] = s16;
27809|    570|        return first + 2 - n + len;
27810|    570|    }
27811|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
27812|  8.21k|    store_16(first + 1);
27813|  8.21k|    first[17] = s16;
27814|  8.21k|    first[0] = first_digit;
27815|  8.21k|    first[1] = '.';
27816|  8.21k|    char* const end = first + (len == 1 ? 1 : len + 1);
  ------------------
  |  Branch (27816:32): [True: 6, False: 8.20k]
  ------------------
27817|  8.21k|    const int e = n - 1;
27818|  8.21k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (27818:21): [True: 4.74k, False: 3.46k]
  ------------------
27819|  8.21k|    const bool three = ea >= 100;
27820|  8.21k|    end[0] = 'e';
27821|  8.21k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (27821:14): [True: 4.74k, False: 3.46k]
  ------------------
27822|  8.21k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (27822:39): [True: 1.40k, False: 6.81k]
  ------------------
27823|  8.21k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (27823:39): [True: 1.40k, False: 6.81k]
  ------------------
27824|  8.21k|    end[4] = static_cast<char>('0' + (ea % 10));
27825|  8.21k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (27825:19): [True: 1.40k, False: 6.81k]
  ------------------
27826|  8.78k|}
_ZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl13write_decimalEPcmi:
27601|  1.35k|{
27602|  1.35k|    JSON_ASSERT(digits != 0 && digits < 100000000000000000u);
  ------------------
  |  | 2591|  1.35k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (27602:5): [True: 1.35k, False: 0]
  |  Branch (27602:5): [True: 1.35k, False: 0]
  |  Branch (27602:5): [True: 1.35k, False: 0]
  ------------------
27603|  1.35k|    const std::uint64_t upper = digits / 100000000u;
27604|  1.35k|    const std::uint64_t b0 = upper / 100000000u; // (one digit: it is its own byte)
27605|  1.35k|    const std::uint64_t b1 = eight_digit_bytes(upper % 100000000u);
27606|  1.35k|    const std::uint64_t b2 = eight_digit_bytes(digits % 100000000u);
27607|       |    // leading and trailing zero digits: zero bytes, counted without division
27608|  1.35k|    int leading = 16;
27609|  1.35k|    int zeros = 16;
27610|  1.35k|    if (b0 != 0)
  ------------------
  |  Branch (27610:9): [True: 0, False: 1.35k]
  ------------------
27611|      0|    {
27612|      0|        leading = count_leading_zeros(b0) / 8;
27613|      0|    }
27614|  1.35k|    else if (b1 != 0)
  ------------------
  |  Branch (27614:14): [True: 852, False: 504]
  ------------------
27615|    852|    {
27616|    852|        leading = 8 + (count_leading_zeros(b1) / 8);
27617|    852|    }
27618|    504|    else
27619|    504|    {
27620|    504|        leading += count_leading_zeros(b2) / 8;
27621|    504|    }
27622|  1.35k|    if (b2 != 0)
  ------------------
  |  Branch (27622:9): [True: 1.35k, False: 0]
  ------------------
27623|  1.35k|    {
27624|  1.35k|        zeros = count_trailing_zeros(b2) / 8;
27625|  1.35k|    }
27626|      0|    else if (b1 != 0)
  ------------------
  |  Branch (27626:14): [True: 0, False: 0]
  ------------------
27627|      0|    {
27628|      0|        zeros = 8 + (count_trailing_zeros(b1) / 8);
27629|      0|    }
27630|       |    // (else: 16, b0 is the one digit that is not 0)
27631|       |    // the digits as text at text + leading, then '0's, so that fixed-size
27632|       |    // moves need not check how many digits there are
27633|  1.35k|    std::array<char, 64> text; // NOLINT(cppcoreguidelines-pro-type-member-init,hicpp-member-init): written before read
27634|  1.35k|    store_msb_first(text.data(), b0 + 0x3030303030303030u);
27635|  1.35k|    store_msb_first(text.data() + 8, b1 + 0x3030303030303030u);
27636|  1.35k|    store_msb_first(text.data() + 16, b2 + 0x3030303030303030u);
27637|  1.35k|    std::memset(text.data() + 24, '0', 40);
27638|  1.35k|    const int k = 24 - leading - zeros; // significant digits
27639|  1.35k|    const int n = k + exp + zeros;      // position of the decimal point after the first digit
27640|  1.35k|    const char* const s0 = text.data() + leading;
27641|       |
27642|  1.35k|    if (-4 < n && n <= 15)
  ------------------
  |  Branch (27642:9): [True: 0, False: 1.35k]
  |  Branch (27642:19): [True: 0, False: 0]
  ------------------
27643|      0|    {
27644|       |        // "0.[000]digits" (n <= 0) is the digits after 1 - n leading '0's
27645|       |        // with the point after the first; "digits[000].0" (n >= k) and
27646|       |        // "dig.its" put the point after n characters
27647|      0|        const int pad = n <= 0 ? 1 - n : 0;
  ------------------
  |  Branch (27647:25): [True: 0, False: 0]
  ------------------
27648|      0|        const char* const s = s0 - pad;
27649|      0|        const int len = k + pad;
27650|      0|        const int point = n + pad;
27651|      0|        std::memcpy(first, s, 16);
27652|      0|        std::memcpy(first + point + 1, s + point, 24);
27653|      0|        first[point] = '.';
27654|      0|        return first + (point >= len ? point + 2 : len + 1);
  ------------------
  |  Branch (27654:25): [True: 0, False: 0]
  ------------------
27655|      0|    }
27656|       |
27657|       |    // d.igitse+XX, with at least two exponent digits (as append_exponent())
27658|  1.35k|    std::memcpy(first, s0, 16);
27659|  1.35k|    std::memcpy(first + 2, s0 + 1, 16);
27660|  1.35k|    first[1] = '.';
27661|  1.35k|    char* const end = first + (k == 1 ? 1 : k + 1);
  ------------------
  |  Branch (27661:32): [True: 90, False: 1.26k]
  ------------------
27662|  1.35k|    const int e = n - 1;
27663|  1.35k|    const auto ea = e < 0 ? 0u - static_cast<unsigned>(e) : static_cast<unsigned>(e); // (unsigned: no signed overflow to assume)
  ------------------
  |  Branch (27663:21): [True: 1.35k, False: 0]
  ------------------
27664|  1.35k|    const bool three = ea >= 100;
27665|  1.35k|    end[0] = 'e';
27666|  1.35k|    end[1] = e < 0 ? '-' : '+';
  ------------------
  |  Branch (27666:14): [True: 1.35k, False: 0]
  ------------------
27667|  1.35k|    end[2] = static_cast<char>('0' + (three ? ea / 100 : (ea / 10) % 10));
  ------------------
  |  Branch (27667:39): [True: 1.35k, False: 0]
  ------------------
27668|  1.35k|    end[3] = static_cast<char>('0' + (three ? (ea / 10) % 10 : ea % 10));
  ------------------
  |  Branch (27668:39): [True: 1.35k, False: 0]
  ------------------
27669|  1.35k|    end[4] = static_cast<char>('0' + (ea % 10));
27670|  1.35k|    return end + (three ? 5 : 4);
  ------------------
  |  Branch (27670:19): [True: 1.35k, False: 0]
  ------------------
27671|  1.35k|}
_ZZN8nlohmann16json_abi_v3_12_06detail9dtoa_impl14write_shortestEPcNS1_4zmij16shortest_decimalEENKUlS3_E_clES3_:
27720|  8.78k|    {
27721|  8.78k|        std::memcpy(p, &s, 16);
27722|  8.78k|    };
_ZN8nlohmann16json_abi_v3_12_06detail10serializerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEE5flushEv:
29158|  29.8k|    {
29159|  29.8k|        o->write_characters(write_buffer.data(), write_buffer_pos);
29160|  29.8k|        write_buffer_pos = 0;
29161|  29.8k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvED2Ev:
32820|  2.03M|    {
32821|  2.03M|        assert_invariant(false);
32822|  2.03M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16assert_invariantEb:
31150|  5.10M|    {
31151|  5.10M|        JSON_ASSERT(m_data.m_type != value_t::object || m_data.m_value.object != nullptr);
  ------------------
  |  | 2591|  5.10M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31151:9): [True: 4.88M, False: 218k]
  |  Branch (31151:9): [True: 218k, False: 0]
  |  Branch (31151:9): [True: 5.10M, False: 0]
  ------------------
31152|  5.10M|        JSON_ASSERT(m_data.m_type != value_t::array || m_data.m_value.array != nullptr);
  ------------------
  |  | 2591|  5.10M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31152:9): [True: 4.40M, False: 702k]
  |  Branch (31152:9): [True: 702k, False: 0]
  |  Branch (31152:9): [True: 5.10M, False: 0]
  ------------------
31153|  5.10M|        JSON_ASSERT(m_data.m_type != value_t::string || m_data.m_value.string != nullptr);
  ------------------
  |  | 2591|  5.10M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31153:9): [True: 4.88M, False: 217k]
  |  Branch (31153:9): [True: 217k, False: 0]
  |  Branch (31153:9): [True: 5.10M, False: 0]
  ------------------
31154|  5.10M|        JSON_ASSERT(m_data.m_type != value_t::binary || m_data.m_value.binary != nullptr);
  ------------------
  |  | 2591|  5.10M|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (31154:9): [True: 4.84M, False: 265k]
  |  Branch (31154:9): [True: 265k, False: 0]
  |  Branch (31154:9): [True: 5.10M, False: 0]
  ------------------
31155|       |
31156|       |#if JSON_DIAGNOSTICS
31157|       |        JSON_TRY
31158|       |        {
31159|       |            JSON_ASSERT(!check_parents || !is_structured() || std::all_of(begin(), end(), [this](const basic_json & j)
31160|       |            {
31161|       |                return j.m_parent == this;
31162|       |            }));
31163|       |        }
31164|       |        JSON_CATCH(...) {} // LCOV_EXCL_LINE
31165|       |#endif
31166|  5.10M|        static_cast<void>(check_parents);
31167|  5.10M|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataD2Ev:
36341|  2.03M|        {
36342|  2.03M|            m_value.destroy(m_type);
36343|  2.03M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value7destroyENS0_6detail7value_tE:
31094|  2.70M|        {
31095|  2.70M|            if (JSON_HEDLEY_UNLIKELY(detail::owns_memory(t)))
  ------------------
  |  | 1667|  2.70M|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 183k, False: 2.51M]
  |  |  ------------------
  ------------------
31096|   183k|            {
31097|   183k|                destroy_owned(t);
31098|   183k|            }
31099|  2.70M|        }
_ZN8nlohmann16json_abi_v3_12_06detail11owns_memoryENS1_7value_tE:
 3350|  2.70M|{
 3351|  2.70M|    switch (t)
 3352|  2.70M|    {
 3353|  10.9k|        case value_t::object:
  ------------------
  |  Branch (3353:9): [True: 10.9k, False: 2.69M]
  ------------------
 3354|  41.1k|        case value_t::array:
  ------------------
  |  Branch (3354:9): [True: 30.2k, False: 2.67M]
  ------------------
 3355|  99.9k|        case value_t::string:
  ------------------
  |  Branch (3355:9): [True: 58.7k, False: 2.64M]
  ------------------
 3356|   183k|        case value_t::binary:
  ------------------
  |  Branch (3356:9): [True: 83.2k, False: 2.61M]
  ------------------
 3357|   183k|            return true;
 3358|       |
 3359|  1.98M|        case value_t::null:
  ------------------
  |  Branch (3359:9): [True: 1.98M, False: 712k]
  ------------------
 3360|  2.00M|        case value_t::boolean:
  ------------------
  |  Branch (3360:9): [True: 16.6k, False: 2.68M]
  ------------------
 3361|  2.12M|        case value_t::number_integer:
  ------------------
  |  Branch (3361:9): [True: 116k, False: 2.58M]
  ------------------
 3362|  2.49M|        case value_t::number_unsigned:
  ------------------
  |  Branch (3362:9): [True: 374k, False: 2.32M]
  ------------------
 3363|  2.51M|        case value_t::number_float:
  ------------------
  |  Branch (3363:9): [True: 18.8k, False: 2.68M]
  ------------------
 3364|  2.51M|        case value_t::discarded:
  ------------------
  |  Branch (3364:9): [True: 2.86k, False: 2.69M]
  ------------------
 3365|  2.51M|        default:
  ------------------
  |  Branch (3365:9): [True: 0, False: 2.70M]
  ------------------
 3366|  2.51M|            return false;
 3367|  2.70M|    }
 3368|  2.70M|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value13destroy_ownedENS0_6detail7value_tE:
31102|   183k|        {
31103|   183k|            switch (t)
31104|   183k|            {
31105|  58.7k|                case value_t::string:
  ------------------
  |  Branch (31105:17): [True: 58.7k, False: 124k]
  ------------------
31106|  58.7k|                    destroy_string();
31107|  58.7k|                    break;
31108|       |
31109|  83.2k|                case value_t::binary:
  ------------------
  |  Branch (31109:17): [True: 83.2k, False: 99.9k]
  ------------------
31110|  83.2k|                    destroy_binary();
31111|  83.2k|                    break;
31112|       |
31113|  10.9k|                case value_t::object:
  ------------------
  |  Branch (31113:17): [True: 10.9k, False: 172k]
  ------------------
31114|  41.1k|                case value_t::array:
  ------------------
  |  Branch (31114:17): [True: 30.2k, False: 152k]
  ------------------
31115|  41.1k|                    destroy_container(t);
31116|  41.1k|                    break;
31117|       |
31118|      0|                case value_t::null:
  ------------------
  |  Branch (31118:17): [True: 0, False: 183k]
  ------------------
31119|      0|                case value_t::boolean:
  ------------------
  |  Branch (31119:17): [True: 0, False: 183k]
  ------------------
31120|      0|                case value_t::number_integer:
  ------------------
  |  Branch (31120:17): [True: 0, False: 183k]
  ------------------
31121|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (31121:17): [True: 0, False: 183k]
  ------------------
31122|      0|                case value_t::number_float:
  ------------------
  |  Branch (31122:17): [True: 0, False: 183k]
  ------------------
31123|      0|                case value_t::discarded:
  ------------------
  |  Branch (31123:17): [True: 0, False: 183k]
  ------------------
31124|      0|                default:
  ------------------
  |  Branch (31124:17): [True: 0, False: 183k]
  ------------------
31125|      0|                    break;
31126|   183k|            }
31127|   183k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14destroy_stringEv:
30920|  58.7k|        {
30921|  58.7k|            if (string == nullptr)
  ------------------
  |  Branch (30921:17): [True: 0, False: 58.7k]
  ------------------
30922|      0|            {
30923|       |                // not initialized (e.g., due to exception in the ctor)
30924|      0|                return;
30925|      0|            }
30926|  58.7k|            AllocatorType<string_t> alloc;
30927|  58.7k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, string);
30928|  58.7k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, string, 1);
30929|  58.7k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14destroy_binaryEv:
30932|  83.2k|        {
30933|  83.2k|            if (binary == nullptr)
  ------------------
  |  Branch (30933:17): [True: 0, False: 83.2k]
  ------------------
30934|      0|            {
30935|       |                // not initialized (e.g., due to exception in the ctor)
30936|      0|                return;
30937|      0|            }
30938|  83.2k|            AllocatorType<binary_t> alloc;
30939|  83.2k|            std::allocator_traits<decltype(alloc)>::destroy(alloc, binary);
30940|  83.2k|            std::allocator_traits<decltype(alloc)>::deallocate(alloc, binary, 1);
30941|  83.2k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value17destroy_containerENS0_6detail7value_tE:
30945|  41.1k|        {
30946|  41.1k|            if (
30947|  41.1k|                (t == value_t::object && object == nullptr) ||
  ------------------
  |  Branch (30947:18): [True: 10.9k, False: 30.2k]
  |  Branch (30947:42): [True: 0, False: 10.9k]
  ------------------
30948|  41.1k|                (t == value_t::array && array == nullptr)
  ------------------
  |  Branch (30948:18): [True: 30.2k, False: 10.9k]
  |  Branch (30948:41): [True: 0, False: 30.2k]
  ------------------
30949|  41.1k|            )
30950|      0|            {
30951|       |                // not initialized (e.g., due to exception in the ctor)
30952|      0|                return;
30953|      0|            }
30954|       |
30955|       |            // This json_value is not itself a basic_json, so the top-level
30956|       |            // container is first moved into a local stand-in ("cur"); a
30957|       |            // default-constructed basic_json has a null pointer in its
30958|       |            // m_value (see data::m_value's initializer), so swapping it
30959|       |            // with *this leaves this union's own pointer null, and it is
30960|       |            // never looked at or freed a second time.
30961|  41.1k|            basic_json cur;
30962|  41.1k|            cur.m_data.m_type = t;
30963|  41.1k|            using std::swap;
30964|  41.1k|            swap(cur.m_data.m_value, *this);
30965|       |
30966|  41.1k|            destroy_bounded(cur, 0);
30967|  41.1k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2EDn:
32392|   661k|    {
32393|   661k|        assert_invariant();
32394|   661k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2Ev:
36334|  1.33M|        data() noexcept = default;
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15destroy_boundedERSE_m:
30974|   484k|        {
30975|   484k|            if (JSON_HEDLEY_UNLIKELY(depth >= detail::recursion_depth_limit()))
  ------------------
  |  | 1667|   484k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 6.56k, False: 478k]
  |  |  ------------------
  ------------------
30976|  6.56k|            {
30977|  6.56k|                destroy_walk(v);
30978|  6.56k|                return;
30979|  6.56k|            }
30980|       |
30981|   478k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30981:17): [True: 399k, False: 78.2k]
  ------------------
30982|   399k|            {
30983|   399k|                for (auto& child : *v.m_data.m_value.array)
  ------------------
  |  Branch (30983:34): [True: 967k, False: 399k]
  ------------------
30984|   967k|                {
30985|   967k|                    if (child.m_data.m_type == value_t::array || child.m_data.m_type == value_t::object)
  ------------------
  |  Branch (30985:25): [True: 369k, False: 598k]
  |  Branch (30985:66): [True: 24.7k, False: 573k]
  ------------------
30986|   394k|                    {
30987|   394k|                        destroy_bounded(child, depth + 1);
30988|   394k|                    }
30989|   967k|                }
30990|   399k|            }
30991|  78.2k|            else
30992|  78.2k|            {
30993|  78.2k|                for (auto& child : *v.m_data.m_value.object)
  ------------------
  |  Branch (30993:34): [True: 96.4k, False: 78.2k]
  ------------------
30994|  96.4k|                {
30995|  96.4k|                    if (child.second.m_data.m_type == value_t::array || child.second.m_data.m_type == value_t::object)
  ------------------
  |  Branch (30995:25): [True: 4.38k, False: 92.0k]
  |  Branch (30995:73): [True: 44.9k, False: 47.0k]
  ------------------
30996|  49.3k|                    {
30997|  49.3k|                        destroy_bounded(child.second, depth + 1);
30998|  49.3k|                    }
30999|  96.4k|                }
31000|  78.2k|            }
31001|       |
31002|       |            // only leaves and already destroyed (null) children remain
31003|   478k|            free_container(v);
31004|   478k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value12destroy_walkERSE_:
31031|  6.56k|        {
31032|  6.56k|            basic_json cur;
31033|  6.56k|            take(cur, top);
31034|       |
31035|  6.56k|            basic_json prev; // value_t::null: no parent
31036|       |
31037|       |            // true right after cur was entered: its children have not been
31038|       |            // looked at yet. If none of them has children of its own, cur is
31039|       |            // freed in one go instead of child by child; this is tried once
31040|       |            // per container, so the walk stays linear.
31041|  6.56k|            bool fresh = true;
31042|       |
31043|   455k|            while (true)
  ------------------
  |  Branch (31043:20): [True: 455k, Folded]
  ------------------
31044|   455k|            {
31045|   455k|                const bool fresh_now = fresh;
31046|   455k|                fresh = false;
31047|   455k|                if (has_no_children(cur) || (fresh_now && all_children_leaves(cur)))
  ------------------
  |  Branch (31047:21): [True: 216k, False: 239k]
  |  Branch (31047:46): [True: 217k, False: 22.3k]
  |  Branch (31047:59): [True: 4.56k, False: 212k]
  ------------------
31048|   220k|                {
31049|   220k|                    if (prev.m_data.m_type == value_t::null)
  ------------------
  |  Branch (31049:25): [True: 6.56k, False: 214k]
  ------------------
31050|  6.56k|                    {
31051|  6.56k|                        free_container(cur);
31052|  6.56k|                        return; // back at the top with nothing left to do
31053|  6.56k|                    }
31054|       |
31055|       |                    // ascend: detach the grandparent link from prev's
31056|       |                    // walk_child() slot, drop that (now null) slot, free cur
31057|       |                    // (it is empty), then move up one level
31058|   214k|                    basic_json gp;
31059|   214k|                    take(gp, walk_child(prev));
31060|   214k|                    pop_walk_child(prev);
31061|       |
31062|   214k|                    free_container(cur);
31063|       |
31064|   214k|                    take(cur, prev);
31065|   214k|                    take(prev, gp);
31066|   214k|                    continue;
31067|   220k|                }
31068|       |
31069|   235k|                basic_json& cur_child_ref = walk_child(cur);
31070|       |
31071|   235k|                if (has_no_children(cur_child_ref))
  ------------------
  |  Branch (31071:21): [True: 20.8k, False: 214k]
  ------------------
31072|  20.8k|                {
31073|       |                    // scalar, or already-empty array/object
31074|  20.8k|                    pop_walk_child(cur);
31075|  20.8k|                    continue;
31076|  20.8k|                }
31077|       |
31078|       |                // descend into the non-empty child, reversing the
31079|       |                // link: its slot takes over prev, and the child becomes
31080|       |                // the new cur
31081|   214k|                basic_json tmp;
31082|   214k|                take(tmp, cur_child_ref);
31083|   214k|                take(cur_child_ref, prev);
31084|   214k|                take(prev, cur);
31085|   214k|                take(cur, tmp);
31086|   214k|                fresh = true;
31087|   214k|            }
31088|  6.56k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value4takeERSE_SG_:
30789|  1.50M|        {
30790|  1.50M|            dst.m_data.m_type = src.m_data.m_type;
30791|  1.50M|            dst.m_data.m_value = src.m_data.m_value;
30792|  1.50M|            src.m_data.m_type = value_t::null;
30793|  1.50M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value15has_no_childrenERKSE_:
30797|  2.70M|        {
30798|  2.70M|            switch (v.m_data.m_type)
30799|  2.70M|            {
30800|  1.45M|                case value_t::array:
  ------------------
  |  Branch (30800:17): [True: 1.45M, False: 1.25M]
  ------------------
30801|  1.45M|                    return v.m_data.m_value.array->empty();
30802|   143k|                case value_t::object:
  ------------------
  |  Branch (30802:17): [True: 143k, False: 2.55M]
  ------------------
30803|   143k|                    return v.m_data.m_value.object->empty();
30804|   455k|                case value_t::null:
  ------------------
  |  Branch (30804:17): [True: 455k, False: 2.24M]
  ------------------
30805|   500k|                case value_t::string:
  ------------------
  |  Branch (30805:17): [True: 44.9k, False: 2.65M]
  ------------------
30806|   517k|                case value_t::boolean:
  ------------------
  |  Branch (30806:17): [True: 16.8k, False: 2.68M]
  ------------------
30807|   630k|                case value_t::number_integer:
  ------------------
  |  Branch (30807:17): [True: 113k, False: 2.59M]
  ------------------
30808|  1.00M|                case value_t::number_unsigned:
  ------------------
  |  Branch (30808:17): [True: 377k, False: 2.32M]
  ------------------
30809|  1.02M|                case value_t::number_float:
  ------------------
  |  Branch (30809:17): [True: 14.6k, False: 2.68M]
  ------------------
30810|  1.10M|                case value_t::binary:
  ------------------
  |  Branch (30810:17): [True: 84.3k, False: 2.61M]
  ------------------
30811|  1.10M|                case value_t::discarded:
  ------------------
  |  Branch (30811:17): [True: 0, False: 2.70M]
  ------------------
30812|  1.10M|                default:
  ------------------
  |  Branch (30812:17): [True: 0, False: 2.70M]
  ------------------
30813|  1.10M|                    return true;
30814|  2.70M|            }
30815|  2.70M|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_:
30822|   665k|        {
30823|       |            // array_t only needs forward iterators (see custom_array_type)
30824|   665k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30824:17): [True: 592k, False: 73.6k]
  ------------------
30825|   592k|            {
30826|   592k|                const auto& a = *v.m_data.m_value.array;
30827|   592k|                return std::all_of(a.begin(), a.end(), [](const basic_json & el)
30828|   592k|                {
30829|   592k|                    return has_no_children(el);
30830|   592k|                });
30831|   592k|            }
30832|  73.6k|            const auto& o = *v.m_data.m_value.object;
30833|  73.6k|            return std::all_of(o.begin(), o.end(), [](const typename object_t::value_type & el)
30834|  73.6k|            {
30835|  73.6k|                return has_no_children(el.second);
30836|  73.6k|            });
30837|   665k|        }
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_ENKUlSH_E_clESH_:
30828|  1.19M|                {
30829|  1.19M|                    return has_no_children(el);
30830|  1.19M|                });
_ZZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value19all_children_leavesERKSE_ENKUlRKNS2_4pairIKSA_SE_EEE_clESM_:
30834|   115k|            {
30835|   115k|                return has_no_children(el.second);
30836|   115k|            });
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10walk_childERSE_:
30868|   449k|        {
30869|   449k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30869:17): [True: 423k, False: 25.6k]
  ------------------
30870|   423k|            {
30871|   423k|                return v.m_data.m_value.array->back();
30872|   423k|            }
30873|  25.6k|            JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  25.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30873:13): [True: 25.6k, False: 0]
  ------------------
30874|  25.6k|            return walk_child_it(*v.m_data.m_value.object)->second;
30875|  25.6k|        }
_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_:
30860|  42.6k|        {
30861|  42.6k|            JSON_ASSERT(!o.empty());
  ------------------
  |  | 2591|  42.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30861:13): [True: 42.6k, False: 0]
  ------------------
30862|  42.6k|            return walk_child_it(o, typename std::iterator_traits<typename ObjectType_::iterator>::iterator_category());
30863|  42.6k|        }
_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:
30848|  42.6k|        {
30849|  42.6k|            return std::prev(o.end());
30850|  42.6k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14pop_walk_childERSE_:
30882|   235k|        {
30883|   235k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30883:17): [True: 218k, False: 17.0k]
  ------------------
30884|   218k|            {
30885|   218k|                v.m_data.m_value.array->pop_back();
30886|   218k|            }
30887|  17.0k|            else
30888|  17.0k|            {
30889|  17.0k|                JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  17.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30889:17): [True: 17.0k, False: 0]
  ------------------
30890|  17.0k|                v.m_data.m_value.object->erase(walk_child_it(*v.m_data.m_value.object));
30891|  17.0k|            }
30892|   235k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value14free_containerERSE_:
30900|   698k|        {
30901|   698k|            JSON_ASSERT(has_no_children(v) || all_children_leaves(v));
  ------------------
  |  | 2591|   698k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30901:13): [True: 250k, False: 448k]
  |  Branch (30901:13): [True: 448k, False: 0]
  |  Branch (30901:13): [True: 698k, False: 0]
  ------------------
30902|   698k|            if (v.m_data.m_type == value_t::array)
  ------------------
  |  Branch (30902:17): [True: 608k, False: 90.0k]
  ------------------
30903|   608k|            {
30904|   608k|                AllocatorType<array_t> alloc;
30905|   608k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_data.m_value.array);
30906|   608k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_data.m_value.array, 1);
30907|   608k|            }
30908|  90.0k|            else
30909|  90.0k|            {
30910|  90.0k|                JSON_ASSERT(v.m_data.m_type == value_t::object);
  ------------------
  |  | 2591|  90.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30910:17): [True: 90.0k, False: 0]
  ------------------
30911|  90.0k|                AllocatorType<object_t> alloc;
30912|  90.0k|                std::allocator_traits<decltype(alloc)>::destroy(alloc, v.m_data.m_value.object);
30913|  90.0k|                std::allocator_traits<decltype(alloc)>::deallocate(alloc, v.m_data.m_value.object, 1);
30914|  90.0k|            }
30915|   698k|            v.m_data.m_type = value_t::null; // avoid a double free if v is later destructed
30916|   698k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12from_msgpackIRKSD_EESE_OT_bbNS0_6detail15error_handler_tE:
36638|  19.6k|    {
36639|  19.6k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::msgpack, strict, allow_exceptions, error_handler);
36640|  19.6k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE16from_binary_implINS0_6detail22iterator_input_adapterIPKhSJ_EEEESE_T_NSG_14input_format_tEbbNSG_15error_handler_tENSG_18cbor_tag_handler_tE:
36385|  27.1k|    {
36386|  27.1k|        basic_json result;
36387|  27.1k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  27.1k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  27.1k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 2.86k, False: 24.3k]
  ------------------
36390|  2.86k|        {
36391|  2.86k|            result = value_t::discarded;
36392|  2.86k|        }
36393|  27.1k|        return result;
36394|  27.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEEC2ERSG_bPNS1_5lexerISG_SK_EE:
13873|  27.1k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  27.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_19json_sax_dom_parserISG_SK_EEEC2EOSK_NS1_14input_format_tENS1_15error_handler_tE:
14944|  27.1k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  27.1k|    {
14946|  27.1k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  27.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE3eofEv:
 4299|   334k|    {
 4300|   334k|        return static_cast<int_type>(std::char_traits<char>::eof());
 4301|   334k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17little_endiannessEi:
14882|  59.0k|{
14883|  59.0k|    return *reinterpret_cast<char*>(&num) == 1;
14884|  59.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_19json_sax_dom_parserISG_SK_EEE9sax_parseEPSM_bNS1_18cbor_tag_handler_tE:
14969|  27.1k|    {
14970|  27.1k|        sax = sax_;
14971|  27.1k|        container_stack.clear();
14972|  27.1k|        bon8_pushback_size = 0;
14973|  27.1k|        bool result = false;
14974|       |
14975|  27.1k|        switch (input_format)
14976|  27.1k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 27.1k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 27.1k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|  27.1k|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 27.1k, False: 0]
  ------------------
14986|  27.1k|                result = parse_msgpack_internal();
14987|  27.1k|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 27.1k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 27.1k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 27.1k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 27.1k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 27.1k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  27.1k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  21.9k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 19.3k, False: 2.62k]
  |  Branch (15004:23): [True: 19.3k, False: 0]
  ------------------
15005|  19.3k|        {
15006|  19.3k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 19.3k]
  |  Branch (15006:59): [True: 0, False: 19.3k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  19.3k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 19.3k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  19.3k|            else
15016|  19.3k|            {
15017|  19.3k|                get();
15018|  19.3k|            }
15019|       |
15020|  19.3k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  19.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 708, False: 18.6k]
  |  |  ------------------
  ------------------
15021|    708|            {
15022|    708|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|    708|            }
15024|  19.3k|        }
15025|       |
15026|  21.2k|        return result;
15027|  21.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_19json_sax_dom_parserISG_SK_EEE6get_toIiEEbRT_PKc:
18667|  1.58k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.58k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.58k|        chars_read += new_chars_read;
18672|  1.58k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.58k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 30, False: 1.55k]
  |  |  ------------------
  ------------------
18673|     30|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     30|            ++chars_read;
18676|     30|            static_cast<void>(report_eof(context));
18677|     30|            return false;
18678|     30|        }
18679|  1.55k|        return true;
18680|  1.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIiEEmPT_m:
 8644|  1.58k|    {
 8645|  1.58k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIiEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  1.58k|    {
 8703|  1.58k|        const std::size_t wanted = count * sizeof(T);
 8704|  1.58k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  1.58k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  1.58k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  1.58k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.57k, False: 9]
  |  |  ------------------
  ------------------
 8707|  1.57k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  1.57k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  1.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 1.57k, False: 0]
  ------------------
 8712|  1.57k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  1.57k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 1.57k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  1.57k|            std::memcpy(dest, &*current, copied);
 8716|  1.57k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  1.57k|        }
 8718|  1.58k|        return copied;
 8719|  1.58k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E15remaining_countEv:
 8663|   157k|    {
 8664|       |#if JSON_HAS_RANGES && defined(__cpp_lib_concepts) && defined(JSON_HAS_CPP_20)
 8665|       |        // std::ranges::distance also supports sized sentinels of a different
 8666|       |        // type (e.g. std::counted_iterator + std::default_sentinel_t)
 8667|       |        return static_cast<std::size_t>(std::ranges::distance(current, end));
 8668|       |#else
 8669|   157k|        return static_cast<std::size_t>(std::distance(current, end));
 8670|   157k|#endif
 8671|   157k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10report_eofEPKc:
19058|  7.49k|    {
19059|  7.49k|        return sax->parse_error(chars_read, "<end of file>",
19060|  7.49k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  7.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  8.58k|    {
14005|  8.58k|        errored = true;
14006|  8.58k|        static_cast<void>(ex);
14007|  8.58k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 5.72k, False: 2.86k]
  ------------------
14008|  5.72k|        {
14009|  5.72k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  5.72k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  5.72k|        }
14011|  2.86k|        return false;
14012|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_NS1_12exception_idEmRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5585|  17.1k|    {
 5586|  17.1k|        return create(static_cast<int>(id_), byte_, what_arg, context);
 5587|  17.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11parse_error6createIDnTnNSt3__19enable_ifIXsr21is_basic_json_contextIT_EE5valueEiE4typeELi0EEES2_imRKNS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEES6_:
 5570|  17.1k|    {
 5571|  17.1k|        const std::string w = concat(exception::name("parse_error", id_), "parse error",
 5572|  17.1k|                                     (byte_ != 0 ? (concat(" at byte ", std::to_string(byte_))) : ""),
  ------------------
  |  Branch (5572:39): [True: 17.1k, False: 0]
  ------------------
 5573|  17.1k|                                     ": ", exception::diagnostics(context), what_arg);
 5574|  17.1k|        return {id_, byte_, w.c_str()};
 5575|  17.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJS9_RA12_KcS9_RA3_SA_S9_RKS9_EEET_DpOT0_:
 5318|  17.1k|{
 5319|  17.1k|    OutStringType str;
 5320|  17.1k|    str.reserve(concat_length(args...));
 5321|  17.1k|    concat_into(str, std::forward<Args>(args)...);
 5322|  17.1k|    return str;
 5323|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA12_cS9_A3_cS9_S9_EEEmRKT_DpRKT0_:
 5228|  17.1k|{
 5229|  17.1k|    return str.size() + concat_length(rest...);
 5230|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_S9_EEEmPKcDpRKT_:
 5222|  17.1k|{
 5223|  17.1k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_S9_EEEmRKT_DpRKT0_:
 5228|  17.1k|{
 5229|  17.1k|    return str.size() + concat_length(rest...);
 5230|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEES9_EEEmPKcDpRKT_:
 5222|  17.1k|{
 5223|  17.1k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  17.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_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.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_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.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_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJS9_RKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRA10_KcS9_EEET_DpOT0_:
 5318|  17.1k|{
 5319|  17.1k|    OutStringType str;
 5320|  17.1k|    str.reserve(concat_length(args...));
 5321|  17.1k|    concat_into(str, std::forward<Args>(args)...);
 5322|  17.1k|    return str;
 5323|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA10_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11parse_errorC2EimPKc:
 5602|  17.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_19json_sax_dom_parserISG_SK_EEE17exception_messageERKSC_SP_:
19163|  8.58k|    {
19164|  8.58k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  8.58k|        switch (input_format)
19167|  8.58k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 8.58k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|  8.58k|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 8.58k, False: 0]
  ------------------
19173|  8.58k|                error_msg += "MessagePack";
19174|  8.58k|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 8.58k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 8.58k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 8.58k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 8.58k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 8.58k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 8.58k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  8.58k|        }
19196|       |
19197|  8.58k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  8.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRS9_cRKS9_RA3_KcSC_EEET_DpOT0_:
 5318|  17.1k|{
 5319|  17.1k|    OutStringType str;
 5320|  17.1k|    str.reserve(concat_length(args...));
 5321|  17.1k|    concat_into(str, std::forward<Args>(args)...);
 5322|  17.1k|    return str;
 5323|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJcS9_A3_cS9_EEEmRKT_DpRKT0_:
 5228|  17.1k|{
 5229|  17.1k|    return str.size() + concat_length(rest...);
 5230|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJNSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEA3_cS9_EEEmcDpRKT_:
 5216|  17.1k|{
 5217|  17.1k|    return 1 + concat_length(rest...);
 5218|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJA3_cS9_EEEmRKT_DpRKT0_:
 5228|  17.1k|{
 5229|  17.1k|    return str.size() + concat_length(rest...);
 5230|  17.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_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.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_:
 5290|  17.1k|{
 5291|  17.1k|    out += std::forward<Arg>(arg);
 5292|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5293|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRA3_KcSB_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA3_KcJRKS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  17.1k|{
 5282|  17.1k|    out.append(std::forward<Arg>(arg));
 5283|  17.1k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  17.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_19json_sax_dom_parserISG_SK_EEE9byte_swapIiEEvRT_:
18698|  1.55k|    {
18699|  1.55k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.55k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.66k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.11k, False: 1.55k]
  ------------------
18715|  3.11k|            {
18716|  3.11k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.11k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.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_19json_sax_dom_parserISG_SK_EEE15enter_containerEbmm:
15082|   388k|    {
15083|   388k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   776k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 388k]
  |  |  |  Branch (1667:94): [True: 48.2k, False: 340k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|   388k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   388k|        return true;
15090|   388k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12start_objectEm:
13930|  48.2k|    {
13931|  48.2k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  48.2k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  48.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|   388k|    {
14031|   388k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 16.0k, False: 372k]
  ------------------
14032|  16.0k|        {
14033|  16.0k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  16.0k|            return &root;
14040|  16.0k|        }
14041|       |
14042|   372k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|   372k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 340k, False: 32.2k]
  |  Branch (14042:9): [True: 32.2k, False: 0]
  |  Branch (14042:9): [True: 372k, False: 0]
  ------------------
14043|       |
14044|   372k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 340k, False: 32.2k]
  ------------------
14045|   340k|        {
14046|   340k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|   340k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|   340k|        }
14054|       |
14055|  32.2k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  32.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 32.2k, False: 0]
  ------------------
14056|  32.2k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  32.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 32.2k, False: 0]
  ------------------
14057|  32.2k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  32.2k|        return object_element;
14064|  32.2k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8is_arrayEv:
32946|  3.39M|    {
32947|  3.39M|        return m_data.m_type == value_t::array;
32948|  3.39M|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE9is_objectEv:
32938|   544k|    {
32939|   544k|        return m_data.m_type == value_t::object;
32940|   544k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11set_parentsEv:
31170|  2.10M|    {
31171|       |#if JSON_DIAGNOSTICS
31172|       |        switch (m_data.m_type)
31173|       |        {
31174|       |            case value_t::array:
31175|       |            {
31176|       |                for (auto& element : *m_data.m_value.array)
31177|       |                {
31178|       |                    element.m_parent = this;
31179|       |                }
31180|       |                break;
31181|       |            }
31182|       |
31183|       |            case value_t::object:
31184|       |            {
31185|       |                for (auto& element : *m_data.m_value.object)
31186|       |                {
31187|       |                    element.second.m_parent = this;
31188|       |                }
31189|       |                break;
31190|       |            }
31191|       |
31192|       |            case value_t::null:
31193|       |            case value_t::string:
31194|       |            case value_t::boolean:
31195|       |            case value_t::number_integer:
31196|       |            case value_t::number_unsigned:
31197|       |            case value_t::number_float:
31198|       |            case value_t::binary:
31199|       |            case value_t::discarded:
31200|       |            default:
31201|       |                break;
31202|       |        }
31203|       |#endif
31204|  2.10M|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_22iterator_input_adapterIPKhSK_EEEESH_EEbRT_mPKcPT0_:
13724|   388k|{
13725|   388k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   776k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 388k]
  |  |  |  Branch (1667:94): [True: 388k, False: 0]
  |  |  |  Branch (1667:94): [True: 0, False: 388k]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|   388k|    return true;
13730|   388k|}
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE8max_sizeEv:
34667|   698k|    {
34668|   698k|        switch (m_data.m_type)
34669|   698k|        {
34670|   608k|            case value_t::array:
  ------------------
  |  Branch (34670:13): [True: 608k, False: 90.0k]
  ------------------
34671|   608k|            {
34672|       |                // delegate call to array_t::max_size()
34673|   608k|                return m_data.m_value.array->max_size();
34674|      0|            }
34675|       |
34676|  90.0k|            case value_t::object:
  ------------------
  |  Branch (34676:13): [True: 90.0k, False: 608k]
  ------------------
34677|  90.0k|            {
34678|       |                // delegate call to object_t::max_size()
34679|  90.0k|                return m_data.m_value.object->max_size();
34680|      0|            }
34681|       |
34682|      0|            case value_t::null:
  ------------------
  |  Branch (34682:13): [True: 0, False: 698k]
  ------------------
34683|      0|            case value_t::string:
  ------------------
  |  Branch (34683:13): [True: 0, False: 698k]
  ------------------
34684|      0|            case value_t::boolean:
  ------------------
  |  Branch (34684:13): [True: 0, False: 698k]
  ------------------
34685|      0|            case value_t::number_integer:
  ------------------
  |  Branch (34685:13): [True: 0, False: 698k]
  ------------------
34686|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (34686:13): [True: 0, False: 698k]
  ------------------
34687|      0|            case value_t::number_float:
  ------------------
  |  Branch (34687:13): [True: 0, False: 698k]
  ------------------
34688|      0|            case value_t::binary:
  ------------------
  |  Branch (34688:13): [True: 0, False: 698k]
  ------------------
34689|      0|            case value_t::discarded:
  ------------------
  |  Branch (34689:13): [True: 0, False: 698k]
  ------------------
34690|      0|            default:
  ------------------
  |  Branch (34690:13): [True: 0, False: 698k]
  ------------------
34691|      0|            {
34692|       |                // all other types have max_size() == size()
34693|      0|                return size();
34694|      0|            }
34695|   698k|        }
34696|   698k|    }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4sizeEv:
34627|  4.67k|    {
34628|  4.67k|        switch (m_data.m_type)
34629|  4.67k|        {
34630|      0|            case value_t::null:
  ------------------
  |  Branch (34630:13): [True: 0, False: 4.67k]
  ------------------
34631|      0|            {
34632|       |                // null values are empty
34633|      0|                return 0;
34634|      0|            }
34635|       |
34636|  4.12k|            case value_t::array:
  ------------------
  |  Branch (34636:13): [True: 4.12k, False: 550]
  ------------------
34637|  4.12k|            {
34638|       |                // delegate call to array_t::size()
34639|  4.12k|                return m_data.m_value.array->size();
34640|      0|            }
34641|       |
34642|    550|            case value_t::object:
  ------------------
  |  Branch (34642:13): [True: 550, False: 4.12k]
  ------------------
34643|    550|            {
34644|       |                // delegate call to object_t::size()
34645|    550|                return m_data.m_value.object->size();
34646|      0|            }
34647|       |
34648|      0|            case value_t::string:
  ------------------
  |  Branch (34648:13): [True: 0, False: 4.67k]
  ------------------
34649|      0|            case value_t::boolean:
  ------------------
  |  Branch (34649:13): [True: 0, False: 4.67k]
  ------------------
34650|      0|            case value_t::number_integer:
  ------------------
  |  Branch (34650:13): [True: 0, False: 4.67k]
  ------------------
34651|      0|            case value_t::number_unsigned:
  ------------------
  |  Branch (34651:13): [True: 0, False: 4.67k]
  ------------------
34652|      0|            case value_t::number_float:
  ------------------
  |  Branch (34652:13): [True: 0, False: 4.67k]
  ------------------
34653|      0|            case value_t::binary:
  ------------------
  |  Branch (34653:13): [True: 0, False: 4.67k]
  ------------------
34654|      0|            case value_t::discarded:
  ------------------
  |  Branch (34654:13): [True: 0, False: 4.67k]
  ------------------
34655|      0|            default:
  ------------------
  |  Branch (34655:13): [True: 0, False: 4.67k]
  ------------------
34656|      0|            {
34657|       |                // all other types have size 1
34658|      0|                return 1;
34659|      0|            }
34660|  4.67k|        }
34661|  4.67k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE11start_arrayEm:
13966|   340k|    {
13967|   340k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|   340k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|   340k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 340k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|   340k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 340k, False: 0]
  ------------------
13980|   340k|        {
13981|   340k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|   340k|        }
13983|       |
13984|   340k|        return true;
13985|   340k|    }
_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:
13695|   608k|{
13696|   608k|    constexpr std::size_t reserve_cap = 16384;
13697|   608k|    arr.reserve((std::min)(len, reserve_cap));
13698|   608k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15container_frameC2Embm:
15051|   388k|            : remaining(remaining_), type_marker(type_marker_), is_object(is_object_) {}
_ZN8nlohmann16json_abi_v3_12_06detail12unknown_sizeEv:
13677|  1.30M|{
13678|  1.30M|    return (std::numeric_limits<std::size_t>::max)();
13679|  1.30M|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15leave_containerEv:
15114|   330k|    {
15115|   330k|        const bool is_object = container_stack.back().is_object;
15116|   330k|        container_stack.pop_back();
15117|   330k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 32.8k, False: 297k]
  ------------------
15118|   330k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE10end_objectEv:
13952|  32.8k|    {
13953|  32.8k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  32.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 32.8k, False: 0]
  ------------------
13954|  32.8k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  32.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 32.8k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  32.8k|        ref_stack.back()->set_parents();
13961|  32.8k|        ref_stack.pop_back();
13962|  32.8k|        return true;
13963|  32.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE9end_arrayEv:
13988|   297k|    {
13989|   297k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|   297k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 297k, False: 0]
  ------------------
13990|   297k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|   297k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 297k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|   297k|        ref_stack.back()->set_parents();
13997|   297k|        ref_stack.pop_back();
13998|   297k|        return true;
13999|   297k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE12unexpect_eofEPKc:
19041|   113k|    {
19042|   113k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|   113k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 6.81k, False: 106k]
  |  |  ------------------
  ------------------
19043|  6.81k|        {
19044|  6.81k|            return report_eof(context);
19045|  6.81k|        }
19046|   106k|        return true;
19047|   113k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE17check_string_utf8ERSC_PKc:
18941|   105k|    {
18942|   105k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 105k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|   105k|        {
18944|   105k|            return true;
18945|   105k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE3keyERSC_:
13942|  73.9k|    {
13943|  73.9k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  73.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 73.9k, False: 0]
  ------------------
13944|  73.9k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  73.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 73.9k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  73.9k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  73.9k|        return true;
13949|  73.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_19json_sax_dom_parserISG_SK_EEE6get_toIdEEbRT_PKc:
18667|  3.17k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  3.17k|        auto new_chars_read = ia.get_elements(&dest);
18671|  3.17k|        chars_read += new_chars_read;
18672|  3.17k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  3.17k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 57, False: 3.11k]
  |  |  ------------------
  ------------------
18673|     57|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     57|            ++chars_read;
18676|     57|            static_cast<void>(report_eof(context));
18677|     57|            return false;
18678|     57|        }
18679|  3.11k|        return true;
18680|  3.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIdEEmPT_m:
 8644|  3.17k|    {
 8645|  3.17k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  3.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIdEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  3.17k|    {
 8703|  3.17k|        const std::size_t wanted = count * sizeof(T);
 8704|  3.17k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  3.17k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  3.17k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  3.17k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.16k, False: 12]
  |  |  ------------------
  ------------------
 8707|  3.16k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  3.16k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  3.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 3.16k, False: 0]
  ------------------
 8712|  3.16k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  3.16k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 3.16k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  3.16k|            std::memcpy(dest, &*current, copied);
 8716|  3.16k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  3.16k|        }
 8718|  3.17k|        return copied;
 8719|  3.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIdEEvRT_:
18698|  3.11k|    {
18699|  3.11k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  3.11k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  15.5k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 12.4k, False: 3.11k]
  ------------------
18715|  12.4k|            {
18716|  12.4k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  12.4k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  3.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_19json_sax_dom_parserISG_SK_EEE10emit_floatIdEEbT_:
18825|  3.11k|    {
18826|  3.11k|        const auto result = static_cast<number_float_t>(number);
18827|  3.11k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  6.22k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 3.11k]
  |  |  |  Branch (1667:94): [True: 3.11k, False: 6]
  |  |  |  Branch (1667:94): [True: 0, False: 3.11k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  3.11k|        return sax->number_float(result, "");
18832|  3.11k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE16get_token_stringEv:
19152|  2.17k|    {
19153|  2.17k|        return hex_byte(static_cast<std::uint8_t>(current));
19154|  2.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12number_floatEdRKSC_:
13908|  10.7k|    {
13909|  10.7k|        handle_value(val);
13910|  10.7k|        return true;
13911|  10.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRdEEPSG_OT_:
14030|  10.7k|    {
14031|  10.7k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2.52k, False: 8.21k]
  ------------------
14032|  2.52k|        {
14033|  2.52k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  2.52k|            return &root;
14040|  2.52k|        }
14041|       |
14042|  8.21k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.21k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 7.77k, False: 447]
  |  Branch (14042:9): [True: 447, False: 0]
  |  Branch (14042:9): [True: 8.21k, False: 0]
  ------------------
14043|       |
14044|  8.21k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 7.77k, False: 447]
  ------------------
14045|  7.77k|        {
14046|  7.77k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  7.77k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  7.77k|        }
14054|       |
14055|    447|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    447|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 447, False: 0]
  ------------------
14056|    447|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    447|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 447, False: 0]
  ------------------
14057|    447|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    447|        return object_element;
14064|    447|    }
_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_:
32410|  18.8k|    {
32411|  18.8k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  18.8k|        set_parents();
32413|  18.8k|        assert_invariant();
32414|  18.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_:
 7868|  18.8k|    {
 7869|  18.8k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  18.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_:
 7812|  18.8k|    {
 7813|  18.8k|        return to_json(j, std::forward<T>(val));
 7814|  18.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_:
 7505|  18.8k|{
 7506|  18.8k|    external_constructor<value_t::number_float>::construct(j, static_cast<typename BasicJsonType::number_float_t>(val));
 7507|  18.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:
 7295|  18.8k|    {
 7296|  18.8k|        j.replace_value(value_t::number_float, val);
 7297|  18.8k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE13replace_valueENS0_6detail7value_tERKNSE_10json_valueE:
31210|   668k|    {
31211|   668k|        m_data.m_value.destroy(m_data.m_type);
31212|   668k|        m_data.m_value = v;
31213|   668k|        m_data.m_type = t;
31214|   668k|        set_parents();
31215|   668k|        assert_invariant();
31216|   668k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Ed:
30661|  18.8k|        json_value(number_float_t v) noexcept : number_float(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIcEEmPT_m:
 8644|  47.8k|    {
 8645|  47.8k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  47.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIcEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  47.8k|    {
 8703|  47.8k|        const std::size_t wanted = count * sizeof(T);
 8704|  47.8k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  47.8k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  47.8k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  47.8k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 47.0k, False: 849]
  |  |  ------------------
  ------------------
 8707|  47.0k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  47.0k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  47.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 47.0k, False: 0]
  ------------------
 8712|  47.0k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  47.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 47.0k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  47.0k|            std::memcpy(dest, &*current, copied);
 8716|  47.0k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  47.0k|        }
 8718|  47.8k|        return copied;
 8719|  47.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE6stringERSC_:
13914|  31.1k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  31.1k|        handle_value(std::move(val));
13918|  31.1k|        return true;
13919|  31.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueISC_EEPSG_OT_:
14030|  31.1k|    {
14031|  31.1k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2.23k, False: 28.9k]
  ------------------
14032|  2.23k|        {
14033|  2.23k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  2.23k|            return &root;
14040|  2.23k|        }
14041|       |
14042|  28.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  28.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 20.2k, False: 8.70k]
  |  Branch (14042:9): [True: 8.70k, False: 0]
  |  Branch (14042:9): [True: 28.9k, False: 0]
  ------------------
14043|       |
14044|  28.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 20.2k, False: 8.70k]
  ------------------
14045|  20.2k|        {
14046|  20.2k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  20.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  20.2k|        }
14054|       |
14055|  8.70k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.70k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 8.70k, False: 0]
  ------------------
14056|  8.70k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  8.70k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 8.70k, False: 0]
  ------------------
14057|  8.70k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  8.70k|        return object_element;
14064|  8.70k|    }
_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_:
32410|  58.7k|    {
32411|  58.7k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  58.7k|        set_parents();
32413|  58.7k|        assert_invariant();
32414|  58.7k|    }
_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_:
 7868|  58.7k|    {
 7869|  58.7k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  58.7k|    }
_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_:
 7812|  58.7k|    {
 7813|  58.7k|        return to_json(j, std::forward<T>(val));
 7814|  58.7k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_ONSH_8string_tE:
 7498|  58.7k|{
 7499|  58.7k|    external_constructor<value_t::string>::construct(j, std::move(s));
 7500|  58.7k|}
_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:
 7257|  58.7k|    {
 7258|  58.7k|        const typename BasicJsonType::json_value value(std::move(s));
 7259|  58.7k|        j.replace_value(value_t::string, value);
 7260|  58.7k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2EOSA_:
30752|  58.7k|        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_:
30589|  58.7k|    {
30590|  58.7k|        AllocatorType<T> alloc;
30591|  58.7k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  58.7k|        auto deleter = [&](T * obj)
30594|  58.7k|        {
30595|  58.7k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  58.7k|        };
30597|  58.7k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  58.7k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  58.7k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  58.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 58.7k, False: 0]
  ------------------
30600|  58.7k|        return obj.release();
30601|  58.7k|    }
_ZN8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEEC2Ev:
 7906|  85.0k|        : container_type()
 7907|  85.0k|    {}
_ZN8nlohmann16json_abi_v3_12_027byte_container_with_subtypeINSt3__16vectorIhNS2_9allocatorIhEEEEE11set_subtypeEm:
 7947|  24.9k|    {
 7948|  24.9k|        m_subtype = subtype_;
 7949|  24.9k|        m_has_subtype = true;
 7950|  24.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_19json_sax_dom_parserISG_SK_EEE10get_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  9.88k|    {
18973|  9.88k|        return get_bytes(len, "binary", result);
18974|  9.88k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIiNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  9.88k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  9.88k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  19.6k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 9.88k, False: 9.81k]
  ------------------
19003|  9.88k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  9.88k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 9.88k, False: 0]
  ------------------
19007|  9.88k|                                       ? static_cast<std::size_t>(len)
19008|  9.88k|                                       : chunk_size;
19009|  9.88k|            const std::size_t old_size = result.size();
19010|  9.88k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  9.88k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  9.88k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 9.88k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  9.88k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  9.88k|            chars_read += bytes_read;
19018|  9.88k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  9.88k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 69, False: 9.81k]
  |  |  ------------------
  ------------------
19019|     69|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     69|                result.resize(old_size + bytes_read);
19024|     69|                ++chars_read;
19025|     69|                current = char_traits<char_type>::eof();
19026|     69|                return unexpect_eof(context);
19027|     69|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  9.81k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  9.81k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 9.81k, False: 0]
  ------------------
19030|  9.81k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  9.81k|        }
19032|  9.81k|        return true;
19033|  9.88k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIhEEmPT_m:
 8644|  53.9k|    {
 8645|  53.9k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  53.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIhEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  53.9k|    {
 8703|  53.9k|        const std::size_t wanted = count * sizeof(T);
 8704|  53.9k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  53.9k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  53.9k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  53.9k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 53.4k, False: 489]
  |  |  ------------------
  ------------------
 8707|  53.4k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  53.4k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  53.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 53.4k, False: 0]
  ------------------
 8712|  53.4k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  53.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 53.4k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  53.4k|            std::memcpy(dest, &*current, copied);
 8716|  53.4k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  53.4k|        }
 8718|  53.9k|        return copied;
 8719|  53.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  46.4k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  46.4k|        handle_value(std::move(val));
13926|  46.4k|        return true;
13927|  46.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  46.4k|    {
14031|  46.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 465, False: 45.9k]
  ------------------
14032|    465|        {
14033|    465|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    465|            return &root;
14040|    465|        }
14041|       |
14042|  45.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  45.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 42.1k, False: 3.80k]
  |  Branch (14042:9): [True: 3.80k, False: 0]
  |  Branch (14042:9): [True: 45.9k, False: 0]
  ------------------
14043|       |
14044|  45.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 42.1k, False: 3.80k]
  ------------------
14045|  42.1k|        {
14046|  42.1k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  42.1k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  42.1k|        }
14054|       |
14055|  3.80k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  3.80k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 3.80k, False: 0]
  ------------------
14056|  3.80k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  3.80k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 3.80k, False: 0]
  ------------------
14057|  3.80k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  3.80k|        return object_element;
14064|  3.80k|    }
_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_:
32410|  83.2k|    {
32411|  83.2k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  83.2k|        set_parents();
32413|  83.2k|        assert_invariant();
32414|  83.2k|    }
_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_:
 7868|  83.2k|    {
 7869|  83.2k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  83.2k|    }
_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_:
 7812|  83.2k|    {
 7813|  83.2k|        return to_json(j, std::forward<T>(val));
 7814|  83.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail7to_jsonINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEvRT_RKNSH_8binary_tE:
 7637|  83.2k|{
 7638|  83.2k|    external_constructor<value_t::binary>::construct(j, bin);
 7639|  83.2k|}
_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:
 7277|  83.2k|    {
 7278|  83.2k|        const typename BasicJsonType::json_value value(b);
 7279|  83.2k|        j.replace_value(value_t::binary, value);
 7280|  83.2k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ERKNS0_27byte_container_with_subtypeISD_EE:
30773|  83.2k|        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_:
30589|  83.2k|    {
30590|  83.2k|        AllocatorType<T> alloc;
30591|  83.2k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  83.2k|        auto deleter = [&](T * obj)
30594|  83.2k|        {
30595|  83.2k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  83.2k|        };
30597|  83.2k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  83.2k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  83.2k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  83.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 83.2k, False: 0]
  ------------------
30600|  83.2k|        return obj.release();
30601|  83.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_19json_sax_dom_parserISG_SK_EEE10get_numberIhLb0EEEbRT_:
18739|  38.6k|    {
18740|       |        // read in the original format
18741|       |
18742|  38.6k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  38.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 38.5k]
  |  |  ------------------
  ------------------
18743|     23|        {
18744|     23|            return false;
18745|     23|        }
18746|  38.5k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 38.5k, False: 46]
  |  Branch (18746:34): [Folded, False: 38.5k]
  |  Branch (18746:57): [True: 0, False: 38.5k]
  ------------------
18747|  38.5k|        {
18748|  38.5k|            byte_swap(result);
18749|  38.5k|        }
18750|  38.5k|        return true;
18751|  38.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_19json_sax_dom_parserISG_SK_EEE6get_toIhEEbRT_PKc:
18667|  38.6k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  38.6k|        auto new_chars_read = ia.get_elements(&dest);
18671|  38.6k|        chars_read += new_chars_read;
18672|  38.6k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  38.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 69, False: 38.5k]
  |  |  ------------------
  ------------------
18673|     69|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     69|            ++chars_read;
18676|     69|            static_cast<void>(report_eof(context));
18677|     69|            return false;
18678|     69|        }
18679|  38.5k|        return true;
18680|  38.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_19json_sax_dom_parserISG_SK_EEE9byte_swapIhEEvRT_:
18698|  38.5k|    {
18699|  38.5k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  38.5k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  38.5k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 38.5k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  38.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE7booleanEb:
13890|  9.06k|    {
13891|  9.06k|        handle_value(val);
13892|  9.06k|        return true;
13893|  9.06k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRbEEPSG_OT_:
14030|  9.06k|    {
14031|  9.06k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 14, False: 9.05k]
  ------------------
14032|     14|        {
14033|     14|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|     14|            return &root;
14040|     14|        }
14041|       |
14042|  9.05k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.05k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 8.42k, False: 626]
  |  Branch (14042:9): [True: 626, False: 0]
  |  Branch (14042:9): [True: 9.05k, False: 0]
  ------------------
14043|       |
14044|  9.05k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 8.42k, False: 626]
  ------------------
14045|  8.42k|        {
14046|  8.42k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  8.42k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  8.42k|        }
14054|       |
14055|    626|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    626|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 626, False: 0]
  ------------------
14056|    626|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    626|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 626, False: 0]
  ------------------
14057|    626|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    626|        return object_element;
14064|    626|    }
_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_:
32410|  16.6k|    {
32411|  16.6k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|  16.6k|        set_parents();
32413|  16.6k|        assert_invariant();
32414|  16.6k|    }
_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_:
 7868|  16.6k|    {
 7869|  16.6k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|  16.6k|    }
_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_:
 7812|  16.6k|    {
 7813|  16.6k|        return to_json(j, std::forward<T>(val));
 7814|  16.6k|    }
_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_:
 7472|  16.6k|{
 7473|  16.6k|    external_constructor<value_t::boolean>::construct(j, b);
 7474|  16.6k|}
_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:
 7240|  16.6k|    {
 7241|  16.6k|        j.replace_value(value_t::boolean, b);
 7242|  16.6k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Eb:
30655|  16.6k|        json_value(boolean_t v) noexcept : boolean(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE4nullEv:
13884|  6.84k|    {
13885|  6.84k|        handle_value(nullptr);
13886|  6.84k|        return true;
13887|  6.84k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIDnEEPSG_OT_:
14030|  6.84k|    {
14031|  6.84k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 7, False: 6.83k]
  ------------------
14032|      7|        {
14033|      7|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      7|            return &root;
14040|      7|        }
14041|       |
14042|  6.83k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  6.83k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 4.14k, False: 2.68k]
  |  Branch (14042:9): [True: 2.68k, False: 0]
  |  Branch (14042:9): [True: 6.83k, False: 0]
  ------------------
14043|       |
14044|  6.83k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 4.14k, False: 2.68k]
  ------------------
14045|  4.14k|        {
14046|  4.14k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  4.14k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  4.14k|        }
14054|       |
14055|  2.68k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.68k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.68k, False: 0]
  ------------------
14056|  2.68k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.68k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.68k, False: 0]
  ------------------
14057|  2.68k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.68k|        return object_element;
14064|  2.68k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE11emit_signedIiEEbT_:
18771|  1.55k|    {
18772|  1.55k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  1.55k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.55k, False: 0]
  |  |  ------------------
  ------------------
18773|  1.55k|        {
18774|  1.55k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  1.55k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIliEEbT0_:
 5101|  2.83k|{
 5102|  2.83k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  2.83k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IliLb1EvE4testEi:
 5094|  2.83k|    {
 5095|  2.83k|        return true;
 5096|  2.83k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE14number_integerEl:
13896|  61.4k|    {
13897|  61.4k|        handle_value(val);
13898|  61.4k|        return true;
13899|  61.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRlEEPSG_OT_:
14030|  61.4k|    {
14031|  61.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2.17k, False: 59.2k]
  ------------------
14032|  2.17k|        {
14033|  2.17k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  2.17k|            return &root;
14040|  2.17k|        }
14041|       |
14042|  59.2k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  59.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 54.0k, False: 5.26k]
  |  Branch (14042:9): [True: 5.26k, False: 0]
  |  Branch (14042:9): [True: 59.2k, False: 0]
  ------------------
14043|       |
14044|  59.2k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 54.0k, False: 5.26k]
  ------------------
14045|  54.0k|        {
14046|  54.0k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  54.0k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  54.0k|        }
14054|       |
14055|  5.26k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  5.26k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 5.26k, False: 0]
  ------------------
14056|  5.26k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  5.26k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 5.26k, False: 0]
  ------------------
14057|  5.26k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  5.26k|        return object_element;
14064|  5.26k|    }
_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_:
32410|   116k|    {
32411|   116k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|   116k|        set_parents();
32413|   116k|        assert_invariant();
32414|   116k|    }
_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_:
 7868|   116k|    {
 7869|   116k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|   116k|    }
_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_:
 7812|   116k|    {
 7813|   116k|        return to_json(j, std::forward<T>(val));
 7814|   116k|    }
_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_:
 7519|   116k|{
 7520|   116k|    external_constructor<value_t::number_integer>::construct(j, static_cast<typename BasicJsonType::number_integer_t>(val));
 7521|   116k|}
_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:
 7315|   116k|    {
 7316|   116k|        j.replace_value(value_t::number_integer, val);
 7317|   116k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2El:
30657|   116k|        json_value(number_integer_t v) noexcept : number_integer(v) {}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE15number_unsignedEm:
13902|   199k|    {
13903|   199k|        handle_value(val);
13904|   199k|        return true;
13905|   199k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEE12handle_valueIRmEEPSG_OT_:
14030|   199k|    {
14031|   199k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2.43k, False: 196k]
  ------------------
14032|  2.43k|        {
14033|  2.43k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  2.43k|            return &root;
14040|  2.43k|        }
14041|       |
14042|   196k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|   196k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 177k, False: 19.1k]
  |  Branch (14042:9): [True: 19.1k, False: 0]
  |  Branch (14042:9): [True: 196k, False: 0]
  ------------------
14043|       |
14044|   196k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 177k, False: 19.1k]
  ------------------
14045|   177k|        {
14046|   177k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|   177k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|   177k|        }
14054|       |
14055|  19.1k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  19.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 19.1k, False: 0]
  ------------------
14056|  19.1k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  19.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 19.1k, False: 0]
  ------------------
14057|  19.1k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  19.1k|        return object_element;
14064|  19.1k|    }
_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_:
32410|   374k|    {
32411|   374k|        JSONSerializer<U>::to_json(*this, std::forward<CompatibleType>(val));
32412|   374k|        set_parents();
32413|   374k|        assert_invariant();
32414|   374k|    }
_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_:
 7868|   374k|    {
 7869|   374k|        ::nlohmann::to_json(j, std::forward<TargetType>(val));
 7870|   374k|    }
_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_:
 7812|   374k|    {
 7813|   374k|        return to_json(j, std::forward<T>(val));
 7814|   374k|    }
_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_:
 7512|   374k|{
 7513|   374k|    external_constructor<value_t::number_unsigned>::construct(j, static_cast<typename BasicJsonType::number_unsigned_t>(val));
 7514|   374k|}
_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:
 7305|   374k|    {
 7306|   374k|        j.replace_value(value_t::number_unsigned, val);
 7307|   374k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2Em:
30659|   374k|        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_19json_sax_dom_parserISG_SK_EEE6get_toIlEEbRT_PKc:
18667|  2.52k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  2.52k|        auto new_chars_read = ia.get_elements(&dest);
18671|  2.52k|        chars_read += new_chars_read;
18672|  2.52k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  2.52k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 66, False: 2.45k]
  |  |  ------------------
  ------------------
18673|     66|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     66|            ++chars_read;
18676|     66|            static_cast<void>(report_eof(context));
18677|     66|            return false;
18678|     66|        }
18679|  2.45k|        return true;
18680|  2.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIlEEmPT_m:
 8644|  2.52k|    {
 8645|  2.52k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  2.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIlEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  2.52k|    {
 8703|  2.52k|        const std::size_t wanted = count * sizeof(T);
 8704|  2.52k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  2.52k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  2.52k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  2.52k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.51k, False: 9]
  |  |  ------------------
  ------------------
 8707|  2.51k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  2.51k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  2.51k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 2.51k, False: 0]
  ------------------
 8712|  2.51k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  2.51k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 2.51k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  2.51k|            std::memcpy(dest, &*current, copied);
 8716|  2.51k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  2.51k|        }
 8718|  2.52k|        return copied;
 8719|  2.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIlEEvRT_:
18698|  2.45k|    {
18699|  2.45k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  2.45k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  12.2k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 9.82k, False: 2.45k]
  ------------------
18715|  9.82k|            {
18716|  9.82k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  9.82k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  2.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_19json_sax_dom_parserISG_SK_EEE11emit_signedIlEEbT_:
18771|  2.45k|    {
18772|  2.45k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  2.45k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.45k, False: 0]
  |  |  ------------------
  ------------------
18773|  2.45k|        {
18774|  2.45k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  2.45k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIllEEbT0_:
 5101|  4.47k|{
 5102|  4.47k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  4.47k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IllLb1EvE4testEl:
 5094|  4.47k|    {
 5095|  4.47k|        return true;
 5096|  4.47k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toImEEbRT_PKc:
18667|  2.57k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  2.57k|        auto new_chars_read = ia.get_elements(&dest);
18671|  2.57k|        chars_read += new_chars_read;
18672|  2.57k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  2.57k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 36, False: 2.53k]
  |  |  ------------------
  ------------------
18673|     36|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     36|            ++chars_read;
18676|     36|            static_cast<void>(report_eof(context));
18677|     36|            return false;
18678|     36|        }
18679|  2.53k|        return true;
18680|  2.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsImEEmPT_m:
 8644|  2.57k|    {
 8645|  2.57k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  2.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implImEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  2.57k|    {
 8703|  2.57k|        const std::size_t wanted = count * sizeof(T);
 8704|  2.57k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  2.57k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  2.57k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  2.57k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.56k, False: 9]
  |  |  ------------------
  ------------------
 8707|  2.56k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  2.56k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  2.56k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 2.56k, False: 0]
  ------------------
 8712|  2.56k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  2.56k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 2.56k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  2.56k|            std::memcpy(dest, &*current, copied);
 8716|  2.56k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  2.56k|        }
 8718|  2.57k|        return copied;
 8719|  2.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapImEEvRT_:
18698|  2.53k|    {
18699|  2.53k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  2.53k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  12.6k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 10.1k, False: 2.53k]
  ------------------
18715|  10.1k|            {
18716|  10.1k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  10.1k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  2.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedImEEbT_:
18799|  2.53k|    {
18800|  2.53k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  2.53k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 2.53k, False: 0]
  |  |  ------------------
  ------------------
18801|  2.53k|        {
18802|  2.53k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  2.53k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  2.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImmEEbT0_:
 5101|  4.34k|{
 5102|  4.34k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  4.34k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImmLb1EvE4testEm:
 5094|  4.34k|    {
 5095|  4.34k|        return true;
 5096|  4.34k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA16_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|  2.15k|{
 5223|  2.15k|    return ::strlen(cstr) + concat_length(rest...);
 5224|  2.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA16_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|  2.15k|{
 5282|  2.15k|    out.append(std::forward<Arg>(arg));
 5283|  2.15k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  2.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERA16_KcJS9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSE_OSF_DpOT1_:
 5281|  2.15k|{
 5282|  2.15k|    out.append(std::forward<Arg>(arg));
 5283|  2.15k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  2.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_stringIjEEbT_RSC_:
18910|   100k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|   100k|        return get_bytes(len, "string", result);
18921|   100k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIjSC_EEbT_PKcRT0_:
18998|   100k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|   100k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|   144k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 44.8k, False: 99.6k]
  ------------------
19003|  44.8k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  44.8k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 44.6k, False: 159]
  ------------------
19007|  44.8k|                                       ? static_cast<std::size_t>(len)
19008|  44.8k|                                       : chunk_size;
19009|  44.8k|            const std::size_t old_size = result.size();
19010|  44.8k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  44.8k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  44.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 44.8k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  44.8k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  44.8k|            chars_read += bytes_read;
19018|  44.8k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  44.8k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 1.04k, False: 43.7k]
  |  |  ------------------
  ------------------
19019|  1.04k|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|  1.04k|                result.resize(old_size + bytes_read);
19024|  1.04k|                ++chars_read;
19025|  1.04k|                current = char_traits<char_type>::eof();
19026|  1.04k|                return unexpect_eof(context);
19027|  1.04k|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  43.7k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  43.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 43.7k, False: 0]
  ------------------
19030|  43.7k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  43.7k|        }
19032|  99.6k|        return true;
19033|   100k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_stringIhEEbT_RSC_:
18910|  3.56k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  3.56k|        return get_bytes(len, "string", result);
18921|  3.56k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIhSC_EEbT_PKcRT0_:
18998|  3.56k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  3.56k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  5.29k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.86k, False: 3.42k]
  ------------------
19003|  1.86k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.86k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.86k, False: 0]
  ------------------
19007|  1.86k|                                       ? static_cast<std::size_t>(len)
19008|  1.86k|                                       : chunk_size;
19009|  1.86k|            const std::size_t old_size = result.size();
19010|  1.86k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.86k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.86k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.86k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.86k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.86k|            chars_read += bytes_read;
19018|  1.86k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.86k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 135, False: 1.73k]
  |  |  ------------------
  ------------------
19019|    135|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    135|                result.resize(old_size + bytes_read);
19024|    135|                ++chars_read;
19025|    135|                current = char_traits<char_type>::eof();
19026|    135|                return unexpect_eof(context);
19027|    135|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  1.73k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  1.73k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 1.73k, False: 0]
  ------------------
19030|  1.73k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  1.73k|        }
19032|  3.42k|        return true;
19033|  3.56k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberItLb0EEEbRT_:
18739|  13.0k|    {
18740|       |        // read in the original format
18741|       |
18742|  13.0k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  13.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 42, False: 12.9k]
  |  |  ------------------
  ------------------
18743|     42|        {
18744|     42|            return false;
18745|     42|        }
18746|  12.9k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 12.9k, False: 84]
  |  Branch (18746:34): [Folded, False: 12.9k]
  |  Branch (18746:57): [True: 0, False: 12.9k]
  ------------------
18747|  12.9k|        {
18748|  12.9k|            byte_swap(result);
18749|  12.9k|        }
18750|  12.9k|        return true;
18751|  13.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_19json_sax_dom_parserISG_SK_EEE6get_toItEEbRT_PKc:
18667|  13.0k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  13.0k|        auto new_chars_read = ia.get_elements(&dest);
18671|  13.0k|        chars_read += new_chars_read;
18672|  13.0k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  13.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 126, False: 12.9k]
  |  |  ------------------
  ------------------
18673|    126|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|    126|            ++chars_read;
18676|    126|            static_cast<void>(report_eof(context));
18677|    126|            return false;
18678|    126|        }
18679|  12.9k|        return true;
18680|  13.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsItEEmPT_m:
 8644|  13.0k|    {
 8645|  13.0k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  13.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implItEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  13.0k|    {
 8703|  13.0k|        const std::size_t wanted = count * sizeof(T);
 8704|  13.0k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  13.0k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  13.0k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  13.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 12.9k, False: 84]
  |  |  ------------------
  ------------------
 8707|  12.9k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  12.9k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  12.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 12.9k, False: 0]
  ------------------
 8712|  12.9k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  12.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 12.9k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  12.9k|            std::memcpy(dest, &*current, copied);
 8716|  12.9k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  12.9k|        }
 8718|  13.0k|        return copied;
 8719|  13.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_19json_sax_dom_parserISG_SK_EEE9byte_swapItEEvRT_:
18698|  12.9k|    {
18699|  12.9k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  12.9k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  25.8k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 12.9k, False: 12.9k]
  ------------------
18715|  12.9k|            {
18716|  12.9k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  12.9k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  12.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_19json_sax_dom_parserISG_SK_EEE10get_stringItEEbT_RSC_:
18910|  2.21k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  2.21k|        return get_bytes(len, "string", result);
18921|  2.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesItSC_EEbT_PKcRT0_:
18998|  2.21k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  2.21k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  3.20k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.15k, False: 2.04k]
  ------------------
19003|  1.15k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.15k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.09k, False: 54]
  ------------------
19007|  1.15k|                                       ? static_cast<std::size_t>(len)
19008|  1.15k|                                       : chunk_size;
19009|  1.15k|            const std::size_t old_size = result.size();
19010|  1.15k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.15k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.15k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.15k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.15k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.15k|            chars_read += bytes_read;
19018|  1.15k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.15k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 171, False: 982]
  |  |  ------------------
  ------------------
19019|    171|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    171|                result.resize(old_size + bytes_read);
19024|    171|                ++chars_read;
19025|    171|                current = char_traits<char_type>::eof();
19026|    171|                return unexpect_eof(context);
19027|    171|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    982|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    982|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 982, False: 0]
  ------------------
19030|    982|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    982|        }
19032|  2.04k|        return true;
19033|  2.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIjLb0EEEbRT_:
18739|  4.74k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.74k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.74k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 55, False: 4.68k]
  |  |  ------------------
  ------------------
18743|     55|        {
18744|     55|            return false;
18745|     55|        }
18746|  4.68k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.57k, False: 110]
  |  Branch (18746:34): [Folded, False: 4.57k]
  |  Branch (18746:57): [True: 0, False: 4.57k]
  ------------------
18747|  4.57k|        {
18748|  4.57k|            byte_swap(result);
18749|  4.57k|        }
18750|  4.68k|        return true;
18751|  4.74k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIjEEbRT_PKc:
18667|  4.74k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.74k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.74k|        chars_read += new_chars_read;
18672|  4.74k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.74k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 165, False: 4.57k]
  |  |  ------------------
  ------------------
18673|    165|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|    165|            ++chars_read;
18676|    165|            static_cast<void>(report_eof(context));
18677|    165|            return false;
18678|    165|        }
18679|  4.57k|        return true;
18680|  4.74k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIjEEmPT_m:
 8644|  4.74k|    {
 8645|  4.74k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  4.74k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIjEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  4.74k|    {
 8703|  4.74k|        const std::size_t wanted = count * sizeof(T);
 8704|  4.74k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  4.74k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  4.74k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  4.74k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.65k, False: 90]
  |  |  ------------------
  ------------------
 8707|  4.65k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  4.65k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  4.65k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 4.65k, False: 0]
  ------------------
 8712|  4.65k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  4.65k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 4.65k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  4.65k|            std::memcpy(dest, &*current, copied);
 8716|  4.65k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  4.65k|        }
 8718|  4.74k|        return copied;
 8719|  4.74k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIjEEvRT_:
18698|  4.57k|    {
18699|  4.57k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.57k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  13.7k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 9.15k, False: 4.57k]
  ------------------
18715|  9.15k|            {
18716|  9.15k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  9.15k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberImLb0EEEbRT_:
18739|  2.57k|    {
18740|       |        // read in the original format
18741|       |
18742|  2.57k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  2.57k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 12, False: 2.56k]
  |  |  ------------------
  ------------------
18743|     12|        {
18744|     12|            return false;
18745|     12|        }
18746|  2.56k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 2.53k, False: 24]
  |  Branch (18746:34): [Folded, False: 2.53k]
  |  Branch (18746:57): [True: 0, False: 2.53k]
  ------------------
18747|  2.53k|        {
18748|  2.53k|            byte_swap(result);
18749|  2.53k|        }
18750|  2.56k|        return true;
18751|  2.57k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedIhEEbT_:
18799|  3.01k|    {
18800|  3.01k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  3.01k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 3.01k, False: 0]
  |  |  ------------------
  ------------------
18801|  3.01k|        {
18802|  3.01k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  3.01k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  3.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImhEEbT0_:
 5101|  5.56k|{
 5102|  5.56k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  5.56k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImhLb0EvE4testEh:
 5085|  5.56k|    {
 5086|  5.56k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|  5.56k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImhLb0ELb0EE4testEh:
 5039|  5.56k|    {
 5040|  5.56k|        using CommonType = typename std::common_type<OfType, T>::type;
 5041|  5.56k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5042|  5.56k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE13emit_unsignedItEEbT_:
18799|  1.01k|    {
18800|  1.01k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  1.01k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.01k, False: 0]
  |  |  ------------------
  ------------------
18801|  1.01k|        {
18802|  1.01k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  1.01k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  1.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImtEEbT0_:
 5101|  1.66k|{
 5102|  1.66k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  1.66k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImtLb0EvE4testEt:
 5085|  1.66k|    {
 5086|  1.66k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|  1.66k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImtLb0ELb0EE4testEt:
 5039|  1.66k|    {
 5040|  1.66k|        using CommonType = typename std::common_type<OfType, T>::type;
 5041|  1.66k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5042|  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_19json_sax_dom_parserISG_SK_EEE13emit_unsignedIjEEbT_:
18799|  1.45k|    {
18800|  1.45k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|  1.45k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.45k, False: 0]
  |  |  ------------------
  ------------------
18801|  1.45k|        {
18802|  1.45k|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|  1.45k|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofImjEEbT0_:
 5101|  2.53k|{
 5102|  2.53k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  2.53k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1ImjLb0EvE4testEj:
 5085|  2.53k|    {
 5086|  2.53k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|  2.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2ImjLb0ELb0EE4testEj:
 5039|  2.53k|    {
 5040|  2.53k|        using CommonType = typename std::common_type<OfType, T>::type;
 5041|  2.53k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5042|  2.53k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  1.59k|    {
18973|  1.59k|        return get_bytes(len, "binary", result);
18974|  1.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  1.59k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.59k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  2.06k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 768, False: 1.29k]
  ------------------
19003|    768|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    768|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 555, False: 213]
  ------------------
19007|    768|                                       ? static_cast<std::size_t>(len)
19008|    768|                                       : chunk_size;
19009|    768|            const std::size_t old_size = result.size();
19010|    768|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    768|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    768|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 768, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    768|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    768|            chars_read += bytes_read;
19018|    768|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    768|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 303, False: 465]
  |  |  ------------------
  ------------------
19019|    303|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    303|                result.resize(old_size + bytes_read);
19024|    303|                ++chars_read;
19025|    303|                current = char_traits<char_type>::eof();
19026|    303|                return unexpect_eof(context);
19027|    303|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    465|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    465|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 465, False: 0]
  ------------------
19030|    465|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    465|        }
19032|  1.29k|        return true;
19033|  1.59k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_binaryIhEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  31.9k|    {
18973|  31.9k|        return get_bytes(len, "binary", result);
18974|  31.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_19json_sax_dom_parserISG_SK_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  31.9k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  31.9k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  35.0k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 3.14k, False: 31.8k]
  ------------------
19003|  3.14k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  3.14k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 3.14k, False: 0]
  ------------------
19007|  3.14k|                                       ? static_cast<std::size_t>(len)
19008|  3.14k|                                       : chunk_size;
19009|  3.14k|            const std::size_t old_size = result.size();
19010|  3.14k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  3.14k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  3.14k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 3.14k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  3.14k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  3.14k|            chars_read += bytes_read;
19018|  3.14k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  3.14k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 90, False: 3.05k]
  |  |  ------------------
  ------------------
19019|     90|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     90|                result.resize(old_size + bytes_read);
19024|     90|                ++chars_read;
19025|     90|                current = char_traits<char_type>::eof();
19026|     90|                return unexpect_eof(context);
19027|     90|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  3.05k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  3.05k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 3.05k, False: 0]
  ------------------
19030|  3.05k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  3.05k|        }
19032|  31.8k|        return true;
19033|  31.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_19json_sax_dom_parserISG_SK_EEE10get_binaryItEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  3.64k|    {
18973|  3.64k|        return get_bytes(len, "binary", result);
18974|  3.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_19json_sax_dom_parserISG_SK_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  3.64k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  3.64k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  5.01k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 1.56k, False: 3.44k]
  ------------------
19003|  1.56k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  1.56k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 1.50k, False: 60]
  ------------------
19007|  1.56k|                                       ? static_cast<std::size_t>(len)
19008|  1.56k|                                       : chunk_size;
19009|  1.56k|            const std::size_t old_size = result.size();
19010|  1.56k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  1.56k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  1.56k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 1.56k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  1.56k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  1.56k|            chars_read += bytes_read;
19018|  1.56k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  1.56k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 198, False: 1.36k]
  |  |  ------------------
  ------------------
19019|    198|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    198|                result.resize(old_size + bytes_read);
19024|    198|                ++chars_read;
19025|    198|                current = char_traits<char_type>::eof();
19026|    198|                return unexpect_eof(context);
19027|    198|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  1.36k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  1.36k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 1.36k, False: 0]
  ------------------
19030|  1.36k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  1.36k|        }
19032|  3.44k|        return true;
19033|  3.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_19json_sax_dom_parserISG_SK_EEE11enter_arrayEmm:
15094|   340k|    {
15095|   340k|        return enter_container(/*is_object*/false, len, type_marker);
15096|   340k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23conditional_static_castImjTnNSt3__19enable_ifIXntsr3std7is_sameIT_T0_EE5valueEiE4typeELi0EEES5_S6_:
 4988|   687k|{
 4989|   687k|    return static_cast<T>(value);
 4990|   687k|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE12enter_objectEmm:
15100|  48.2k|    {
15101|  48.2k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  48.2k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15unexpected_byteEPKcSP_:
19130|      9|    {
19131|      9|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|      9|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRPKcRA5_SA_S9_EEET_DpOT0_:
 5318|     18|{
 5319|     18|    OutStringType str;
 5320|     18|    str.reserve(concat_length(args...));
 5321|     18|    concat_into(str, std::forward<Args>(args)...);
 5322|     18|    return str;
 5323|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthIJA5_cNSt3__112basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEEEEmPKcDpRKT_:
 5222|     18|{
 5223|     18|    return ::strlen(cstr) + concat_length(rest...);
 5224|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERPKcJRA5_SA_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSG_OSH_DpOT1_:
 5281|     18|{
 5282|     18|    out.append(std::forward<Arg>(arg));
 5283|     18|    concat_into(out, std::forward<Args>(rest)...);
 5284|     18|}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIfLb0EEEbRT_:
18739|  7.65k|    {
18740|       |        // read in the original format
18741|       |
18742|  7.65k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  7.65k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 8, False: 7.64k]
  |  |  ------------------
  ------------------
18743|      8|        {
18744|      8|            return false;
18745|      8|        }
18746|  7.64k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 7.62k, False: 16]
  |  Branch (18746:34): [Folded, False: 7.62k]
  |  Branch (18746:57): [True: 0, False: 7.62k]
  ------------------
18747|  7.62k|        {
18748|  7.62k|            byte_swap(result);
18749|  7.62k|        }
18750|  7.64k|        return true;
18751|  7.65k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIfEEbRT_PKc:
18667|  7.65k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  7.65k|        auto new_chars_read = ia.get_elements(&dest);
18671|  7.65k|        chars_read += new_chars_read;
18672|  7.65k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  7.65k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 24, False: 7.62k]
  |  |  ------------------
  ------------------
18673|     24|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     24|            ++chars_read;
18676|     24|            static_cast<void>(report_eof(context));
18677|     24|            return false;
18678|     24|        }
18679|  7.62k|        return true;
18680|  7.65k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIfEEmPT_m:
 8644|  7.65k|    {
 8645|  7.65k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  7.65k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIfEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  7.65k|    {
 8703|  7.65k|        const std::size_t wanted = count * sizeof(T);
 8704|  7.65k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  7.65k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  7.65k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  7.65k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 7.64k, False: 9]
  |  |  ------------------
  ------------------
 8707|  7.64k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  7.64k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  7.64k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 7.64k, False: 0]
  ------------------
 8712|  7.64k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  7.64k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 7.64k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  7.64k|            std::memcpy(dest, &*current, copied);
 8716|  7.64k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  7.64k|        }
 8718|  7.65k|        return copied;
 8719|  7.65k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIfEEvRT_:
18698|  7.62k|    {
18699|  7.62k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  7.62k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  22.8k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 15.2k, False: 7.62k]
  ------------------
18715|  15.2k|            {
18716|  15.2k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  15.2k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  7.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10emit_floatIfEEbT_:
18825|  7.62k|    {
18826|  7.62k|        const auto result = static_cast<number_float_t>(number);
18827|  7.62k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  14.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 7.62k]
  |  |  |  Branch (1667:94): [True: 6.83k, False: 790]
  |  |  |  Branch (1667:94): [True: 0, False: 6.83k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  7.62k|        return sax->number_float(result, "");
18832|  7.62k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIdLb0EEEbRT_:
18739|  3.17k|    {
18740|       |        // read in the original format
18741|       |
18742|  3.17k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  3.17k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 3.15k]
  |  |  ------------------
  ------------------
18743|     19|        {
18744|     19|            return false;
18745|     19|        }
18746|  3.15k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 3.11k, False: 38]
  |  Branch (18746:34): [Folded, False: 3.11k]
  |  Branch (18746:57): [True: 0, False: 3.11k]
  ------------------
18747|  3.11k|        {
18748|  3.11k|            byte_swap(result);
18749|  3.11k|        }
18750|  3.15k|        return true;
18751|  3.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE22parse_msgpack_internalEv:
17112|  27.1k|    {
17113|       |        // the key currently being read; hoisted out of the loop so that its
17114|       |        // capacity is reused across elements and across nesting levels
17115|  27.1k|        string_t key;
17116|       |
17117|  1.09M|        while (true)
  ------------------
  |  Branch (17117:16): [True: 1.09M, Folded]
  ------------------
17118|  1.09M|        {
17119|  1.09M|            if (!container_stack.empty())
  ------------------
  |  Branch (17119:17): [True: 1.06M, False: 27.1k]
  ------------------
17120|  1.06M|            {
17121|       |                // copied out before anything can push onto the stack and
17122|       |                // invalidate a reference into it
17123|  1.06M|                const bool is_object = container_stack.back().is_object;
17124|       |
17125|  1.06M|                if (container_stack.back().remaining == 0)
  ------------------
  |  Branch (17125:21): [True: 330k, False: 734k]
  ------------------
17126|   330k|                {
17127|   330k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|   330k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 330k]
  |  |  ------------------
  ------------------
17128|      0|                    {
17129|      0|                        return false;
17130|      0|                    }
17131|       |                    // the value begun here is complete once its container is
17132|   330k|                    if (container_stack.empty())
  ------------------
  |  Branch (17132:25): [True: 9.45k, False: 321k]
  ------------------
17133|  9.45k|                    {
17134|  9.45k|                        return true;
17135|  9.45k|                    }
17136|   321k|                    continue;
17137|   330k|                }
17138|       |
17139|       |                // claim the element about to be read
17140|   734k|                --container_stack.back().remaining;
17141|       |
17142|   734k|                if (is_object)
  ------------------
  |  Branch (17142:21): [True: 75.0k, False: 659k]
  ------------------
17143|  75.0k|                {
17144|  75.0k|                    get();
17145|  75.0k|                    key.clear();
17146|  75.0k|                    if (JSON_HEDLEY_UNLIKELY(!get_msgpack_object_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|   148k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 388, False: 74.6k]
  |  |  |  Branch (1667:94): [True: 1.16k, False: 73.9k]
  |  |  |  Branch (1667:94): [True: 0, False: 73.9k]
  |  |  ------------------
  ------------------
17147|    388|                    {
17148|    388|                        return false;
17149|    388|                    }
17150|  75.0k|                }
17151|   734k|            }
17152|       |
17153|   760k|            if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_value()))
  ------------------
  |  | 1667|   760k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.23k, False: 758k]
  |  |  ------------------
  ------------------
17154|  2.23k|            {
17155|  2.23k|                return false;
17156|  2.23k|            }
17157|       |
17158|       |            // a value that opened a container left it on the stack; one that
17159|       |            // did not, and that was not inside a container, was the whole value
17160|   758k|            if (container_stack.empty())
  ------------------
  |  Branch (17160:17): [True: 9.85k, False: 748k]
  ------------------
17161|  9.85k|            {
17162|  9.85k|                return true;
17163|  9.85k|            }
17164|   758k|        }
17165|  27.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_19json_sax_dom_parserISG_SK_EEE22get_msgpack_object_keyERSC_:
16908|  75.0k|    {
16909|  75.0k|        const char* found = nullptr;
16910|  75.0k|        switch (current)
16911|  75.0k|        {
16912|      6|            case 0xC0:
  ------------------
  |  Branch (16912:13): [True: 6, False: 75.0k]
  ------------------
16913|      6|                found = "nil";
16914|      6|                break;
16915|      0|            case 0xC2:
  ------------------
  |  Branch (16915:13): [True: 0, False: 75.0k]
  ------------------
16916|      0|            case 0xC3:
  ------------------
  |  Branch (16916:13): [True: 0, False: 75.0k]
  ------------------
16917|      0|                found = "a boolean";
16918|      0|                break;
16919|      3|            case 0xCA:
  ------------------
  |  Branch (16919:13): [True: 3, False: 75.0k]
  ------------------
16920|      3|            case 0xCB:
  ------------------
  |  Branch (16920:13): [True: 0, False: 75.0k]
  ------------------
16921|      3|                found = "a float";
16922|      3|                break;
16923|      3|            case 0xC4:
  ------------------
  |  Branch (16923:13): [True: 3, False: 75.0k]
  ------------------
16924|      3|            case 0xC5:
  ------------------
  |  Branch (16924:13): [True: 0, False: 75.0k]
  ------------------
16925|      6|            case 0xC6:
  ------------------
  |  Branch (16925:13): [True: 3, False: 75.0k]
  ------------------
16926|      6|                found = "a bin";
16927|      6|                break;
16928|      0|            case 0xC7:
  ------------------
  |  Branch (16928:13): [True: 0, False: 75.0k]
  ------------------
16929|      0|            case 0xC8:
  ------------------
  |  Branch (16929:13): [True: 0, False: 75.0k]
  ------------------
16930|      0|            case 0xC9:
  ------------------
  |  Branch (16930:13): [True: 0, False: 75.0k]
  ------------------
16931|      3|            case 0xD4:
  ------------------
  |  Branch (16931:13): [True: 3, False: 75.0k]
  ------------------
16932|      6|            case 0xD5:
  ------------------
  |  Branch (16932:13): [True: 3, False: 75.0k]
  ------------------
16933|      6|            case 0xD6:
  ------------------
  |  Branch (16933:13): [True: 0, False: 75.0k]
  ------------------
16934|      6|            case 0xD7:
  ------------------
  |  Branch (16934:13): [True: 0, False: 75.0k]
  ------------------
16935|      6|            case 0xD8:
  ------------------
  |  Branch (16935:13): [True: 0, False: 75.0k]
  ------------------
16936|      6|                found = "an ext";
16937|      6|                break;
16938|      0|            case 0xCC:
  ------------------
  |  Branch (16938:13): [True: 0, False: 75.0k]
  ------------------
16939|      0|            case 0xCD:
  ------------------
  |  Branch (16939:13): [True: 0, False: 75.0k]
  ------------------
16940|      0|            case 0xCE:
  ------------------
  |  Branch (16940:13): [True: 0, False: 75.0k]
  ------------------
16941|      0|            case 0xCF:
  ------------------
  |  Branch (16941:13): [True: 0, False: 75.0k]
  ------------------
16942|      3|            case 0xD0:
  ------------------
  |  Branch (16942:13): [True: 3, False: 75.0k]
  ------------------
16943|      9|            case 0xD1:
  ------------------
  |  Branch (16943:13): [True: 6, False: 75.0k]
  ------------------
16944|     15|            case 0xD2:
  ------------------
  |  Branch (16944:13): [True: 6, False: 75.0k]
  ------------------
16945|     15|            case 0xD3:
  ------------------
  |  Branch (16945:13): [True: 0, False: 75.0k]
  ------------------
16946|     15|                found = "an integer";
16947|     15|                break;
16948|      0|            case 0xDC:
  ------------------
  |  Branch (16948:13): [True: 0, False: 75.0k]
  ------------------
16949|      0|            case 0xDD:
  ------------------
  |  Branch (16949:13): [True: 0, False: 75.0k]
  ------------------
16950|      0|                found = "an array";
16951|      0|                break;
16952|      3|            case 0xDE:
  ------------------
  |  Branch (16952:13): [True: 3, False: 75.0k]
  ------------------
16953|      6|            case 0xDF:
  ------------------
  |  Branch (16953:13): [True: 3, False: 75.0k]
  ------------------
16954|      6|                found = "a map";
16955|      6|                break;
16956|  75.0k|            default:
  ------------------
  |  Branch (16956:13): [True: 75.0k, False: 42]
  ------------------
16957|       |                // fixint, fixmap, and fixarray; strings, EOF, and the unused
16958|       |                // byte 0xC1 are left to get_msgpack_string
16959|  75.0k|                if (current == char_traits<char_type>::eof())
  ------------------
  |  Branch (16959:21): [True: 651, False: 74.3k]
  ------------------
16960|    651|                {
16961|    651|                    return get_msgpack_string(result, "key");
16962|    651|                }
16963|  74.3k|                if (current <= 0x7F || current >= 0xE0)
  ------------------
  |  Branch (16963:21): [True: 165, False: 74.2k]
  |  Branch (16963:40): [True: 78, False: 74.1k]
  ------------------
16964|    243|                {
16965|    243|                    found = "an integer";
16966|    243|                }
16967|  74.1k|                else if (current <= 0x8F)
  ------------------
  |  Branch (16967:26): [True: 42, False: 74.1k]
  ------------------
16968|     42|                {
16969|     42|                    found = "a map";
16970|     42|                }
16971|  74.1k|                else if (current <= 0x9F)
  ------------------
  |  Branch (16971:26): [True: 39, False: 74.0k]
  ------------------
16972|     39|                {
16973|     39|                    found = "an array";
16974|     39|                }
16975|  74.0k|                else
16976|  74.0k|                {
16977|  74.0k|                    return get_msgpack_string(result, "key");
16978|  74.0k|                }
16979|    324|                break;
16980|  75.0k|        }
16981|       |
16982|    366|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
16983|  75.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_19json_sax_dom_parserISG_SK_EEE18get_msgpack_stringERSC_PKc:
16825|   107k|    {
16826|   107k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1667|   107k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 217, False: 107k]
  |  |  ------------------
  ------------------
16827|    217|        {
16828|    217|            return false;
16829|    217|        }
16830|       |
16831|   107k|        switch (current)
16832|   107k|        {
16833|       |            // fixstr
16834|  55.6k|            case 0xA0:
  ------------------
  |  Branch (16834:13): [True: 55.6k, False: 51.3k]
  ------------------
16835|  83.2k|            case 0xA1:
  ------------------
  |  Branch (16835:13): [True: 27.5k, False: 79.4k]
  ------------------
16836|  86.1k|            case 0xA2:
  ------------------
  |  Branch (16836:13): [True: 2.90k, False: 104k]
  ------------------
16837|  87.5k|            case 0xA3:
  ------------------
  |  Branch (16837:13): [True: 1.47k, False: 105k]
  ------------------
16838|  88.9k|            case 0xA4:
  ------------------
  |  Branch (16838:13): [True: 1.40k, False: 105k]
  ------------------
16839|  89.7k|            case 0xA5:
  ------------------
  |  Branch (16839:13): [True: 741, False: 106k]
  ------------------
16840|  90.4k|            case 0xA6:
  ------------------
  |  Branch (16840:13): [True: 683, False: 106k]
  ------------------
16841|  90.8k|            case 0xA7:
  ------------------
  |  Branch (16841:13): [True: 433, False: 106k]
  ------------------
16842|  92.0k|            case 0xA8:
  ------------------
  |  Branch (16842:13): [True: 1.18k, False: 105k]
  ------------------
16843|  92.9k|            case 0xA9:
  ------------------
  |  Branch (16843:13): [True: 866, False: 106k]
  ------------------
16844|  93.6k|            case 0xAA:
  ------------------
  |  Branch (16844:13): [True: 700, False: 106k]
  ------------------
16845|  94.0k|            case 0xAB:
  ------------------
  |  Branch (16845:13): [True: 434, False: 106k]
  ------------------
16846|  94.5k|            case 0xAC:
  ------------------
  |  Branch (16846:13): [True: 515, False: 106k]
  ------------------
16847|  95.0k|            case 0xAD:
  ------------------
  |  Branch (16847:13): [True: 478, False: 106k]
  ------------------
16848|  95.2k|            case 0xAE:
  ------------------
  |  Branch (16848:13): [True: 259, False: 106k]
  ------------------
16849|  95.5k|            case 0xAF:
  ------------------
  |  Branch (16849:13): [True: 309, False: 106k]
  ------------------
16850|  95.9k|            case 0xB0:
  ------------------
  |  Branch (16850:13): [True: 330, False: 106k]
  ------------------
16851|  96.2k|            case 0xB1:
  ------------------
  |  Branch (16851:13): [True: 323, False: 106k]
  ------------------
16852|  96.7k|            case 0xB2:
  ------------------
  |  Branch (16852:13): [True: 540, False: 106k]
  ------------------
16853|  97.0k|            case 0xB3:
  ------------------
  |  Branch (16853:13): [True: 217, False: 106k]
  ------------------
16854|  97.3k|            case 0xB4:
  ------------------
  |  Branch (16854:13): [True: 323, False: 106k]
  ------------------
16855|  97.5k|            case 0xB5:
  ------------------
  |  Branch (16855:13): [True: 181, False: 106k]
  ------------------
16856|  97.7k|            case 0xB6:
  ------------------
  |  Branch (16856:13): [True: 235, False: 106k]
  ------------------
16857|  98.3k|            case 0xB7:
  ------------------
  |  Branch (16857:13): [True: 622, False: 106k]
  ------------------
16858|  98.6k|            case 0xB8:
  ------------------
  |  Branch (16858:13): [True: 259, False: 106k]
  ------------------
16859|  98.8k|            case 0xB9:
  ------------------
  |  Branch (16859:13): [True: 236, False: 106k]
  ------------------
16860|  99.1k|            case 0xBA:
  ------------------
  |  Branch (16860:13): [True: 315, False: 106k]
  ------------------
16861|  99.5k|            case 0xBB:
  ------------------
  |  Branch (16861:13): [True: 343, False: 106k]
  ------------------
16862|  99.6k|            case 0xBC:
  ------------------
  |  Branch (16862:13): [True: 177, False: 106k]
  ------------------
16863|  99.9k|            case 0xBD:
  ------------------
  |  Branch (16863:13): [True: 240, False: 106k]
  ------------------
16864|   100k|            case 0xBE:
  ------------------
  |  Branch (16864:13): [True: 200, False: 106k]
  ------------------
16865|   100k|            case 0xBF:
  ------------------
  |  Branch (16865:13): [True: 165, False: 106k]
  ------------------
16866|   100k|            {
16867|   100k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16867:24): [True: 99.4k, False: 849]
  |  Branch (16867:90): [True: 99.4k, False: 0]
  ------------------
16868|   100k|            }
16869|       |
16870|  3.60k|            case 0xD9: // str 8
  ------------------
  |  Branch (16870:13): [True: 3.60k, False: 103k]
  ------------------
16871|  3.60k|            {
16872|  3.60k|                std::uint8_t len{};
16873|  3.60k|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16873:24): [True: 3.56k, False: 39]
  |  Branch (16873:43): [True: 3.42k, False: 135]
  |  Branch (16873:70): [True: 3.42k, False: 0]
  ------------------
16874|   100k|            }
16875|       |
16876|  2.24k|            case 0xDA: // str 16
  ------------------
  |  Branch (16876:13): [True: 2.24k, False: 104k]
  ------------------
16877|  2.24k|            {
16878|  2.24k|                std::uint16_t len{};
16879|  2.24k|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16879:24): [True: 2.21k, False: 24]
  |  Branch (16879:43): [True: 2.04k, False: 171]
  |  Branch (16879:70): [True: 2.04k, False: 0]
  ------------------
16880|   100k|            }
16881|       |
16882|    420|            case 0xDB: // str 32
  ------------------
  |  Branch (16882:13): [True: 420, False: 106k]
  ------------------
16883|    420|            {
16884|    420|                std::uint32_t len{};
16885|    420|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16885:24): [True: 384, False: 36]
  |  Branch (16885:43): [True: 186, False: 198]
  |  Branch (16885:70): [True: 186, False: 0]
  ------------------
16886|   100k|            }
16887|       |
16888|      3|            default:
  ------------------
  |  Branch (16888:13): [True: 3, False: 106k]
  ------------------
16889|      3|            {
16890|      3|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0xA0-0xBF, 0xD9-0xDB)", "string", "");
16891|   100k|            }
16892|   107k|        }
16893|   107k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE19parse_msgpack_valueEv:
16446|   760k|    {
16447|   760k|        switch (get())
16448|   760k|        {
16449|       |            // EOF
16450|  4.15k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (16450:13): [True: 4.15k, False: 755k]
  ------------------
16451|  4.15k|                return unexpect_eof("value");
16452|       |
16453|       |            // positive fixint
16454|  23.3k|            case 0x00:
  ------------------
  |  Branch (16454:13): [True: 23.3k, False: 736k]
  ------------------
16455|  26.0k|            case 0x01:
  ------------------
  |  Branch (16455:13): [True: 2.67k, False: 757k]
  ------------------
16456|  27.5k|            case 0x02:
  ------------------
  |  Branch (16456:13): [True: 1.52k, False: 758k]
  ------------------
16457|  28.9k|            case 0x03:
  ------------------
  |  Branch (16457:13): [True: 1.37k, False: 758k]
  ------------------
16458|  30.4k|            case 0x04:
  ------------------
  |  Branch (16458:13): [True: 1.46k, False: 758k]
  ------------------
16459|  31.7k|            case 0x05:
  ------------------
  |  Branch (16459:13): [True: 1.37k, False: 758k]
  ------------------
16460|  33.0k|            case 0x06:
  ------------------
  |  Branch (16460:13): [True: 1.24k, False: 758k]
  ------------------
16461|  34.3k|            case 0x07:
  ------------------
  |  Branch (16461:13): [True: 1.35k, False: 758k]
  ------------------
16462|  36.3k|            case 0x08:
  ------------------
  |  Branch (16462:13): [True: 1.94k, False: 758k]
  ------------------
16463|  38.1k|            case 0x09:
  ------------------
  |  Branch (16463:13): [True: 1.80k, False: 758k]
  ------------------
16464|  39.4k|            case 0x0A:
  ------------------
  |  Branch (16464:13): [True: 1.31k, False: 758k]
  ------------------
16465|  40.7k|            case 0x0B:
  ------------------
  |  Branch (16465:13): [True: 1.33k, False: 758k]
  ------------------
16466|  41.8k|            case 0x0C:
  ------------------
  |  Branch (16466:13): [True: 1.11k, False: 759k]
  ------------------
16467|  43.2k|            case 0x0D:
  ------------------
  |  Branch (16467:13): [True: 1.37k, False: 758k]
  ------------------
16468|  44.7k|            case 0x0E:
  ------------------
  |  Branch (16468:13): [True: 1.50k, False: 758k]
  ------------------
16469|  45.8k|            case 0x0F:
  ------------------
  |  Branch (16469:13): [True: 1.03k, False: 759k]
  ------------------
16470|  46.9k|            case 0x10:
  ------------------
  |  Branch (16470:13): [True: 1.17k, False: 758k]
  ------------------
16471|  47.9k|            case 0x11:
  ------------------
  |  Branch (16471:13): [True: 1.00k, False: 759k]
  ------------------
16472|  49.3k|            case 0x12:
  ------------------
  |  Branch (16472:13): [True: 1.40k, False: 758k]
  ------------------
16473|  50.5k|            case 0x13:
  ------------------
  |  Branch (16473:13): [True: 1.14k, False: 758k]
  ------------------
16474|  51.7k|            case 0x14:
  ------------------
  |  Branch (16474:13): [True: 1.20k, False: 758k]
  ------------------
16475|  53.3k|            case 0x15:
  ------------------
  |  Branch (16475:13): [True: 1.60k, False: 758k]
  ------------------
16476|  54.4k|            case 0x16:
  ------------------
  |  Branch (16476:13): [True: 1.15k, False: 758k]
  ------------------
16477|  55.6k|            case 0x17:
  ------------------
  |  Branch (16477:13): [True: 1.17k, False: 758k]
  ------------------
16478|  57.5k|            case 0x18:
  ------------------
  |  Branch (16478:13): [True: 1.87k, False: 758k]
  ------------------
16479|  58.9k|            case 0x19:
  ------------------
  |  Branch (16479:13): [True: 1.36k, False: 758k]
  ------------------
16480|  60.9k|            case 0x1A:
  ------------------
  |  Branch (16480:13): [True: 2.04k, False: 758k]
  ------------------
16481|  61.9k|            case 0x1B:
  ------------------
  |  Branch (16481:13): [True: 955, False: 759k]
  ------------------
16482|  62.8k|            case 0x1C:
  ------------------
  |  Branch (16482:13): [True: 937, False: 759k]
  ------------------
16483|  63.9k|            case 0x1D:
  ------------------
  |  Branch (16483:13): [True: 1.08k, False: 759k]
  ------------------
16484|  65.4k|            case 0x1E:
  ------------------
  |  Branch (16484:13): [True: 1.50k, False: 758k]
  ------------------
16485|  66.3k|            case 0x1F:
  ------------------
  |  Branch (16485:13): [True: 903, False: 759k]
  ------------------
16486|  67.4k|            case 0x20:
  ------------------
  |  Branch (16486:13): [True: 1.14k, False: 758k]
  ------------------
16487|  68.8k|            case 0x21:
  ------------------
  |  Branch (16487:13): [True: 1.35k, False: 758k]
  ------------------
16488|  70.4k|            case 0x22:
  ------------------
  |  Branch (16488:13): [True: 1.60k, False: 758k]
  ------------------
16489|  71.5k|            case 0x23:
  ------------------
  |  Branch (16489:13): [True: 1.10k, False: 759k]
  ------------------
16490|  73.0k|            case 0x24:
  ------------------
  |  Branch (16490:13): [True: 1.48k, False: 758k]
  ------------------
16491|  74.5k|            case 0x25:
  ------------------
  |  Branch (16491:13): [True: 1.55k, False: 758k]
  ------------------
16492|  76.1k|            case 0x26:
  ------------------
  |  Branch (16492:13): [True: 1.59k, False: 758k]
  ------------------
16493|  77.2k|            case 0x27:
  ------------------
  |  Branch (16493:13): [True: 1.12k, False: 759k]
  ------------------
16494|  78.8k|            case 0x28:
  ------------------
  |  Branch (16494:13): [True: 1.52k, False: 758k]
  ------------------
16495|  79.9k|            case 0x29:
  ------------------
  |  Branch (16495:13): [True: 1.15k, False: 758k]
  ------------------
16496|  81.1k|            case 0x2A:
  ------------------
  |  Branch (16496:13): [True: 1.21k, False: 758k]
  ------------------
16497|  82.5k|            case 0x2B:
  ------------------
  |  Branch (16497:13): [True: 1.41k, False: 758k]
  ------------------
16498|  83.8k|            case 0x2C:
  ------------------
  |  Branch (16498:13): [True: 1.28k, False: 758k]
  ------------------
16499|  85.2k|            case 0x2D:
  ------------------
  |  Branch (16499:13): [True: 1.37k, False: 758k]
  ------------------
16500|  87.0k|            case 0x2E:
  ------------------
  |  Branch (16500:13): [True: 1.82k, False: 758k]
  ------------------
16501|  88.6k|            case 0x2F:
  ------------------
  |  Branch (16501:13): [True: 1.54k, False: 758k]
  ------------------
16502|  89.9k|            case 0x30:
  ------------------
  |  Branch (16502:13): [True: 1.33k, False: 758k]
  ------------------
16503|  91.2k|            case 0x31:
  ------------------
  |  Branch (16503:13): [True: 1.27k, False: 758k]
  ------------------
16504|  92.3k|            case 0x32:
  ------------------
  |  Branch (16504:13): [True: 1.13k, False: 759k]
  ------------------
16505|  93.4k|            case 0x33:
  ------------------
  |  Branch (16505:13): [True: 1.12k, False: 759k]
  ------------------
16506|  94.6k|            case 0x34:
  ------------------
  |  Branch (16506:13): [True: 1.12k, False: 759k]
  ------------------
16507|  95.8k|            case 0x35:
  ------------------
  |  Branch (16507:13): [True: 1.24k, False: 758k]
  ------------------
16508|  97.0k|            case 0x36:
  ------------------
  |  Branch (16508:13): [True: 1.17k, False: 758k]
  ------------------
16509|  98.0k|            case 0x37:
  ------------------
  |  Branch (16509:13): [True: 999, False: 759k]
  ------------------
16510|  99.4k|            case 0x38:
  ------------------
  |  Branch (16510:13): [True: 1.39k, False: 758k]
  ------------------
16511|   100k|            case 0x39:
  ------------------
  |  Branch (16511:13): [True: 1.12k, False: 759k]
  ------------------
16512|   102k|            case 0x3A:
  ------------------
  |  Branch (16512:13): [True: 1.90k, False: 758k]
  ------------------
16513|   104k|            case 0x3B:
  ------------------
  |  Branch (16513:13): [True: 1.66k, False: 758k]
  ------------------
16514|   105k|            case 0x3C:
  ------------------
  |  Branch (16514:13): [True: 1.02k, False: 759k]
  ------------------
16515|   106k|            case 0x3D:
  ------------------
  |  Branch (16515:13): [True: 1.06k, False: 759k]
  ------------------
16516|   108k|            case 0x3E:
  ------------------
  |  Branch (16516:13): [True: 2.03k, False: 758k]
  ------------------
16517|   110k|            case 0x3F:
  ------------------
  |  Branch (16517:13): [True: 2.30k, False: 757k]
  ------------------
16518|   111k|            case 0x40:
  ------------------
  |  Branch (16518:13): [True: 1.30k, False: 758k]
  ------------------
16519|   113k|            case 0x41:
  ------------------
  |  Branch (16519:13): [True: 2.06k, False: 758k]
  ------------------
16520|   115k|            case 0x42:
  ------------------
  |  Branch (16520:13): [True: 1.33k, False: 758k]
  ------------------
16521|   116k|            case 0x43:
  ------------------
  |  Branch (16521:13): [True: 911, False: 759k]
  ------------------
16522|   117k|            case 0x44:
  ------------------
  |  Branch (16522:13): [True: 1.23k, False: 758k]
  ------------------
16523|   118k|            case 0x45:
  ------------------
  |  Branch (16523:13): [True: 1.28k, False: 758k]
  ------------------
16524|   120k|            case 0x46:
  ------------------
  |  Branch (16524:13): [True: 1.39k, False: 758k]
  ------------------
16525|   121k|            case 0x47:
  ------------------
  |  Branch (16525:13): [True: 1.09k, False: 759k]
  ------------------
16526|   122k|            case 0x48:
  ------------------
  |  Branch (16526:13): [True: 1.36k, False: 758k]
  ------------------
16527|   123k|            case 0x49:
  ------------------
  |  Branch (16527:13): [True: 827, False: 759k]
  ------------------
16528|   124k|            case 0x4A:
  ------------------
  |  Branch (16528:13): [True: 955, False: 759k]
  ------------------
16529|   125k|            case 0x4B:
  ------------------
  |  Branch (16529:13): [True: 1.13k, False: 759k]
  ------------------
16530|   126k|            case 0x4C:
  ------------------
  |  Branch (16530:13): [True: 883, False: 759k]
  ------------------
16531|   127k|            case 0x4D:
  ------------------
  |  Branch (16531:13): [True: 1.12k, False: 759k]
  ------------------
16532|   128k|            case 0x4E:
  ------------------
  |  Branch (16532:13): [True: 1.04k, False: 759k]
  ------------------
16533|   129k|            case 0x4F:
  ------------------
  |  Branch (16533:13): [True: 952, False: 759k]
  ------------------
16534|   131k|            case 0x50:
  ------------------
  |  Branch (16534:13): [True: 1.85k, False: 758k]
  ------------------
16535|   132k|            case 0x51:
  ------------------
  |  Branch (16535:13): [True: 1.68k, False: 758k]
  ------------------
16536|   133k|            case 0x52:
  ------------------
  |  Branch (16536:13): [True: 992, False: 759k]
  ------------------
16537|   135k|            case 0x53:
  ------------------
  |  Branch (16537:13): [True: 1.35k, False: 758k]
  ------------------
16538|   136k|            case 0x54:
  ------------------
  |  Branch (16538:13): [True: 1.03k, False: 759k]
  ------------------
16539|   137k|            case 0x55:
  ------------------
  |  Branch (16539:13): [True: 805, False: 759k]
  ------------------
16540|   138k|            case 0x56:
  ------------------
  |  Branch (16540:13): [True: 1.27k, False: 758k]
  ------------------
16541|   139k|            case 0x57:
  ------------------
  |  Branch (16541:13): [True: 1.07k, False: 759k]
  ------------------
16542|   140k|            case 0x58:
  ------------------
  |  Branch (16542:13): [True: 840, False: 759k]
  ------------------
16543|   141k|            case 0x59:
  ------------------
  |  Branch (16543:13): [True: 1.31k, False: 758k]
  ------------------
16544|   142k|            case 0x5A:
  ------------------
  |  Branch (16544:13): [True: 1.09k, False: 759k]
  ------------------
16545|   144k|            case 0x5B:
  ------------------
  |  Branch (16545:13): [True: 1.24k, False: 758k]
  ------------------
16546|   145k|            case 0x5C:
  ------------------
  |  Branch (16546:13): [True: 1.10k, False: 759k]
  ------------------
16547|   146k|            case 0x5D:
  ------------------
  |  Branch (16547:13): [True: 1.70k, False: 758k]
  ------------------
16548|   148k|            case 0x5E:
  ------------------
  |  Branch (16548:13): [True: 1.62k, False: 758k]
  ------------------
16549|   149k|            case 0x5F:
  ------------------
  |  Branch (16549:13): [True: 1.07k, False: 759k]
  ------------------
16550|   151k|            case 0x60:
  ------------------
  |  Branch (16550:13): [True: 1.94k, False: 758k]
  ------------------
16551|   152k|            case 0x61:
  ------------------
  |  Branch (16551:13): [True: 1.21k, False: 758k]
  ------------------
16552|   153k|            case 0x62:
  ------------------
  |  Branch (16552:13): [True: 1.25k, False: 758k]
  ------------------
16553|   154k|            case 0x63:
  ------------------
  |  Branch (16553:13): [True: 830, False: 759k]
  ------------------
16554|   156k|            case 0x64:
  ------------------
  |  Branch (16554:13): [True: 1.52k, False: 758k]
  ------------------
16555|   157k|            case 0x65:
  ------------------
  |  Branch (16555:13): [True: 1.41k, False: 758k]
  ------------------
16556|   158k|            case 0x66:
  ------------------
  |  Branch (16556:13): [True: 914, False: 759k]
  ------------------
16557|   160k|            case 0x67:
  ------------------
  |  Branch (16557:13): [True: 1.46k, False: 758k]
  ------------------
16558|   160k|            case 0x68:
  ------------------
  |  Branch (16558:13): [True: 888, False: 759k]
  ------------------
16559|   162k|            case 0x69:
  ------------------
  |  Branch (16559:13): [True: 1.00k, False: 759k]
  ------------------
16560|   163k|            case 0x6A:
  ------------------
  |  Branch (16560:13): [True: 1.52k, False: 758k]
  ------------------
16561|   164k|            case 0x6B:
  ------------------
  |  Branch (16561:13): [True: 1.24k, False: 758k]
  ------------------
16562|   165k|            case 0x6C:
  ------------------
  |  Branch (16562:13): [True: 897, False: 759k]
  ------------------
16563|   166k|            case 0x6D:
  ------------------
  |  Branch (16563:13): [True: 1.22k, False: 758k]
  ------------------
16564|   168k|            case 0x6E:
  ------------------
  |  Branch (16564:13): [True: 1.33k, False: 758k]
  ------------------
16565|   169k|            case 0x6F:
  ------------------
  |  Branch (16565:13): [True: 1.38k, False: 758k]
  ------------------
16566|   171k|            case 0x70:
  ------------------
  |  Branch (16566:13): [True: 1.51k, False: 758k]
  ------------------
16567|   172k|            case 0x71:
  ------------------
  |  Branch (16567:13): [True: 1.49k, False: 758k]
  ------------------
16568|   174k|            case 0x72:
  ------------------
  |  Branch (16568:13): [True: 1.53k, False: 758k]
  ------------------
16569|   175k|            case 0x73:
  ------------------
  |  Branch (16569:13): [True: 1.52k, False: 758k]
  ------------------
16570|   177k|            case 0x74:
  ------------------
  |  Branch (16570:13): [True: 1.53k, False: 758k]
  ------------------
16571|   178k|            case 0x75:
  ------------------
  |  Branch (16571:13): [True: 1.06k, False: 759k]
  ------------------
16572|   179k|            case 0x76:
  ------------------
  |  Branch (16572:13): [True: 1.17k, False: 758k]
  ------------------
16573|   180k|            case 0x77:
  ------------------
  |  Branch (16573:13): [True: 1.26k, False: 758k]
  ------------------
16574|   181k|            case 0x78:
  ------------------
  |  Branch (16574:13): [True: 950, False: 759k]
  ------------------
16575|   182k|            case 0x79:
  ------------------
  |  Branch (16575:13): [True: 741, False: 759k]
  ------------------
16576|   183k|            case 0x7A:
  ------------------
  |  Branch (16576:13): [True: 1.37k, False: 758k]
  ------------------
16577|   185k|            case 0x7B:
  ------------------
  |  Branch (16577:13): [True: 1.33k, False: 758k]
  ------------------
16578|   186k|            case 0x7C:
  ------------------
  |  Branch (16578:13): [True: 1.64k, False: 758k]
  ------------------
16579|   187k|            case 0x7D:
  ------------------
  |  Branch (16579:13): [True: 966, False: 759k]
  ------------------
16580|   189k|            case 0x7E:
  ------------------
  |  Branch (16580:13): [True: 1.59k, False: 758k]
  ------------------
16581|   191k|            case 0x7F:
  ------------------
  |  Branch (16581:13): [True: 2.01k, False: 758k]
  ------------------
16582|   191k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
16583|       |
16584|       |            // fixmap
16585|  7.77k|            case 0x80:
  ------------------
  |  Branch (16585:13): [True: 7.77k, False: 752k]
  ------------------
16586|  28.8k|            case 0x81:
  ------------------
  |  Branch (16586:13): [True: 21.1k, False: 739k]
  ------------------
16587|  32.0k|            case 0x82:
  ------------------
  |  Branch (16587:13): [True: 3.21k, False: 756k]
  ------------------
16588|  33.2k|            case 0x83:
  ------------------
  |  Branch (16588:13): [True: 1.19k, False: 758k]
  ------------------
16589|  34.8k|            case 0x84:
  ------------------
  |  Branch (16589:13): [True: 1.52k, False: 758k]
  ------------------
16590|  35.9k|            case 0x85:
  ------------------
  |  Branch (16590:13): [True: 1.09k, False: 759k]
  ------------------
16591|  36.6k|            case 0x86:
  ------------------
  |  Branch (16591:13): [True: 763, False: 759k]
  ------------------
16592|  37.7k|            case 0x87:
  ------------------
  |  Branch (16592:13): [True: 1.04k, False: 759k]
  ------------------
16593|  38.6k|            case 0x88:
  ------------------
  |  Branch (16593:13): [True: 911, False: 759k]
  ------------------
16594|  39.5k|            case 0x89:
  ------------------
  |  Branch (16594:13): [True: 906, False: 759k]
  ------------------
16595|  40.3k|            case 0x8A:
  ------------------
  |  Branch (16595:13): [True: 770, False: 759k]
  ------------------
16596|  41.3k|            case 0x8B:
  ------------------
  |  Branch (16596:13): [True: 1.08k, False: 759k]
  ------------------
16597|  42.7k|            case 0x8C:
  ------------------
  |  Branch (16597:13): [True: 1.34k, False: 758k]
  ------------------
16598|  44.1k|            case 0x8D:
  ------------------
  |  Branch (16598:13): [True: 1.41k, False: 758k]
  ------------------
16599|  45.1k|            case 0x8E:
  ------------------
  |  Branch (16599:13): [True: 954, False: 759k]
  ------------------
16600|  46.1k|            case 0x8F:
  ------------------
  |  Branch (16600:13): [True: 1.07k, False: 759k]
  ------------------
16601|  46.1k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
16602|       |
16603|       |            // fixarray
16604|  9.88k|            case 0x90:
  ------------------
  |  Branch (16604:13): [True: 9.88k, False: 750k]
  ------------------
16605|   291k|            case 0x91:
  ------------------
  |  Branch (16605:13): [True: 281k, False: 478k]
  ------------------
16606|   294k|            case 0x92:
  ------------------
  |  Branch (16606:13): [True: 2.63k, False: 757k]
  ------------------
16607|   298k|            case 0x93:
  ------------------
  |  Branch (16607:13): [True: 4.06k, False: 756k]
  ------------------
16608|   301k|            case 0x94:
  ------------------
  |  Branch (16608:13): [True: 3.06k, False: 757k]
  ------------------
16609|   303k|            case 0x95:
  ------------------
  |  Branch (16609:13): [True: 1.97k, False: 758k]
  ------------------
16610|   306k|            case 0x96:
  ------------------
  |  Branch (16610:13): [True: 3.33k, False: 756k]
  ------------------
16611|   308k|            case 0x97:
  ------------------
  |  Branch (16611:13): [True: 1.50k, False: 758k]
  ------------------
16612|   312k|            case 0x98:
  ------------------
  |  Branch (16612:13): [True: 4.24k, False: 755k]
  ------------------
16613|   315k|            case 0x99:
  ------------------
  |  Branch (16613:13): [True: 2.70k, False: 757k]
  ------------------
16614|   318k|            case 0x9A:
  ------------------
  |  Branch (16614:13): [True: 3.42k, False: 756k]
  ------------------
16615|   321k|            case 0x9B:
  ------------------
  |  Branch (16615:13): [True: 3.53k, False: 756k]
  ------------------
16616|   325k|            case 0x9C:
  ------------------
  |  Branch (16616:13): [True: 3.14k, False: 756k]
  ------------------
16617|   329k|            case 0x9D:
  ------------------
  |  Branch (16617:13): [True: 4.07k, False: 756k]
  ------------------
16618|   332k|            case 0x9E:
  ------------------
  |  Branch (16618:13): [True: 3.62k, False: 756k]
  ------------------
16619|   335k|            case 0x9F:
  ------------------
  |  Branch (16619:13): [True: 2.21k, False: 757k]
  ------------------
16620|   335k|                return enter_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
16621|       |
16622|       |            // fixstr
16623|  11.2k|            case 0xA0:
  ------------------
  |  Branch (16623:13): [True: 11.2k, False: 748k]
  ------------------
16624|  14.2k|            case 0xA1:
  ------------------
  |  Branch (16624:13): [True: 3.00k, False: 757k]
  ------------------
16625|  16.1k|            case 0xA2:
  ------------------
  |  Branch (16625:13): [True: 1.91k, False: 758k]
  ------------------
16626|  17.3k|            case 0xA3:
  ------------------
  |  Branch (16626:13): [True: 1.25k, False: 758k]
  ------------------
16627|  18.7k|            case 0xA4:
  ------------------
  |  Branch (16627:13): [True: 1.33k, False: 758k]
  ------------------
16628|  19.4k|            case 0xA5:
  ------------------
  |  Branch (16628:13): [True: 701, False: 759k]
  ------------------
16629|  20.0k|            case 0xA6:
  ------------------
  |  Branch (16629:13): [True: 664, False: 759k]
  ------------------
16630|  20.4k|            case 0xA7:
  ------------------
  |  Branch (16630:13): [True: 398, False: 759k]
  ------------------
16631|  21.4k|            case 0xA8:
  ------------------
  |  Branch (16631:13): [True: 965, False: 759k]
  ------------------
16632|  22.1k|            case 0xA9:
  ------------------
  |  Branch (16632:13): [True: 706, False: 759k]
  ------------------
16633|  22.7k|            case 0xAA:
  ------------------
  |  Branch (16633:13): [True: 554, False: 759k]
  ------------------
16634|  23.0k|            case 0xAB:
  ------------------
  |  Branch (16634:13): [True: 355, False: 759k]
  ------------------
16635|  23.5k|            case 0xAC:
  ------------------
  |  Branch (16635:13): [True: 451, False: 759k]
  ------------------
16636|  23.9k|            case 0xAD:
  ------------------
  |  Branch (16636:13): [True: 392, False: 759k]
  ------------------
16637|  24.1k|            case 0xAE:
  ------------------
  |  Branch (16637:13): [True: 222, False: 759k]
  ------------------
16638|  24.3k|            case 0xAF:
  ------------------
  |  Branch (16638:13): [True: 225, False: 759k]
  ------------------
16639|  24.6k|            case 0xB0:
  ------------------
  |  Branch (16639:13): [True: 268, False: 759k]
  ------------------
16640|  24.9k|            case 0xB1:
  ------------------
  |  Branch (16640:13): [True: 272, False: 759k]
  ------------------
16641|  25.2k|            case 0xB2:
  ------------------
  |  Branch (16641:13): [True: 364, False: 759k]
  ------------------
16642|  25.4k|            case 0xB3:
  ------------------
  |  Branch (16642:13): [True: 213, False: 759k]
  ------------------
16643|  25.7k|            case 0xB4:
  ------------------
  |  Branch (16643:13): [True: 295, False: 759k]
  ------------------
16644|  25.9k|            case 0xB5:
  ------------------
  |  Branch (16644:13): [True: 181, False: 759k]
  ------------------
16645|  26.1k|            case 0xB6:
  ------------------
  |  Branch (16645:13): [True: 235, False: 759k]
  ------------------
16646|  26.5k|            case 0xB7:
  ------------------
  |  Branch (16646:13): [True: 326, False: 759k]
  ------------------
16647|  26.7k|            case 0xB8:
  ------------------
  |  Branch (16647:13): [True: 204, False: 759k]
  ------------------
16648|  26.9k|            case 0xB9:
  ------------------
  |  Branch (16648:13): [True: 215, False: 759k]
  ------------------
16649|  27.1k|            case 0xBA:
  ------------------
  |  Branch (16649:13): [True: 236, False: 759k]
  ------------------
16650|  27.4k|            case 0xBB:
  ------------------
  |  Branch (16650:13): [True: 287, False: 759k]
  ------------------
16651|  27.6k|            case 0xBC:
  ------------------
  |  Branch (16651:13): [True: 177, False: 759k]
  ------------------
16652|  27.8k|            case 0xBD:
  ------------------
  |  Branch (16652:13): [True: 181, False: 759k]
  ------------------
16653|  28.0k|            case 0xBE:
  ------------------
  |  Branch (16653:13): [True: 190, False: 759k]
  ------------------
16654|  28.1k|            case 0xBF:
  ------------------
  |  Branch (16654:13): [True: 162, False: 759k]
  ------------------
16655|  30.2k|            case 0xD9: // str 8
  ------------------
  |  Branch (16655:13): [True: 2.04k, False: 758k]
  ------------------
16656|  32.1k|            case 0xDA: // str 16
  ------------------
  |  Branch (16656:13): [True: 1.90k, False: 758k]
  ------------------
16657|  32.5k|            case 0xDB: // str 32
  ------------------
  |  Branch (16657:13): [True: 387, False: 759k]
  ------------------
16658|  32.5k|            {
16659|  32.5k|                string_t s;
16660|  32.5k|                return get_msgpack_string(s) && sax->string(s);
  ------------------
  |  Branch (16660:24): [True: 31.1k, False: 1.30k]
  |  Branch (16660:49): [True: 31.1k, False: 0]
  ------------------
16661|  32.1k|            }
16662|       |
16663|  6.84k|            case 0xC0: // nil
  ------------------
  |  Branch (16663:13): [True: 6.84k, False: 753k]
  ------------------
16664|  6.84k|                return sax->null();
16665|       |
16666|  4.92k|            case 0xC2: // false
  ------------------
  |  Branch (16666:13): [True: 4.92k, False: 755k]
  ------------------
16667|  4.92k|                return sax->boolean(false);
16668|       |
16669|  4.13k|            case 0xC3: // true
  ------------------
  |  Branch (16669:13): [True: 4.13k, False: 755k]
  ------------------
16670|  4.13k|                return sax->boolean(true);
16671|       |
16672|  29.6k|            case 0xC4: // bin 8
  ------------------
  |  Branch (16672:13): [True: 29.6k, False: 730k]
  ------------------
16673|  32.1k|            case 0xC5: // bin 16
  ------------------
  |  Branch (16673:13): [True: 2.53k, False: 757k]
  ------------------
16674|  33.2k|            case 0xC6: // bin 32
  ------------------
  |  Branch (16674:13): [True: 1.09k, False: 759k]
  ------------------
16675|  35.6k|            case 0xC7: // ext 8
  ------------------
  |  Branch (16675:13): [True: 2.35k, False: 757k]
  ------------------
16676|  36.7k|            case 0xC8: // ext 16
  ------------------
  |  Branch (16676:13): [True: 1.17k, False: 758k]
  ------------------
16677|  37.3k|            case 0xC9: // ext 32
  ------------------
  |  Branch (16677:13): [True: 591, False: 759k]
  ------------------
16678|  42.6k|            case 0xD4: // fixext 1
  ------------------
  |  Branch (16678:13): [True: 5.30k, False: 754k]
  ------------------
16679|  44.2k|            case 0xD5: // fixext 2
  ------------------
  |  Branch (16679:13): [True: 1.59k, False: 758k]
  ------------------
16680|  45.3k|            case 0xD6: // fixext 4
  ------------------
  |  Branch (16680:13): [True: 1.11k, False: 759k]
  ------------------
16681|  47.0k|            case 0xD7: // fixext 8
  ------------------
  |  Branch (16681:13): [True: 1.66k, False: 758k]
  ------------------
16682|  47.3k|            case 0xD8: // fixext 16
  ------------------
  |  Branch (16682:13): [True: 256, False: 759k]
  ------------------
16683|  47.3k|            {
16684|  47.3k|                binary_t b;
16685|  47.3k|                return get_msgpack_binary(b) && sax->binary(b);
  ------------------
  |  Branch (16685:24): [True: 46.4k, False: 888]
  |  Branch (16685:49): [True: 46.4k, False: 0]
  ------------------
16686|  47.0k|            }
16687|       |
16688|  7.65k|            case 0xCA: // float 32
  ------------------
  |  Branch (16688:13): [True: 7.65k, False: 752k]
  ------------------
16689|  7.65k|            {
16690|  7.65k|                float number{};
16691|  7.65k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (16691:24): [True: 7.62k, False: 24]
  |  Branch (16691:46): [True: 7.62k, False: 0]
  ------------------
16692|  47.0k|            }
16693|       |
16694|  3.17k|            case 0xCB: // float 64
  ------------------
  |  Branch (16694:13): [True: 3.17k, False: 756k]
  ------------------
16695|  3.17k|            {
16696|  3.17k|                double number{};
16697|  3.17k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (16697:24): [True: 3.11k, False: 57]
  |  Branch (16697:46): [True: 3.11k, False: 0]
  ------------------
16698|  47.0k|            }
16699|       |
16700|  3.02k|            case 0xCC: // uint 8
  ------------------
  |  Branch (16700:13): [True: 3.02k, False: 757k]
  ------------------
16701|  3.02k|            {
16702|  3.02k|                std::uint8_t number{};
16703|  3.02k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16703:24): [True: 3.01k, False: 6]
  |  Branch (16703:46): [True: 3.01k, False: 0]
  ------------------
16704|  47.0k|            }
16705|       |
16706|  1.02k|            case 0xCD: // uint 16
  ------------------
  |  Branch (16706:13): [True: 1.02k, False: 759k]
  ------------------
16707|  1.02k|            {
16708|  1.02k|                std::uint16_t number{};
16709|  1.02k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16709:24): [True: 1.01k, False: 6]
  |  Branch (16709:46): [True: 1.01k, False: 0]
  ------------------
16710|  47.0k|            }
16711|       |
16712|  1.47k|            case 0xCE: // uint 32
  ------------------
  |  Branch (16712:13): [True: 1.47k, False: 758k]
  ------------------
16713|  1.47k|            {
16714|  1.47k|                std::uint32_t number{};
16715|  1.47k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16715:24): [True: 1.45k, False: 12]
  |  Branch (16715:46): [True: 1.45k, False: 0]
  ------------------
16716|  47.0k|            }
16717|       |
16718|  2.57k|            case 0xCF: // uint 64
  ------------------
  |  Branch (16718:13): [True: 2.57k, False: 757k]
  ------------------
16719|  2.57k|            {
16720|  2.57k|                std::uint64_t number{};
16721|  2.57k|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16721:24): [True: 2.53k, False: 36]
  |  Branch (16721:46): [True: 2.53k, False: 0]
  ------------------
16722|  47.0k|            }
16723|       |
16724|  5.04k|            case 0xD0: // int 8
  ------------------
  |  Branch (16724:13): [True: 5.04k, False: 755k]
  ------------------
16725|  5.04k|            {
16726|  5.04k|                std::int8_t number{};
16727|  5.04k|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16727:24): [True: 5.03k, False: 9]
  |  Branch (16727:46): [True: 5.03k, False: 0]
  ------------------
16728|  47.0k|            }
16729|       |
16730|  1.35k|            case 0xD1: // int 16
  ------------------
  |  Branch (16730:13): [True: 1.35k, False: 758k]
  ------------------
16731|  1.35k|            {
16732|  1.35k|                std::int16_t number{};
16733|  1.35k|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16733:24): [True: 1.34k, False: 12]
  |  Branch (16733:46): [True: 1.34k, False: 0]
  ------------------
16734|  47.0k|            }
16735|       |
16736|  1.58k|            case 0xD2: // int 32
  ------------------
  |  Branch (16736:13): [True: 1.58k, False: 758k]
  ------------------
16737|  1.58k|            {
16738|  1.58k|                std::int32_t number{};
16739|  1.58k|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16739:24): [True: 1.55k, False: 30]
  |  Branch (16739:46): [True: 1.55k, False: 0]
  ------------------
16740|  47.0k|            }
16741|       |
16742|  2.52k|            case 0xD3: // int 64
  ------------------
  |  Branch (16742:13): [True: 2.52k, False: 757k]
  ------------------
16743|  2.52k|            {
16744|  2.52k|                std::int64_t number{};
16745|  2.52k|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16745:24): [True: 2.45k, False: 66]
  |  Branch (16745:46): [True: 2.45k, False: 0]
  ------------------
16746|  47.0k|            }
16747|       |
16748|  4.46k|            case 0xDC: // array 16
  ------------------
  |  Branch (16748:13): [True: 4.46k, False: 755k]
  ------------------
16749|  4.46k|            {
16750|  4.46k|                std::uint16_t len{};
16751|  4.46k|                return get_number(len) && enter_array(static_cast<std::size_t>(len));
  ------------------
  |  Branch (16751:24): [True: 4.43k, False: 36]
  |  Branch (16751:43): [True: 4.43k, False: 0]
  ------------------
16752|  47.0k|            }
16753|       |
16754|    675|            case 0xDD: // array 32
  ------------------
  |  Branch (16754:13): [True: 675, False: 759k]
  ------------------
16755|    675|            {
16756|    675|                std::uint32_t len{};
16757|    675|                return get_number(len) && enter_array(conditional_static_cast<std::size_t>(len));
  ------------------
  |  Branch (16757:24): [True: 639, False: 36]
  |  Branch (16757:43): [True: 639, False: 0]
  ------------------
16758|  47.0k|            }
16759|       |
16760|  1.59k|            case 0xDE: // map 16
  ------------------
  |  Branch (16760:13): [True: 1.59k, False: 758k]
  ------------------
16761|  1.59k|            {
16762|  1.59k|                std::uint16_t len{};
16763|  1.59k|                return get_number(len) && enter_object(static_cast<std::size_t>(len));
  ------------------
  |  Branch (16763:24): [True: 1.58k, False: 9]
  |  Branch (16763:43): [True: 1.58k, False: 0]
  ------------------
16764|  47.0k|            }
16765|       |
16766|    495|            case 0xDF: // map 32
  ------------------
  |  Branch (16766:13): [True: 495, False: 759k]
  ------------------
16767|    495|            {
16768|    495|                std::uint32_t len{};
16769|    495|                return get_number(len) && enter_object(conditional_static_cast<std::size_t>(len));
  ------------------
  |  Branch (16769:24): [True: 483, False: 12]
  |  Branch (16769:43): [True: 483, False: 0]
  ------------------
16770|  47.0k|            }
16771|       |
16772|       |            // negative fixint
16773|  1.81k|            case 0xE0:
  ------------------
  |  Branch (16773:13): [True: 1.81k, False: 758k]
  ------------------
16774|  3.50k|            case 0xE1:
  ------------------
  |  Branch (16774:13): [True: 1.69k, False: 758k]
  ------------------
16775|  4.64k|            case 0xE2:
  ------------------
  |  Branch (16775:13): [True: 1.13k, False: 759k]
  ------------------
16776|  5.87k|            case 0xE3:
  ------------------
  |  Branch (16776:13): [True: 1.22k, False: 758k]
  ------------------
16777|  6.96k|            case 0xE4:
  ------------------
  |  Branch (16777:13): [True: 1.09k, False: 759k]
  ------------------
16778|  9.12k|            case 0xE5:
  ------------------
  |  Branch (16778:13): [True: 2.15k, False: 757k]
  ------------------
16779|  10.2k|            case 0xE6:
  ------------------
  |  Branch (16779:13): [True: 1.10k, False: 759k]
  ------------------
16780|  11.4k|            case 0xE7:
  ------------------
  |  Branch (16780:13): [True: 1.17k, False: 758k]
  ------------------
16781|  12.4k|            case 0xE8:
  ------------------
  |  Branch (16781:13): [True: 1.08k, False: 759k]
  ------------------
16782|  13.5k|            case 0xE9:
  ------------------
  |  Branch (16782:13): [True: 1.09k, False: 759k]
  ------------------
16783|  14.7k|            case 0xEA:
  ------------------
  |  Branch (16783:13): [True: 1.19k, False: 758k]
  ------------------
16784|  15.6k|            case 0xEB:
  ------------------
  |  Branch (16784:13): [True: 856, False: 759k]
  ------------------
16785|  16.4k|            case 0xEC:
  ------------------
  |  Branch (16785:13): [True: 813, False: 759k]
  ------------------
16786|  17.8k|            case 0xED:
  ------------------
  |  Branch (16786:13): [True: 1.35k, False: 758k]
  ------------------
16787|  19.3k|            case 0xEE:
  ------------------
  |  Branch (16787:13): [True: 1.51k, False: 758k]
  ------------------
16788|  20.6k|            case 0xEF:
  ------------------
  |  Branch (16788:13): [True: 1.32k, False: 758k]
  ------------------
16789|  22.5k|            case 0xF0:
  ------------------
  |  Branch (16789:13): [True: 1.94k, False: 758k]
  ------------------
16790|  24.2k|            case 0xF1:
  ------------------
  |  Branch (16790:13): [True: 1.64k, False: 758k]
  ------------------
16791|  25.6k|            case 0xF2:
  ------------------
  |  Branch (16791:13): [True: 1.44k, False: 758k]
  ------------------
16792|  26.8k|            case 0xF3:
  ------------------
  |  Branch (16792:13): [True: 1.17k, False: 758k]
  ------------------
16793|  28.1k|            case 0xF4:
  ------------------
  |  Branch (16793:13): [True: 1.28k, False: 758k]
  ------------------
16794|  29.6k|            case 0xF5:
  ------------------
  |  Branch (16794:13): [True: 1.51k, False: 758k]
  ------------------
16795|  30.8k|            case 0xF6:
  ------------------
  |  Branch (16795:13): [True: 1.19k, False: 758k]
  ------------------
16796|  32.1k|            case 0xF7:
  ------------------
  |  Branch (16796:13): [True: 1.27k, False: 758k]
  ------------------
16797|  33.7k|            case 0xF8:
  ------------------
  |  Branch (16797:13): [True: 1.60k, False: 758k]
  ------------------
16798|  34.9k|            case 0xF9:
  ------------------
  |  Branch (16798:13): [True: 1.18k, False: 758k]
  ------------------
16799|  35.7k|            case 0xFA:
  ------------------
  |  Branch (16799:13): [True: 809, False: 759k]
  ------------------
16800|  37.3k|            case 0xFB:
  ------------------
  |  Branch (16800:13): [True: 1.59k, False: 758k]
  ------------------
16801|  38.6k|            case 0xFC:
  ------------------
  |  Branch (16801:13): [True: 1.35k, False: 758k]
  ------------------
16802|  39.9k|            case 0xFD:
  ------------------
  |  Branch (16802:13): [True: 1.32k, False: 758k]
  ------------------
16803|  42.5k|            case 0xFE:
  ------------------
  |  Branch (16803:13): [True: 2.60k, False: 757k]
  ------------------
16804|  51.0k|            case 0xFF:
  ------------------
  |  Branch (16804:13): [True: 8.47k, False: 751k]
  ------------------
16805|  51.0k|                return sax->number_integer(static_cast<std::int8_t>(current));
16806|       |
16807|      9|            default: // anything else
  ------------------
  |  Branch (16807:13): [True: 9, False: 760k]
  ------------------
16808|      9|            {
16809|      9|                return unexpected_byte("invalid byte", "value");
16810|  42.5k|            }
16811|   760k|        }
16812|   760k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE18get_msgpack_binaryERNS0_27byte_container_with_subtypeISF_EE:
16996|  47.3k|    {
16997|       |        // helper function to set the subtype
16998|  47.3k|        auto assign_and_return_true = [&result](std::int8_t subtype)
16999|  47.3k|        {
17000|  47.3k|            result.set_subtype(static_cast<std::uint8_t>(subtype));
17001|  47.3k|            return true;
17002|  47.3k|        };
17003|       |
17004|  47.3k|        switch (current)
17005|  47.3k|        {
17006|  29.6k|            case 0xC4: // bin 8
  ------------------
  |  Branch (17006:13): [True: 29.6k, False: 17.6k]
  ------------------
17007|  29.6k|            {
17008|  29.6k|                std::uint8_t len{};
17009|  29.6k|                return get_number(len) &&
  ------------------
  |  Branch (17009:24): [True: 29.6k, False: 15]
  ------------------
17010|  29.6k|                       get_binary(len, result);
  ------------------
  |  Branch (17010:24): [True: 29.5k, False: 78]
  ------------------
17011|      0|            }
17012|       |
17013|  2.53k|            case 0xC5: // bin 16
  ------------------
  |  Branch (17013:13): [True: 2.53k, False: 44.7k]
  ------------------
17014|  2.53k|            {
17015|  2.53k|                std::uint16_t len{};
17016|  2.53k|                return get_number(len) &&
  ------------------
  |  Branch (17016:24): [True: 2.50k, False: 27]
  ------------------
17017|  2.50k|                       get_binary(len, result);
  ------------------
  |  Branch (17017:24): [True: 2.33k, False: 174]
  ------------------
17018|      0|            }
17019|       |
17020|  1.09k|            case 0xC6: // bin 32
  ------------------
  |  Branch (17020:13): [True: 1.09k, False: 46.2k]
  ------------------
17021|  1.09k|            {
17022|  1.09k|                std::uint32_t len{};
17023|  1.09k|                return get_number(len) &&
  ------------------
  |  Branch (17023:24): [True: 1.05k, False: 36]
  ------------------
17024|  1.05k|                       get_binary(len, result);
  ------------------
  |  Branch (17024:24): [True: 762, False: 294]
  ------------------
17025|      0|            }
17026|       |
17027|  2.35k|            case 0xC7: // ext 8
  ------------------
  |  Branch (17027:13): [True: 2.35k, False: 44.9k]
  ------------------
17028|  2.35k|            {
17029|  2.35k|                std::uint8_t len{};
17030|  2.35k|                std::int8_t subtype{};
17031|  2.35k|                return get_number(len) &&
  ------------------
  |  Branch (17031:24): [True: 2.34k, False: 9]
  ------------------
17032|  2.34k|                       get_number(subtype) &&
  ------------------
  |  Branch (17032:24): [True: 2.34k, False: 3]
  ------------------
17033|  2.34k|                       get_binary(len, result) &&
  ------------------
  |  Branch (17033:24): [True: 2.32k, False: 12]
  ------------------
17034|  2.32k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17034:24): [True: 2.32k, False: 0]
  ------------------
17035|      0|            }
17036|       |
17037|  1.17k|            case 0xC8: // ext 16
  ------------------
  |  Branch (17037:13): [True: 1.17k, False: 46.1k]
  ------------------
17038|  1.17k|            {
17039|  1.17k|                std::uint16_t len{};
17040|  1.17k|                std::int8_t subtype{};
17041|  1.17k|                return get_number(len) &&
  ------------------
  |  Branch (17041:24): [True: 1.15k, False: 24]
  ------------------
17042|  1.15k|                       get_number(subtype) &&
  ------------------
  |  Branch (17042:24): [True: 1.13k, False: 15]
  ------------------
17043|  1.13k|                       get_binary(len, result) &&
  ------------------
  |  Branch (17043:24): [True: 1.11k, False: 24]
  ------------------
17044|  1.11k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17044:24): [True: 1.11k, False: 0]
  ------------------
17045|      0|            }
17046|       |
17047|    591|            case 0xC9: // ext 32
  ------------------
  |  Branch (17047:13): [True: 591, False: 46.7k]
  ------------------
17048|    591|            {
17049|    591|                std::uint32_t len{};
17050|    591|                std::int8_t subtype{};
17051|    591|                return get_number(len) &&
  ------------------
  |  Branch (17051:24): [True: 558, False: 33]
  ------------------
17052|    558|                       get_number(subtype) &&
  ------------------
  |  Branch (17052:24): [True: 540, False: 18]
  ------------------
17053|    540|                       get_binary(len, result) &&
  ------------------
  |  Branch (17053:24): [True: 531, False: 9]
  ------------------
17054|    531|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17054:24): [True: 531, False: 0]
  ------------------
17055|      0|            }
17056|       |
17057|  5.30k|            case 0xD4: // fixext 1
  ------------------
  |  Branch (17057:13): [True: 5.30k, False: 41.9k]
  ------------------
17058|  5.30k|            {
17059|  5.30k|                std::int8_t subtype{};
17060|  5.30k|                return get_number(subtype) &&
  ------------------
  |  Branch (17060:24): [True: 5.29k, False: 9]
  ------------------
17061|  5.29k|                       get_binary(1, result) &&
  ------------------
  |  Branch (17061:24): [True: 5.28k, False: 6]
  ------------------
17062|  5.28k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17062:24): [True: 5.28k, False: 0]
  ------------------
17063|      0|            }
17064|       |
17065|  1.59k|            case 0xD5: // fixext 2
  ------------------
  |  Branch (17065:13): [True: 1.59k, False: 45.7k]
  ------------------
17066|  1.59k|            {
17067|  1.59k|                std::int8_t subtype{};
17068|  1.59k|                return get_number(subtype) &&
  ------------------
  |  Branch (17068:24): [True: 1.58k, False: 12]
  ------------------
17069|  1.58k|                       get_binary(2, result) &&
  ------------------
  |  Branch (17069:24): [True: 1.56k, False: 12]
  ------------------
17070|  1.56k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17070:24): [True: 1.56k, False: 0]
  ------------------
17071|      0|            }
17072|       |
17073|  1.11k|            case 0xD6: // fixext 4
  ------------------
  |  Branch (17073:13): [True: 1.11k, False: 46.1k]
  ------------------
17074|  1.11k|            {
17075|  1.11k|                std::int8_t subtype{};
17076|  1.11k|                return get_number(subtype) &&
  ------------------
  |  Branch (17076:24): [True: 1.10k, False: 6]
  ------------------
17077|  1.10k|                       get_binary(4, result) &&
  ------------------
  |  Branch (17077:24): [True: 1.09k, False: 9]
  ------------------
17078|  1.09k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17078:24): [True: 1.09k, False: 0]
  ------------------
17079|      0|            }
17080|       |
17081|  1.66k|            case 0xD7: // fixext 8
  ------------------
  |  Branch (17081:13): [True: 1.66k, False: 45.6k]
  ------------------
17082|  1.66k|            {
17083|  1.66k|                std::int8_t subtype{};
17084|  1.66k|                return get_number(subtype) &&
  ------------------
  |  Branch (17084:24): [True: 1.65k, False: 9]
  ------------------
17085|  1.65k|                       get_binary(8, result) &&
  ------------------
  |  Branch (17085:24): [True: 1.63k, False: 18]
  ------------------
17086|  1.63k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17086:24): [True: 1.63k, False: 0]
  ------------------
17087|      0|            }
17088|       |
17089|    256|            case 0xD8: // fixext 16
  ------------------
  |  Branch (17089:13): [True: 256, False: 47.0k]
  ------------------
17090|    256|            {
17091|    256|                std::int8_t subtype{};
17092|    256|                return get_number(subtype) &&
  ------------------
  |  Branch (17092:24): [True: 244, False: 12]
  ------------------
17093|    244|                       get_binary(16, result) &&
  ------------------
  |  Branch (17093:24): [True: 220, False: 24]
  ------------------
17094|    220|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17094:24): [True: 220, False: 0]
  ------------------
17095|      0|            }
17096|       |
17097|      0|            default:           // LCOV_EXCL_LINE
  ------------------
  |  Branch (17097:13): [True: 0, False: 47.3k]
  ------------------
17098|      0|                return false;  // LCOV_EXCL_LINE
17099|  47.3k|        }
17100|  47.3k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE18get_msgpack_binaryERNS0_27byte_container_with_subtypeISF_EEENKUlaE_clEa:
16999|  13.7k|        {
17000|  13.7k|            result.set_subtype(static_cast<std::uint8_t>(subtype));
17001|  13.7k|            return true;
17002|  13.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_19json_sax_dom_parserISG_SK_EEE10get_numberIaLb0EEEbRT_:
18739|  19.0k|    {
18740|       |        // read in the original format
18741|       |
18742|  19.0k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  19.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 31, False: 18.9k]
  |  |  ------------------
  ------------------
18743|     31|        {
18744|     31|            return false;
18745|     31|        }
18746|  18.9k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 18.9k, False: 62]
  |  Branch (18746:34): [Folded, False: 18.9k]
  |  Branch (18746:57): [True: 0, False: 18.9k]
  ------------------
18747|  18.9k|        {
18748|  18.9k|            byte_swap(result);
18749|  18.9k|        }
18750|  18.9k|        return true;
18751|  19.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_19json_sax_dom_parserISG_SK_EEE6get_toIaEEbRT_PKc:
18667|  19.0k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  19.0k|        auto new_chars_read = ia.get_elements(&dest);
18671|  19.0k|        chars_read += new_chars_read;
18672|  19.0k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  19.0k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 93, False: 18.9k]
  |  |  ------------------
  ------------------
18673|     93|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     93|            ++chars_read;
18676|     93|            static_cast<void>(report_eof(context));
18677|     93|            return false;
18678|     93|        }
18679|  18.9k|        return true;
18680|  19.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIaEEmPT_m:
 8644|  19.0k|    {
 8645|  19.0k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  19.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIaEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  19.0k|    {
 8703|  19.0k|        const std::size_t wanted = count * sizeof(T);
 8704|  19.0k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  19.0k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  19.0k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  19.0k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 18.9k, False: 93]
  |  |  ------------------
  ------------------
 8707|  18.9k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  18.9k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  18.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 18.9k, False: 0]
  ------------------
 8712|  18.9k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  18.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 18.9k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  18.9k|            std::memcpy(dest, &*current, copied);
 8716|  18.9k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  18.9k|        }
 8718|  19.0k|        return copied;
 8719|  19.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_19json_sax_dom_parserISG_SK_EEE9byte_swapIaEEvRT_:
18698|  18.9k|    {
18699|  18.9k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  18.9k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  18.9k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 18.9k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  18.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_19json_sax_dom_parserISG_SK_EEE11emit_signedIaEEbT_:
18771|  5.03k|    {
18772|  5.03k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  5.03k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 5.03k, False: 0]
  |  |  ------------------
  ------------------
18773|  5.03k|        {
18774|  5.03k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  5.03k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIlaEEbT0_:
 5101|  9.69k|{
 5102|  9.69k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  9.69k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IlaLb1EvE4testEa:
 5094|  9.69k|    {
 5095|  9.69k|        return true;
 5096|  9.69k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIsLb0EEEbRT_:
18739|  1.35k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.35k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.35k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4, False: 1.34k]
  |  |  ------------------
  ------------------
18743|      4|        {
18744|      4|            return false;
18745|      4|        }
18746|  1.34k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.34k, False: 8]
  |  Branch (18746:34): [Folded, False: 1.34k]
  |  Branch (18746:57): [True: 0, False: 1.34k]
  ------------------
18747|  1.34k|        {
18748|  1.34k|            byte_swap(result);
18749|  1.34k|        }
18750|  1.34k|        return true;
18751|  1.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE6get_toIsEEbRT_PKc:
18667|  1.35k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.35k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.35k|        chars_read += new_chars_read;
18672|  1.35k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.35k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 12, False: 1.34k]
  |  |  ------------------
  ------------------
18673|     12|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     12|            ++chars_read;
18676|     12|            static_cast<void>(report_eof(context));
18677|     12|            return false;
18678|     12|        }
18679|  1.34k|        return true;
18680|  1.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E12get_elementsIsEEmPT_m:
 8644|  1.35k|    {
 8645|  1.35k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E17get_elements_implIsEEmPT_mNSt3__117integral_constantIbLb1EEE:
 8702|  1.35k|    {
 8703|  1.35k|        const std::size_t wanted = count * sizeof(T);
 8704|  1.35k|        const std::size_t available = remaining_count() * sizeof(char_type);
 8705|  1.35k|        const std::size_t copied = (std::min)(wanted, available);
 8706|  1.35k|        if (JSON_HEDLEY_LIKELY(copied != 0))
  ------------------
  |  | 1666|  1.35k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.34k, False: 6]
  |  |  ------------------
  ------------------
 8707|  1.34k|        {
 8708|       |            // the copy must stay within both buffers: the caller-provided
 8709|       |            // destination holds `wanted` bytes and the remaining input range
 8710|       |            // holds `available` bytes, and `copied` is the minimum of the two
 8711|  1.34k|            JSON_ASSERT(copied <= wanted);    // does not overrun the destination
  ------------------
  |  | 2591|  1.34k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8711:13): [True: 1.34k, False: 0]
  ------------------
 8712|  1.34k|            JSON_ASSERT(copied <= available); // does not read past the input end
  ------------------
  |  | 2591|  1.34k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8712:13): [True: 1.34k, False: 0]
  ------------------
 8713|       |            // &*current yields the raw address for both raw pointers and
 8714|       |            // non-pointer contiguous iterators (e.g. std::vector's iterator)
 8715|  1.34k|            std::memcpy(dest, &*current, copied);
 8716|  1.34k|            std::advance(current, static_cast<typename std::iterator_traits<IteratorType>::difference_type>(copied / sizeof(char_type)));
 8717|  1.34k|        }
 8718|  1.35k|        return copied;
 8719|  1.35k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE9byte_swapIsEEvRT_:
18698|  1.34k|    {
18699|  1.34k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.34k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  2.68k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 1.34k, False: 1.34k]
  ------------------
18715|  1.34k|            {
18716|  1.34k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  1.34k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  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_19json_sax_dom_parserISG_SK_EEE11emit_signedIsEEbT_:
18771|  1.34k|    {
18772|  1.34k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  1.34k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.34k, False: 0]
  |  |  ------------------
  ------------------
18773|  1.34k|        {
18774|  1.34k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  1.34k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIlsEEbT0_:
 5101|  2.51k|{
 5102|  2.51k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|  2.51k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IlsLb1EvE4testEs:
 5094|  2.51k|    {
 5095|  2.51k|        return true;
 5096|  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_19json_sax_dom_parserISG_SK_EEE10get_numberIiLb0EEEbRT_:
18739|  1.58k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.58k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.58k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 10, False: 1.57k]
  |  |  ------------------
  ------------------
18743|     10|        {
18744|     10|            return false;
18745|     10|        }
18746|  1.57k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.55k, False: 20]
  |  Branch (18746:34): [Folded, False: 1.55k]
  |  Branch (18746:57): [True: 0, False: 1.55k]
  ------------------
18747|  1.55k|        {
18748|  1.55k|            byte_swap(result);
18749|  1.55k|        }
18750|  1.57k|        return true;
18751|  1.58k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE10get_numberIlLb0EEEbRT_:
18739|  2.52k|    {
18740|       |        // read in the original format
18741|       |
18742|  2.52k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  2.52k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 2.50k]
  |  |  ------------------
  ------------------
18743|     22|        {
18744|     22|            return false;
18745|     22|        }
18746|  2.50k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 2.45k, False: 44]
  |  Branch (18746:34): [Folded, False: 2.45k]
  |  Branch (18746:57): [True: 0, False: 2.45k]
  ------------------
18747|  2.45k|        {
18748|  2.45k|            byte_swap(result);
18749|  2.45k|        }
18750|  2.50k|        return true;
18751|  2.52k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE3getEv:
18652|   854k|    {
18653|   854k|        ++chars_read;
18654|   854k|        return current = ia.get_character();
18655|   854k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_E13get_characterEv:
 8590|   854k|    {
 8591|   854k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|   854k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 831k, False: 23.4k]
  |  |  ------------------
  ------------------
 8592|   831k|        {
 8593|   831k|            auto result = char_traits<char_type>::to_int_type(*current);
 8594|   831k|            std::advance(current, 1);
 8595|   831k|            return result;
 8596|   831k|        }
 8597|       |
 8598|  23.4k|        ++eof_reads;
 8599|  23.4k|        return char_traits<char_type>::eof();
 8600|   854k|    }
_ZN8nlohmann16json_abi_v3_12_06detail11char_traitsIhE11to_int_typeEh:
 4289|  1.06M|    {
 4290|  1.06M|        return static_cast<int_type>(c);
 4291|  1.06M|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSS_:
19116|  1.08k|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|  1.08k|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|  1.08k|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 9, False: 1.07k]
  ------------------
19120|  1.08k|    }
_ZN8nlohmann16json_abi_v3_12_06detail6concatINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJRKS9_RPKcRA16_SC_S9_EEET_DpOT0_:
 5318|  2.15k|{
 5319|  2.15k|    OutStringType str;
 5320|  2.15k|    str.reserve(concat_length(args...));
 5321|  2.15k|    concat_into(str, std::forward<Args>(args)...);
 5322|  2.15k|    return str;
 5323|  2.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail13concat_lengthINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEJPKcA16_cS9_EEEmRKT_DpRKT0_:
 5228|  2.15k|{
 5229|  2.15k|    return str.size() + concat_length(rest...);
 5230|  2.15k|}
_ZN8nlohmann16json_abi_v3_12_06detail11concat_intoINSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEERKS9_JRPKcRA16_SC_S9_ETnNS3_9enable_ifIXsr24detect_string_can_appendIT_T0_EE5valueEiE4typeELi0EEEvRSI_OSJ_DpOT1_:
 5281|  2.15k|{
 5282|  2.15k|    out.append(std::forward<Arg>(arg));
 5283|  2.15k|    concat_into(out, std::forward<Args>(rest)...);
 5284|  2.15k|}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEC2ENS0_6detail7value_tE:
32384|   701k|        : m_data(stored_kind(v))
32385|   701k|    {
32386|   701k|        assert_invariant();
32387|   701k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE11stored_kindENS0_6detail7value_tE:
30581|   701k|    {
30582|   701k|        return (std::is_same<number_integer_t, number_unsigned_t>::value && t == value_t::number_unsigned) ? value_t::number_integer : t;
  ------------------
  |  Branch (30582:17): [Folded, False: 701k]
  |  Branch (30582:77): [True: 0, False: 0]
  ------------------
30583|   701k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4dataC2ENS0_6detail7value_tE:
36324|   701k|            : m_type(v), m_value(v)
36325|   701k|        {
36326|   701k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_valueC2ENS0_6detail7value_tE:
30664|   701k|        {
30665|   701k|            switch (t)
30666|   701k|            {
30667|  90.0k|                case value_t::object:
  ------------------
  |  Branch (30667:17): [True: 90.0k, False: 611k]
  ------------------
30668|   698k|                case value_t::array:
  ------------------
  |  Branch (30668:17): [True: 608k, False: 92.8k]
  ------------------
30669|   698k|                case value_t::string:
  ------------------
  |  Branch (30669:17): [True: 0, False: 701k]
  ------------------
30670|   698k|                case value_t::binary:
  ------------------
  |  Branch (30670:17): [True: 0, False: 701k]
  ------------------
30671|   698k|                {
30672|       |                    // allocating: kept out of line, so the scalar cases below inline
30673|   698k|                    init_owned(t);
30674|   698k|                    break;
30675|   698k|                }
30676|       |
30677|      0|                case value_t::boolean:
  ------------------
  |  Branch (30677:17): [True: 0, False: 701k]
  ------------------
30678|      0|                {
30679|      0|                    boolean = static_cast<boolean_t>(false);
30680|      0|                    break;
30681|   698k|                }
30682|       |
30683|      0|                case value_t::number_integer:
  ------------------
  |  Branch (30683:17): [True: 0, False: 701k]
  ------------------
30684|      0|                {
30685|      0|                    number_integer = static_cast<number_integer_t>(0);
30686|      0|                    break;
30687|   698k|                }
30688|       |
30689|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (30689:17): [True: 0, False: 701k]
  ------------------
30690|      0|                {
30691|      0|                    number_unsigned = static_cast<number_unsigned_t>(0);
30692|      0|                    break;
30693|   698k|                }
30694|       |
30695|      0|                case value_t::number_float:
  ------------------
  |  Branch (30695:17): [True: 0, False: 701k]
  ------------------
30696|      0|                {
30697|      0|                    number_float = static_cast<number_float_t>(0.0);
30698|      0|                    break;
30699|   698k|                }
30700|       |
30701|      0|                case value_t::null:
  ------------------
  |  Branch (30701:17): [True: 0, False: 701k]
  ------------------
30702|      0|                {
30703|      0|                    object = nullptr;  // silence warning, see #821
30704|      0|                    break;
30705|   698k|                }
30706|       |
30707|  2.86k|                case value_t::discarded:
  ------------------
  |  Branch (30707:17): [True: 2.86k, False: 698k]
  ------------------
30708|  2.86k|                default:
  ------------------
  |  Branch (30708:17): [True: 0, False: 701k]
  ------------------
30709|  2.86k|                {
30710|  2.86k|                    object = nullptr;  // silence warning, see #821
30711|  2.86k|                    if (JSON_HEDLEY_UNLIKELY(t == value_t::null))
  ------------------
  |  | 1667|  2.86k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 2.86k]
  |  |  ------------------
  ------------------
30712|      0|                    {
30713|      0|                        detail::throw_literal<other_error>(detail::exception_id::internal_error, "961c151d2e87f2686a955a9be24d316f1362bf21 3.12.0", nullptr); // LCOV_EXCL_LINE
30714|      0|                    }
30715|  2.86k|                    break;
30716|  2.86k|                }
30717|   701k|            }
30718|   701k|        }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10json_value10init_ownedENS0_6detail7value_tE:
30722|   698k|        {
30723|   698k|            switch (t)
30724|   698k|            {
30725|  90.0k|                case value_t::object:
  ------------------
  |  Branch (30725:17): [True: 90.0k, False: 608k]
  ------------------
30726|  90.0k|                    object = create<object_t>();
30727|  90.0k|                    break;
30728|   608k|                case value_t::array:
  ------------------
  |  Branch (30728:17): [True: 608k, False: 90.0k]
  ------------------
30729|   608k|                    array = create<array_t>();
30730|   608k|                    break;
30731|      0|                case value_t::string:
  ------------------
  |  Branch (30731:17): [True: 0, False: 698k]
  ------------------
30732|      0|                    string = create<string_t>("");
30733|      0|                    break;
30734|      0|                case value_t::binary:
  ------------------
  |  Branch (30734:17): [True: 0, False: 698k]
  ------------------
30735|      0|                    binary = create<binary_t>();
30736|      0|                    break;
30737|      0|                case value_t::null:
  ------------------
  |  Branch (30737:17): [True: 0, False: 698k]
  ------------------
30738|      0|                case value_t::boolean:
  ------------------
  |  Branch (30738:17): [True: 0, False: 698k]
  ------------------
30739|      0|                case value_t::number_integer:
  ------------------
  |  Branch (30739:17): [True: 0, False: 698k]
  ------------------
30740|      0|                case value_t::number_unsigned:
  ------------------
  |  Branch (30740:17): [True: 0, False: 698k]
  ------------------
30741|      0|                case value_t::number_float:
  ------------------
  |  Branch (30741:17): [True: 0, False: 698k]
  ------------------
30742|      0|                case value_t::discarded:
  ------------------
  |  Branch (30742:17): [True: 0, False: 698k]
  ------------------
30743|      0|                default:
  ------------------
  |  Branch (30743:17): [True: 0, False: 698k]
  ------------------
30744|      0|                    break;
30745|   698k|            }
30746|   698k|        }
_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_:
30589|  90.0k|    {
30590|  90.0k|        AllocatorType<T> alloc;
30591|  90.0k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|  90.0k|        auto deleter = [&](T * obj)
30594|  90.0k|        {
30595|  90.0k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|  90.0k|        };
30597|  90.0k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|  90.0k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|  90.0k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|  90.0k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 90.0k, False: 0]
  ------------------
30600|  90.0k|        return obj.release();
30601|  90.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE6createINS4_ISE_NS8_ISE_EEEEJEEEPT_DpOT0_:
30589|   608k|    {
30590|   608k|        AllocatorType<T> alloc;
30591|   608k|        using AllocatorTraits = std::allocator_traits<AllocatorType<T>>;
30592|       |
30593|   608k|        auto deleter = [&](T * obj)
30594|   608k|        {
30595|   608k|            AllocatorTraits::deallocate(alloc, obj, 1);
30596|   608k|        };
30597|   608k|        std::unique_ptr<T, decltype(deleter)> obj(AllocatorTraits::allocate(alloc, 1), deleter);
30598|   608k|        AllocatorTraits::construct(alloc, obj.get(), std::forward<Args>(args)...);
30599|   608k|        JSON_ASSERT(obj);
  ------------------
  |  | 2591|   608k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (30599:9): [True: 608k, False: 0]
  ------------------
30600|   608k|        return obj.release();
30601|   608k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvEaSESE_:
32797|   186k|    {
32798|       |        // check that the passed value is valid
32799|   186k|        other.assert_invariant();
32800|       |
32801|   186k|        using std::swap;
32802|   186k|        swap(m_data.m_type, other.m_data.m_type);
32803|   186k|        swap(m_data.m_value, other.m_data.m_value);
32804|       |
32805|       |#if JSON_DIAGNOSTIC_POSITIONS
32806|       |        swap(start_position, other.start_position);
32807|       |        swap(end_position, other.end_position);
32808|       |#endif
32809|       |
32810|   186k|        json_base_class_t::operator=(std::move(other));
32811|       |
32812|   186k|        set_parents();
32813|   186k|        assert_invariant();
32814|   186k|        return *this;
32815|   186k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EENS1_19json_sax_dom_parserISG_SK_EEED2Ev:
14954|  27.1k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterIPKhSJ_EEED2Ev:
13881|  27.1k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__16vectorIhNS3_9allocatorIhEEEETnNS3_9enable_ifIXsr28is_contiguous_byte_containerIT_EE5valueEiE4typeELi0EEEDTcl13input_adaptercldtfp_4dataEplcldtfp_4dataEcldtfp_4sizeEEERKS9_:
 9104|  19.6k|{
 9105|  19.6k|    return input_adapter(container.data(), container.data() + container.size());
 9106|  19.6k|}
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterIPKhS4_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES6_S7_:
 9007|  27.1k|{
 9008|  27.1k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
 9009|  27.1k|    return factory_type::create(first, last);
 9010|  27.1k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryIPKhS4_vE6createES4_S4_:
 8935|  27.1k|    {
 8936|  27.1k|        return adapter_type(std::move(first), std::move(last));
 8937|  27.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterIPKhS4_EC2ES4_S4_:
 8586|  27.1k|        : begin(first), current(std::move(first)), end(std::move(last))
 8587|  27.1k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE10to_msgpackERKSE_NS0_6detail15error_handler_tE:
36435|  9.30k|    {
36436|  9.30k|        std::vector<std::uint8_t> result;
36437|  9.30k|        result.reserve(detail::binary_reserve_hint(j));
36438|  9.30k|        vector_writer(result, error_handler).write_msgpack(j);
36439|  9.30k|        return result;
36440|  9.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19binary_reserve_hintINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEEEmRKT_:
23013|  9.30k|{
23014|  9.30k|    if (j.is_array())
  ------------------
  |  Branch (23014:9): [True: 4.12k, False: 5.17k]
  ------------------
23015|  4.12k|    {
23016|  4.12k|        return j.size() + 1;
23017|  4.12k|    }
23018|       |
23019|  5.17k|    if (j.is_object())
  ------------------
  |  Branch (23019:9): [True: 550, False: 4.62k]
  ------------------
23020|    550|    {
23021|    550|        return (j.size() * 2) + 1;
23022|    550|    }
23023|       |
23024|  4.62k|    return 0;
23025|  5.17k|}
_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:
30271|  9.30k|    {
30272|  9.30k|        return vector_binary_writer<CharType>(::nlohmann::detail::output_vector_sink<CharType>(v), error_handler);
30273|  9.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEEC2ERNS3_6vectorIhS5_EE:
22740|  9.30k|        : v(vec)
22741|  9.30k|    {}
_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:
23055|  9.30k|        : oa(std::move(sink)), error_handler(error_handler_)
23056|  9.30k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE13write_msgpackERKSG_m:
23345|   192k|    {
23346|   192k|        if (JSON_HEDLEY_UNLIKELY(depth >= recursion_depth_limit()) && (j.is_array() || j.is_object()))
  ------------------
  |  | 1667|   384k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 3.00k, False: 189k]
  |  |  ------------------
  ------------------
  |  Branch (23346:72): [True: 1.03k, False: 1.96k]
  |  Branch (23346:88): [True: 640, False: 1.32k]
  ------------------
23347|  1.67k|        {
23348|  1.67k|            write_msgpack_iterative(j);
23349|  1.67k|            return;
23350|  1.67k|        }
23351|       |
23352|   190k|        switch (j.type())
23353|   190k|        {
23354|  1.57k|            case value_t::null: // nil
  ------------------
  |  Branch (23354:13): [True: 1.57k, False: 189k]
  ------------------
23355|  1.57k|            {
23356|  1.57k|                oa.write_character(to_char_type(0xC0));
23357|  1.57k|                break;
23358|      0|            }
23359|       |
23360|  3.02k|            case value_t::boolean: // true and false
  ------------------
  |  Branch (23360:13): [True: 3.02k, False: 187k]
  ------------------
23361|  3.02k|            {
23362|  3.02k|                oa.write_character(j.m_data.m_value.boolean
  ------------------
  |  Branch (23362:36): [True: 1.31k, False: 1.70k]
  ------------------
23363|  3.02k|                                   ? to_char_type(0xC3)
23364|  3.02k|                                   : to_char_type(0xC2));
23365|  3.02k|                break;
23366|      0|            }
23367|       |
23368|  14.2k|            case value_t::number_integer:
  ------------------
  |  Branch (23368:13): [True: 14.2k, False: 176k]
  ------------------
23369|  14.2k|            {
23370|  14.2k|                if (j.m_data.m_value.number_integer >= 0)
  ------------------
  |  Branch (23370:21): [True: 1.49k, False: 12.7k]
  ------------------
23371|  1.49k|                {
23372|       |                    // MessagePack does not differentiate between positive
23373|       |                    // signed integers and unsigned integers.
23374|  1.49k|                    write_msgpack_unsigned(static_cast<std::uint64_t>(j.m_data.m_value.number_integer));
23375|  1.49k|                }
23376|  12.7k|                else
23377|  12.7k|                {
23378|  12.7k|                    if (j.m_data.m_value.number_integer >= -32)
  ------------------
  |  Branch (23378:25): [True: 10.2k, False: 2.54k]
  ------------------
23379|  10.2k|                    {
23380|       |                        // negative fixnum
23381|  10.2k|                        write_number(static_cast<std::int8_t>(j.m_data.m_value.number_integer));
23382|  10.2k|                    }
23383|  2.54k|                    else if (j.m_data.m_value.number_integer >= (std::numeric_limits<std::int8_t>::min)() &&
  ------------------
  |  Branch (23383:30): [True: 762, False: 1.78k]
  ------------------
23384|    762|                             j.m_data.m_value.number_integer <= (std::numeric_limits<std::int8_t>::max)())
  ------------------
  |  Branch (23384:30): [True: 762, False: 0]
  ------------------
23385|    762|                    {
23386|       |                        // int 8
23387|    762|                        oa.write_character(to_char_type(0xD0));
23388|    762|                        write_number(static_cast<std::int8_t>(j.m_data.m_value.number_integer));
23389|    762|                    }
23390|  1.78k|                    else if (j.m_data.m_value.number_integer >= (std::numeric_limits<std::int16_t>::min)() &&
  ------------------
  |  Branch (23390:30): [True: 340, False: 1.44k]
  ------------------
23391|    340|                             j.m_data.m_value.number_integer <= (std::numeric_limits<std::int16_t>::max)())
  ------------------
  |  Branch (23391:30): [True: 340, False: 0]
  ------------------
23392|    340|                    {
23393|       |                        // int 16
23394|    340|                        oa.write_character(to_char_type(0xD1));
23395|    340|                        write_number(static_cast<std::int16_t>(j.m_data.m_value.number_integer));
23396|    340|                    }
23397|  1.44k|                    else if (j.m_data.m_value.number_integer >= (std::numeric_limits<std::int32_t>::min)() &&
  ------------------
  |  Branch (23397:30): [True: 562, False: 880]
  ------------------
23398|    562|                             j.m_data.m_value.number_integer <= (std::numeric_limits<std::int32_t>::max)())
  ------------------
  |  Branch (23398:30): [True: 562, False: 0]
  ------------------
23399|    562|                    {
23400|       |                        // int 32
23401|    562|                        oa.write_character(to_char_type(0xD2));
23402|    562|                        write_number(static_cast<std::int32_t>(j.m_data.m_value.number_integer));
23403|    562|                    }
23404|    880|                    else
23405|    880|                    {
23406|       |                        // int 64
23407|    880|                        oa.write_character(to_char_type(0xD3));
23408|    880|                        write_number(static_cast<std::int64_t>(j.m_data.m_value.number_integer));
23409|    880|                    }
23410|  12.7k|                }
23411|  14.2k|                break;
23412|      0|            }
23413|       |
23414|  46.6k|            case value_t::number_unsigned:
  ------------------
  |  Branch (23414:13): [True: 46.6k, False: 144k]
  ------------------
23415|  46.6k|            {
23416|  46.6k|                write_msgpack_unsigned(static_cast<std::uint64_t>(j.m_data.m_value.number_unsigned));
23417|  46.6k|                break;
23418|      0|            }
23419|       |
23420|  5.20k|            case value_t::number_float:
  ------------------
  |  Branch (23420:13): [True: 5.20k, False: 185k]
  ------------------
23421|  5.20k|            {
23422|  5.20k|                write_compact_float(j.m_data.m_value.number_float, to_char_type(0xCA), to_char_type(0xCB));
23423|  5.20k|                break;
23424|      0|            }
23425|       |
23426|  7.34k|            case value_t::string:
  ------------------
  |  Branch (23426:13): [True: 7.34k, False: 183k]
  ------------------
23427|  7.34k|            {
23428|  7.34k|                write_msgpack_string(*j.m_data.m_value.string, j);
23429|  7.34k|                break;
23430|      0|            }
23431|       |
23432|  83.5k|            case value_t::array:
  ------------------
  |  Branch (23432:13): [True: 83.5k, False: 107k]
  ------------------
23433|  83.5k|            {
23434|       |                // step 1: write control byte and the array size
23435|  83.5k|                write_msgpack_array_prefix(j.m_data.m_value.array->size(), j);
23436|       |
23437|  83.5k|                for (const auto& el : *j.m_data.m_value.array)
  ------------------
  |  Branch (23437:37): [True: 162k, False: 83.5k]
  ------------------
23438|   162k|                {
23439|   162k|                    write_msgpack(el, depth + 1);
23440|   162k|                }
23441|  83.5k|                break;
23442|      0|            }
23443|       |
23444|  19.0k|            case value_t::binary:
  ------------------
  |  Branch (23444:13): [True: 19.0k, False: 171k]
  ------------------
23445|  19.0k|            {
23446|       |                // step 0: determine if the binary type has a set subtype to
23447|       |                // determine whether to use the ext or fixext types
23448|  19.0k|                const bool use_ext = j.m_data.m_value.binary->has_subtype();
23449|       |
23450|       |                // step 1: write control byte and the byte string length
23451|  19.0k|                const auto N = to_msgpack_length(j.m_data.m_value.binary->size(), j);
23452|  19.0k|                if (N <= (std::numeric_limits<std::uint8_t>::max)())
  ------------------
  |  Branch (23452:21): [True: 19.0k, False: 20]
  ------------------
23453|  19.0k|                {
23454|  19.0k|                    std::uint8_t output_type{};
23455|  19.0k|                    bool fixed = true;
23456|  19.0k|                    if (use_ext)
  ------------------
  |  Branch (23456:25): [True: 5.31k, False: 13.7k]
  ------------------
23457|  5.31k|                    {
23458|  5.31k|                        switch (N)
23459|  5.31k|                        {
23460|  2.39k|                            case 1:
  ------------------
  |  Branch (23460:29): [True: 2.39k, False: 2.91k]
  ------------------
23461|  2.39k|                                output_type = 0xD4; // fixext 1
23462|  2.39k|                                break;
23463|    720|                            case 2:
  ------------------
  |  Branch (23463:29): [True: 720, False: 4.59k]
  ------------------
23464|    720|                                output_type = 0xD5; // fixext 2
23465|    720|                                break;
23466|    468|                            case 4:
  ------------------
  |  Branch (23466:29): [True: 468, False: 4.84k]
  ------------------
23467|    468|                                output_type = 0xD6; // fixext 4
23468|    468|                                break;
23469|    742|                            case 8:
  ------------------
  |  Branch (23469:29): [True: 742, False: 4.56k]
  ------------------
23470|    742|                                output_type = 0xD7; // fixext 8
23471|    742|                                break;
23472|     86|                            case 16:
  ------------------
  |  Branch (23472:29): [True: 86, False: 5.22k]
  ------------------
23473|     86|                                output_type = 0xD8; // fixext 16
23474|     86|                                break;
23475|    902|                            default:
  ------------------
  |  Branch (23475:29): [True: 902, False: 4.40k]
  ------------------
23476|    902|                                output_type = 0xC7; // ext 8
23477|    902|                                fixed = false;
23478|    902|                                break;
23479|  5.31k|                        }
23480|       |
23481|  5.31k|                    }
23482|  13.7k|                    else
23483|  13.7k|                    {
23484|  13.7k|                        output_type = 0xC4; // bin 8
23485|  13.7k|                        fixed = false;
23486|  13.7k|                    }
23487|       |
23488|  19.0k|                    oa.write_character(to_char_type(output_type));
23489|  19.0k|                    if (!fixed)
  ------------------
  |  Branch (23489:25): [True: 14.6k, False: 4.40k]
  ------------------
23490|  14.6k|                    {
23491|  14.6k|                        write_number(static_cast<std::uint8_t>(N));
23492|  14.6k|                    }
23493|  19.0k|                }
23494|     20|                else if (N <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (23494:26): [True: 20, False: 0]
  ------------------
23495|     20|                {
23496|     20|                    const std::uint8_t output_type = use_ext
  ------------------
  |  Branch (23496:54): [True: 2, False: 18]
  ------------------
23497|     20|                                                     ? 0xC8 // ext 16
23498|     20|                                                     : 0xC5; // bin 16
23499|       |
23500|     20|                    oa.write_character(to_char_type(output_type));
23501|     20|                    write_number(static_cast<std::uint16_t>(N));
23502|     20|                }
23503|      0|                else
23504|      0|                {
23505|      0|                    const std::uint8_t output_type = use_ext
  ------------------
  |  Branch (23505:54): [True: 0, False: 0]
  ------------------
23506|      0|                                                     ? 0xC9 // ext 32
23507|      0|                                                     : 0xC6; // bin 32
23508|       |
23509|      0|                    oa.write_character(to_char_type(output_type));
23510|      0|                    write_number(static_cast<std::uint32_t>(N));
23511|      0|                }
23512|       |
23513|       |                // step 1.5: if this is an ext type, write the subtype
23514|  19.0k|                if (use_ext)
  ------------------
  |  Branch (23514:21): [True: 5.31k, False: 13.7k]
  ------------------
23515|  5.31k|                {
23516|  5.31k|                    if (JSON_HEDLEY_UNLIKELY(j.m_data.m_value.binary->subtype() > (std::numeric_limits<std::uint8_t>::max)()))
  ------------------
  |  | 1667|  5.31k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.31k]
  |  |  ------------------
  ------------------
23517|      0|                    {
23518|      0|                        JSON_THROW(out_of_range::create(exception_id::subtype_out_of_range, concat("subtype ", std::to_string(j.m_data.m_value.binary->subtype()), " is too large for the MessagePack ext type (max 255)"), &j));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
23519|      0|                    }
23520|       |
23521|  5.31k|                    write_number(static_cast<std::int8_t>(j.m_data.m_value.binary->subtype()));
23522|  5.31k|                }
23523|       |
23524|       |                // step 2: write the byte string
23525|  19.0k|                oa.write_characters(
23526|  19.0k|                      reinterpret_cast<const CharType*>(j.m_data.m_value.binary->data()),
23527|  19.0k|                      N);
23528|       |
23529|  19.0k|                break;
23530|  19.0k|            }
23531|       |
23532|  10.1k|            case value_t::object:
  ------------------
  |  Branch (23532:13): [True: 10.1k, False: 180k]
  ------------------
23533|  10.1k|            {
23534|       |                // step 1: write control byte and the object size
23535|  10.1k|                write_msgpack_object_prefix(j.m_data.m_value.object->size(), j);
23536|       |
23537|  10.1k|                for (const auto& el : *j.m_data.m_value.object)
  ------------------
  |  Branch (23537:37): [True: 15.1k, False: 10.1k]
  ------------------
23538|  15.1k|                {
23539|       |                    // as in write_cbor, el.first is written directly with the
23540|       |                    // object as diagnostics context
23541|  15.1k|                    write_msgpack_key(el.first, j);
23542|  15.1k|                    write_msgpack(el.second, depth + 1);
23543|  15.1k|                }
23544|  10.1k|                break;
23545|  19.0k|            }
23546|       |
23547|      0|            case value_t::discarded:
  ------------------
  |  Branch (23547:13): [True: 0, False: 190k]
  ------------------
23548|      0|            default:
  ------------------
  |  Branch (23548:13): [True: 0, False: 190k]
  ------------------
23549|      0|                throw_on_discarded(j, "MessagePack");
23550|   190k|        }
23551|   190k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE23write_msgpack_iterativeERKSG_:
23976|  1.67k|    {
23977|  1.67k|        std::vector<binary_container_frame> stack;
23978|  1.67k|        write_msgpack_value_or_push(root, stack);
23979|       |
23980|   126k|        while (!stack.empty())
  ------------------
  |  Branch (23980:16): [True: 124k, False: 1.67k]
  ------------------
23981|   124k|        {
23982|   124k|            const binary_container_frame current = stack.back();
23983|       |
23984|   124k|            if (current.value->is_array())
  ------------------
  |  Branch (23984:17): [True: 119k, False: 5.41k]
  ------------------
23985|   119k|            {
23986|   119k|                const auto& array = *current.value->m_data.m_value.array;
23987|   119k|                if (current.array_it == array.cend())
  ------------------
  |  Branch (23987:21): [True: 57.4k, False: 61.8k]
  ------------------
23988|  57.4k|                {
23989|  57.4k|                    stack.pop_back();
23990|  57.4k|                    continue;
23991|  57.4k|                }
23992|       |
23993|  61.8k|                const BasicJsonType* child = &(*current.array_it);
23994|  61.8k|                ++stack.back().array_it;
23995|  61.8k|                write_msgpack_value_or_push(*child, stack);
23996|  61.8k|            }
23997|  5.41k|            else
23998|  5.41k|            {
23999|  5.41k|                const auto& object = *current.value->m_data.m_value.object;
24000|  5.41k|                if (current.object_it == object.cend())
  ------------------
  |  Branch (24000:21): [True: 1.73k, False: 3.68k]
  ------------------
24001|  1.73k|                {
24002|  1.73k|                    stack.pop_back();
24003|  1.73k|                    continue;
24004|  1.73k|                }
24005|       |
24006|       |                // as in write_cbor_iterative, the key is written directly with
24007|       |                // the object as diagnostics context
24008|  3.68k|                write_msgpack_key(current.object_it->first, *current.value);
24009|  3.68k|                const BasicJsonType* child = &(current.object_it->second);
24010|  3.68k|                ++stack.back().object_it;
24011|  3.68k|                write_msgpack_value_or_push(*child, stack);
24012|  3.68k|            }
24013|   124k|        }
24014|  1.67k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE27write_msgpack_value_or_pushERKSG_RNS6_INSJ_22binary_container_frameENSA_ISM_EEEE:
23946|  67.2k|    {
23947|  67.2k|        if (j.is_array())
  ------------------
  |  Branch (23947:13): [True: 59.1k, False: 8.08k]
  ------------------
23948|  59.1k|        {
23949|  59.1k|            write_msgpack_array_prefix(j.m_data.m_value.array->size(), j);
23950|  59.1k|            if (!j.m_data.m_value.array->empty())
  ------------------
  |  Branch (23950:17): [True: 57.4k, False: 1.67k]
  ------------------
23951|  57.4k|            {
23952|  57.4k|                stack.emplace_back(&j);
23953|  57.4k|            }
23954|  59.1k|            return;
23955|  59.1k|        }
23956|       |
23957|  8.08k|        if (j.is_object())
  ------------------
  |  Branch (23957:13): [True: 2.89k, False: 5.19k]
  ------------------
23958|  2.89k|        {
23959|  2.89k|            write_msgpack_object_prefix(j.m_data.m_value.object->size(), j);
23960|  2.89k|            if (!j.m_data.m_value.object->empty())
  ------------------
  |  Branch (23960:17): [True: 1.73k, False: 1.15k]
  ------------------
23961|  1.73k|            {
23962|  1.73k|                stack.emplace_back(&j);
23963|  1.73k|            }
23964|  2.89k|            return;
23965|  2.89k|        }
23966|       |
23967|  5.19k|        write_msgpack(j);
23968|  5.19k|    }
_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_:
23823|  59.2k|            : value(value_)
23824|  59.2k|        {
23825|  59.2k|            if (value->is_object())
  ------------------
  |  Branch (23825:17): [True: 1.73k, False: 57.4k]
  ------------------
23826|  1.73k|            {
23827|  1.73k|                object_it = value->m_data.m_value.object->cbegin();
23828|  1.73k|            }
23829|  57.4k|            else
23830|  57.4k|            {
23831|  57.4k|                array_it = value->m_data.m_value.array->cbegin();
23832|  57.4k|            }
23833|  59.2k|        }
_ZNK8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE4typeEv:
32866|   190k|    {
32867|   190k|        return m_data.m_type;
32868|   190k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE15write_characterEh:
22744|  36.0k|    {
22745|  36.0k|        v.push_back(c);
22746|  36.0k|    }
_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:
26198|  44.3k|    {
26199|  44.3k|        return x;
26200|  44.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE22write_msgpack_unsignedEm:
23303|  48.1k|    {
23304|  48.1k|        if (n < 128)
  ------------------
  |  Branch (23304:13): [True: 44.2k, False: 3.90k]
  ------------------
23305|  44.2k|        {
23306|       |            // positive fixnum
23307|  44.2k|            write_number(static_cast<std::uint8_t>(n));
23308|  44.2k|        }
23309|  3.90k|        else if (n <= (std::numeric_limits<std::uint8_t>::max)())
  ------------------
  |  Branch (23309:18): [True: 944, False: 2.96k]
  ------------------
23310|    944|        {
23311|       |            // uint 8
23312|    944|            oa.write_character(to_char_type(0xCC));
23313|    944|            write_number(static_cast<std::uint8_t>(n));
23314|    944|        }
23315|  2.96k|        else if (n <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (23315:18): [True: 734, False: 2.22k]
  ------------------
23316|    734|        {
23317|       |            // uint 16
23318|    734|            oa.write_character(to_char_type(0xCD));
23319|    734|            write_number(static_cast<std::uint16_t>(n));
23320|    734|        }
23321|  2.22k|        else if (n <= (std::numeric_limits<std::uint32_t>::max)())
  ------------------
  |  Branch (23321:18): [True: 768, False: 1.46k]
  ------------------
23322|    768|        {
23323|       |            // uint 32
23324|    768|            oa.write_character(to_char_type(0xCE));
23325|    768|            write_number(static_cast<std::uint32_t>(n));
23326|    768|        }
23327|  1.46k|        else
23328|  1.46k|        {
23329|       |            // uint 64
23330|  1.46k|            oa.write_character(to_char_type(0xCF));
23331|  1.46k|            write_number(n);
23332|  1.46k|        }
23333|  48.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberImEEvT_b:
26103|  1.46k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.46k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.46k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.46k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 1.46k, False: 0]
  ------------------
26110|  1.46k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  1.46k|            reverse_bytes(vec);
26113|  1.46k|        }
26114|       |
26115|  1.46k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.46k|    }
_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:
26078|  3.77k|    {
26079|  3.77k|        byte_swap_buffer<std::uint64_t>(a);
26080|  3.77k|    }
_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:
26057|  3.77k|    {
26058|  3.77k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
26059|  3.77k|        UIntType v{};
26060|  3.77k|        std::memcpy(&v, a.data(), sizeof(v));
26061|  3.77k|        v = byte_swap(v);
26062|  3.77k|        std::memcpy(a.data(), &v, sizeof(v));
26063|  3.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9byte_swapEm:
26033|  3.77k|    {
26034|  3.77k|#if defined(__GNUC__) || defined(__clang__)
26035|  3.77k|        return __builtin_bswap64(x);
26036|       |#elif defined(_MSC_VER)
26037|       |        return _byteswap_uint64(x);
26038|       |#else
26039|       |        x = ((x & 0x00000000FFFFFFFFull) << 32) | ((x & 0xFFFFFFFF00000000ull) >> 32);
26040|       |        x = ((x & 0x0000FFFF0000FFFFull) << 16) | ((x & 0xFFFF0000FFFF0000ull) >> 16);
26041|       |        x = ((x & 0x00FF00FF00FF00FFull) << 8) | ((x & 0xFF00FF00FF00FF00ull) >> 8);
26042|       |        return x;
26043|       |#endif
26044|  3.77k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIaEEvT_b:
26103|  16.2k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  16.2k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  16.2k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  16.2k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 16.2k, False: 0]
  ------------------
26110|  16.2k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  16.2k|            reverse_bytes(vec);
26113|  16.2k|        }
26114|       |
26115|  16.2k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  16.2k|    }
_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:
26084|   257k|    {
26085|   257k|        std::reverse(a.begin(), a.end());
26086|   257k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIsEEvT_b:
26103|    340|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|    340|        std::array<CharType, sizeof(NumberType)> vec{};
26106|    340|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|    340|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 340, False: 0]
  ------------------
26110|    340|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|    340|            reverse_bytes(vec);
26113|    340|        }
26114|       |
26115|    340|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|    340|    }
_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:
26068|  1.64k|    {
26069|  1.64k|        byte_swap_buffer<std::uint16_t>(a);
26070|  1.64k|    }
_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:
26057|  1.64k|    {
26058|  1.64k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
26059|  1.64k|        UIntType v{};
26060|  1.64k|        std::memcpy(&v, a.data(), sizeof(v));
26061|  1.64k|        v = byte_swap(v);
26062|  1.64k|        std::memcpy(a.data(), &v, sizeof(v));
26063|  1.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9byte_swapEt:
26010|  1.64k|    {
26011|  1.64k|#if defined(__GNUC__) || defined(__clang__)
26012|  1.64k|        return __builtin_bswap16(x);
26013|       |#elif defined(_MSC_VER)
26014|       |        return _byteswap_ushort(x);
26015|       |#else
26016|       |        return static_cast<std::uint16_t>((x >> 8) | (x << 8));
26017|       |#endif
26018|  1.64k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIiEEvT_b:
26103|    562|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|    562|        std::array<CharType, sizeof(NumberType)> vec{};
26106|    562|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|    562|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 562, False: 0]
  ------------------
26110|    562|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|    562|            reverse_bytes(vec);
26113|    562|        }
26114|       |
26115|    562|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|    562|    }
_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:
26073|  5.09k|    {
26074|  5.09k|        byte_swap_buffer<std::uint32_t>(a);
26075|  5.09k|    }
_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:
26057|  5.09k|    {
26058|  5.09k|        static_assert(sizeof(UIntType) == N, "swap width must match the buffer size");
26059|  5.09k|        UIntType v{};
26060|  5.09k|        std::memcpy(&v, a.data(), sizeof(v));
26061|  5.09k|        v = byte_swap(v);
26062|  5.09k|        std::memcpy(a.data(), &v, sizeof(v));
26063|  5.09k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE9byte_swapEj:
26021|  5.09k|    {
26022|  5.09k|#if defined(__GNUC__) || defined(__clang__)
26023|  5.09k|        return __builtin_bswap32(x);
26024|       |#elif defined(_MSC_VER)
26025|       |        return _byteswap_ulong(x);
26026|       |#else
26027|       |        return ((x & 0x000000FFu) << 24) | ((x & 0x0000FF00u) << 8)
26028|       |               | ((x & 0x00FF0000u) >> 8) | ((x & 0xFF000000u) >> 24);
26029|       |#endif
26030|  5.09k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIlEEvT_b:
26103|    880|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|    880|        std::array<CharType, sizeof(NumberType)> vec{};
26106|    880|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|    880|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 880, False: 0]
  ------------------
26110|    880|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|    880|            reverse_bytes(vec);
26113|    880|        }
26114|       |
26115|    880|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|    880|    }
_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:
26126|  5.20k|    {
26127|  5.20k|        static_assert(std::is_same<number_float_t, float>::value || std::is_same<number_float_t, double>::value,
26128|  5.20k|                      "number_float_t must be float or double for the CBOR/MessagePack/BON8 writer");
26129|  5.20k|#ifdef __GNUC__
26130|  5.20k|        JSON_HEDLEY_DIAGNOSTIC_PUSH
26131|  5.20k|        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wfloat-equal")
26132|  5.20k|#endif
26133|       |        // When number_float_t is float, static_cast<float>(n) is the identity and
26134|       |        // both branches below are intentionally identical (the "compact" float
26135|       |        // representation is the value itself). Only GCC diagnoses this, and only
26136|       |        // when the sink calls are inlined; clang has no such warning.
26137|       |        // (-Wduplicated-branches only exists from GCC 7 on; naming it on an older
26138|       |        // GCC would itself warn under -Wpragmas)
26139|       |#if defined(__GNUC__) && !defined(__clang__) && (__GNUC__ >= 7)
26140|       |        JSON_HEDLEY_PRAGMA(GCC diagnostic ignored "-Wduplicated-branches")
26141|       |#endif
26142|  5.20k|        if (!std::isfinite(n) || ((static_cast<double>(n) >= static_cast<double>(std::numeric_limits<float>::lowest()) &&
  ------------------
  |  Branch (26142:13): [True: 392, False: 4.81k]
  |  Branch (26142:36): [True: 4.40k, False: 402]
  ------------------
26143|  4.40k|                                   static_cast<double>(n) <= static_cast<double>((std::numeric_limits<float>::max)()) &&
  ------------------
  |  Branch (26143:36): [True: 4.25k, False: 154]
  ------------------
26144|  4.25k|                                   static_cast<double>(static_cast<float>(n)) == static_cast<double>(n))))
  ------------------
  |  Branch (26144:36): [True: 3.37k, False: 882]
  ------------------
26145|  3.76k|        {
26146|  3.76k|            oa.write_character(float32_marker);
26147|  3.76k|            write_number(static_cast<float>(n));
26148|  3.76k|        }
26149|  1.43k|        else
26150|  1.43k|        {
26151|  1.43k|            oa.write_character(float64_marker);
26152|  1.43k|            write_number(n);
26153|  1.43k|        }
26154|  5.20k|#ifdef __GNUC__
26155|  5.20k|        JSON_HEDLEY_DIAGNOSTIC_POP
26156|  5.20k|#endif
26157|  5.20k|    }
_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:
26103|  3.76k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  3.76k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  3.76k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  3.76k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 3.76k, False: 0]
  ------------------
26110|  3.76k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  3.76k|            reverse_bytes(vec);
26113|  3.76k|        }
26114|       |
26115|  3.76k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  3.76k|    }
_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:
26103|  1.43k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.43k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.43k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.43k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 1.43k, False: 0]
  ------------------
26110|  1.43k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  1.43k|            reverse_bytes(vec);
26113|  1.43k|        }
26114|       |
26115|  1.43k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.43k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE20write_msgpack_stringERKSC_RKSG_:
24980|  26.1k|    {
24981|  26.1k|        string_t storage;
24982|  26.1k|        const string_t& sanitized = sanitize_utf8_for_write(value, context, storage);
24983|       |
24984|       |        // step 1: write control byte and the string length
24985|  26.1k|        const auto N = to_msgpack_length(sanitized.size(), context);
24986|  26.1k|        if (N <= 31)
  ------------------
  |  Branch (24986:13): [True: 25.9k, False: 250]
  ------------------
24987|  25.9k|        {
24988|       |            // fixstr
24989|  25.9k|            write_number(static_cast<std::uint8_t>(0xA0 | N));
24990|  25.9k|        }
24991|    250|        else if (N <= (std::numeric_limits<std::uint8_t>::max)())
  ------------------
  |  Branch (24991:18): [True: 206, False: 44]
  ------------------
24992|    206|        {
24993|       |            // str 8
24994|    206|            oa.write_character(to_char_type(0xD9));
24995|    206|            write_number(static_cast<std::uint8_t>(N));
24996|    206|        }
24997|     44|        else if (N <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (24997:18): [True: 44, False: 0]
  ------------------
24998|     44|        {
24999|       |            // str 16
25000|     44|            oa.write_character(to_char_type(0xDA));
25001|     44|            write_number(static_cast<std::uint16_t>(N));
25002|     44|        }
25003|      0|        else
25004|      0|        {
25005|       |            // str 32
25006|      0|            oa.write_character(to_char_type(0xDB));
25007|      0|            write_number(static_cast<std::uint32_t>(N));
25008|      0|        }
25009|       |
25010|       |        // step 2: write the string
25011|  26.1k|        oa.write_characters(
25012|  26.1k|              reinterpret_cast<const CharType*>(sanitized.data()),
25013|  26.1k|              sanitized.size());
25014|  26.1k|    }
_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_:
25865|  26.1k|    {
25866|  26.1k|        switch (error_handler)
25867|  26.1k|        {
25868|  26.1k|            case error_handler_t::keep:
  ------------------
  |  Branch (25868:13): [True: 26.1k, False: 0]
  ------------------
25869|  26.1k|                return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25870|       |
25871|      0|            case error_handler_t::strict:
  ------------------
  |  Branch (25871:13): [True: 0, False: 26.1k]
  ------------------
25872|      0|                check_utf8(s, context);
25873|      0|                return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25874|       |
25875|      0|            case error_handler_t::replace:
  ------------------
  |  Branch (25875:13): [True: 0, False: 26.1k]
  ------------------
25876|      0|            case error_handler_t::ignore:
  ------------------
  |  Branch (25876:13): [True: 0, False: 26.1k]
  ------------------
25877|      0|            default:
  ------------------
  |  Branch (25877:13): [True: 0, False: 26.1k]
  ------------------
25878|      0|                if (is_valid_utf8(s))
  ------------------
  |  Branch (25878:21): [True: 0, False: 0]
  ------------------
25879|      0|                {
25880|      0|                    return s; // NOLINT(bugprone-return-const-ref-from-parameter): callers pass lvalues that outlive the call
25881|      0|                }
25882|      0|                storage = sanitize_utf8(s, error_handler);
25883|      0|                return storage;
25884|  26.1k|        }
25885|  26.1k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE26write_msgpack_array_prefixEmRKSG_:
23774|   142k|    {
23775|   142k|        const auto n = to_msgpack_length(N, j);
23776|   142k|        if (n <= 15)
  ------------------
  |  Branch (23776:13): [True: 142k, False: 408]
  ------------------
23777|   142k|        {
23778|       |            // fixarray
23779|   142k|            write_number(static_cast<std::uint8_t>(0x90 | n));
23780|   142k|        }
23781|    408|        else if (n <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (23781:18): [True: 408, False: 0]
  ------------------
23782|    408|        {
23783|       |            // array 16
23784|    408|            oa.write_character(to_char_type(0xDC));
23785|    408|            write_number(static_cast<std::uint16_t>(n));
23786|    408|        }
23787|      0|        else
23788|      0|        {
23789|       |            // array 32
23790|      0|            oa.write_character(to_char_type(0xDD));
23791|      0|            write_number(static_cast<std::uint32_t>(n));
23792|      0|        }
23793|   142k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17to_msgpack_lengthEmRKSG_:
23288|   200k|    {
23289|   200k|        if (JSON_HEDLEY_UNLIKELY(!value_in_range_of<std::uint32_t>(length)))
  ------------------
  |  | 1667|   200k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 200k]
  |  |  ------------------
  ------------------
23290|      0|        {
23291|      0|            JSON_THROW(out_of_range::create(exception_id::length_too_large, concat("MessagePack length ", std::to_string(length), " exceeds maximum of ", std::to_string((std::numeric_limits<std::uint32_t>::max)())), &j));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
23292|      0|        }
23293|       |
23294|   200k|        static_cast<void>(j);
23295|   200k|        return static_cast<std::uint32_t>(length);
23296|   200k|    }
_ZN8nlohmann16json_abi_v3_12_06detail17value_in_range_ofIjmEEbT0_:
 5101|   200k|{
 5102|   200k|    return value_in_range_of_impl1<OfType, T>::test(val);
 5103|   200k|}
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl1IjmLb0EvE4testEm:
 5085|   200k|    {
 5086|   200k|        return value_in_range_of_impl2<OfType, T>::test(val);
 5087|   200k|    }
_ZN8nlohmann16json_abi_v3_12_06detail23value_in_range_of_impl2IjmLb0ELb0EE4testEm:
 5039|   200k|    {
 5040|   200k|        using CommonType = typename std::common_type<OfType, T>::type;
 5041|   200k|        return static_cast<CommonType>(val) <= static_cast<CommonType>((std::numeric_limits<OfType>::max)());
 5042|   200k|    }
_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:
26103|   241k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|   241k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|   241k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|   241k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 241k, False: 0]
  ------------------
26110|   241k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|   241k|            reverse_bytes(vec);
26113|   241k|        }
26114|       |
26115|   241k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|   241k|    }
_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:
26103|  1.30k|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|  1.30k|        std::array<CharType, sizeof(NumberType)> vec{};
26106|  1.30k|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|  1.30k|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 1.30k, False: 0]
  ------------------
26110|  1.30k|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|  1.30k|            reverse_bytes(vec);
26113|  1.30k|        }
26114|       |
26115|  1.30k|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|  1.30k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE12write_numberIjEEvT_b:
26103|    768|    {
26104|       |        // step 1: write the number to an array of length NumberType
26105|    768|        std::array<CharType, sizeof(NumberType)> vec{};
26106|    768|        std::memcpy(vec.data(), &n, sizeof(NumberType));
26107|       |
26108|       |        // step 2: write the array to output (with possible reordering)
26109|    768|        if (is_little_endian != OutputIsLittleEndian)
  ------------------
  |  Branch (26109:13): [True: 768, False: 0]
  ------------------
26110|    768|        {
26111|       |            // reverse byte order prior to conversion if necessary
26112|    768|            reverse_bytes(vec);
26113|    768|        }
26114|       |
26115|    768|        oa.write_characters(vec.data(), sizeof(NumberType));
26116|    768|    }
_ZN8nlohmann16json_abi_v3_12_06detail18output_vector_sinkIhNSt3__19allocatorIhEEE16write_charactersEPKhm:
22753|   313k|    {
22754|   313k|        v.insert(v.end(), s, s + length);
22755|   313k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE27write_msgpack_object_prefixEmRKSG_:
23796|  13.0k|    {
23797|  13.0k|        const auto n = to_msgpack_length(N, j);
23798|  13.0k|        if (n <= 15)
  ------------------
  |  Branch (23798:13): [True: 12.9k, False: 96]
  ------------------
23799|  12.9k|        {
23800|       |            // fixmap
23801|  12.9k|            write_number(static_cast<std::uint8_t>(0x80 | (n & 0xF)));
23802|  12.9k|        }
23803|     96|        else if (n <= (std::numeric_limits<std::uint16_t>::max)())
  ------------------
  |  Branch (23803:18): [True: 96, False: 0]
  ------------------
23804|     96|        {
23805|       |            // map 16
23806|     96|            oa.write_character(to_char_type(0xDE));
23807|     96|            write_number(static_cast<std::uint16_t>(n));
23808|     96|        }
23809|      0|        else
23810|      0|        {
23811|       |            // map 32
23812|      0|            oa.write_character(to_char_type(0xDF));
23813|      0|            write_number(static_cast<std::uint32_t>(n));
23814|      0|        }
23815|  13.0k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_writerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEEhNS1_18output_vector_sinkIhSE_EEE17write_msgpack_keyISC_TnNS4_9enable_ifIXsr3std14is_convertibleIT_SC_EE5valueEiE4typeELi0EEEvRKSC_RKSG_:
24926|  18.8k|    {
24927|  18.8k|        write_msgpack_string(key, context);
24928|  18.8k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12from_msgpackIPKhSH_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SJ_SK_bbNS0_6detail15error_handler_tE:
36651|  7.51k|    {
36652|  7.51k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::msgpack, strict, allow_exceptions, error_handler);
36653|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12from_msgpackIRNS2_19basic_istringstreamIcS7_S9_EEEESE_OT_bbNS0_6detail15error_handler_tE:
36638|  7.51k|    {
36639|  7.51k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::msgpack, strict, allow_exceptions, error_handler);
36640|  7.51k|    }
_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:
36385|  7.51k|    {
36386|  7.51k|        basic_json result;
36387|  7.51k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  7.51k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  7.51k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 7.51k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  7.51k|        return result;
36394|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEEC2ERSG_bPNS1_5lexerISG_SH_EE:
13873|  7.51k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  7.51k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
14944|  7.51k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  7.51k|    {
14946|  7.51k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2EOS2_:
 8481|  7.51k|        : is(rhs.is), sb(rhs.sb)
 8482|  7.51k|    {
 8483|  7.51k|        rhs.is = nullptr;
 8484|  7.51k|        rhs.sb = nullptr;
 8485|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
14969|  7.51k|    {
14970|  7.51k|        sax = sax_;
14971|  7.51k|        container_stack.clear();
14972|  7.51k|        bon8_pushback_size = 0;
14973|  7.51k|        bool result = false;
14974|       |
14975|  7.51k|        switch (input_format)
14976|  7.51k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 7.51k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 7.51k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|  7.51k|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 7.51k, False: 0]
  ------------------
14986|  7.51k|                result = parse_msgpack_internal();
14987|  7.51k|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 7.51k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 7.51k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 7.51k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 7.51k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 7.51k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  7.51k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  4.88k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 4.88k, False: 0]
  |  Branch (15004:23): [True: 4.88k, False: 0]
  ------------------
15005|  4.88k|        {
15006|  4.88k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 4.88k]
  |  Branch (15006:59): [True: 0, False: 4.88k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  4.88k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 4.88k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  4.88k|            else
15016|  4.88k|            {
15017|  4.88k|                get();
15018|  4.88k|            }
15019|       |
15020|  4.88k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  4.88k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 236, False: 4.65k]
  |  |  ------------------
  ------------------
15021|    236|            {
15022|    236|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|    236|            }
15024|  4.88k|        }
15025|       |
15026|  4.65k|        return result;
15027|  4.88k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIiEEbRT_PKc:
18667|    435|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    435|        auto new_chars_read = ia.get_elements(&dest);
18671|    435|        chars_read += new_chars_read;
18672|    435|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    435|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 10, False: 425]
  |  |  ------------------
  ------------------
18673|     10|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     10|            ++chars_read;
18676|     10|            static_cast<void>(report_eof(context));
18677|     10|            return false;
18678|     10|        }
18679|    425|        return true;
18680|    435|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIiEEmPT_m:
 8507|    435|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|    435|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|    435|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|    435|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 10, False: 425]
  |  |  ------------------
  ------------------
 8513|     10|        {
 8514|     10|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     10|        }
 8516|    435|        return res;
 8517|    435|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10report_eofEPKc:
19058|  2.49k|    {
19059|  2.49k|        return sax->parse_error(chars_read, "<end of file>",
19060|  2.49k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  2.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  2.86k|    {
14005|  2.86k|        errored = true;
14006|  2.86k|        static_cast<void>(ex);
14007|  2.86k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 2.86k, False: 0]
  ------------------
14008|  2.86k|        {
14009|  2.86k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  2.86k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  2.86k|        }
14011|      0|        return false;
14012|  2.86k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17exception_messageERKSC_SM_:
19163|  2.86k|    {
19164|  2.86k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  2.86k|        switch (input_format)
19167|  2.86k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 2.86k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|  2.86k|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 2.86k, False: 0]
  ------------------
19173|  2.86k|                error_msg += "MessagePack";
19174|  2.86k|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 2.86k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 2.86k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 2.86k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 2.86k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 2.86k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 2.86k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  2.86k|        }
19196|       |
19197|  2.86k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  2.86k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIiEEvRT_:
18698|    425|    {
18699|    425|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    425|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  1.27k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 850, False: 425]
  ------------------
18715|    850|            {
18716|    850|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|    850|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    425|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15enter_containerEbmi:
15082|   103k|    {
15083|   103k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   207k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 103k]
  |  |  |  Branch (1667:94): [True: 13.9k, False: 89.5k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|   103k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   103k|        return true;
15090|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12start_objectEm:
13930|  13.9k|    {
13931|  13.9k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  13.9k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  13.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|   103k|    {
14031|   103k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4.57k, False: 98.9k]
  ------------------
14032|  4.57k|        {
14033|  4.57k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  4.57k|            return &root;
14040|  4.57k|        }
14041|       |
14042|  98.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  98.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 89.4k, False: 9.46k]
  |  Branch (14042:9): [True: 9.46k, False: 0]
  |  Branch (14042:9): [True: 98.9k, False: 0]
  ------------------
14043|       |
14044|  98.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 89.4k, False: 9.46k]
  ------------------
14045|  89.4k|        {
14046|  89.4k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  89.4k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  89.4k|        }
14054|       |
14055|  9.46k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 9.46k, False: 0]
  ------------------
14056|  9.46k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  9.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 9.46k, False: 0]
  ------------------
14057|  9.46k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  9.46k|        return object_element;
14064|  9.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_20input_stream_adapterEEESH_EEbRT_mPKcPT0_:
13724|   103k|{
13725|   103k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   207k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 103k]
  |  |  |  Branch (1667:94): [True: 103k, False: 0]
  |  |  |  Branch (1667:94): [True: 0, False: 103k]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|   103k|    return true;
13730|   103k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE11start_arrayEm:
13966|  89.5k|    {
13967|  89.5k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  89.5k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  89.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 89.5k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  89.5k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 89.5k, False: 0]
  ------------------
13980|  89.5k|        {
13981|  89.5k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  89.5k|        }
13983|       |
13984|  89.5k|        return true;
13985|  89.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15container_frameC2Embi:
15051|   103k|            : 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_19json_sax_dom_parserISG_SH_EEE15leave_containerEv:
15114|  84.2k|    {
15115|  84.2k|        const bool is_object = container_stack.back().is_object;
15116|  84.2k|        container_stack.pop_back();
15117|  84.2k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 8.79k, False: 75.4k]
  ------------------
15118|  84.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE10end_objectEv:
13952|  8.79k|    {
13953|  8.79k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  8.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 8.79k, False: 0]
  ------------------
13954|  8.79k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 8.79k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  8.79k|        ref_stack.back()->set_parents();
13961|  8.79k|        ref_stack.pop_back();
13962|  8.79k|        return true;
13963|  8.79k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE9end_arrayEv:
13988|  75.4k|    {
13989|  75.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  75.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 75.4k, False: 0]
  ------------------
13990|  75.4k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  75.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 75.4k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  75.4k|        ref_stack.back()->set_parents();
13997|  75.4k|        ref_stack.pop_back();
13998|  75.4k|        return true;
13999|  75.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE12unexpect_eofEPKc:
19041|  33.4k|    {
19042|  33.4k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  33.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.27k, False: 31.1k]
  |  |  ------------------
  ------------------
19043|  2.27k|        {
19044|  2.27k|            return report_eof(context);
19045|  2.27k|        }
19046|  31.1k|        return true;
19047|  33.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE17check_string_utf8ERSC_PKc:
18941|  30.6k|    {
18942|  30.6k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 30.6k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  30.6k|        {
18944|  30.6k|            return true;
18945|  30.6k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE3keyERSC_:
13942|  21.5k|    {
13943|  21.5k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  21.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 21.5k, False: 0]
  ------------------
13944|  21.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  21.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 21.5k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  21.5k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  21.5k|        return true;
13949|  21.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIdEEbRT_PKc:
18667|    818|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    818|        auto new_chars_read = ia.get_elements(&dest);
18671|    818|        chars_read += new_chars_read;
18672|    818|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    818|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 799]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|    799|        return true;
18680|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIdEEmPT_m:
 8507|    818|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|    818|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|    818|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|    818|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 799]
  |  |  ------------------
  ------------------
 8513|     19|        {
 8514|     19|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     19|        }
 8516|    818|        return res;
 8517|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIdEEvRT_:
18698|    799|    {
18699|    799|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    799|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.99k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.19k, False: 799]
  ------------------
18715|  3.19k|            {
18716|  3.19k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.19k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    799|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIdEEbT_:
18825|    799|    {
18826|    799|        const auto result = static_cast<number_float_t>(number);
18827|    799|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  1.59k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 799]
  |  |  |  Branch (1667:94): [True: 797, False: 2]
  |  |  |  Branch (1667:94): [True: 0, False: 797]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    799|        return sax->number_float(result, "");
18832|    799|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_token_stringEv:
19152|    724|    {
19153|    724|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    724|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12number_floatEdRKSC_:
13908|  2.71k|    {
13909|  2.71k|        handle_value(val);
13910|  2.71k|        return true;
13911|  2.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRdEEPSG_OT_:
14030|  2.71k|    {
14031|  2.71k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 632, False: 2.08k]
  ------------------
14032|    632|        {
14033|    632|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    632|            return &root;
14040|    632|        }
14041|       |
14042|  2.08k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.08k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.96k, False: 120]
  |  Branch (14042:9): [True: 120, False: 0]
  |  Branch (14042:9): [True: 2.08k, False: 0]
  ------------------
14043|       |
14044|  2.08k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.96k, False: 120]
  ------------------
14045|  1.96k|        {
14046|  1.96k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.96k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.96k|        }
14054|       |
14055|    120|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    120|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 120, False: 0]
  ------------------
14056|    120|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    120|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 120, False: 0]
  ------------------
14057|    120|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    120|        return object_element;
14064|    120|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIcEEmPT_m:
 8507|  13.5k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  13.5k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  13.5k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  13.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 451, False: 13.1k]
  |  |  ------------------
  ------------------
 8513|    451|        {
 8514|    451|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|    451|        }
 8516|  13.5k|        return res;
 8517|  13.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE6stringERSC_:
13914|  9.17k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  9.17k|        handle_value(std::move(val));
13918|  9.17k|        return true;
13919|  9.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueISC_EEPSG_OT_:
14030|  9.17k|    {
14031|  9.17k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 564, False: 8.61k]
  ------------------
14032|    564|        {
14033|    564|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    564|            return &root;
14040|    564|        }
14041|       |
14042|  8.61k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 5.89k, False: 2.71k]
  |  Branch (14042:9): [True: 2.71k, False: 0]
  |  Branch (14042:9): [True: 8.61k, False: 0]
  ------------------
14043|       |
14044|  8.61k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 5.89k, False: 2.71k]
  ------------------
14045|  5.89k|        {
14046|  5.89k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  5.89k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  5.89k|        }
14054|       |
14055|  2.71k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.71k, False: 0]
  ------------------
14056|  2.71k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.71k, False: 0]
  ------------------
14057|  2.71k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.71k|        return object_element;
14064|  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_19json_sax_dom_parserISG_SH_EEE10get_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  2.55k|    {
18973|  2.55k|        return get_bytes(len, "binary", result);
18974|  2.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIiNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  2.55k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  2.55k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  5.09k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 2.55k, False: 2.53k]
  ------------------
19003|  2.55k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  2.55k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 2.55k, False: 0]
  ------------------
19007|  2.55k|                                       ? static_cast<std::size_t>(len)
19008|  2.55k|                                       : chunk_size;
19009|  2.55k|            const std::size_t old_size = result.size();
19010|  2.55k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  2.55k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  2.55k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 2.55k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  2.55k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  2.55k|            chars_read += bytes_read;
19018|  2.55k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  2.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 2.53k]
  |  |  ------------------
  ------------------
19019|     23|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     23|                result.resize(old_size + bytes_read);
19024|     23|                ++chars_read;
19025|     23|                current = char_traits<char_type>::eof();
19026|     23|                return unexpect_eof(context);
19027|     23|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  2.53k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  2.53k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 2.53k, False: 0]
  ------------------
19030|  2.53k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  2.53k|        }
19032|  2.53k|        return true;
19033|  2.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIhEEmPT_m:
 8507|  14.3k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  14.3k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  14.3k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  14.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 243, False: 14.1k]
  |  |  ------------------
  ------------------
 8513|    243|        {
 8514|    243|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|    243|        }
 8516|  14.3k|        return res;
 8517|  14.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  12.2k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  12.2k|        handle_value(std::move(val));
13926|  12.2k|        return true;
13927|  12.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  12.2k|    {
14031|  12.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 124, False: 12.1k]
  ------------------
14032|    124|        {
14033|    124|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    124|            return &root;
14040|    124|        }
14041|       |
14042|  12.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  12.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 11.1k, False: 1.02k]
  |  Branch (14042:9): [True: 1.02k, False: 0]
  |  Branch (14042:9): [True: 12.1k, False: 0]
  ------------------
14043|       |
14044|  12.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 11.1k, False: 1.02k]
  ------------------
14045|  11.1k|        {
14046|  11.1k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  11.1k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  11.1k|        }
14054|       |
14055|  1.02k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.02k, False: 0]
  ------------------
14056|  1.02k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.02k, False: 0]
  ------------------
14057|  1.02k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.02k|        return object_element;
14064|  1.02k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIhLb0EEEbRT_:
18739|  10.2k|    {
18740|       |        // read in the original format
18741|       |
18742|  10.2k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  10.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 10.2k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  10.2k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 10.2k, False: 23]
  |  Branch (18746:34): [Folded, False: 10.2k]
  |  Branch (18746:57): [True: 0, False: 10.2k]
  ------------------
18747|  10.2k|        {
18748|  10.2k|            byte_swap(result);
18749|  10.2k|        }
18750|  10.2k|        return true;
18751|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIhEEbRT_PKc:
18667|  10.2k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  10.2k|        auto new_chars_read = ia.get_elements(&dest);
18671|  10.2k|        chars_read += new_chars_read;
18672|  10.2k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  10.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 10.2k]
  |  |  ------------------
  ------------------
18673|     23|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     23|            ++chars_read;
18676|     23|            static_cast<void>(report_eof(context));
18677|     23|            return false;
18678|     23|        }
18679|  10.2k|        return true;
18680|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIhEEvRT_:
18698|  10.2k|    {
18699|  10.2k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  10.2k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  10.2k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 10.2k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE7booleanEb:
13890|  2.51k|    {
13891|  2.51k|        handle_value(val);
13892|  2.51k|        return true;
13893|  2.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRbEEPSG_OT_:
14030|  2.51k|    {
14031|  2.51k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4, False: 2.51k]
  ------------------
14032|      4|        {
14033|      4|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      4|            return &root;
14040|      4|        }
14041|       |
14042|  2.51k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.51k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.33k, False: 179]
  |  Branch (14042:9): [True: 179, False: 0]
  |  Branch (14042:9): [True: 2.51k, False: 0]
  ------------------
14043|       |
14044|  2.51k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.33k, False: 179]
  ------------------
14045|  2.33k|        {
14046|  2.33k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.33k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.33k|        }
14054|       |
14055|    179|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    179|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 179, False: 0]
  ------------------
14056|    179|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    179|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 179, False: 0]
  ------------------
14057|    179|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    179|        return object_element;
14064|    179|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE4nullEv:
13884|  2.01k|    {
13885|  2.01k|        handle_value(nullptr);
13886|  2.01k|        return true;
13887|  2.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIDnEEPSG_OT_:
14030|  2.01k|    {
14031|  2.01k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 2.01k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  2.01k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.01k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.20k, False: 813]
  |  Branch (14042:9): [True: 813, False: 0]
  |  Branch (14042:9): [True: 2.01k, False: 0]
  ------------------
14043|       |
14044|  2.01k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.20k, False: 813]
  ------------------
14045|  1.20k|        {
14046|  1.20k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.20k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.20k|        }
14054|       |
14055|    813|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    813|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 813, False: 0]
  ------------------
14056|    813|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    813|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 813, False: 0]
  ------------------
14057|    813|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    813|        return object_element;
14064|    813|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIiEEbT_:
18771|    425|    {
18772|    425|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    425|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 425, False: 0]
  |  |  ------------------
  ------------------
18773|    425|        {
18774|    425|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    425|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE14number_integerEl:
13896|  18.3k|    {
13897|  18.3k|        handle_value(val);
13898|  18.3k|        return true;
13899|  18.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRlEEPSG_OT_:
14030|  18.3k|    {
14031|  18.3k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 607, False: 17.7k]
  ------------------
14032|    607|        {
14033|    607|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    607|            return &root;
14040|    607|        }
14041|       |
14042|  17.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  17.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 16.2k, False: 1.48k]
  |  Branch (14042:9): [True: 1.48k, False: 0]
  |  Branch (14042:9): [True: 17.7k, False: 0]
  ------------------
14043|       |
14044|  17.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 16.2k, False: 1.48k]
  ------------------
14045|  16.2k|        {
14046|  16.2k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  16.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  16.2k|        }
14054|       |
14055|  1.48k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.48k, False: 0]
  ------------------
14056|  1.48k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.48k, False: 0]
  ------------------
14057|  1.48k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.48k|        return object_element;
14064|  1.48k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE15number_unsignedEm:
13902|  58.4k|    {
13903|  58.4k|        handle_value(val);
13904|  58.4k|        return true;
13905|  58.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEE12handle_valueIRmEEPSG_OT_:
14030|  58.4k|    {
14031|  58.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 582, False: 57.8k]
  ------------------
14032|    582|        {
14033|    582|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    582|            return &root;
14040|    582|        }
14041|       |
14042|  57.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  57.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 52.4k, False: 5.36k]
  |  Branch (14042:9): [True: 5.36k, False: 0]
  |  Branch (14042:9): [True: 57.8k, False: 0]
  ------------------
14043|       |
14044|  57.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 52.4k, False: 5.36k]
  ------------------
14045|  52.4k|        {
14046|  52.4k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  52.4k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  52.4k|        }
14054|       |
14055|  5.36k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  5.36k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 5.36k, False: 0]
  ------------------
14056|  5.36k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  5.36k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 5.36k, False: 0]
  ------------------
14057|  5.36k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  5.36k|        return object_element;
14064|  5.36k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIlEEbRT_PKc:
18667|    694|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    694|        auto new_chars_read = ia.get_elements(&dest);
18671|    694|        chars_read += new_chars_read;
18672|    694|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    694|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 672]
  |  |  ------------------
  ------------------
18673|     22|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     22|            ++chars_read;
18676|     22|            static_cast<void>(report_eof(context));
18677|     22|            return false;
18678|     22|        }
18679|    672|        return true;
18680|    694|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIlEEmPT_m:
 8507|    694|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|    694|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|    694|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|    694|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 672]
  |  |  ------------------
  ------------------
 8513|     22|        {
 8514|     22|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     22|        }
 8516|    694|        return res;
 8517|    694|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIlEEvRT_:
18698|    672|    {
18699|    672|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    672|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.36k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.68k, False: 672]
  ------------------
18715|  2.68k|            {
18716|  2.68k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.68k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    672|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIlEEbT_:
18771|    672|    {
18772|    672|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    672|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 672, False: 0]
  |  |  ------------------
  ------------------
18773|    672|        {
18774|    672|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    672|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toImEEbRT_PKc:
18667|    614|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    614|        auto new_chars_read = ia.get_elements(&dest);
18671|    614|        chars_read += new_chars_read;
18672|    614|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    614|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 12, False: 602]
  |  |  ------------------
  ------------------
18673|     12|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     12|            ++chars_read;
18676|     12|            static_cast<void>(report_eof(context));
18677|     12|            return false;
18678|     12|        }
18679|    602|        return true;
18680|    614|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsImEEmPT_m:
 8507|    614|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|    614|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|    614|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|    614|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 12, False: 602]
  |  |  ------------------
  ------------------
 8513|     12|        {
 8514|     12|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     12|        }
 8516|    614|        return res;
 8517|    614|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapImEEvRT_:
18698|    602|    {
18699|    602|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    602|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.01k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.40k, False: 602]
  ------------------
18715|  2.40k|            {
18716|  2.40k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.40k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    602|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedImEEbT_:
18799|    602|    {
18800|    602|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    602|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 602, False: 0]
  |  |  ------------------
  ------------------
18801|    602|        {
18802|    602|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    602|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    602|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIjEEbT_RSC_:
18910|  29.2k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  29.2k|        return get_bytes(len, "string", result);
18921|  29.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIjSC_EEbT_PKcRT0_:
18998|  29.2k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  29.2k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  41.5k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 12.6k, False: 28.8k]
  ------------------
19003|  12.6k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  12.6k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 12.5k, False: 53]
  ------------------
19007|  12.6k|                                       ? static_cast<std::size_t>(len)
19008|  12.6k|                                       : chunk_size;
19009|  12.6k|            const std::size_t old_size = result.size();
19010|  12.6k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  12.6k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  12.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 12.6k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  12.6k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  12.6k|            chars_read += bytes_read;
19018|  12.6k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  12.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 349, False: 12.2k]
  |  |  ------------------
  ------------------
19019|    349|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    349|                result.resize(old_size + bytes_read);
19024|    349|                ++chars_read;
19025|    349|                current = char_traits<char_type>::eof();
19026|    349|                return unexpect_eof(context);
19027|    349|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  12.2k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  12.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 12.2k, False: 0]
  ------------------
19030|  12.2k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  12.2k|        }
19032|  28.8k|        return true;
19033|  29.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIhEEbT_RSC_:
18910|  1.15k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.15k|        return get_bytes(len, "string", result);
18921|  1.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIhSC_EEbT_PKcRT0_:
18998|  1.15k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.15k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.69k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 588, False: 1.10k]
  ------------------
19003|    588|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    588|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 588, False: 0]
  ------------------
19007|    588|                                       ? static_cast<std::size_t>(len)
19008|    588|                                       : chunk_size;
19009|    588|            const std::size_t old_size = result.size();
19010|    588|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    588|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    588|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 588, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    588|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    588|            chars_read += bytes_read;
19018|    588|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    588|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 45, False: 543]
  |  |  ------------------
  ------------------
19019|     45|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     45|                result.resize(old_size + bytes_read);
19024|     45|                ++chars_read;
19025|     45|                current = char_traits<char_type>::eof();
19026|     45|                return unexpect_eof(context);
19027|     45|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    543|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    543|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 543, False: 0]
  ------------------
19030|    543|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    543|        }
19032|  1.10k|        return true;
19033|  1.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberItLb0EEEbRT_:
18739|  4.12k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.12k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.12k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.12k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.08k, False: 42]
  |  Branch (18746:34): [Folded, False: 4.08k]
  |  Branch (18746:57): [True: 0, False: 4.08k]
  ------------------
18747|  4.08k|        {
18748|  4.08k|            byte_swap(result);
18749|  4.08k|        }
18750|  4.12k|        return true;
18751|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toItEEbRT_PKc:
18667|  4.12k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.12k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.12k|        chars_read += new_chars_read;
18672|  4.12k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 42, False: 4.08k]
  |  |  ------------------
  ------------------
18673|     42|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     42|            ++chars_read;
18676|     42|            static_cast<void>(report_eof(context));
18677|     42|            return false;
18678|     42|        }
18679|  4.08k|        return true;
18680|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsItEEmPT_m:
 8507|  4.12k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  4.12k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  4.12k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 42, False: 4.08k]
  |  |  ------------------
  ------------------
 8513|     42|        {
 8514|     42|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     42|        }
 8516|  4.12k|        return res;
 8517|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapItEEvRT_:
18698|  4.08k|    {
18699|  4.08k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.08k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  8.17k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.08k, False: 4.08k]
  ------------------
18715|  4.08k|            {
18716|  4.08k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.08k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.08k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringItEEbT_RSC_:
18910|    732|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    732|        return get_bytes(len, "string", result);
18921|    732|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesItSC_EEbT_PKcRT0_:
18998|    732|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    732|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.05k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 377, False: 675]
  ------------------
19003|    377|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    377|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 359, False: 18]
  ------------------
19007|    377|                                       ? static_cast<std::size_t>(len)
19008|    377|                                       : chunk_size;
19009|    377|            const std::size_t old_size = result.size();
19010|    377|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    377|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    377|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 377, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    377|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    377|            chars_read += bytes_read;
19018|    377|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    377|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 57, False: 320]
  |  |  ------------------
  ------------------
19019|     57|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     57|                result.resize(old_size + bytes_read);
19024|     57|                ++chars_read;
19025|     57|                current = char_traits<char_type>::eof();
19026|     57|                return unexpect_eof(context);
19027|     57|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    320|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    320|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 320, False: 0]
  ------------------
19030|    320|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    320|        }
19032|    675|        return true;
19033|    732|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIjLb0EEEbRT_:
18739|  1.45k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.45k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.45k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.45k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.39k, False: 55]
  |  Branch (18746:34): [Folded, False: 1.39k]
  |  Branch (18746:57): [True: 0, False: 1.39k]
  ------------------
18747|  1.39k|        {
18748|  1.39k|            byte_swap(result);
18749|  1.39k|        }
18750|  1.45k|        return true;
18751|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIjEEbRT_PKc:
18667|  1.45k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.45k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.45k|        chars_read += new_chars_read;
18672|  1.45k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 55, False: 1.39k]
  |  |  ------------------
  ------------------
18673|     55|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     55|            ++chars_read;
18676|     55|            static_cast<void>(report_eof(context));
18677|     55|            return false;
18678|     55|        }
18679|  1.39k|        return true;
18680|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIjEEmPT_m:
 8507|  1.45k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.45k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.45k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 55, False: 1.39k]
  |  |  ------------------
  ------------------
 8513|     55|        {
 8514|     55|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     55|        }
 8516|  1.45k|        return res;
 8517|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIjEEvRT_:
18698|  1.39k|    {
18699|  1.39k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.39k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.19k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.79k, False: 1.39k]
  ------------------
18715|  2.79k|            {
18716|  2.79k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.79k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.39k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberImLb0EEEbRT_:
18739|    614|    {
18740|       |        // read in the original format
18741|       |
18742|    614|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    614|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 614]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    614|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 602, False: 12]
  |  Branch (18746:34): [Folded, False: 602]
  |  Branch (18746:57): [True: 0, False: 602]
  ------------------
18747|    602|        {
18748|    602|            byte_swap(result);
18749|    602|        }
18750|    614|        return true;
18751|    614|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedIhEEbT_:
18799|    848|    {
18800|    848|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    848|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 848, False: 0]
  |  |  ------------------
  ------------------
18801|    848|        {
18802|    848|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    848|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    848|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedItEEbT_:
18799|    216|    {
18800|    216|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    216|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 216, False: 0]
  |  |  ------------------
  ------------------
18801|    216|        {
18802|    216|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    216|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    216|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedIjEEbT_:
18799|    358|    {
18800|    358|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    358|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 358, False: 0]
  |  |  ------------------
  ------------------
18801|    358|        {
18802|    358|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    358|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    358|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    532|    {
18973|    532|        return get_bytes(len, "binary", result);
18974|    532|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    532|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    532|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    687|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 256, False: 431]
  ------------------
19003|    256|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    256|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 185, False: 71]
  ------------------
19007|    256|                                       ? static_cast<std::size_t>(len)
19008|    256|                                       : chunk_size;
19009|    256|            const std::size_t old_size = result.size();
19010|    256|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    256|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    256|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 256, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    256|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    256|            chars_read += bytes_read;
19018|    256|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    256|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 101, False: 155]
  |  |  ------------------
  ------------------
19019|    101|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    101|                result.resize(old_size + bytes_read);
19024|    101|                ++chars_read;
19025|    101|                current = char_traits<char_type>::eof();
19026|    101|                return unexpect_eof(context);
19027|    101|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    155|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    155|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 155, False: 0]
  ------------------
19030|    155|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    155|        }
19032|    431|        return true;
19033|    532|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIhEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  8.20k|    {
18973|  8.20k|        return get_bytes(len, "binary", result);
18974|  8.20k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  8.20k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  8.20k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  9.00k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 823, False: 8.17k]
  ------------------
19003|    823|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    823|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 823, False: 0]
  ------------------
19007|    823|                                       ? static_cast<std::size_t>(len)
19008|    823|                                       : chunk_size;
19009|    823|            const std::size_t old_size = result.size();
19010|    823|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    823|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    823|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 823, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    823|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    823|            chars_read += bytes_read;
19018|    823|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    823|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 30, False: 793]
  |  |  ------------------
  ------------------
19019|     30|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     30|                result.resize(old_size + bytes_read);
19024|     30|                ++chars_read;
19025|     30|                current = char_traits<char_type>::eof();
19026|     30|                return unexpect_eof(context);
19027|     30|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    793|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    793|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 793, False: 0]
  ------------------
19030|    793|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    793|        }
19032|  8.17k|        return true;
19033|  8.20k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryItEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  1.21k|    {
18973|  1.21k|        return get_bytes(len, "binary", result);
18974|  1.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  1.21k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.21k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.66k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 519, False: 1.14k]
  ------------------
19003|    519|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    519|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 499, False: 20]
  ------------------
19007|    519|                                       ? static_cast<std::size_t>(len)
19008|    519|                                       : chunk_size;
19009|    519|            const std::size_t old_size = result.size();
19010|    519|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    519|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    519|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 519, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    519|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    519|            chars_read += bytes_read;
19018|    519|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    519|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 66, False: 453]
  |  |  ------------------
  ------------------
19019|     66|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     66|                result.resize(old_size + bytes_read);
19024|     66|                ++chars_read;
19025|     66|                current = char_traits<char_type>::eof();
19026|     66|                return unexpect_eof(context);
19027|     66|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    453|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    453|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 453, False: 0]
  ------------------
19030|    453|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    453|        }
19032|  1.14k|        return true;
19033|  1.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11enter_arrayEmi:
15094|  89.5k|    {
15095|  89.5k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  89.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE12enter_objectEmi:
15100|  13.9k|    {
15101|  13.9k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  13.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15unexpected_byteEPKcSM_:
19130|      3|    {
19131|      3|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|      3|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIfLb0EEEbRT_:
18739|  1.92k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.92k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.92k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.92k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.91k, False: 8]
  |  Branch (18746:34): [Folded, False: 1.91k]
  |  Branch (18746:57): [True: 0, False: 1.91k]
  ------------------
18747|  1.91k|        {
18748|  1.91k|            byte_swap(result);
18749|  1.91k|        }
18750|  1.92k|        return true;
18751|  1.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIfEEbRT_PKc:
18667|  1.92k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.92k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.92k|        chars_read += new_chars_read;
18672|  1.92k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 8, False: 1.91k]
  |  |  ------------------
  ------------------
18673|      8|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|      8|            ++chars_read;
18676|      8|            static_cast<void>(report_eof(context));
18677|      8|            return false;
18678|      8|        }
18679|  1.91k|        return true;
18680|  1.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIfEEmPT_m:
 8507|  1.92k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  1.92k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  1.92k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  1.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 8, False: 1.91k]
  |  |  ------------------
  ------------------
 8513|      8|        {
 8514|      8|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|      8|        }
 8516|  1.92k|        return res;
 8517|  1.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIfEEvRT_:
18698|  1.91k|    {
18699|  1.91k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.91k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.74k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.83k, False: 1.91k]
  ------------------
18715|  3.83k|            {
18716|  3.83k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.83k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.91k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIfEEbT_:
18825|  1.91k|    {
18826|  1.91k|        const auto result = static_cast<number_float_t>(number);
18827|  1.91k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  3.63k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.91k]
  |  |  |  Branch (1667:94): [True: 1.71k, False: 198]
  |  |  |  Branch (1667:94): [True: 0, False: 1.71k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.91k|        return sax->number_float(result, "");
18832|  1.91k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIdLb0EEEbRT_:
18739|    818|    {
18740|       |        // read in the original format
18741|       |
18742|    818|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    818|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 818]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    818|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 799, False: 19]
  |  Branch (18746:34): [Folded, False: 799]
  |  Branch (18746:57): [True: 0, False: 799]
  ------------------
18747|    799|        {
18748|    799|            byte_swap(result);
18749|    799|        }
18750|    818|        return true;
18751|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE22parse_msgpack_internalEv:
17112|  7.51k|    {
17113|       |        // the key currently being read; hoisted out of the loop so that its
17114|       |        // capacity is reused across elements and across nesting levels
17115|  7.51k|        string_t key;
17116|       |
17117|   298k|        while (true)
  ------------------
  |  Branch (17117:16): [True: 295k, Folded]
  ------------------
17118|   295k|        {
17119|   295k|            if (!container_stack.empty())
  ------------------
  |  Branch (17119:17): [True: 288k, False: 7.51k]
  ------------------
17120|   288k|            {
17121|       |                // copied out before anything can push onto the stack and
17122|       |                // invalidate a reference into it
17123|   288k|                const bool is_object = container_stack.back().is_object;
17124|       |
17125|   288k|                if (container_stack.back().remaining == 0)
  ------------------
  |  Branch (17125:21): [True: 84.2k, False: 204k]
  ------------------
17126|  84.2k|                {
17127|  84.2k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  84.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 84.2k]
  |  |  ------------------
  ------------------
17128|      0|                    {
17129|      0|                        return false;
17130|      0|                    }
17131|       |                    // the value begun here is complete once its container is
17132|  84.2k|                    if (container_stack.empty())
  ------------------
  |  Branch (17132:25): [True: 2.37k, False: 81.8k]
  ------------------
17133|  2.37k|                    {
17134|  2.37k|                        return true;
17135|  2.37k|                    }
17136|  81.8k|                    continue;
17137|  84.2k|                }
17138|       |
17139|       |                // claim the element about to be read
17140|   204k|                --container_stack.back().remaining;
17141|       |
17142|   204k|                if (is_object)
  ------------------
  |  Branch (17142:21): [True: 21.8k, False: 182k]
  ------------------
17143|  21.8k|                {
17144|  21.8k|                    get();
17145|  21.8k|                    key.clear();
17146|  21.8k|                    if (JSON_HEDLEY_UNLIKELY(!get_msgpack_object_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  43.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 21.8k]
  |  |  |  Branch (1667:94): [True: 388, False: 21.5k]
  |  |  |  Branch (1667:94): [True: 0, False: 21.5k]
  |  |  ------------------
  ------------------
17147|      0|                    {
17148|      0|                        return false;
17149|      0|                    }
17150|  21.8k|                }
17151|   204k|            }
17152|       |
17153|   211k|            if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_value()))
  ------------------
  |  | 1667|   211k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 211k]
  |  |  ------------------
  ------------------
17154|      0|            {
17155|      0|                return false;
17156|      0|            }
17157|       |
17158|       |            // a value that opened a container left it on the stack; one that
17159|       |            // did not, and that was not inside a container, was the whole value
17160|   211k|            if (container_stack.empty())
  ------------------
  |  Branch (17160:17): [True: 2.51k, False: 209k]
  ------------------
17161|  2.51k|            {
17162|  2.51k|                return true;
17163|  2.51k|            }
17164|   211k|        }
17165|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE22get_msgpack_object_keyERSC_:
16908|  21.8k|    {
16909|  21.8k|        const char* found = nullptr;
16910|  21.8k|        switch (current)
16911|  21.8k|        {
16912|      2|            case 0xC0:
  ------------------
  |  Branch (16912:13): [True: 2, False: 21.8k]
  ------------------
16913|      2|                found = "nil";
16914|      2|                break;
16915|      0|            case 0xC2:
  ------------------
  |  Branch (16915:13): [True: 0, False: 21.8k]
  ------------------
16916|      0|            case 0xC3:
  ------------------
  |  Branch (16916:13): [True: 0, False: 21.8k]
  ------------------
16917|      0|                found = "a boolean";
16918|      0|                break;
16919|      1|            case 0xCA:
  ------------------
  |  Branch (16919:13): [True: 1, False: 21.8k]
  ------------------
16920|      1|            case 0xCB:
  ------------------
  |  Branch (16920:13): [True: 0, False: 21.8k]
  ------------------
16921|      1|                found = "a float";
16922|      1|                break;
16923|      1|            case 0xC4:
  ------------------
  |  Branch (16923:13): [True: 1, False: 21.8k]
  ------------------
16924|      1|            case 0xC5:
  ------------------
  |  Branch (16924:13): [True: 0, False: 21.8k]
  ------------------
16925|      2|            case 0xC6:
  ------------------
  |  Branch (16925:13): [True: 1, False: 21.8k]
  ------------------
16926|      2|                found = "a bin";
16927|      2|                break;
16928|      0|            case 0xC7:
  ------------------
  |  Branch (16928:13): [True: 0, False: 21.8k]
  ------------------
16929|      0|            case 0xC8:
  ------------------
  |  Branch (16929:13): [True: 0, False: 21.8k]
  ------------------
16930|      0|            case 0xC9:
  ------------------
  |  Branch (16930:13): [True: 0, False: 21.8k]
  ------------------
16931|      1|            case 0xD4:
  ------------------
  |  Branch (16931:13): [True: 1, False: 21.8k]
  ------------------
16932|      2|            case 0xD5:
  ------------------
  |  Branch (16932:13): [True: 1, False: 21.8k]
  ------------------
16933|      2|            case 0xD6:
  ------------------
  |  Branch (16933:13): [True: 0, False: 21.8k]
  ------------------
16934|      2|            case 0xD7:
  ------------------
  |  Branch (16934:13): [True: 0, False: 21.8k]
  ------------------
16935|      2|            case 0xD8:
  ------------------
  |  Branch (16935:13): [True: 0, False: 21.8k]
  ------------------
16936|      2|                found = "an ext";
16937|      2|                break;
16938|      0|            case 0xCC:
  ------------------
  |  Branch (16938:13): [True: 0, False: 21.8k]
  ------------------
16939|      0|            case 0xCD:
  ------------------
  |  Branch (16939:13): [True: 0, False: 21.8k]
  ------------------
16940|      0|            case 0xCE:
  ------------------
  |  Branch (16940:13): [True: 0, False: 21.8k]
  ------------------
16941|      0|            case 0xCF:
  ------------------
  |  Branch (16941:13): [True: 0, False: 21.8k]
  ------------------
16942|      1|            case 0xD0:
  ------------------
  |  Branch (16942:13): [True: 1, False: 21.8k]
  ------------------
16943|      3|            case 0xD1:
  ------------------
  |  Branch (16943:13): [True: 2, False: 21.8k]
  ------------------
16944|      5|            case 0xD2:
  ------------------
  |  Branch (16944:13): [True: 2, False: 21.8k]
  ------------------
16945|      5|            case 0xD3:
  ------------------
  |  Branch (16945:13): [True: 0, False: 21.8k]
  ------------------
16946|      5|                found = "an integer";
16947|      5|                break;
16948|      0|            case 0xDC:
  ------------------
  |  Branch (16948:13): [True: 0, False: 21.8k]
  ------------------
16949|      0|            case 0xDD:
  ------------------
  |  Branch (16949:13): [True: 0, False: 21.8k]
  ------------------
16950|      0|                found = "an array";
16951|      0|                break;
16952|      1|            case 0xDE:
  ------------------
  |  Branch (16952:13): [True: 1, False: 21.8k]
  ------------------
16953|      2|            case 0xDF:
  ------------------
  |  Branch (16953:13): [True: 1, False: 21.8k]
  ------------------
16954|      2|                found = "a map";
16955|      2|                break;
16956|  21.8k|            default:
  ------------------
  |  Branch (16956:13): [True: 21.8k, False: 14]
  ------------------
16957|       |                // fixint, fixmap, and fixarray; strings, EOF, and the unused
16958|       |                // byte 0xC1 are left to get_msgpack_string
16959|  21.8k|                if (current == char_traits<char_type>::eof())
  ------------------
  |  Branch (16959:21): [True: 217, False: 21.6k]
  ------------------
16960|    217|                {
16961|    217|                    return get_msgpack_string(result, "key");
16962|    217|                }
16963|  21.6k|                if (current <= 0x7F || current >= 0xE0)
  ------------------
  |  Branch (16963:21): [True: 55, False: 21.6k]
  |  Branch (16963:40): [True: 26, False: 21.5k]
  ------------------
16964|     81|                {
16965|     81|                    found = "an integer";
16966|     81|                }
16967|  21.5k|                else if (current <= 0x8F)
  ------------------
  |  Branch (16967:26): [True: 14, False: 21.5k]
  ------------------
16968|     14|                {
16969|     14|                    found = "a map";
16970|     14|                }
16971|  21.5k|                else if (current <= 0x9F)
  ------------------
  |  Branch (16971:26): [True: 13, False: 21.5k]
  ------------------
16972|     13|                {
16973|     13|                    found = "an array";
16974|     13|                }
16975|  21.5k|                else
16976|  21.5k|                {
16977|  21.5k|                    return get_msgpack_string(result, "key");
16978|  21.5k|                }
16979|    108|                break;
16980|  21.8k|        }
16981|       |
16982|    122|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
16983|  21.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE18get_msgpack_stringERSC_PKc:
16825|  31.3k|    {
16826|  31.3k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1667|  31.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 31.3k]
  |  |  ------------------
  ------------------
16827|      0|        {
16828|      0|            return false;
16829|      0|        }
16830|       |
16831|  31.3k|        switch (current)
16832|  31.3k|        {
16833|       |            // fixstr
16834|  16.5k|            case 0xA0:
  ------------------
  |  Branch (16834:13): [True: 16.5k, False: 14.8k]
  ------------------
16835|  24.2k|            case 0xA1:
  ------------------
  |  Branch (16835:13): [True: 7.66k, False: 23.7k]
  ------------------
16836|  25.0k|            case 0xA2:
  ------------------
  |  Branch (16836:13): [True: 827, False: 30.5k]
  ------------------
16837|  25.4k|            case 0xA3:
  ------------------
  |  Branch (16837:13): [True: 405, False: 30.9k]
  ------------------
16838|  25.8k|            case 0xA4:
  ------------------
  |  Branch (16838:13): [True: 355, False: 31.0k]
  ------------------
16839|  26.0k|            case 0xA5:
  ------------------
  |  Branch (16839:13): [True: 216, False: 31.1k]
  ------------------
16840|  26.2k|            case 0xA6:
  ------------------
  |  Branch (16840:13): [True: 200, False: 31.1k]
  ------------------
16841|  26.3k|            case 0xA7:
  ------------------
  |  Branch (16841:13): [True: 118, False: 31.2k]
  ------------------
16842|  26.6k|            case 0xA8:
  ------------------
  |  Branch (16842:13): [True: 334, False: 31.0k]
  ------------------
16843|  26.9k|            case 0xA9:
  ------------------
  |  Branch (16843:13): [True: 251, False: 31.1k]
  ------------------
16844|  27.1k|            case 0xAA:
  ------------------
  |  Branch (16844:13): [True: 208, False: 31.1k]
  ------------------
16845|  27.2k|            case 0xAB:
  ------------------
  |  Branch (16845:13): [True: 132, False: 31.2k]
  ------------------
16846|  27.4k|            case 0xAC:
  ------------------
  |  Branch (16846:13): [True: 150, False: 31.2k]
  ------------------
16847|  27.5k|            case 0xAD:
  ------------------
  |  Branch (16847:13): [True: 146, False: 31.2k]
  ------------------
16848|  27.6k|            case 0xAE:
  ------------------
  |  Branch (16848:13): [True: 80, False: 31.2k]
  ------------------
16849|  27.7k|            case 0xAF:
  ------------------
  |  Branch (16849:13): [True: 95, False: 31.2k]
  ------------------
16850|  27.8k|            case 0xB0:
  ------------------
  |  Branch (16850:13): [True: 97, False: 31.2k]
  ------------------
16851|  27.9k|            case 0xB1:
  ------------------
  |  Branch (16851:13): [True: 94, False: 31.2k]
  ------------------
16852|  28.0k|            case 0xB2:
  ------------------
  |  Branch (16852:13): [True: 160, False: 31.2k]
  ------------------
16853|  28.1k|            case 0xB3:
  ------------------
  |  Branch (16853:13): [True: 60, False: 31.3k]
  ------------------
16854|  28.2k|            case 0xB4:
  ------------------
  |  Branch (16854:13): [True: 96, False: 31.2k]
  ------------------
16855|  28.3k|            case 0xB5:
  ------------------
  |  Branch (16855:13): [True: 55, False: 31.3k]
  ------------------
16856|  28.3k|            case 0xB6:
  ------------------
  |  Branch (16856:13): [True: 64, False: 31.3k]
  ------------------
16857|  28.5k|            case 0xB7:
  ------------------
  |  Branch (16857:13): [True: 175, False: 31.2k]
  ------------------
16858|  28.6k|            case 0xB8:
  ------------------
  |  Branch (16858:13): [True: 76, False: 31.3k]
  ------------------
16859|  28.6k|            case 0xB9:
  ------------------
  |  Branch (16859:13): [True: 69, False: 31.3k]
  ------------------
16860|  28.7k|            case 0xBA:
  ------------------
  |  Branch (16860:13): [True: 93, False: 31.2k]
  ------------------
16861|  28.8k|            case 0xBB:
  ------------------
  |  Branch (16861:13): [True: 103, False: 31.2k]
  ------------------
16862|  28.9k|            case 0xBC:
  ------------------
  |  Branch (16862:13): [True: 53, False: 31.3k]
  ------------------
16863|  29.0k|            case 0xBD:
  ------------------
  |  Branch (16863:13): [True: 74, False: 31.3k]
  ------------------
16864|  29.0k|            case 0xBE:
  ------------------
  |  Branch (16864:13): [True: 59, False: 31.3k]
  ------------------
16865|  29.1k|            case 0xBF:
  ------------------
  |  Branch (16865:13): [True: 47, False: 31.3k]
  ------------------
16866|  29.1k|            {
16867|  29.1k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16867:24): [True: 28.8k, False: 283]
  |  Branch (16867:90): [True: 28.8k, False: 0]
  ------------------
16868|  29.0k|            }
16869|       |
16870|  1.16k|            case 0xD9: // str 8
  ------------------
  |  Branch (16870:13): [True: 1.16k, False: 30.2k]
  ------------------
16871|  1.16k|            {
16872|  1.16k|                std::uint8_t len{};
16873|  1.16k|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16873:24): [True: 1.15k, False: 13]
  |  Branch (16873:43): [True: 1.10k, False: 45]
  |  Branch (16873:70): [True: 1.10k, False: 0]
  ------------------
16874|  29.0k|            }
16875|       |
16876|    740|            case 0xDA: // str 16
  ------------------
  |  Branch (16876:13): [True: 740, False: 30.6k]
  ------------------
16877|    740|            {
16878|    740|                std::uint16_t len{};
16879|    740|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16879:24): [True: 732, False: 8]
  |  Branch (16879:43): [True: 675, False: 57]
  |  Branch (16879:70): [True: 675, False: 0]
  ------------------
16880|  29.0k|            }
16881|       |
16882|    140|            case 0xDB: // str 32
  ------------------
  |  Branch (16882:13): [True: 140, False: 31.2k]
  ------------------
16883|    140|            {
16884|    140|                std::uint32_t len{};
16885|    140|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16885:24): [True: 128, False: 12]
  |  Branch (16885:43): [True: 62, False: 66]
  |  Branch (16885:70): [True: 62, False: 0]
  ------------------
16886|  29.0k|            }
16887|       |
16888|      1|            default:
  ------------------
  |  Branch (16888:13): [True: 1, False: 31.3k]
  ------------------
16889|      1|            {
16890|      1|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0xA0-0xBF, 0xD9-0xDB)", "string", "");
16891|  29.0k|            }
16892|  31.3k|        }
16893|  31.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE19parse_msgpack_valueEv:
16446|   211k|    {
16447|   211k|        switch (get())
16448|   211k|        {
16449|       |            // EOF
16450|  1.38k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (16450:13): [True: 1.38k, False: 209k]
  ------------------
16451|  1.38k|                return unexpect_eof("value");
16452|       |
16453|       |            // positive fixint
16454|  6.23k|            case 0x00:
  ------------------
  |  Branch (16454:13): [True: 6.23k, False: 205k]
  ------------------
16455|  6.98k|            case 0x01:
  ------------------
  |  Branch (16455:13): [True: 751, False: 210k]
  ------------------
16456|  7.42k|            case 0x02:
  ------------------
  |  Branch (16456:13): [True: 435, False: 210k]
  ------------------
16457|  7.85k|            case 0x03:
  ------------------
  |  Branch (16457:13): [True: 434, False: 210k]
  ------------------
16458|  8.29k|            case 0x04:
  ------------------
  |  Branch (16458:13): [True: 438, False: 210k]
  ------------------
16459|  8.69k|            case 0x05:
  ------------------
  |  Branch (16459:13): [True: 398, False: 210k]
  ------------------
16460|  9.05k|            case 0x06:
  ------------------
  |  Branch (16460:13): [True: 364, False: 210k]
  ------------------
16461|  9.47k|            case 0x07:
  ------------------
  |  Branch (16461:13): [True: 417, False: 210k]
  ------------------
16462|  10.0k|            case 0x08:
  ------------------
  |  Branch (16462:13): [True: 573, False: 210k]
  ------------------
16463|  10.5k|            case 0x09:
  ------------------
  |  Branch (16463:13): [True: 546, False: 210k]
  ------------------
16464|  11.0k|            case 0x0A:
  ------------------
  |  Branch (16464:13): [True: 412, False: 210k]
  ------------------
16465|  11.4k|            case 0x0B:
  ------------------
  |  Branch (16465:13): [True: 413, False: 210k]
  ------------------
16466|  11.7k|            case 0x0C:
  ------------------
  |  Branch (16466:13): [True: 341, False: 210k]
  ------------------
16467|  12.1k|            case 0x0D:
  ------------------
  |  Branch (16467:13): [True: 425, False: 210k]
  ------------------
16468|  12.6k|            case 0x0E:
  ------------------
  |  Branch (16468:13): [True: 445, False: 210k]
  ------------------
16469|  12.9k|            case 0x0F:
  ------------------
  |  Branch (16469:13): [True: 310, False: 210k]
  ------------------
16470|  13.2k|            case 0x10:
  ------------------
  |  Branch (16470:13): [True: 351, False: 210k]
  ------------------
16471|  13.5k|            case 0x11:
  ------------------
  |  Branch (16471:13): [True: 294, False: 210k]
  ------------------
16472|  13.9k|            case 0x12:
  ------------------
  |  Branch (16472:13): [True: 401, False: 210k]
  ------------------
16473|  14.3k|            case 0x13:
  ------------------
  |  Branch (16473:13): [True: 335, False: 210k]
  ------------------
16474|  14.6k|            case 0x14:
  ------------------
  |  Branch (16474:13): [True: 374, False: 210k]
  ------------------
16475|  15.1k|            case 0x15:
  ------------------
  |  Branch (16475:13): [True: 474, False: 210k]
  ------------------
16476|  15.5k|            case 0x16:
  ------------------
  |  Branch (16476:13): [True: 353, False: 210k]
  ------------------
16477|  15.8k|            case 0x17:
  ------------------
  |  Branch (16477:13): [True: 365, False: 210k]
  ------------------
16478|  16.4k|            case 0x18:
  ------------------
  |  Branch (16478:13): [True: 559, False: 210k]
  ------------------
16479|  16.8k|            case 0x19:
  ------------------
  |  Branch (16479:13): [True: 422, False: 210k]
  ------------------
16480|  17.5k|            case 0x1A:
  ------------------
  |  Branch (16480:13): [True: 637, False: 210k]
  ------------------
16481|  17.7k|            case 0x1B:
  ------------------
  |  Branch (16481:13): [True: 286, False: 210k]
  ------------------
16482|  18.0k|            case 0x1C:
  ------------------
  |  Branch (16482:13): [True: 285, False: 210k]
  ------------------
16483|  18.4k|            case 0x1D:
  ------------------
  |  Branch (16483:13): [True: 333, False: 210k]
  ------------------
16484|  18.8k|            case 0x1E:
  ------------------
  |  Branch (16484:13): [True: 427, False: 210k]
  ------------------
16485|  19.1k|            case 0x1F:
  ------------------
  |  Branch (16485:13): [True: 273, False: 210k]
  ------------------
16486|  19.4k|            case 0x20:
  ------------------
  |  Branch (16486:13): [True: 353, False: 210k]
  ------------------
16487|  19.8k|            case 0x21:
  ------------------
  |  Branch (16487:13): [True: 407, False: 210k]
  ------------------
16488|  20.3k|            case 0x22:
  ------------------
  |  Branch (16488:13): [True: 486, False: 210k]
  ------------------
16489|  20.6k|            case 0x23:
  ------------------
  |  Branch (16489:13): [True: 327, False: 210k]
  ------------------
16490|  21.1k|            case 0x24:
  ------------------
  |  Branch (16490:13): [True: 435, False: 210k]
  ------------------
16491|  21.5k|            case 0x25:
  ------------------
  |  Branch (16491:13): [True: 452, False: 210k]
  ------------------
16492|  22.0k|            case 0x26:
  ------------------
  |  Branch (16492:13): [True: 456, False: 210k]
  ------------------
16493|  22.3k|            case 0x27:
  ------------------
  |  Branch (16493:13): [True: 324, False: 210k]
  ------------------
16494|  22.8k|            case 0x28:
  ------------------
  |  Branch (16494:13): [True: 462, False: 210k]
  ------------------
16495|  23.1k|            case 0x29:
  ------------------
  |  Branch (16495:13): [True: 343, False: 210k]
  ------------------
16496|  23.5k|            case 0x2A:
  ------------------
  |  Branch (16496:13): [True: 354, False: 210k]
  ------------------
16497|  23.9k|            case 0x2B:
  ------------------
  |  Branch (16497:13): [True: 404, False: 210k]
  ------------------
16498|  24.2k|            case 0x2C:
  ------------------
  |  Branch (16498:13): [True: 379, False: 210k]
  ------------------
16499|  24.6k|            case 0x2D:
  ------------------
  |  Branch (16499:13): [True: 400, False: 210k]
  ------------------
16500|  25.2k|            case 0x2E:
  ------------------
  |  Branch (16500:13): [True: 544, False: 210k]
  ------------------
16501|  25.6k|            case 0x2F:
  ------------------
  |  Branch (16501:13): [True: 409, False: 210k]
  ------------------
16502|  26.0k|            case 0x30:
  ------------------
  |  Branch (16502:13): [True: 381, False: 210k]
  ------------------
16503|  26.4k|            case 0x31:
  ------------------
  |  Branch (16503:13): [True: 382, False: 210k]
  ------------------
16504|  26.7k|            case 0x32:
  ------------------
  |  Branch (16504:13): [True: 352, False: 210k]
  ------------------
16505|  27.0k|            case 0x33:
  ------------------
  |  Branch (16505:13): [True: 334, False: 210k]
  ------------------
16506|  27.4k|            case 0x34:
  ------------------
  |  Branch (16506:13): [True: 328, False: 210k]
  ------------------
16507|  27.8k|            case 0x35:
  ------------------
  |  Branch (16507:13): [True: 385, False: 210k]
  ------------------
16508|  28.1k|            case 0x36:
  ------------------
  |  Branch (16508:13): [True: 337, False: 210k]
  ------------------
16509|  28.4k|            case 0x37:
  ------------------
  |  Branch (16509:13): [True: 291, False: 210k]
  ------------------
16510|  28.8k|            case 0x38:
  ------------------
  |  Branch (16510:13): [True: 428, False: 210k]
  ------------------
16511|  29.2k|            case 0x39:
  ------------------
  |  Branch (16511:13): [True: 357, False: 210k]
  ------------------
16512|  29.7k|            case 0x3A:
  ------------------
  |  Branch (16512:13): [True: 526, False: 210k]
  ------------------
16513|  30.2k|            case 0x3B:
  ------------------
  |  Branch (16513:13): [True: 496, False: 210k]
  ------------------
16514|  30.5k|            case 0x3C:
  ------------------
  |  Branch (16514:13): [True: 309, False: 210k]
  ------------------
16515|  30.8k|            case 0x3D:
  ------------------
  |  Branch (16515:13): [True: 303, False: 210k]
  ------------------
16516|  31.4k|            case 0x3E:
  ------------------
  |  Branch (16516:13): [True: 571, False: 210k]
  ------------------
16517|  31.9k|            case 0x3F:
  ------------------
  |  Branch (16517:13): [True: 546, False: 210k]
  ------------------
16518|  32.3k|            case 0x40:
  ------------------
  |  Branch (16518:13): [True: 400, False: 210k]
  ------------------
16519|  32.9k|            case 0x41:
  ------------------
  |  Branch (16519:13): [True: 580, False: 210k]
  ------------------
16520|  33.3k|            case 0x42:
  ------------------
  |  Branch (16520:13): [True: 412, False: 210k]
  ------------------
16521|  33.6k|            case 0x43:
  ------------------
  |  Branch (16521:13): [True: 281, False: 210k]
  ------------------
16522|  34.0k|            case 0x44:
  ------------------
  |  Branch (16522:13): [True: 380, False: 210k]
  ------------------
16523|  34.3k|            case 0x45:
  ------------------
  |  Branch (16523:13): [True: 372, False: 210k]
  ------------------
16524|  34.7k|            case 0x46:
  ------------------
  |  Branch (16524:13): [True: 397, False: 210k]
  ------------------
16525|  35.1k|            case 0x47:
  ------------------
  |  Branch (16525:13): [True: 327, False: 210k]
  ------------------
16526|  35.5k|            case 0x48:
  ------------------
  |  Branch (16526:13): [True: 420, False: 210k]
  ------------------
16527|  35.7k|            case 0x49:
  ------------------
  |  Branch (16527:13): [True: 259, False: 210k]
  ------------------
16528|  36.0k|            case 0x4A:
  ------------------
  |  Branch (16528:13): [True: 283, False: 210k]
  ------------------
16529|  36.4k|            case 0x4B:
  ------------------
  |  Branch (16529:13): [True: 351, False: 210k]
  ------------------
16530|  36.7k|            case 0x4C:
  ------------------
  |  Branch (16530:13): [True: 277, False: 210k]
  ------------------
16531|  37.0k|            case 0x4D:
  ------------------
  |  Branch (16531:13): [True: 354, False: 210k]
  ------------------
16532|  37.3k|            case 0x4E:
  ------------------
  |  Branch (16532:13): [True: 330, False: 210k]
  ------------------
16533|  37.6k|            case 0x4F:
  ------------------
  |  Branch (16533:13): [True: 294, False: 210k]
  ------------------
16534|  38.2k|            case 0x50:
  ------------------
  |  Branch (16534:13): [True: 523, False: 210k]
  ------------------
16535|  38.7k|            case 0x51:
  ------------------
  |  Branch (16535:13): [True: 500, False: 210k]
  ------------------
16536|  39.0k|            case 0x52:
  ------------------
  |  Branch (16536:13): [True: 296, False: 210k]
  ------------------
16537|  39.4k|            case 0x53:
  ------------------
  |  Branch (16537:13): [True: 401, False: 210k]
  ------------------
16538|  39.7k|            case 0x54:
  ------------------
  |  Branch (16538:13): [True: 321, False: 210k]
  ------------------
16539|  39.9k|            case 0x55:
  ------------------
  |  Branch (16539:13): [True: 253, False: 210k]
  ------------------
16540|  40.3k|            case 0x56:
  ------------------
  |  Branch (16540:13): [True: 398, False: 210k]
  ------------------
16541|  40.7k|            case 0x57:
  ------------------
  |  Branch (16541:13): [True: 352, False: 210k]
  ------------------
16542|  40.9k|            case 0x58:
  ------------------
  |  Branch (16542:13): [True: 250, False: 210k]
  ------------------
16543|  41.3k|            case 0x59:
  ------------------
  |  Branch (16543:13): [True: 402, False: 210k]
  ------------------
16544|  41.7k|            case 0x5A:
  ------------------
  |  Branch (16544:13): [True: 349, False: 210k]
  ------------------
16545|  42.1k|            case 0x5B:
  ------------------
  |  Branch (16545:13): [True: 384, False: 210k]
  ------------------
16546|  42.4k|            case 0x5C:
  ------------------
  |  Branch (16546:13): [True: 313, False: 210k]
  ------------------
16547|  42.9k|            case 0x5D:
  ------------------
  |  Branch (16547:13): [True: 489, False: 210k]
  ------------------
16548|  43.4k|            case 0x5E:
  ------------------
  |  Branch (16548:13): [True: 506, False: 210k]
  ------------------
16549|  43.7k|            case 0x5F:
  ------------------
  |  Branch (16549:13): [True: 324, False: 210k]
  ------------------
16550|  44.3k|            case 0x60:
  ------------------
  |  Branch (16550:13): [True: 553, False: 210k]
  ------------------
16551|  44.6k|            case 0x61:
  ------------------
  |  Branch (16551:13): [True: 350, False: 210k]
  ------------------
16552|  45.0k|            case 0x62:
  ------------------
  |  Branch (16552:13): [True: 380, False: 210k]
  ------------------
16553|  45.2k|            case 0x63:
  ------------------
  |  Branch (16553:13): [True: 255, False: 210k]
  ------------------
16554|  45.7k|            case 0x64:
  ------------------
  |  Branch (16554:13): [True: 491, False: 210k]
  ------------------
16555|  46.2k|            case 0x65:
  ------------------
  |  Branch (16555:13): [True: 432, False: 210k]
  ------------------
16556|  46.4k|            case 0x66:
  ------------------
  |  Branch (16556:13): [True: 279, False: 210k]
  ------------------
16557|  46.9k|            case 0x67:
  ------------------
  |  Branch (16557:13): [True: 451, False: 210k]
  ------------------
16558|  47.2k|            case 0x68:
  ------------------
  |  Branch (16558:13): [True: 280, False: 210k]
  ------------------
16559|  47.5k|            case 0x69:
  ------------------
  |  Branch (16559:13): [True: 295, False: 210k]
  ------------------
16560|  47.9k|            case 0x6A:
  ------------------
  |  Branch (16560:13): [True: 431, False: 210k]
  ------------------
16561|  48.3k|            case 0x6B:
  ------------------
  |  Branch (16561:13): [True: 397, False: 210k]
  ------------------
16562|  48.6k|            case 0x6C:
  ------------------
  |  Branch (16562:13): [True: 264, False: 210k]
  ------------------
16563|  48.9k|            case 0x6D:
  ------------------
  |  Branch (16563:13): [True: 384, False: 210k]
  ------------------
16564|  49.3k|            case 0x6E:
  ------------------
  |  Branch (16564:13): [True: 408, False: 210k]
  ------------------
16565|  49.7k|            case 0x6F:
  ------------------
  |  Branch (16565:13): [True: 397, False: 210k]
  ------------------
16566|  50.2k|            case 0x70:
  ------------------
  |  Branch (16566:13): [True: 462, False: 210k]
  ------------------
16567|  50.7k|            case 0x71:
  ------------------
  |  Branch (16567:13): [True: 451, False: 210k]
  ------------------
16568|  51.1k|            case 0x72:
  ------------------
  |  Branch (16568:13): [True: 481, False: 210k]
  ------------------
16569|  51.6k|            case 0x73:
  ------------------
  |  Branch (16569:13): [True: 463, False: 210k]
  ------------------
16570|  52.1k|            case 0x74:
  ------------------
  |  Branch (16570:13): [True: 488, False: 210k]
  ------------------
16571|  52.4k|            case 0x75:
  ------------------
  |  Branch (16571:13): [True: 329, False: 210k]
  ------------------
16572|  52.8k|            case 0x76:
  ------------------
  |  Branch (16572:13): [True: 373, False: 210k]
  ------------------
16573|  53.2k|            case 0x77:
  ------------------
  |  Branch (16573:13): [True: 372, False: 210k]
  ------------------
16574|  53.4k|            case 0x78:
  ------------------
  |  Branch (16574:13): [True: 283, False: 210k]
  ------------------
16575|  53.7k|            case 0x79:
  ------------------
  |  Branch (16575:13): [True: 236, False: 211k]
  ------------------
16576|  54.1k|            case 0x7A:
  ------------------
  |  Branch (16576:13): [True: 399, False: 210k]
  ------------------
16577|  54.5k|            case 0x7B:
  ------------------
  |  Branch (16577:13): [True: 424, False: 210k]
  ------------------
16578|  55.0k|            case 0x7C:
  ------------------
  |  Branch (16578:13): [True: 482, False: 210k]
  ------------------
16579|  55.3k|            case 0x7D:
  ------------------
  |  Branch (16579:13): [True: 301, False: 210k]
  ------------------
16580|  55.8k|            case 0x7E:
  ------------------
  |  Branch (16580:13): [True: 489, False: 210k]
  ------------------
16581|  56.4k|            case 0x7F:
  ------------------
  |  Branch (16581:13): [True: 581, False: 210k]
  ------------------
16582|  56.4k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
16583|       |
16584|       |            // fixmap
16585|  2.15k|            case 0x80:
  ------------------
  |  Branch (16585:13): [True: 2.15k, False: 209k]
  ------------------
16586|  7.80k|            case 0x81:
  ------------------
  |  Branch (16586:13): [True: 5.64k, False: 205k]
  ------------------
16587|  8.69k|            case 0x82:
  ------------------
  |  Branch (16587:13): [True: 899, False: 210k]
  ------------------
16588|  9.05k|            case 0x83:
  ------------------
  |  Branch (16588:13): [True: 356, False: 210k]
  ------------------
16589|  9.53k|            case 0x84:
  ------------------
  |  Branch (16589:13): [True: 479, False: 210k]
  ------------------
16590|  9.88k|            case 0x85:
  ------------------
  |  Branch (16590:13): [True: 351, False: 210k]
  ------------------
16591|  10.1k|            case 0x86:
  ------------------
  |  Branch (16591:13): [True: 249, False: 210k]
  ------------------
16592|  10.4k|            case 0x87:
  ------------------
  |  Branch (16592:13): [True: 344, False: 210k]
  ------------------
16593|  10.7k|            case 0x88:
  ------------------
  |  Branch (16593:13): [True: 297, False: 210k]
  ------------------
16594|  11.0k|            case 0x89:
  ------------------
  |  Branch (16594:13): [True: 295, False: 210k]
  ------------------
16595|  11.3k|            case 0x8A:
  ------------------
  |  Branch (16595:13): [True: 255, False: 210k]
  ------------------
16596|  11.6k|            case 0x8B:
  ------------------
  |  Branch (16596:13): [True: 360, False: 210k]
  ------------------
16597|  12.1k|            case 0x8C:
  ------------------
  |  Branch (16597:13): [True: 434, False: 210k]
  ------------------
16598|  12.5k|            case 0x8D:
  ------------------
  |  Branch (16598:13): [True: 461, False: 210k]
  ------------------
16599|  12.8k|            case 0x8E:
  ------------------
  |  Branch (16599:13): [True: 307, False: 210k]
  ------------------
16600|  13.2k|            case 0x8F:
  ------------------
  |  Branch (16600:13): [True: 355, False: 210k]
  ------------------
16601|  13.2k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
16602|       |
16603|       |            // fixarray
16604|  2.66k|            case 0x90:
  ------------------
  |  Branch (16604:13): [True: 2.66k, False: 208k]
  ------------------
16605|  75.0k|            case 0x91:
  ------------------
  |  Branch (16605:13): [True: 72.4k, False: 138k]
  ------------------
16606|  75.8k|            case 0x92:
  ------------------
  |  Branch (16606:13): [True: 742, False: 210k]
  ------------------
16607|  76.9k|            case 0x93:
  ------------------
  |  Branch (16607:13): [True: 1.11k, False: 210k]
  ------------------
16608|  77.8k|            case 0x94:
  ------------------
  |  Branch (16608:13): [True: 874, False: 210k]
  ------------------
16609|  78.4k|            case 0x95:
  ------------------
  |  Branch (16609:13): [True: 592, False: 210k]
  ------------------
16610|  79.3k|            case 0x96:
  ------------------
  |  Branch (16610:13): [True: 985, False: 210k]
  ------------------
16611|  79.8k|            case 0x97:
  ------------------
  |  Branch (16611:13): [True: 453, False: 210k]
  ------------------
16612|  81.0k|            case 0x98:
  ------------------
  |  Branch (16612:13): [True: 1.20k, False: 210k]
  ------------------
16613|  81.8k|            case 0x99:
  ------------------
  |  Branch (16613:13): [True: 778, False: 210k]
  ------------------
16614|  82.8k|            case 0x9A:
  ------------------
  |  Branch (16614:13): [True: 978, False: 210k]
  ------------------
16615|  83.9k|            case 0x9B:
  ------------------
  |  Branch (16615:13): [True: 1.11k, False: 210k]
  ------------------
16616|  84.8k|            case 0x9C:
  ------------------
  |  Branch (16616:13): [True: 971, False: 210k]
  ------------------
16617|  86.0k|            case 0x9D:
  ------------------
  |  Branch (16617:13): [True: 1.19k, False: 210k]
  ------------------
16618|  87.2k|            case 0x9E:
  ------------------
  |  Branch (16618:13): [True: 1.15k, False: 210k]
  ------------------
16619|  87.9k|            case 0x9F:
  ------------------
  |  Branch (16619:13): [True: 716, False: 210k]
  ------------------
16620|  87.9k|                return enter_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
16621|       |
16622|       |            // fixstr
16623|  3.40k|            case 0xA0:
  ------------------
  |  Branch (16623:13): [True: 3.40k, False: 207k]
  ------------------
16624|  4.24k|            case 0xA1:
  ------------------
  |  Branch (16624:13): [True: 841, False: 210k]
  ------------------
16625|  4.78k|            case 0xA2:
  ------------------
  |  Branch (16625:13): [True: 534, False: 210k]
  ------------------
16626|  5.12k|            case 0xA3:
  ------------------
  |  Branch (16626:13): [True: 346, False: 210k]
  ------------------
16627|  5.46k|            case 0xA4:
  ------------------
  |  Branch (16627:13): [True: 336, False: 210k]
  ------------------
16628|  5.66k|            case 0xA5:
  ------------------
  |  Branch (16628:13): [True: 205, False: 211k]
  ------------------
16629|  5.86k|            case 0xA6:
  ------------------
  |  Branch (16629:13): [True: 194, False: 211k]
  ------------------
16630|  5.96k|            case 0xA7:
  ------------------
  |  Branch (16630:13): [True: 107, False: 211k]
  ------------------
16631|  6.24k|            case 0xA8:
  ------------------
  |  Branch (16631:13): [True: 271, False: 210k]
  ------------------
16632|  6.44k|            case 0xA9:
  ------------------
  |  Branch (16632:13): [True: 208, False: 211k]
  ------------------
16633|  6.60k|            case 0xAA:
  ------------------
  |  Branch (16633:13): [True: 160, False: 211k]
  ------------------
16634|  6.71k|            case 0xAB:
  ------------------
  |  Branch (16634:13): [True: 109, False: 211k]
  ------------------
16635|  6.84k|            case 0xAC:
  ------------------
  |  Branch (16635:13): [True: 130, False: 211k]
  ------------------
16636|  6.96k|            case 0xAD:
  ------------------
  |  Branch (16636:13): [True: 120, False: 211k]
  ------------------
16637|  7.03k|            case 0xAE:
  ------------------
  |  Branch (16637:13): [True: 68, False: 211k]
  ------------------
16638|  7.10k|            case 0xAF:
  ------------------
  |  Branch (16638:13): [True: 67, False: 211k]
  ------------------
16639|  7.17k|            case 0xB0:
  ------------------
  |  Branch (16639:13): [True: 77, False: 211k]
  ------------------
16640|  7.25k|            case 0xB1:
  ------------------
  |  Branch (16640:13): [True: 78, False: 211k]
  ------------------
16641|  7.36k|            case 0xB2:
  ------------------
  |  Branch (16641:13): [True: 106, False: 211k]
  ------------------
16642|  7.42k|            case 0xB3:
  ------------------
  |  Branch (16642:13): [True: 59, False: 211k]
  ------------------
16643|  7.50k|            case 0xB4:
  ------------------
  |  Branch (16643:13): [True: 87, False: 211k]
  ------------------
16644|  7.56k|            case 0xB5:
  ------------------
  |  Branch (16644:13): [True: 55, False: 211k]
  ------------------
16645|  7.62k|            case 0xB6:
  ------------------
  |  Branch (16645:13): [True: 64, False: 211k]
  ------------------
16646|  7.71k|            case 0xB7:
  ------------------
  |  Branch (16646:13): [True: 89, False: 211k]
  ------------------
16647|  7.77k|            case 0xB8:
  ------------------
  |  Branch (16647:13): [True: 60, False: 211k]
  ------------------
16648|  7.83k|            case 0xB9:
  ------------------
  |  Branch (16648:13): [True: 62, False: 211k]
  ------------------
16649|  7.90k|            case 0xBA:
  ------------------
  |  Branch (16649:13): [True: 69, False: 211k]
  ------------------
16650|  7.99k|            case 0xBB:
  ------------------
  |  Branch (16650:13): [True: 85, False: 211k]
  ------------------
16651|  8.04k|            case 0xBC:
  ------------------
  |  Branch (16651:13): [True: 53, False: 211k]
  ------------------
16652|  8.10k|            case 0xBD:
  ------------------
  |  Branch (16652:13): [True: 55, False: 211k]
  ------------------
16653|  8.15k|            case 0xBE:
  ------------------
  |  Branch (16653:13): [True: 56, False: 211k]
  ------------------
16654|  8.20k|            case 0xBF:
  ------------------
  |  Branch (16654:13): [True: 46, False: 211k]
  ------------------
16655|  8.85k|            case 0xD9: // str 8
  ------------------
  |  Branch (16655:13): [True: 651, False: 210k]
  ------------------
16656|  9.48k|            case 0xDA: // str 16
  ------------------
  |  Branch (16656:13): [True: 627, False: 210k]
  ------------------
16657|  9.61k|            case 0xDB: // str 32
  ------------------
  |  Branch (16657:13): [True: 129, False: 211k]
  ------------------
16658|  9.61k|            {
16659|  9.61k|                string_t s;
16660|  9.61k|                return get_msgpack_string(s) && sax->string(s);
  ------------------
  |  Branch (16660:24): [True: 9.17k, False: 436]
  |  Branch (16660:49): [True: 9.17k, False: 0]
  ------------------
16661|  9.48k|            }
16662|       |
16663|  2.01k|            case 0xC0: // nil
  ------------------
  |  Branch (16663:13): [True: 2.01k, False: 209k]
  ------------------
16664|  2.01k|                return sax->null();
16665|       |
16666|  1.35k|            case 0xC2: // false
  ------------------
  |  Branch (16666:13): [True: 1.35k, False: 209k]
  ------------------
16667|  1.35k|                return sax->boolean(false);
16668|       |
16669|  1.16k|            case 0xC3: // true
  ------------------
  |  Branch (16669:13): [True: 1.16k, False: 210k]
  ------------------
16670|  1.16k|                return sax->boolean(true);
16671|       |
16672|  7.58k|            case 0xC4: // bin 8
  ------------------
  |  Branch (16672:13): [True: 7.58k, False: 203k]
  ------------------
16673|  8.42k|            case 0xC5: // bin 16
  ------------------
  |  Branch (16673:13): [True: 842, False: 210k]
  ------------------
16674|  8.78k|            case 0xC6: // bin 32
  ------------------
  |  Branch (16674:13): [True: 364, False: 210k]
  ------------------
16675|  9.42k|            case 0xC7: // ext 8
  ------------------
  |  Branch (16675:13): [True: 634, False: 210k]
  ------------------
16676|  9.81k|            case 0xC8: // ext 16
  ------------------
  |  Branch (16676:13): [True: 391, False: 210k]
  ------------------
16677|  10.0k|            case 0xC9: // ext 32
  ------------------
  |  Branch (16677:13): [True: 197, False: 211k]
  ------------------
16678|  11.3k|            case 0xD4: // fixext 1
  ------------------
  |  Branch (16678:13): [True: 1.36k, False: 209k]
  ------------------
16679|  11.7k|            case 0xD5: // fixext 2
  ------------------
  |  Branch (16679:13): [True: 411, False: 210k]
  ------------------
16680|  12.0k|            case 0xD6: // fixext 4
  ------------------
  |  Branch (16680:13): [True: 293, False: 210k]
  ------------------
16681|  12.5k|            case 0xD7: // fixext 8
  ------------------
  |  Branch (16681:13): [True: 431, False: 210k]
  ------------------
16682|  12.5k|            case 0xD8: // fixext 16
  ------------------
  |  Branch (16682:13): [True: 71, False: 211k]
  ------------------
16683|  12.5k|            {
16684|  12.5k|                binary_t b;
16685|  12.5k|                return get_msgpack_binary(b) && sax->binary(b);
  ------------------
  |  Branch (16685:24): [True: 12.2k, False: 296]
  |  Branch (16685:49): [True: 12.2k, False: 0]
  ------------------
16686|  12.5k|            }
16687|       |
16688|  1.92k|            case 0xCA: // float 32
  ------------------
  |  Branch (16688:13): [True: 1.92k, False: 209k]
  ------------------
16689|  1.92k|            {
16690|  1.92k|                float number{};
16691|  1.92k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (16691:24): [True: 1.91k, False: 8]
  |  Branch (16691:46): [True: 1.91k, False: 0]
  ------------------
16692|  12.5k|            }
16693|       |
16694|    818|            case 0xCB: // float 64
  ------------------
  |  Branch (16694:13): [True: 818, False: 210k]
  ------------------
16695|    818|            {
16696|    818|                double number{};
16697|    818|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (16697:24): [True: 799, False: 19]
  |  Branch (16697:46): [True: 799, False: 0]
  ------------------
16698|  12.5k|            }
16699|       |
16700|    850|            case 0xCC: // uint 8
  ------------------
  |  Branch (16700:13): [True: 850, False: 210k]
  ------------------
16701|    850|            {
16702|    850|                std::uint8_t number{};
16703|    850|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16703:24): [True: 848, False: 2]
  |  Branch (16703:46): [True: 848, False: 0]
  ------------------
16704|  12.5k|            }
16705|       |
16706|    218|            case 0xCD: // uint 16
  ------------------
  |  Branch (16706:13): [True: 218, False: 211k]
  ------------------
16707|    218|            {
16708|    218|                std::uint16_t number{};
16709|    218|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16709:24): [True: 216, False: 2]
  |  Branch (16709:46): [True: 216, False: 0]
  ------------------
16710|  12.5k|            }
16711|       |
16712|    362|            case 0xCE: // uint 32
  ------------------
  |  Branch (16712:13): [True: 362, False: 210k]
  ------------------
16713|    362|            {
16714|    362|                std::uint32_t number{};
16715|    362|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16715:24): [True: 358, False: 4]
  |  Branch (16715:46): [True: 358, False: 0]
  ------------------
16716|  12.5k|            }
16717|       |
16718|    614|            case 0xCF: // uint 64
  ------------------
  |  Branch (16718:13): [True: 614, False: 210k]
  ------------------
16719|    614|            {
16720|    614|                std::uint64_t number{};
16721|    614|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16721:24): [True: 602, False: 12]
  |  Branch (16721:46): [True: 602, False: 0]
  ------------------
16722|  12.5k|            }
16723|       |
16724|  1.55k|            case 0xD0: // int 8
  ------------------
  |  Branch (16724:13): [True: 1.55k, False: 209k]
  ------------------
16725|  1.55k|            {
16726|  1.55k|                std::int8_t number{};
16727|  1.55k|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16727:24): [True: 1.55k, False: 3]
  |  Branch (16727:46): [True: 1.55k, False: 0]
  ------------------
16728|  12.5k|            }
16729|       |
16730|    394|            case 0xD1: // int 16
  ------------------
  |  Branch (16730:13): [True: 394, False: 210k]
  ------------------
16731|    394|            {
16732|    394|                std::int16_t number{};
16733|    394|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16733:24): [True: 390, False: 4]
  |  Branch (16733:46): [True: 390, False: 0]
  ------------------
16734|  12.5k|            }
16735|       |
16736|    435|            case 0xD2: // int 32
  ------------------
  |  Branch (16736:13): [True: 435, False: 210k]
  ------------------
16737|    435|            {
16738|    435|                std::int32_t number{};
16739|    435|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16739:24): [True: 425, False: 10]
  |  Branch (16739:46): [True: 425, False: 0]
  ------------------
16740|  12.5k|            }
16741|       |
16742|    694|            case 0xD3: // int 64
  ------------------
  |  Branch (16742:13): [True: 694, False: 210k]
  ------------------
16743|    694|            {
16744|    694|                std::int64_t number{};
16745|    694|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16745:24): [True: 672, False: 22]
  |  Branch (16745:46): [True: 672, False: 0]
  ------------------
16746|  12.5k|            }
16747|       |
16748|  1.42k|            case 0xDC: // array 16
  ------------------
  |  Branch (16748:13): [True: 1.42k, False: 209k]
  ------------------
16749|  1.42k|            {
16750|  1.42k|                std::uint16_t len{};
16751|  1.42k|                return get_number(len) && enter_array(static_cast<std::size_t>(len));
  ------------------
  |  Branch (16751:24): [True: 1.40k, False: 12]
  |  Branch (16751:43): [True: 1.40k, False: 0]
  ------------------
16752|  12.5k|            }
16753|       |
16754|    225|            case 0xDD: // array 32
  ------------------
  |  Branch (16754:13): [True: 225, False: 211k]
  ------------------
16755|    225|            {
16756|    225|                std::uint32_t len{};
16757|    225|                return get_number(len) && enter_array(conditional_static_cast<std::size_t>(len));
  ------------------
  |  Branch (16757:24): [True: 213, False: 12]
  |  Branch (16757:43): [True: 213, False: 0]
  ------------------
16758|  12.5k|            }
16759|       |
16760|    516|            case 0xDE: // map 16
  ------------------
  |  Branch (16760:13): [True: 516, False: 210k]
  ------------------
16761|    516|            {
16762|    516|                std::uint16_t len{};
16763|    516|                return get_number(len) && enter_object(static_cast<std::size_t>(len));
  ------------------
  |  Branch (16763:24): [True: 513, False: 3]
  |  Branch (16763:43): [True: 513, False: 0]
  ------------------
16764|  12.5k|            }
16765|       |
16766|    165|            case 0xDF: // map 32
  ------------------
  |  Branch (16766:13): [True: 165, False: 211k]
  ------------------
16767|    165|            {
16768|    165|                std::uint32_t len{};
16769|    165|                return get_number(len) && enter_object(conditional_static_cast<std::size_t>(len));
  ------------------
  |  Branch (16769:24): [True: 161, False: 4]
  |  Branch (16769:43): [True: 161, False: 0]
  ------------------
16770|  12.5k|            }
16771|       |
16772|       |            // negative fixint
16773|    543|            case 0xE0:
  ------------------
  |  Branch (16773:13): [True: 543, False: 210k]
  ------------------
16774|  1.07k|            case 0xE1:
  ------------------
  |  Branch (16774:13): [True: 529, False: 210k]
  ------------------
16775|  1.40k|            case 0xE2:
  ------------------
  |  Branch (16775:13): [True: 335, False: 210k]
  ------------------
16776|  1.78k|            case 0xE3:
  ------------------
  |  Branch (16776:13): [True: 374, False: 210k]
  ------------------
16777|  2.11k|            case 0xE4:
  ------------------
  |  Branch (16777:13): [True: 337, False: 210k]
  ------------------
16778|  2.76k|            case 0xE5:
  ------------------
  |  Branch (16778:13): [True: 646, False: 210k]
  ------------------
16779|  3.12k|            case 0xE6:
  ------------------
  |  Branch (16779:13): [True: 357, False: 210k]
  ------------------
16780|  3.47k|            case 0xE7:
  ------------------
  |  Branch (16780:13): [True: 353, False: 210k]
  ------------------
16781|  3.81k|            case 0xE8:
  ------------------
  |  Branch (16781:13): [True: 338, False: 210k]
  ------------------
16782|  4.16k|            case 0xE9:
  ------------------
  |  Branch (16782:13): [True: 356, False: 210k]
  ------------------
16783|  4.53k|            case 0xEA:
  ------------------
  |  Branch (16783:13): [True: 362, False: 210k]
  ------------------
16784|  4.79k|            case 0xEB:
  ------------------
  |  Branch (16784:13): [True: 269, False: 210k]
  ------------------
16785|  5.05k|            case 0xEC:
  ------------------
  |  Branch (16785:13): [True: 256, False: 210k]
  ------------------
16786|  5.47k|            case 0xED:
  ------------------
  |  Branch (16786:13): [True: 419, False: 210k]
  ------------------
16787|  5.92k|            case 0xEE:
  ------------------
  |  Branch (16787:13): [True: 450, False: 210k]
  ------------------
16788|  6.33k|            case 0xEF:
  ------------------
  |  Branch (16788:13): [True: 410, False: 210k]
  ------------------
16789|  6.88k|            case 0xF0:
  ------------------
  |  Branch (16789:13): [True: 547, False: 210k]
  ------------------
16790|  7.38k|            case 0xF1:
  ------------------
  |  Branch (16790:13): [True: 507, False: 210k]
  ------------------
16791|  7.83k|            case 0xF2:
  ------------------
  |  Branch (16791:13): [True: 446, False: 210k]
  ------------------
16792|  8.19k|            case 0xF3:
  ------------------
  |  Branch (16792:13): [True: 357, False: 210k]
  ------------------
16793|  8.58k|            case 0xF4:
  ------------------
  |  Branch (16793:13): [True: 397, False: 210k]
  ------------------
16794|  9.05k|            case 0xF5:
  ------------------
  |  Branch (16794:13): [True: 469, False: 210k]
  ------------------
16795|  9.42k|            case 0xF6:
  ------------------
  |  Branch (16795:13): [True: 365, False: 210k]
  ------------------
16796|  9.80k|            case 0xF7:
  ------------------
  |  Branch (16796:13): [True: 384, False: 210k]
  ------------------
16797|  10.2k|            case 0xF8:
  ------------------
  |  Branch (16797:13): [True: 485, False: 210k]
  ------------------
16798|  10.6k|            case 0xF9:
  ------------------
  |  Branch (16798:13): [True: 359, False: 210k]
  ------------------
16799|  10.8k|            case 0xFA:
  ------------------
  |  Branch (16799:13): [True: 243, False: 210k]
  ------------------
16800|  11.3k|            case 0xFB:
  ------------------
  |  Branch (16800:13): [True: 470, False: 210k]
  ------------------
16801|  11.7k|            case 0xFC:
  ------------------
  |  Branch (16801:13): [True: 415, False: 210k]
  ------------------
16802|  12.1k|            case 0xFD:
  ------------------
  |  Branch (16802:13): [True: 409, False: 210k]
  ------------------
16803|  12.9k|            case 0xFE:
  ------------------
  |  Branch (16803:13): [True: 746, False: 210k]
  ------------------
16804|  15.3k|            case 0xFF:
  ------------------
  |  Branch (16804:13): [True: 2.38k, False: 208k]
  ------------------
16805|  15.3k|                return sax->number_integer(static_cast<std::int8_t>(current));
16806|       |
16807|      3|            default: // anything else
  ------------------
  |  Branch (16807:13): [True: 3, False: 211k]
  ------------------
16808|      3|            {
16809|      3|                return unexpected_byte("invalid byte", "value");
16810|  12.9k|            }
16811|   211k|        }
16812|   211k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE18get_msgpack_binaryERNS0_27byte_container_with_subtypeISF_EE:
16996|  12.5k|    {
16997|       |        // helper function to set the subtype
16998|  12.5k|        auto assign_and_return_true = [&result](std::int8_t subtype)
16999|  12.5k|        {
17000|  12.5k|            result.set_subtype(static_cast<std::uint8_t>(subtype));
17001|  12.5k|            return true;
17002|  12.5k|        };
17003|       |
17004|  12.5k|        switch (current)
17005|  12.5k|        {
17006|  7.58k|            case 0xC4: // bin 8
  ------------------
  |  Branch (17006:13): [True: 7.58k, False: 5.00k]
  ------------------
17007|  7.58k|            {
17008|  7.58k|                std::uint8_t len{};
17009|  7.58k|                return get_number(len) &&
  ------------------
  |  Branch (17009:24): [True: 7.57k, False: 5]
  ------------------
17010|  7.57k|                       get_binary(len, result);
  ------------------
  |  Branch (17010:24): [True: 7.55k, False: 26]
  ------------------
17011|      0|            }
17012|       |
17013|    842|            case 0xC5: // bin 16
  ------------------
  |  Branch (17013:13): [True: 842, False: 11.7k]
  ------------------
17014|    842|            {
17015|    842|                std::uint16_t len{};
17016|    842|                return get_number(len) &&
  ------------------
  |  Branch (17016:24): [True: 833, False: 9]
  ------------------
17017|    833|                       get_binary(len, result);
  ------------------
  |  Branch (17017:24): [True: 775, False: 58]
  ------------------
17018|      0|            }
17019|       |
17020|    364|            case 0xC6: // bin 32
  ------------------
  |  Branch (17020:13): [True: 364, False: 12.2k]
  ------------------
17021|    364|            {
17022|    364|                std::uint32_t len{};
17023|    364|                return get_number(len) &&
  ------------------
  |  Branch (17023:24): [True: 352, False: 12]
  ------------------
17024|    352|                       get_binary(len, result);
  ------------------
  |  Branch (17024:24): [True: 254, False: 98]
  ------------------
17025|      0|            }
17026|       |
17027|    634|            case 0xC7: // ext 8
  ------------------
  |  Branch (17027:13): [True: 634, False: 11.9k]
  ------------------
17028|    634|            {
17029|    634|                std::uint8_t len{};
17030|    634|                std::int8_t subtype{};
17031|    634|                return get_number(len) &&
  ------------------
  |  Branch (17031:24): [True: 631, False: 3]
  ------------------
17032|    631|                       get_number(subtype) &&
  ------------------
  |  Branch (17032:24): [True: 630, False: 1]
  ------------------
17033|    630|                       get_binary(len, result) &&
  ------------------
  |  Branch (17033:24): [True: 626, False: 4]
  ------------------
17034|    626|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17034:24): [True: 626, False: 0]
  ------------------
17035|      0|            }
17036|       |
17037|    391|            case 0xC8: // ext 16
  ------------------
  |  Branch (17037:13): [True: 391, False: 12.1k]
  ------------------
17038|    391|            {
17039|    391|                std::uint16_t len{};
17040|    391|                std::int8_t subtype{};
17041|    391|                return get_number(len) &&
  ------------------
  |  Branch (17041:24): [True: 383, False: 8]
  ------------------
17042|    383|                       get_number(subtype) &&
  ------------------
  |  Branch (17042:24): [True: 378, False: 5]
  ------------------
17043|    378|                       get_binary(len, result) &&
  ------------------
  |  Branch (17043:24): [True: 370, False: 8]
  ------------------
17044|    370|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17044:24): [True: 370, False: 0]
  ------------------
17045|      0|            }
17046|       |
17047|    197|            case 0xC9: // ext 32
  ------------------
  |  Branch (17047:13): [True: 197, False: 12.3k]
  ------------------
17048|    197|            {
17049|    197|                std::uint32_t len{};
17050|    197|                std::int8_t subtype{};
17051|    197|                return get_number(len) &&
  ------------------
  |  Branch (17051:24): [True: 186, False: 11]
  ------------------
17052|    186|                       get_number(subtype) &&
  ------------------
  |  Branch (17052:24): [True: 180, False: 6]
  ------------------
17053|    180|                       get_binary(len, result) &&
  ------------------
  |  Branch (17053:24): [True: 177, False: 3]
  ------------------
17054|    177|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17054:24): [True: 177, False: 0]
  ------------------
17055|      0|            }
17056|       |
17057|  1.36k|            case 0xD4: // fixext 1
  ------------------
  |  Branch (17057:13): [True: 1.36k, False: 11.2k]
  ------------------
17058|  1.36k|            {
17059|  1.36k|                std::int8_t subtype{};
17060|  1.36k|                return get_number(subtype) &&
  ------------------
  |  Branch (17060:24): [True: 1.36k, False: 3]
  ------------------
17061|  1.36k|                       get_binary(1, result) &&
  ------------------
  |  Branch (17061:24): [True: 1.36k, False: 2]
  ------------------
17062|  1.36k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17062:24): [True: 1.36k, False: 0]
  ------------------
17063|      0|            }
17064|       |
17065|    411|            case 0xD5: // fixext 2
  ------------------
  |  Branch (17065:13): [True: 411, False: 12.1k]
  ------------------
17066|    411|            {
17067|    411|                std::int8_t subtype{};
17068|    411|                return get_number(subtype) &&
  ------------------
  |  Branch (17068:24): [True: 407, False: 4]
  ------------------
17069|    407|                       get_binary(2, result) &&
  ------------------
  |  Branch (17069:24): [True: 403, False: 4]
  ------------------
17070|    403|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17070:24): [True: 403, False: 0]
  ------------------
17071|      0|            }
17072|       |
17073|    293|            case 0xD6: // fixext 4
  ------------------
  |  Branch (17073:13): [True: 293, False: 12.2k]
  ------------------
17074|    293|            {
17075|    293|                std::int8_t subtype{};
17076|    293|                return get_number(subtype) &&
  ------------------
  |  Branch (17076:24): [True: 291, False: 2]
  ------------------
17077|    291|                       get_binary(4, result) &&
  ------------------
  |  Branch (17077:24): [True: 288, False: 3]
  ------------------
17078|    288|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17078:24): [True: 288, False: 0]
  ------------------
17079|      0|            }
17080|       |
17081|    431|            case 0xD7: // fixext 8
  ------------------
  |  Branch (17081:13): [True: 431, False: 12.1k]
  ------------------
17082|    431|            {
17083|    431|                std::int8_t subtype{};
17084|    431|                return get_number(subtype) &&
  ------------------
  |  Branch (17084:24): [True: 428, False: 3]
  ------------------
17085|    428|                       get_binary(8, result) &&
  ------------------
  |  Branch (17085:24): [True: 422, False: 6]
  ------------------
17086|    422|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17086:24): [True: 422, False: 0]
  ------------------
17087|      0|            }
17088|       |
17089|     71|            case 0xD8: // fixext 16
  ------------------
  |  Branch (17089:13): [True: 71, False: 12.5k]
  ------------------
17090|     71|            {
17091|     71|                std::int8_t subtype{};
17092|     71|                return get_number(subtype) &&
  ------------------
  |  Branch (17092:24): [True: 67, False: 4]
  ------------------
17093|     67|                       get_binary(16, result) &&
  ------------------
  |  Branch (17093:24): [True: 59, False: 8]
  ------------------
17094|     59|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17094:24): [True: 59, False: 0]
  ------------------
17095|      0|            }
17096|       |
17097|      0|            default:           // LCOV_EXCL_LINE
  ------------------
  |  Branch (17097:13): [True: 0, False: 12.5k]
  ------------------
17098|      0|                return false;  // LCOV_EXCL_LINE
17099|  12.5k|        }
17100|  12.5k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE18get_msgpack_binaryERNS0_27byte_container_with_subtypeISF_EEENKUlaE_clEa:
16999|  3.70k|        {
17000|  3.70k|            result.set_subtype(static_cast<std::uint8_t>(subtype));
17001|  3.70k|            return true;
17002|  3.70k|        };
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIaLb0EEEbRT_:
18739|  5.33k|    {
18740|       |        // read in the original format
18741|       |
18742|  5.33k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.33k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  5.33k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 5.29k, False: 31]
  |  Branch (18746:34): [Folded, False: 5.29k]
  |  Branch (18746:57): [True: 0, False: 5.29k]
  ------------------
18747|  5.29k|        {
18748|  5.29k|            byte_swap(result);
18749|  5.29k|        }
18750|  5.33k|        return true;
18751|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIaEEbRT_PKc:
18667|  5.33k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  5.33k|        auto new_chars_read = ia.get_elements(&dest);
18671|  5.33k|        chars_read += new_chars_read;
18672|  5.33k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 31, False: 5.29k]
  |  |  ------------------
  ------------------
18673|     31|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     31|            ++chars_read;
18676|     31|            static_cast<void>(report_eof(context));
18677|     31|            return false;
18678|     31|        }
18679|  5.29k|        return true;
18680|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIaEEmPT_m:
 8507|  5.33k|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|  5.33k|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|  5.33k|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 31, False: 5.29k]
  |  |  ------------------
  ------------------
 8513|     31|        {
 8514|     31|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|     31|        }
 8516|  5.33k|        return res;
 8517|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIaEEvRT_:
18698|  5.29k|    {
18699|  5.29k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  5.29k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.29k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 5.29k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  5.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIaEEbT_:
18771|  1.55k|    {
18772|  1.55k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  1.55k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.55k, False: 0]
  |  |  ------------------
  ------------------
18773|  1.55k|        {
18774|  1.55k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  1.55k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIsLb0EEEbRT_:
18739|    394|    {
18740|       |        // read in the original format
18741|       |
18742|    394|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    394|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 394]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    394|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 390, False: 4]
  |  Branch (18746:34): [Folded, False: 390]
  |  Branch (18746:57): [True: 0, False: 390]
  ------------------
18747|    390|        {
18748|    390|            byte_swap(result);
18749|    390|        }
18750|    394|        return true;
18751|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIsEEbRT_PKc:
18667|    394|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    394|        auto new_chars_read = ia.get_elements(&dest);
18671|    394|        chars_read += new_chars_read;
18672|    394|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    394|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4, False: 390]
  |  |  ------------------
  ------------------
18673|      4|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|      4|            ++chars_read;
18676|      4|            static_cast<void>(report_eof(context));
18677|      4|            return false;
18678|      4|        }
18679|    390|        return true;
18680|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter12get_elementsIsEEmPT_m:
 8507|    394|    {
 8508|       |#if JSON_PRECISE_STREAM_POSITION
 8509|       |        commit_lookahead();
 8510|       |#endif
 8511|    394|        auto res = static_cast<std::size_t>(sb->sgetn(reinterpret_cast<char*>(dest), static_cast<std::streamsize>(count * sizeof(T))));
 8512|    394|        if (JSON_HEDLEY_UNLIKELY(res < count * sizeof(T)))
  ------------------
  |  | 1667|    394|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4, False: 390]
  |  |  ------------------
  ------------------
 8513|      4|        {
 8514|      4|            is->clear(is->rdstate() | std::ios::eofbit);
 8515|      4|        }
 8516|    394|        return res;
 8517|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIsEEvRT_:
18698|    390|    {
18699|    390|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    390|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|    780|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 390, False: 390]
  ------------------
18715|    390|            {
18716|    390|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|    390|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    390|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIsEEbT_:
18771|    390|    {
18772|    390|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    390|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 390, False: 0]
  |  |  ------------------
  ------------------
18773|    390|        {
18774|    390|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    390|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIiLb0EEEbRT_:
18739|    435|    {
18740|       |        // read in the original format
18741|       |
18742|    435|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    435|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 435]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    435|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 425, False: 10]
  |  Branch (18746:34): [Folded, False: 425]
  |  Branch (18746:57): [True: 0, False: 425]
  ------------------
18747|    425|        {
18748|    425|            byte_swap(result);
18749|    425|        }
18750|    435|        return true;
18751|    435|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIlLb0EEEbRT_:
18739|    694|    {
18740|       |        // read in the original format
18741|       |
18742|    694|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    694|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 694]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    694|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 672, False: 22]
  |  Branch (18746:34): [Folded, False: 672]
  |  Branch (18746:57): [True: 0, False: 672]
  ------------------
18747|    672|        {
18748|    672|            byte_swap(result);
18749|    672|        }
18750|    694|        return true;
18751|    694|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE3getEv:
18652|   238k|    {
18653|   238k|        ++chars_read;
18654|   238k|        return current = ia.get_character();
18655|   238k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapter13get_characterEv:
 8494|   238k|    {
 8495|   238k|        auto res = sb->sbumpc();
 8496|       |        // set eof manually, as we don't use the istream interface.
 8497|   238k|        if (JSON_HEDLEY_UNLIKELY(res == std::char_traits<char>::eof()))
  ------------------
  |  | 1667|   238k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 6.25k, False: 231k]
  |  |  ------------------
  ------------------
 8498|  6.25k|        {
 8499|  6.25k|            is->clear(is->rdstate() | std::ios::eofbit);
 8500|  6.25k|        }
 8501|   238k|        return res;
 8502|   238k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
19116|    362|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    362|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    362|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 3, False: 359]
  ------------------
19120|    362|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterENS1_19json_sax_dom_parserISG_SH_EEED2Ev:
14954|  7.51k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_20input_stream_adapterEED2Ev:
13881|  7.51k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterERNSt3__113basic_istreamIcNS2_11char_traitsIcEEEE:
 9123|  7.51k|{
 9124|  7.51k|    if (stream.rdbuf() == nullptr)
  ------------------
  |  Branch (9124:9): [True: 0, False: 7.51k]
  ------------------
 9125|      0|    {
 9126|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
 9127|      0|    }
 9128|  7.51k|    return input_stream_adapter(stream);
 9129|  7.51k|}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterC2ERNSt3__113basic_istreamIcNS3_11char_traitsIcEEEE:
 8420|  7.51k|        : is(&i), sb(i.rdbuf())
 8421|  7.51k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail20input_stream_adapterD2Ev:
 8399|  15.0k|    {
 8400|       |        // clear stream flags; we use underlying streambuf I/O, do not
 8401|       |        // maintain ifstream flags, except eof
 8402|  15.0k|        if (is != nullptr)
  ------------------
  |  Branch (8402:13): [True: 7.51k, False: 7.51k]
  ------------------
 8403|  7.51k|        {
 8404|       |#if JSON_PRECISE_STREAM_POSITION
 8405|       |            // consume the character last returned by get_character() unless it
 8406|       |            // was given back with release_lookahead()
 8407|       |            commit_lookahead();
 8408|       |#endif
 8409|       |            // only call clear() if there is something to clear: it throws
 8410|       |            // std::ios_base::failure if the stream has exceptions() enabled
 8411|       |            // for a state bit that remains set, and a destructor must not throw
 8412|  7.51k|            if ((is->rdstate() & ~std::ios::eofbit) != 0)
  ------------------
  |  Branch (8412:17): [True: 0, False: 7.51k]
  ------------------
 8413|      0|            {
 8414|      0|                is->clear(is->rdstate() & std::ios::eofbit);
 8415|      0|            }
 8416|  7.51k|        }
 8417|  15.0k|    }
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12from_msgpackINS2_21__list_const_iteratorIhPvEESI_TnNS2_9enable_ifIXsr6detail14can_compare_neIT_T0_EE5valueEiE4typeELi0EEESE_SK_SL_bbNS0_6detail15error_handler_tE:
36651|  7.51k|    {
36652|  7.51k|        return from_binary_impl(detail::input_adapter(std::move(first), std::move(last)), input_format_t::msgpack, strict, allow_exceptions, error_handler);
36653|  7.51k|    }
_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:
36385|  7.51k|    {
36386|  7.51k|        basic_json result;
36387|  7.51k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  7.51k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  7.51k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 7.51k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  7.51k|        return result;
36394|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_EE:
13873|  7.51k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  7.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_19json_sax_dom_parserISG_SL_EEEC2EOSL_NS1_14input_format_tENS1_15error_handler_tE:
14944|  7.51k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  7.51k|    {
14946|  7.51k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  7.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_19json_sax_dom_parserISG_SL_EEE9sax_parseEPSN_bNS1_18cbor_tag_handler_tE:
14969|  7.51k|    {
14970|  7.51k|        sax = sax_;
14971|  7.51k|        container_stack.clear();
14972|  7.51k|        bon8_pushback_size = 0;
14973|  7.51k|        bool result = false;
14974|       |
14975|  7.51k|        switch (input_format)
14976|  7.51k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 7.51k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 7.51k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|  7.51k|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 7.51k, False: 0]
  ------------------
14986|  7.51k|                result = parse_msgpack_internal();
14987|  7.51k|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 7.51k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 7.51k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 7.51k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 7.51k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 7.51k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  7.51k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  4.88k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 4.88k, False: 0]
  |  Branch (15004:23): [True: 4.88k, False: 0]
  ------------------
15005|  4.88k|        {
15006|  4.88k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 4.88k]
  |  Branch (15006:59): [True: 0, False: 4.88k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  4.88k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 4.88k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  4.88k|            else
15016|  4.88k|            {
15017|  4.88k|                get();
15018|  4.88k|            }
15019|       |
15020|  4.88k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  4.88k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 236, False: 4.65k]
  |  |  ------------------
  ------------------
15021|    236|            {
15022|    236|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|    236|            }
15024|  4.88k|        }
15025|       |
15026|  4.65k|        return result;
15027|  4.88k|    }
_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_19json_sax_dom_parserISG_SL_EEE6get_toIiEEbRT_PKc:
18667|    435|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    435|        auto new_chars_read = ia.get_elements(&dest);
18671|    435|        chars_read += new_chars_read;
18672|    435|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    435|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 10, False: 425]
  |  |  ------------------
  ------------------
18673|     10|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     10|            ++chars_read;
18676|     10|            static_cast<void>(report_eof(context));
18677|     10|            return false;
18678|     10|        }
18679|    425|        return true;
18680|    435|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIiEEmPT_m:
 8644|    435|    {
 8645|    435|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|    435|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIiEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|    435|    {
 8725|    435|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  2.14k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 1.72k, False: 425]
  ------------------
 8727|  1.72k|        {
 8728|  1.72k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  1.72k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.71k, False: 10]
  |  |  ------------------
  ------------------
 8729|  1.71k|            {
 8730|  1.71k|                ptr[read_index] = static_cast<char>(*current);
 8731|  1.71k|                std::advance(current, 1);
 8732|  1.71k|            }
 8733|     10|            else
 8734|     10|            {
 8735|     10|                return read_index;
 8736|     10|            }
 8737|  1.72k|        }
 8738|    425|        return count * sizeof(T);
 8739|    435|    }
_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_19json_sax_dom_parserISG_SL_EEE10report_eofEPKc:
19058|  2.49k|    {
19059|  2.49k|        return sax->parse_error(chars_read, "<end of file>",
19060|  2.49k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  2.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  2.86k|    {
14005|  2.86k|        errored = true;
14006|  2.86k|        static_cast<void>(ex);
14007|  2.86k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 2.86k, False: 0]
  ------------------
14008|  2.86k|        {
14009|  2.86k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  2.86k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  2.86k|        }
14011|      0|        return false;
14012|  2.86k|    }
_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_19json_sax_dom_parserISG_SL_EEE17exception_messageERKSC_SQ_:
19163|  2.86k|    {
19164|  2.86k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  2.86k|        switch (input_format)
19167|  2.86k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 2.86k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|  2.86k|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 2.86k, False: 0]
  ------------------
19173|  2.86k|                error_msg += "MessagePack";
19174|  2.86k|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 2.86k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 2.86k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 2.86k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 2.86k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 2.86k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 2.86k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  2.86k|        }
19196|       |
19197|  2.86k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  2.86k|    }
_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_19json_sax_dom_parserISG_SL_EEE9byte_swapIiEEvRT_:
18698|    425|    {
18699|    425|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    425|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  1.27k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 850, False: 425]
  ------------------
18715|    850|            {
18716|    850|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|    850|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    425|    }
_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_19json_sax_dom_parserISG_SL_EEE15enter_containerEbmm:
15082|   103k|    {
15083|   103k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   207k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 103k]
  |  |  |  Branch (1667:94): [True: 13.9k, False: 89.5k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|   103k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   103k|        return true;
15090|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12start_objectEm:
13930|  13.9k|    {
13931|  13.9k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  13.9k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  13.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|   103k|    {
14031|   103k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4.57k, False: 98.9k]
  ------------------
14032|  4.57k|        {
14033|  4.57k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  4.57k|            return &root;
14040|  4.57k|        }
14041|       |
14042|  98.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  98.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 89.4k, False: 9.46k]
  |  Branch (14042:9): [True: 9.46k, False: 0]
  |  Branch (14042:9): [True: 98.9k, False: 0]
  ------------------
14043|       |
14044|  98.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 89.4k, False: 9.46k]
  ------------------
14045|  89.4k|        {
14046|  89.4k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  89.4k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  89.4k|        }
14054|       |
14055|  9.46k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 9.46k, False: 0]
  ------------------
14056|  9.46k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  9.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 9.46k, False: 0]
  ------------------
14057|  9.46k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  9.46k|        return object_element;
14064|  9.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_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_:
13724|   103k|{
13725|   103k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   207k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 103k]
  |  |  |  Branch (1667:94): [True: 103k, False: 0]
  |  |  |  Branch (1667:94): [True: 0, False: 103k]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|   103k|    return true;
13730|   103k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE11start_arrayEm:
13966|  89.5k|    {
13967|  89.5k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  89.5k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  89.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 89.5k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  89.5k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 89.5k, False: 0]
  ------------------
13980|  89.5k|        {
13981|  89.5k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  89.5k|        }
13983|       |
13984|  89.5k|        return true;
13985|  89.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15container_frameC2Embm:
15051|   103k|            : 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_19json_sax_dom_parserISG_SL_EEE15leave_containerEv:
15114|  84.2k|    {
15115|  84.2k|        const bool is_object = container_stack.back().is_object;
15116|  84.2k|        container_stack.pop_back();
15117|  84.2k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 8.79k, False: 75.4k]
  ------------------
15118|  84.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE10end_objectEv:
13952|  8.79k|    {
13953|  8.79k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  8.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 8.79k, False: 0]
  ------------------
13954|  8.79k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 8.79k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  8.79k|        ref_stack.back()->set_parents();
13961|  8.79k|        ref_stack.pop_back();
13962|  8.79k|        return true;
13963|  8.79k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE9end_arrayEv:
13988|  75.4k|    {
13989|  75.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  75.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 75.4k, False: 0]
  ------------------
13990|  75.4k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  75.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 75.4k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  75.4k|        ref_stack.back()->set_parents();
13997|  75.4k|        ref_stack.pop_back();
13998|  75.4k|        return true;
13999|  75.4k|    }
_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_19json_sax_dom_parserISG_SL_EEE12unexpect_eofEPKc:
19041|  33.4k|    {
19042|  33.4k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  33.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.27k, False: 31.1k]
  |  |  ------------------
  ------------------
19043|  2.27k|        {
19044|  2.27k|            return report_eof(context);
19045|  2.27k|        }
19046|  31.1k|        return true;
19047|  33.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_19json_sax_dom_parserISG_SL_EEE17check_string_utf8ERSC_PKc:
18941|  30.6k|    {
18942|  30.6k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 30.6k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  30.6k|        {
18944|  30.6k|            return true;
18945|  30.6k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE3keyERSC_:
13942|  21.5k|    {
13943|  21.5k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  21.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 21.5k, False: 0]
  ------------------
13944|  21.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  21.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 21.5k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  21.5k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  21.5k|        return true;
13949|  21.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIdEEbRT_PKc:
18667|    818|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    818|        auto new_chars_read = ia.get_elements(&dest);
18671|    818|        chars_read += new_chars_read;
18672|    818|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    818|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 799]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|    799|        return true;
18680|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIdEEmPT_m:
 8644|    818|    {
 8645|    818|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIdEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|    818|    {
 8725|    818|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  7.26k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 6.46k, False: 799]
  ------------------
 8727|  6.46k|        {
 8728|  6.46k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  6.46k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 6.44k, False: 19]
  |  |  ------------------
  ------------------
 8729|  6.44k|            {
 8730|  6.44k|                ptr[read_index] = static_cast<char>(*current);
 8731|  6.44k|                std::advance(current, 1);
 8732|  6.44k|            }
 8733|     19|            else
 8734|     19|            {
 8735|     19|                return read_index;
 8736|     19|            }
 8737|  6.46k|        }
 8738|    799|        return count * sizeof(T);
 8739|    818|    }
_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_19json_sax_dom_parserISG_SL_EEE9byte_swapIdEEvRT_:
18698|    799|    {
18699|    799|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    799|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.99k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.19k, False: 799]
  ------------------
18715|  3.19k|            {
18716|  3.19k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.19k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    799|    }
_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_19json_sax_dom_parserISG_SL_EEE10emit_floatIdEEbT_:
18825|    799|    {
18826|    799|        const auto result = static_cast<number_float_t>(number);
18827|    799|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  1.59k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 799]
  |  |  |  Branch (1667:94): [True: 797, False: 2]
  |  |  |  Branch (1667:94): [True: 0, False: 797]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    799|        return sax->number_float(result, "");
18832|    799|    }
_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_19json_sax_dom_parserISG_SL_EEE16get_token_stringEv:
19152|    724|    {
19153|    724|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    724|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE12number_floatEdRKSC_:
13908|  2.71k|    {
13909|  2.71k|        handle_value(val);
13910|  2.71k|        return true;
13911|  2.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  2.71k|    {
14031|  2.71k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 632, False: 2.08k]
  ------------------
14032|    632|        {
14033|    632|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    632|            return &root;
14040|    632|        }
14041|       |
14042|  2.08k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.08k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.96k, False: 120]
  |  Branch (14042:9): [True: 120, False: 0]
  |  Branch (14042:9): [True: 2.08k, False: 0]
  ------------------
14043|       |
14044|  2.08k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.96k, False: 120]
  ------------------
14045|  1.96k|        {
14046|  1.96k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.96k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.96k|        }
14054|       |
14055|    120|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    120|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 120, False: 0]
  ------------------
14056|    120|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    120|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 120, False: 0]
  ------------------
14057|    120|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    120|        return object_element;
14064|    120|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIcEEmPT_m:
 8644|  13.5k|    {
 8645|  13.5k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  13.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIcEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  13.5k|    {
 8725|  13.5k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  95.4k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 82.2k, False: 13.1k]
  ------------------
 8727|  82.2k|        {
 8728|  82.2k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  82.2k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 81.8k, False: 451]
  |  |  ------------------
  ------------------
 8729|  81.8k|            {
 8730|  81.8k|                ptr[read_index] = static_cast<char>(*current);
 8731|  81.8k|                std::advance(current, 1);
 8732|  81.8k|            }
 8733|    451|            else
 8734|    451|            {
 8735|    451|                return read_index;
 8736|    451|            }
 8737|  82.2k|        }
 8738|  13.1k|        return count * sizeof(T);
 8739|  13.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE6stringERSC_:
13914|  9.17k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  9.17k|        handle_value(std::move(val));
13918|  9.17k|        return true;
13919|  9.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  9.17k|    {
14031|  9.17k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 564, False: 8.61k]
  ------------------
14032|    564|        {
14033|    564|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    564|            return &root;
14040|    564|        }
14041|       |
14042|  8.61k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 5.89k, False: 2.71k]
  |  Branch (14042:9): [True: 2.71k, False: 0]
  |  Branch (14042:9): [True: 8.61k, False: 0]
  ------------------
14043|       |
14044|  8.61k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 5.89k, False: 2.71k]
  ------------------
14045|  5.89k|        {
14046|  5.89k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  5.89k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  5.89k|        }
14054|       |
14055|  2.71k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.71k, False: 0]
  ------------------
14056|  2.71k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.71k, False: 0]
  ------------------
14057|  2.71k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.71k|        return object_element;
14064|  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_19json_sax_dom_parserISG_SL_EEE10get_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  2.55k|    {
18973|  2.55k|        return get_bytes(len, "binary", result);
18974|  2.55k|    }
_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_19json_sax_dom_parserISG_SL_EEE9get_bytesIiNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  2.55k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  2.55k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  5.09k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 2.55k, False: 2.53k]
  ------------------
19003|  2.55k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  2.55k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 2.55k, False: 0]
  ------------------
19007|  2.55k|                                       ? static_cast<std::size_t>(len)
19008|  2.55k|                                       : chunk_size;
19009|  2.55k|            const std::size_t old_size = result.size();
19010|  2.55k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  2.55k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  2.55k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 2.55k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  2.55k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  2.55k|            chars_read += bytes_read;
19018|  2.55k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  2.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 2.53k]
  |  |  ------------------
  ------------------
19019|     23|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     23|                result.resize(old_size + bytes_read);
19024|     23|                ++chars_read;
19025|     23|                current = char_traits<char_type>::eof();
19026|     23|                return unexpect_eof(context);
19027|     23|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  2.53k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  2.53k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 2.53k, False: 0]
  ------------------
19030|  2.53k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  2.53k|        }
19032|  2.53k|        return true;
19033|  2.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIhEEmPT_m:
 8644|  14.3k|    {
 8645|  14.3k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  14.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIhEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  14.3k|    {
 8725|  14.3k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  46.2k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 32.1k, False: 14.1k]
  ------------------
 8727|  32.1k|        {
 8728|  32.1k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  32.1k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 31.9k, False: 243]
  |  |  ------------------
  ------------------
 8729|  31.9k|            {
 8730|  31.9k|                ptr[read_index] = static_cast<char>(*current);
 8731|  31.9k|                std::advance(current, 1);
 8732|  31.9k|            }
 8733|    243|            else
 8734|    243|            {
 8735|    243|                return read_index;
 8736|    243|            }
 8737|  32.1k|        }
 8738|  14.1k|        return count * sizeof(T);
 8739|  14.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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:
13922|  12.2k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  12.2k|        handle_value(std::move(val));
13926|  12.2k|        return true;
13927|  12.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  12.2k|    {
14031|  12.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 124, False: 12.1k]
  ------------------
14032|    124|        {
14033|    124|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    124|            return &root;
14040|    124|        }
14041|       |
14042|  12.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  12.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 11.1k, False: 1.02k]
  |  Branch (14042:9): [True: 1.02k, False: 0]
  |  Branch (14042:9): [True: 12.1k, False: 0]
  ------------------
14043|       |
14044|  12.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 11.1k, False: 1.02k]
  ------------------
14045|  11.1k|        {
14046|  11.1k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  11.1k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  11.1k|        }
14054|       |
14055|  1.02k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.02k, False: 0]
  ------------------
14056|  1.02k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.02k, False: 0]
  ------------------
14057|  1.02k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.02k|        return object_element;
14064|  1.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_19json_sax_dom_parserISG_SL_EEE10get_numberIhLb0EEEbRT_:
18739|  10.2k|    {
18740|       |        // read in the original format
18741|       |
18742|  10.2k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  10.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 10.2k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  10.2k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 10.2k, False: 23]
  |  Branch (18746:34): [Folded, False: 10.2k]
  |  Branch (18746:57): [True: 0, False: 10.2k]
  ------------------
18747|  10.2k|        {
18748|  10.2k|            byte_swap(result);
18749|  10.2k|        }
18750|  10.2k|        return true;
18751|  10.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_19json_sax_dom_parserISG_SL_EEE6get_toIhEEbRT_PKc:
18667|  10.2k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  10.2k|        auto new_chars_read = ia.get_elements(&dest);
18671|  10.2k|        chars_read += new_chars_read;
18672|  10.2k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  10.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 10.2k]
  |  |  ------------------
  ------------------
18673|     23|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     23|            ++chars_read;
18676|     23|            static_cast<void>(report_eof(context));
18677|     23|            return false;
18678|     23|        }
18679|  10.2k|        return true;
18680|  10.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_19json_sax_dom_parserISG_SL_EEE9byte_swapIhEEvRT_:
18698|  10.2k|    {
18699|  10.2k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  10.2k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  10.2k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 10.2k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE7booleanEb:
13890|  2.51k|    {
13891|  2.51k|        handle_value(val);
13892|  2.51k|        return true;
13893|  2.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  2.51k|    {
14031|  2.51k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4, False: 2.51k]
  ------------------
14032|      4|        {
14033|      4|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      4|            return &root;
14040|      4|        }
14041|       |
14042|  2.51k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.51k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.33k, False: 179]
  |  Branch (14042:9): [True: 179, False: 0]
  |  Branch (14042:9): [True: 2.51k, False: 0]
  ------------------
14043|       |
14044|  2.51k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.33k, False: 179]
  ------------------
14045|  2.33k|        {
14046|  2.33k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.33k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.33k|        }
14054|       |
14055|    179|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    179|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 179, False: 0]
  ------------------
14056|    179|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    179|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 179, False: 0]
  ------------------
14057|    179|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    179|        return object_element;
14064|    179|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE4nullEv:
13884|  2.01k|    {
13885|  2.01k|        handle_value(nullptr);
13886|  2.01k|        return true;
13887|  2.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  2.01k|    {
14031|  2.01k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 2.01k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  2.01k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.01k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.20k, False: 813]
  |  Branch (14042:9): [True: 813, False: 0]
  |  Branch (14042:9): [True: 2.01k, False: 0]
  ------------------
14043|       |
14044|  2.01k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.20k, False: 813]
  ------------------
14045|  1.20k|        {
14046|  1.20k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.20k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.20k|        }
14054|       |
14055|    813|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    813|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 813, False: 0]
  ------------------
14056|    813|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    813|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 813, False: 0]
  ------------------
14057|    813|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    813|        return object_element;
14064|    813|    }
_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_19json_sax_dom_parserISG_SL_EEE11emit_signedIiEEbT_:
18771|    425|    {
18772|    425|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    425|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 425, False: 0]
  |  |  ------------------
  ------------------
18773|    425|        {
18774|    425|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    425|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE14number_integerEl:
13896|  18.3k|    {
13897|  18.3k|        handle_value(val);
13898|  18.3k|        return true;
13899|  18.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  18.3k|    {
14031|  18.3k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 607, False: 17.7k]
  ------------------
14032|    607|        {
14033|    607|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    607|            return &root;
14040|    607|        }
14041|       |
14042|  17.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  17.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 16.2k, False: 1.48k]
  |  Branch (14042:9): [True: 1.48k, False: 0]
  |  Branch (14042:9): [True: 17.7k, False: 0]
  ------------------
14043|       |
14044|  17.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 16.2k, False: 1.48k]
  ------------------
14045|  16.2k|        {
14046|  16.2k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  16.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  16.2k|        }
14054|       |
14055|  1.48k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.48k, False: 0]
  ------------------
14056|  1.48k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.48k, False: 0]
  ------------------
14057|  1.48k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.48k|        return object_element;
14064|  1.48k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEE15number_unsignedEm:
13902|  58.4k|    {
13903|  58.4k|        handle_value(val);
13904|  58.4k|        return true;
13905|  58.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  58.4k|    {
14031|  58.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 582, False: 57.8k]
  ------------------
14032|    582|        {
14033|    582|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    582|            return &root;
14040|    582|        }
14041|       |
14042|  57.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  57.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 52.4k, False: 5.36k]
  |  Branch (14042:9): [True: 5.36k, False: 0]
  |  Branch (14042:9): [True: 57.8k, False: 0]
  ------------------
14043|       |
14044|  57.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 52.4k, False: 5.36k]
  ------------------
14045|  52.4k|        {
14046|  52.4k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  52.4k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  52.4k|        }
14054|       |
14055|  5.36k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  5.36k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 5.36k, False: 0]
  ------------------
14056|  5.36k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  5.36k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 5.36k, False: 0]
  ------------------
14057|  5.36k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  5.36k|        return object_element;
14064|  5.36k|    }
_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_19json_sax_dom_parserISG_SL_EEE6get_toIlEEbRT_PKc:
18667|    694|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    694|        auto new_chars_read = ia.get_elements(&dest);
18671|    694|        chars_read += new_chars_read;
18672|    694|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    694|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 672]
  |  |  ------------------
  ------------------
18673|     22|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     22|            ++chars_read;
18676|     22|            static_cast<void>(report_eof(context));
18677|     22|            return false;
18678|     22|        }
18679|    672|        return true;
18680|    694|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIlEEmPT_m:
 8644|    694|    {
 8645|    694|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|    694|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIlEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|    694|    {
 8725|    694|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  6.12k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 5.45k, False: 672]
  ------------------
 8727|  5.45k|        {
 8728|  5.45k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  5.45k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 5.43k, False: 22]
  |  |  ------------------
  ------------------
 8729|  5.43k|            {
 8730|  5.43k|                ptr[read_index] = static_cast<char>(*current);
 8731|  5.43k|                std::advance(current, 1);
 8732|  5.43k|            }
 8733|     22|            else
 8734|     22|            {
 8735|     22|                return read_index;
 8736|     22|            }
 8737|  5.45k|        }
 8738|    672|        return count * sizeof(T);
 8739|    694|    }
_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_19json_sax_dom_parserISG_SL_EEE9byte_swapIlEEvRT_:
18698|    672|    {
18699|    672|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    672|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.36k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.68k, False: 672]
  ------------------
18715|  2.68k|            {
18716|  2.68k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.68k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    672|    }
_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_19json_sax_dom_parserISG_SL_EEE11emit_signedIlEEbT_:
18771|    672|    {
18772|    672|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    672|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 672, False: 0]
  |  |  ------------------
  ------------------
18773|    672|        {
18774|    672|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    672|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      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_19json_sax_dom_parserISG_SL_EEE6get_toImEEbRT_PKc:
18667|    614|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    614|        auto new_chars_read = ia.get_elements(&dest);
18671|    614|        chars_read += new_chars_read;
18672|    614|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    614|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 12, False: 602]
  |  |  ------------------
  ------------------
18673|     12|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     12|            ++chars_read;
18676|     12|            static_cast<void>(report_eof(context));
18677|     12|            return false;
18678|     12|        }
18679|    602|        return true;
18680|    614|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsImEEmPT_m:
 8644|    614|    {
 8645|    614|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|    614|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implImEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|    614|    {
 8725|    614|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  5.46k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 4.85k, False: 602]
  ------------------
 8727|  4.85k|        {
 8728|  4.85k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  4.85k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 4.84k, False: 12]
  |  |  ------------------
  ------------------
 8729|  4.84k|            {
 8730|  4.84k|                ptr[read_index] = static_cast<char>(*current);
 8731|  4.84k|                std::advance(current, 1);
 8732|  4.84k|            }
 8733|     12|            else
 8734|     12|            {
 8735|     12|                return read_index;
 8736|     12|            }
 8737|  4.85k|        }
 8738|    602|        return count * sizeof(T);
 8739|    614|    }
_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_19json_sax_dom_parserISG_SL_EEE9byte_swapImEEvRT_:
18698|    602|    {
18699|    602|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    602|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.01k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.40k, False: 602]
  ------------------
18715|  2.40k|            {
18716|  2.40k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.40k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    602|    }
_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_19json_sax_dom_parserISG_SL_EEE13emit_unsignedImEEbT_:
18799|    602|    {
18800|    602|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    602|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 602, False: 0]
  |  |  ------------------
  ------------------
18801|    602|        {
18802|    602|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    602|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    602|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_stringIjEEbT_RSC_:
18910|  29.2k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  29.2k|        return get_bytes(len, "string", result);
18921|  29.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_19json_sax_dom_parserISG_SL_EEE9get_bytesIjSC_EEbT_PKcRT0_:
18998|  29.2k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  29.2k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  41.5k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 12.6k, False: 28.8k]
  ------------------
19003|  12.6k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  12.6k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 12.5k, False: 53]
  ------------------
19007|  12.6k|                                       ? static_cast<std::size_t>(len)
19008|  12.6k|                                       : chunk_size;
19009|  12.6k|            const std::size_t old_size = result.size();
19010|  12.6k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  12.6k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  12.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 12.6k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  12.6k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  12.6k|            chars_read += bytes_read;
19018|  12.6k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  12.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 349, False: 12.2k]
  |  |  ------------------
  ------------------
19019|    349|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    349|                result.resize(old_size + bytes_read);
19024|    349|                ++chars_read;
19025|    349|                current = char_traits<char_type>::eof();
19026|    349|                return unexpect_eof(context);
19027|    349|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  12.2k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  12.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 12.2k, False: 0]
  ------------------
19030|  12.2k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  12.2k|        }
19032|  28.8k|        return true;
19033|  29.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_19json_sax_dom_parserISG_SL_EEE10get_stringIhEEbT_RSC_:
18910|  1.15k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.15k|        return get_bytes(len, "string", result);
18921|  1.15k|    }
_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_19json_sax_dom_parserISG_SL_EEE9get_bytesIhSC_EEbT_PKcRT0_:
18998|  1.15k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.15k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.69k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 588, False: 1.10k]
  ------------------
19003|    588|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    588|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 588, False: 0]
  ------------------
19007|    588|                                       ? static_cast<std::size_t>(len)
19008|    588|                                       : chunk_size;
19009|    588|            const std::size_t old_size = result.size();
19010|    588|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    588|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    588|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 588, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    588|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    588|            chars_read += bytes_read;
19018|    588|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    588|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 45, False: 543]
  |  |  ------------------
  ------------------
19019|     45|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     45|                result.resize(old_size + bytes_read);
19024|     45|                ++chars_read;
19025|     45|                current = char_traits<char_type>::eof();
19026|     45|                return unexpect_eof(context);
19027|     45|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    543|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    543|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 543, False: 0]
  ------------------
19030|    543|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    543|        }
19032|  1.10k|        return true;
19033|  1.15k|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_numberItLb0EEEbRT_:
18739|  4.12k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.12k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.12k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.12k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.08k, False: 42]
  |  Branch (18746:34): [Folded, False: 4.08k]
  |  Branch (18746:57): [True: 0, False: 4.08k]
  ------------------
18747|  4.08k|        {
18748|  4.08k|            byte_swap(result);
18749|  4.08k|        }
18750|  4.12k|        return true;
18751|  4.12k|    }
_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_19json_sax_dom_parserISG_SL_EEE6get_toItEEbRT_PKc:
18667|  4.12k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.12k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.12k|        chars_read += new_chars_read;
18672|  4.12k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 42, False: 4.08k]
  |  |  ------------------
  ------------------
18673|     42|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     42|            ++chars_read;
18676|     42|            static_cast<void>(report_eof(context));
18677|     42|            return false;
18678|     42|        }
18679|  4.08k|        return true;
18680|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsItEEmPT_m:
 8644|  4.12k|    {
 8645|  4.12k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implItEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  4.12k|    {
 8725|  4.12k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  12.3k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 8.22k, False: 4.08k]
  ------------------
 8727|  8.22k|        {
 8728|  8.22k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  8.22k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 8.18k, False: 42]
  |  |  ------------------
  ------------------
 8729|  8.18k|            {
 8730|  8.18k|                ptr[read_index] = static_cast<char>(*current);
 8731|  8.18k|                std::advance(current, 1);
 8732|  8.18k|            }
 8733|     42|            else
 8734|     42|            {
 8735|     42|                return read_index;
 8736|     42|            }
 8737|  8.22k|        }
 8738|  4.08k|        return count * sizeof(T);
 8739|  4.12k|    }
_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_19json_sax_dom_parserISG_SL_EEE9byte_swapItEEvRT_:
18698|  4.08k|    {
18699|  4.08k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.08k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  8.17k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.08k, False: 4.08k]
  ------------------
18715|  4.08k|            {
18716|  4.08k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.08k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.08k|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_stringItEEbT_RSC_:
18910|    732|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    732|        return get_bytes(len, "string", result);
18921|    732|    }
_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_19json_sax_dom_parserISG_SL_EEE9get_bytesItSC_EEbT_PKcRT0_:
18998|    732|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    732|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.05k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 377, False: 675]
  ------------------
19003|    377|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    377|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 359, False: 18]
  ------------------
19007|    377|                                       ? static_cast<std::size_t>(len)
19008|    377|                                       : chunk_size;
19009|    377|            const std::size_t old_size = result.size();
19010|    377|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    377|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    377|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 377, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    377|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    377|            chars_read += bytes_read;
19018|    377|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    377|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 57, False: 320]
  |  |  ------------------
  ------------------
19019|     57|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     57|                result.resize(old_size + bytes_read);
19024|     57|                ++chars_read;
19025|     57|                current = char_traits<char_type>::eof();
19026|     57|                return unexpect_eof(context);
19027|     57|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    320|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    320|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 320, False: 0]
  ------------------
19030|    320|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    320|        }
19032|    675|        return true;
19033|    732|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_numberIjLb0EEEbRT_:
18739|  1.45k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.45k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.45k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.45k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.39k, False: 55]
  |  Branch (18746:34): [Folded, False: 1.39k]
  |  Branch (18746:57): [True: 0, False: 1.39k]
  ------------------
18747|  1.39k|        {
18748|  1.39k|            byte_swap(result);
18749|  1.39k|        }
18750|  1.45k|        return true;
18751|  1.45k|    }
_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_19json_sax_dom_parserISG_SL_EEE6get_toIjEEbRT_PKc:
18667|  1.45k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.45k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.45k|        chars_read += new_chars_read;
18672|  1.45k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 55, False: 1.39k]
  |  |  ------------------
  ------------------
18673|     55|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     55|            ++chars_read;
18676|     55|            static_cast<void>(report_eof(context));
18677|     55|            return false;
18678|     55|        }
18679|  1.39k|        return true;
18680|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIjEEmPT_m:
 8644|  1.45k|    {
 8645|  1.45k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIjEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.45k|    {
 8725|  1.45k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  7.09k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 5.69k, False: 1.39k]
  ------------------
 8727|  5.69k|        {
 8728|  5.69k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  5.69k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 5.63k, False: 55]
  |  |  ------------------
  ------------------
 8729|  5.63k|            {
 8730|  5.63k|                ptr[read_index] = static_cast<char>(*current);
 8731|  5.63k|                std::advance(current, 1);
 8732|  5.63k|            }
 8733|     55|            else
 8734|     55|            {
 8735|     55|                return read_index;
 8736|     55|            }
 8737|  5.69k|        }
 8738|  1.39k|        return count * sizeof(T);
 8739|  1.45k|    }
_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_19json_sax_dom_parserISG_SL_EEE9byte_swapIjEEvRT_:
18698|  1.39k|    {
18699|  1.39k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.39k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.19k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.79k, False: 1.39k]
  ------------------
18715|  2.79k|            {
18716|  2.79k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.79k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.39k|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_numberImLb0EEEbRT_:
18739|    614|    {
18740|       |        // read in the original format
18741|       |
18742|    614|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    614|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 614]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    614|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 602, False: 12]
  |  Branch (18746:34): [Folded, False: 602]
  |  Branch (18746:57): [True: 0, False: 602]
  ------------------
18747|    602|        {
18748|    602|            byte_swap(result);
18749|    602|        }
18750|    614|        return true;
18751|    614|    }
_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_19json_sax_dom_parserISG_SL_EEE13emit_unsignedIhEEbT_:
18799|    848|    {
18800|    848|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    848|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 848, False: 0]
  |  |  ------------------
  ------------------
18801|    848|        {
18802|    848|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    848|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    848|    }
_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_19json_sax_dom_parserISG_SL_EEE13emit_unsignedItEEbT_:
18799|    216|    {
18800|    216|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    216|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 216, False: 0]
  |  |  ------------------
  ------------------
18801|    216|        {
18802|    216|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    216|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    216|    }
_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_19json_sax_dom_parserISG_SL_EEE13emit_unsignedIjEEbT_:
18799|    358|    {
18800|    358|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    358|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 358, False: 0]
  |  |  ------------------
  ------------------
18801|    358|        {
18802|    358|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    358|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    358|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    532|    {
18973|    532|        return get_bytes(len, "binary", result);
18974|    532|    }
_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_19json_sax_dom_parserISG_SL_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    532|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    532|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    687|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 256, False: 431]
  ------------------
19003|    256|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    256|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 185, False: 71]
  ------------------
19007|    256|                                       ? static_cast<std::size_t>(len)
19008|    256|                                       : chunk_size;
19009|    256|            const std::size_t old_size = result.size();
19010|    256|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    256|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    256|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 256, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    256|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    256|            chars_read += bytes_read;
19018|    256|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    256|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 101, False: 155]
  |  |  ------------------
  ------------------
19019|    101|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    101|                result.resize(old_size + bytes_read);
19024|    101|                ++chars_read;
19025|    101|                current = char_traits<char_type>::eof();
19026|    101|                return unexpect_eof(context);
19027|    101|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    155|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    155|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 155, False: 0]
  ------------------
19030|    155|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    155|        }
19032|    431|        return true;
19033|    532|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_binaryIhEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  8.20k|    {
18973|  8.20k|        return get_bytes(len, "binary", result);
18974|  8.20k|    }
_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_19json_sax_dom_parserISG_SL_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  8.20k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  8.20k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  9.00k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 823, False: 8.17k]
  ------------------
19003|    823|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    823|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 823, False: 0]
  ------------------
19007|    823|                                       ? static_cast<std::size_t>(len)
19008|    823|                                       : chunk_size;
19009|    823|            const std::size_t old_size = result.size();
19010|    823|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    823|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    823|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 823, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    823|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    823|            chars_read += bytes_read;
19018|    823|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    823|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 30, False: 793]
  |  |  ------------------
  ------------------
19019|     30|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     30|                result.resize(old_size + bytes_read);
19024|     30|                ++chars_read;
19025|     30|                current = char_traits<char_type>::eof();
19026|     30|                return unexpect_eof(context);
19027|     30|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    793|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    793|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 793, False: 0]
  ------------------
19030|    793|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    793|        }
19032|  8.17k|        return true;
19033|  8.20k|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_binaryItEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  1.21k|    {
18973|  1.21k|        return get_bytes(len, "binary", result);
18974|  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_19json_sax_dom_parserISG_SL_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  1.21k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.21k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.66k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 519, False: 1.14k]
  ------------------
19003|    519|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    519|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 499, False: 20]
  ------------------
19007|    519|                                       ? static_cast<std::size_t>(len)
19008|    519|                                       : chunk_size;
19009|    519|            const std::size_t old_size = result.size();
19010|    519|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    519|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    519|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 519, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    519|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    519|            chars_read += bytes_read;
19018|    519|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    519|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 66, False: 453]
  |  |  ------------------
  ------------------
19019|     66|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     66|                result.resize(old_size + bytes_read);
19024|     66|                ++chars_read;
19025|     66|                current = char_traits<char_type>::eof();
19026|     66|                return unexpect_eof(context);
19027|     66|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    453|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    453|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 453, False: 0]
  ------------------
19030|    453|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    453|        }
19032|  1.14k|        return true;
19033|  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_19json_sax_dom_parserISG_SL_EEE11enter_arrayEmm:
15094|  89.5k|    {
15095|  89.5k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  89.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE12enter_objectEmm:
15100|  13.9k|    {
15101|  13.9k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  13.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE15unexpected_byteEPKcSQ_:
19130|      3|    {
19131|      3|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|      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_19json_sax_dom_parserISG_SL_EEE10get_numberIfLb0EEEbRT_:
18739|  1.92k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.92k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.92k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.92k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.91k, False: 8]
  |  Branch (18746:34): [Folded, False: 1.91k]
  |  Branch (18746:57): [True: 0, False: 1.91k]
  ------------------
18747|  1.91k|        {
18748|  1.91k|            byte_swap(result);
18749|  1.91k|        }
18750|  1.92k|        return true;
18751|  1.92k|    }
_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_19json_sax_dom_parserISG_SL_EEE6get_toIfEEbRT_PKc:
18667|  1.92k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.92k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.92k|        chars_read += new_chars_read;
18672|  1.92k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 8, False: 1.91k]
  |  |  ------------------
  ------------------
18673|      8|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|      8|            ++chars_read;
18676|      8|            static_cast<void>(report_eof(context));
18677|      8|            return false;
18678|      8|        }
18679|  1.91k|        return true;
18680|  1.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIfEEmPT_m:
 8644|  1.92k|    {
 8645|  1.92k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  1.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIfEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  1.92k|    {
 8725|  1.92k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  9.59k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 7.67k, False: 1.91k]
  ------------------
 8727|  7.67k|        {
 8728|  7.67k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  7.67k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 7.66k, False: 8]
  |  |  ------------------
  ------------------
 8729|  7.66k|            {
 8730|  7.66k|                ptr[read_index] = static_cast<char>(*current);
 8731|  7.66k|                std::advance(current, 1);
 8732|  7.66k|            }
 8733|      8|            else
 8734|      8|            {
 8735|      8|                return read_index;
 8736|      8|            }
 8737|  7.67k|        }
 8738|  1.91k|        return count * sizeof(T);
 8739|  1.92k|    }
_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_19json_sax_dom_parserISG_SL_EEE9byte_swapIfEEvRT_:
18698|  1.91k|    {
18699|  1.91k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.91k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.74k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.83k, False: 1.91k]
  ------------------
18715|  3.83k|            {
18716|  3.83k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.83k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.91k|    }
_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_19json_sax_dom_parserISG_SL_EEE10emit_floatIfEEbT_:
18825|  1.91k|    {
18826|  1.91k|        const auto result = static_cast<number_float_t>(number);
18827|  1.91k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  3.63k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.91k]
  |  |  |  Branch (1667:94): [True: 1.71k, False: 198]
  |  |  |  Branch (1667:94): [True: 0, False: 1.71k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.91k|        return sax->number_float(result, "");
18832|  1.91k|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_numberIdLb0EEEbRT_:
18739|    818|    {
18740|       |        // read in the original format
18741|       |
18742|    818|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    818|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 818]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    818|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 799, False: 19]
  |  Branch (18746:34): [Folded, False: 799]
  |  Branch (18746:57): [True: 0, False: 799]
  ------------------
18747|    799|        {
18748|    799|            byte_swap(result);
18749|    799|        }
18750|    818|        return true;
18751|    818|    }
_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_19json_sax_dom_parserISG_SL_EEE22parse_msgpack_internalEv:
17112|  7.51k|    {
17113|       |        // the key currently being read; hoisted out of the loop so that its
17114|       |        // capacity is reused across elements and across nesting levels
17115|  7.51k|        string_t key;
17116|       |
17117|   298k|        while (true)
  ------------------
  |  Branch (17117:16): [True: 295k, Folded]
  ------------------
17118|   295k|        {
17119|   295k|            if (!container_stack.empty())
  ------------------
  |  Branch (17119:17): [True: 288k, False: 7.51k]
  ------------------
17120|   288k|            {
17121|       |                // copied out before anything can push onto the stack and
17122|       |                // invalidate a reference into it
17123|   288k|                const bool is_object = container_stack.back().is_object;
17124|       |
17125|   288k|                if (container_stack.back().remaining == 0)
  ------------------
  |  Branch (17125:21): [True: 84.2k, False: 204k]
  ------------------
17126|  84.2k|                {
17127|  84.2k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  84.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 84.2k]
  |  |  ------------------
  ------------------
17128|      0|                    {
17129|      0|                        return false;
17130|      0|                    }
17131|       |                    // the value begun here is complete once its container is
17132|  84.2k|                    if (container_stack.empty())
  ------------------
  |  Branch (17132:25): [True: 2.37k, False: 81.8k]
  ------------------
17133|  2.37k|                    {
17134|  2.37k|                        return true;
17135|  2.37k|                    }
17136|  81.8k|                    continue;
17137|  84.2k|                }
17138|       |
17139|       |                // claim the element about to be read
17140|   204k|                --container_stack.back().remaining;
17141|       |
17142|   204k|                if (is_object)
  ------------------
  |  Branch (17142:21): [True: 21.8k, False: 182k]
  ------------------
17143|  21.8k|                {
17144|  21.8k|                    get();
17145|  21.8k|                    key.clear();
17146|  21.8k|                    if (JSON_HEDLEY_UNLIKELY(!get_msgpack_object_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  43.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 21.8k]
  |  |  |  Branch (1667:94): [True: 388, False: 21.5k]
  |  |  |  Branch (1667:94): [True: 0, False: 21.5k]
  |  |  ------------------
  ------------------
17147|      0|                    {
17148|      0|                        return false;
17149|      0|                    }
17150|  21.8k|                }
17151|   204k|            }
17152|       |
17153|   211k|            if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_value()))
  ------------------
  |  | 1667|   211k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 211k]
  |  |  ------------------
  ------------------
17154|      0|            {
17155|      0|                return false;
17156|      0|            }
17157|       |
17158|       |            // a value that opened a container left it on the stack; one that
17159|       |            // did not, and that was not inside a container, was the whole value
17160|   211k|            if (container_stack.empty())
  ------------------
  |  Branch (17160:17): [True: 2.51k, False: 209k]
  ------------------
17161|  2.51k|            {
17162|  2.51k|                return true;
17163|  2.51k|            }
17164|   211k|        }
17165|  7.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_19json_sax_dom_parserISG_SL_EEE22get_msgpack_object_keyERSC_:
16908|  21.8k|    {
16909|  21.8k|        const char* found = nullptr;
16910|  21.8k|        switch (current)
16911|  21.8k|        {
16912|      2|            case 0xC0:
  ------------------
  |  Branch (16912:13): [True: 2, False: 21.8k]
  ------------------
16913|      2|                found = "nil";
16914|      2|                break;
16915|      0|            case 0xC2:
  ------------------
  |  Branch (16915:13): [True: 0, False: 21.8k]
  ------------------
16916|      0|            case 0xC3:
  ------------------
  |  Branch (16916:13): [True: 0, False: 21.8k]
  ------------------
16917|      0|                found = "a boolean";
16918|      0|                break;
16919|      1|            case 0xCA:
  ------------------
  |  Branch (16919:13): [True: 1, False: 21.8k]
  ------------------
16920|      1|            case 0xCB:
  ------------------
  |  Branch (16920:13): [True: 0, False: 21.8k]
  ------------------
16921|      1|                found = "a float";
16922|      1|                break;
16923|      1|            case 0xC4:
  ------------------
  |  Branch (16923:13): [True: 1, False: 21.8k]
  ------------------
16924|      1|            case 0xC5:
  ------------------
  |  Branch (16924:13): [True: 0, False: 21.8k]
  ------------------
16925|      2|            case 0xC6:
  ------------------
  |  Branch (16925:13): [True: 1, False: 21.8k]
  ------------------
16926|      2|                found = "a bin";
16927|      2|                break;
16928|      0|            case 0xC7:
  ------------------
  |  Branch (16928:13): [True: 0, False: 21.8k]
  ------------------
16929|      0|            case 0xC8:
  ------------------
  |  Branch (16929:13): [True: 0, False: 21.8k]
  ------------------
16930|      0|            case 0xC9:
  ------------------
  |  Branch (16930:13): [True: 0, False: 21.8k]
  ------------------
16931|      1|            case 0xD4:
  ------------------
  |  Branch (16931:13): [True: 1, False: 21.8k]
  ------------------
16932|      2|            case 0xD5:
  ------------------
  |  Branch (16932:13): [True: 1, False: 21.8k]
  ------------------
16933|      2|            case 0xD6:
  ------------------
  |  Branch (16933:13): [True: 0, False: 21.8k]
  ------------------
16934|      2|            case 0xD7:
  ------------------
  |  Branch (16934:13): [True: 0, False: 21.8k]
  ------------------
16935|      2|            case 0xD8:
  ------------------
  |  Branch (16935:13): [True: 0, False: 21.8k]
  ------------------
16936|      2|                found = "an ext";
16937|      2|                break;
16938|      0|            case 0xCC:
  ------------------
  |  Branch (16938:13): [True: 0, False: 21.8k]
  ------------------
16939|      0|            case 0xCD:
  ------------------
  |  Branch (16939:13): [True: 0, False: 21.8k]
  ------------------
16940|      0|            case 0xCE:
  ------------------
  |  Branch (16940:13): [True: 0, False: 21.8k]
  ------------------
16941|      0|            case 0xCF:
  ------------------
  |  Branch (16941:13): [True: 0, False: 21.8k]
  ------------------
16942|      1|            case 0xD0:
  ------------------
  |  Branch (16942:13): [True: 1, False: 21.8k]
  ------------------
16943|      3|            case 0xD1:
  ------------------
  |  Branch (16943:13): [True: 2, False: 21.8k]
  ------------------
16944|      5|            case 0xD2:
  ------------------
  |  Branch (16944:13): [True: 2, False: 21.8k]
  ------------------
16945|      5|            case 0xD3:
  ------------------
  |  Branch (16945:13): [True: 0, False: 21.8k]
  ------------------
16946|      5|                found = "an integer";
16947|      5|                break;
16948|      0|            case 0xDC:
  ------------------
  |  Branch (16948:13): [True: 0, False: 21.8k]
  ------------------
16949|      0|            case 0xDD:
  ------------------
  |  Branch (16949:13): [True: 0, False: 21.8k]
  ------------------
16950|      0|                found = "an array";
16951|      0|                break;
16952|      1|            case 0xDE:
  ------------------
  |  Branch (16952:13): [True: 1, False: 21.8k]
  ------------------
16953|      2|            case 0xDF:
  ------------------
  |  Branch (16953:13): [True: 1, False: 21.8k]
  ------------------
16954|      2|                found = "a map";
16955|      2|                break;
16956|  21.8k|            default:
  ------------------
  |  Branch (16956:13): [True: 21.8k, False: 14]
  ------------------
16957|       |                // fixint, fixmap, and fixarray; strings, EOF, and the unused
16958|       |                // byte 0xC1 are left to get_msgpack_string
16959|  21.8k|                if (current == char_traits<char_type>::eof())
  ------------------
  |  Branch (16959:21): [True: 217, False: 21.6k]
  ------------------
16960|    217|                {
16961|    217|                    return get_msgpack_string(result, "key");
16962|    217|                }
16963|  21.6k|                if (current <= 0x7F || current >= 0xE0)
  ------------------
  |  Branch (16963:21): [True: 55, False: 21.6k]
  |  Branch (16963:40): [True: 26, False: 21.5k]
  ------------------
16964|     81|                {
16965|     81|                    found = "an integer";
16966|     81|                }
16967|  21.5k|                else if (current <= 0x8F)
  ------------------
  |  Branch (16967:26): [True: 14, False: 21.5k]
  ------------------
16968|     14|                {
16969|     14|                    found = "a map";
16970|     14|                }
16971|  21.5k|                else if (current <= 0x9F)
  ------------------
  |  Branch (16971:26): [True: 13, False: 21.5k]
  ------------------
16972|     13|                {
16973|     13|                    found = "an array";
16974|     13|                }
16975|  21.5k|                else
16976|  21.5k|                {
16977|  21.5k|                    return get_msgpack_string(result, "key");
16978|  21.5k|                }
16979|    108|                break;
16980|  21.8k|        }
16981|       |
16982|    122|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
16983|  21.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_19json_sax_dom_parserISG_SL_EEE18get_msgpack_stringERSC_PKc:
16825|  31.3k|    {
16826|  31.3k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1667|  31.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 31.3k]
  |  |  ------------------
  ------------------
16827|      0|        {
16828|      0|            return false;
16829|      0|        }
16830|       |
16831|  31.3k|        switch (current)
16832|  31.3k|        {
16833|       |            // fixstr
16834|  16.5k|            case 0xA0:
  ------------------
  |  Branch (16834:13): [True: 16.5k, False: 14.8k]
  ------------------
16835|  24.2k|            case 0xA1:
  ------------------
  |  Branch (16835:13): [True: 7.66k, False: 23.7k]
  ------------------
16836|  25.0k|            case 0xA2:
  ------------------
  |  Branch (16836:13): [True: 827, False: 30.5k]
  ------------------
16837|  25.4k|            case 0xA3:
  ------------------
  |  Branch (16837:13): [True: 405, False: 30.9k]
  ------------------
16838|  25.8k|            case 0xA4:
  ------------------
  |  Branch (16838:13): [True: 355, False: 31.0k]
  ------------------
16839|  26.0k|            case 0xA5:
  ------------------
  |  Branch (16839:13): [True: 216, False: 31.1k]
  ------------------
16840|  26.2k|            case 0xA6:
  ------------------
  |  Branch (16840:13): [True: 200, False: 31.1k]
  ------------------
16841|  26.3k|            case 0xA7:
  ------------------
  |  Branch (16841:13): [True: 118, False: 31.2k]
  ------------------
16842|  26.6k|            case 0xA8:
  ------------------
  |  Branch (16842:13): [True: 334, False: 31.0k]
  ------------------
16843|  26.9k|            case 0xA9:
  ------------------
  |  Branch (16843:13): [True: 251, False: 31.1k]
  ------------------
16844|  27.1k|            case 0xAA:
  ------------------
  |  Branch (16844:13): [True: 208, False: 31.1k]
  ------------------
16845|  27.2k|            case 0xAB:
  ------------------
  |  Branch (16845:13): [True: 132, False: 31.2k]
  ------------------
16846|  27.4k|            case 0xAC:
  ------------------
  |  Branch (16846:13): [True: 150, False: 31.2k]
  ------------------
16847|  27.5k|            case 0xAD:
  ------------------
  |  Branch (16847:13): [True: 146, False: 31.2k]
  ------------------
16848|  27.6k|            case 0xAE:
  ------------------
  |  Branch (16848:13): [True: 80, False: 31.2k]
  ------------------
16849|  27.7k|            case 0xAF:
  ------------------
  |  Branch (16849:13): [True: 95, False: 31.2k]
  ------------------
16850|  27.8k|            case 0xB0:
  ------------------
  |  Branch (16850:13): [True: 97, False: 31.2k]
  ------------------
16851|  27.9k|            case 0xB1:
  ------------------
  |  Branch (16851:13): [True: 94, False: 31.2k]
  ------------------
16852|  28.0k|            case 0xB2:
  ------------------
  |  Branch (16852:13): [True: 160, False: 31.2k]
  ------------------
16853|  28.1k|            case 0xB3:
  ------------------
  |  Branch (16853:13): [True: 60, False: 31.3k]
  ------------------
16854|  28.2k|            case 0xB4:
  ------------------
  |  Branch (16854:13): [True: 96, False: 31.2k]
  ------------------
16855|  28.3k|            case 0xB5:
  ------------------
  |  Branch (16855:13): [True: 55, False: 31.3k]
  ------------------
16856|  28.3k|            case 0xB6:
  ------------------
  |  Branch (16856:13): [True: 64, False: 31.3k]
  ------------------
16857|  28.5k|            case 0xB7:
  ------------------
  |  Branch (16857:13): [True: 175, False: 31.2k]
  ------------------
16858|  28.6k|            case 0xB8:
  ------------------
  |  Branch (16858:13): [True: 76, False: 31.3k]
  ------------------
16859|  28.6k|            case 0xB9:
  ------------------
  |  Branch (16859:13): [True: 69, False: 31.3k]
  ------------------
16860|  28.7k|            case 0xBA:
  ------------------
  |  Branch (16860:13): [True: 93, False: 31.2k]
  ------------------
16861|  28.8k|            case 0xBB:
  ------------------
  |  Branch (16861:13): [True: 103, False: 31.2k]
  ------------------
16862|  28.9k|            case 0xBC:
  ------------------
  |  Branch (16862:13): [True: 53, False: 31.3k]
  ------------------
16863|  29.0k|            case 0xBD:
  ------------------
  |  Branch (16863:13): [True: 74, False: 31.3k]
  ------------------
16864|  29.0k|            case 0xBE:
  ------------------
  |  Branch (16864:13): [True: 59, False: 31.3k]
  ------------------
16865|  29.1k|            case 0xBF:
  ------------------
  |  Branch (16865:13): [True: 47, False: 31.3k]
  ------------------
16866|  29.1k|            {
16867|  29.1k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16867:24): [True: 28.8k, False: 283]
  |  Branch (16867:90): [True: 28.8k, False: 0]
  ------------------
16868|  29.0k|            }
16869|       |
16870|  1.16k|            case 0xD9: // str 8
  ------------------
  |  Branch (16870:13): [True: 1.16k, False: 30.2k]
  ------------------
16871|  1.16k|            {
16872|  1.16k|                std::uint8_t len{};
16873|  1.16k|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16873:24): [True: 1.15k, False: 13]
  |  Branch (16873:43): [True: 1.10k, False: 45]
  |  Branch (16873:70): [True: 1.10k, False: 0]
  ------------------
16874|  29.0k|            }
16875|       |
16876|    740|            case 0xDA: // str 16
  ------------------
  |  Branch (16876:13): [True: 740, False: 30.6k]
  ------------------
16877|    740|            {
16878|    740|                std::uint16_t len{};
16879|    740|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16879:24): [True: 732, False: 8]
  |  Branch (16879:43): [True: 675, False: 57]
  |  Branch (16879:70): [True: 675, False: 0]
  ------------------
16880|  29.0k|            }
16881|       |
16882|    140|            case 0xDB: // str 32
  ------------------
  |  Branch (16882:13): [True: 140, False: 31.2k]
  ------------------
16883|    140|            {
16884|    140|                std::uint32_t len{};
16885|    140|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16885:24): [True: 128, False: 12]
  |  Branch (16885:43): [True: 62, False: 66]
  |  Branch (16885:70): [True: 62, False: 0]
  ------------------
16886|  29.0k|            }
16887|       |
16888|      1|            default:
  ------------------
  |  Branch (16888:13): [True: 1, False: 31.3k]
  ------------------
16889|      1|            {
16890|      1|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0xA0-0xBF, 0xD9-0xDB)", "string", "");
16891|  29.0k|            }
16892|  31.3k|        }
16893|  31.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_19json_sax_dom_parserISG_SL_EEE19parse_msgpack_valueEv:
16446|   211k|    {
16447|   211k|        switch (get())
16448|   211k|        {
16449|       |            // EOF
16450|  1.38k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (16450:13): [True: 1.38k, False: 209k]
  ------------------
16451|  1.38k|                return unexpect_eof("value");
16452|       |
16453|       |            // positive fixint
16454|  6.23k|            case 0x00:
  ------------------
  |  Branch (16454:13): [True: 6.23k, False: 205k]
  ------------------
16455|  6.98k|            case 0x01:
  ------------------
  |  Branch (16455:13): [True: 751, False: 210k]
  ------------------
16456|  7.42k|            case 0x02:
  ------------------
  |  Branch (16456:13): [True: 435, False: 210k]
  ------------------
16457|  7.85k|            case 0x03:
  ------------------
  |  Branch (16457:13): [True: 434, False: 210k]
  ------------------
16458|  8.29k|            case 0x04:
  ------------------
  |  Branch (16458:13): [True: 438, False: 210k]
  ------------------
16459|  8.69k|            case 0x05:
  ------------------
  |  Branch (16459:13): [True: 398, False: 210k]
  ------------------
16460|  9.05k|            case 0x06:
  ------------------
  |  Branch (16460:13): [True: 364, False: 210k]
  ------------------
16461|  9.47k|            case 0x07:
  ------------------
  |  Branch (16461:13): [True: 417, False: 210k]
  ------------------
16462|  10.0k|            case 0x08:
  ------------------
  |  Branch (16462:13): [True: 573, False: 210k]
  ------------------
16463|  10.5k|            case 0x09:
  ------------------
  |  Branch (16463:13): [True: 546, False: 210k]
  ------------------
16464|  11.0k|            case 0x0A:
  ------------------
  |  Branch (16464:13): [True: 412, False: 210k]
  ------------------
16465|  11.4k|            case 0x0B:
  ------------------
  |  Branch (16465:13): [True: 413, False: 210k]
  ------------------
16466|  11.7k|            case 0x0C:
  ------------------
  |  Branch (16466:13): [True: 341, False: 210k]
  ------------------
16467|  12.1k|            case 0x0D:
  ------------------
  |  Branch (16467:13): [True: 425, False: 210k]
  ------------------
16468|  12.6k|            case 0x0E:
  ------------------
  |  Branch (16468:13): [True: 445, False: 210k]
  ------------------
16469|  12.9k|            case 0x0F:
  ------------------
  |  Branch (16469:13): [True: 310, False: 210k]
  ------------------
16470|  13.2k|            case 0x10:
  ------------------
  |  Branch (16470:13): [True: 351, False: 210k]
  ------------------
16471|  13.5k|            case 0x11:
  ------------------
  |  Branch (16471:13): [True: 294, False: 210k]
  ------------------
16472|  13.9k|            case 0x12:
  ------------------
  |  Branch (16472:13): [True: 401, False: 210k]
  ------------------
16473|  14.3k|            case 0x13:
  ------------------
  |  Branch (16473:13): [True: 335, False: 210k]
  ------------------
16474|  14.6k|            case 0x14:
  ------------------
  |  Branch (16474:13): [True: 374, False: 210k]
  ------------------
16475|  15.1k|            case 0x15:
  ------------------
  |  Branch (16475:13): [True: 474, False: 210k]
  ------------------
16476|  15.5k|            case 0x16:
  ------------------
  |  Branch (16476:13): [True: 353, False: 210k]
  ------------------
16477|  15.8k|            case 0x17:
  ------------------
  |  Branch (16477:13): [True: 365, False: 210k]
  ------------------
16478|  16.4k|            case 0x18:
  ------------------
  |  Branch (16478:13): [True: 559, False: 210k]
  ------------------
16479|  16.8k|            case 0x19:
  ------------------
  |  Branch (16479:13): [True: 422, False: 210k]
  ------------------
16480|  17.5k|            case 0x1A:
  ------------------
  |  Branch (16480:13): [True: 637, False: 210k]
  ------------------
16481|  17.7k|            case 0x1B:
  ------------------
  |  Branch (16481:13): [True: 286, False: 210k]
  ------------------
16482|  18.0k|            case 0x1C:
  ------------------
  |  Branch (16482:13): [True: 285, False: 210k]
  ------------------
16483|  18.4k|            case 0x1D:
  ------------------
  |  Branch (16483:13): [True: 333, False: 210k]
  ------------------
16484|  18.8k|            case 0x1E:
  ------------------
  |  Branch (16484:13): [True: 427, False: 210k]
  ------------------
16485|  19.1k|            case 0x1F:
  ------------------
  |  Branch (16485:13): [True: 273, False: 210k]
  ------------------
16486|  19.4k|            case 0x20:
  ------------------
  |  Branch (16486:13): [True: 353, False: 210k]
  ------------------
16487|  19.8k|            case 0x21:
  ------------------
  |  Branch (16487:13): [True: 407, False: 210k]
  ------------------
16488|  20.3k|            case 0x22:
  ------------------
  |  Branch (16488:13): [True: 486, False: 210k]
  ------------------
16489|  20.6k|            case 0x23:
  ------------------
  |  Branch (16489:13): [True: 327, False: 210k]
  ------------------
16490|  21.1k|            case 0x24:
  ------------------
  |  Branch (16490:13): [True: 435, False: 210k]
  ------------------
16491|  21.5k|            case 0x25:
  ------------------
  |  Branch (16491:13): [True: 452, False: 210k]
  ------------------
16492|  22.0k|            case 0x26:
  ------------------
  |  Branch (16492:13): [True: 456, False: 210k]
  ------------------
16493|  22.3k|            case 0x27:
  ------------------
  |  Branch (16493:13): [True: 324, False: 210k]
  ------------------
16494|  22.8k|            case 0x28:
  ------------------
  |  Branch (16494:13): [True: 462, False: 210k]
  ------------------
16495|  23.1k|            case 0x29:
  ------------------
  |  Branch (16495:13): [True: 343, False: 210k]
  ------------------
16496|  23.5k|            case 0x2A:
  ------------------
  |  Branch (16496:13): [True: 354, False: 210k]
  ------------------
16497|  23.9k|            case 0x2B:
  ------------------
  |  Branch (16497:13): [True: 404, False: 210k]
  ------------------
16498|  24.2k|            case 0x2C:
  ------------------
  |  Branch (16498:13): [True: 379, False: 210k]
  ------------------
16499|  24.6k|            case 0x2D:
  ------------------
  |  Branch (16499:13): [True: 400, False: 210k]
  ------------------
16500|  25.2k|            case 0x2E:
  ------------------
  |  Branch (16500:13): [True: 544, False: 210k]
  ------------------
16501|  25.6k|            case 0x2F:
  ------------------
  |  Branch (16501:13): [True: 409, False: 210k]
  ------------------
16502|  26.0k|            case 0x30:
  ------------------
  |  Branch (16502:13): [True: 381, False: 210k]
  ------------------
16503|  26.4k|            case 0x31:
  ------------------
  |  Branch (16503:13): [True: 382, False: 210k]
  ------------------
16504|  26.7k|            case 0x32:
  ------------------
  |  Branch (16504:13): [True: 352, False: 210k]
  ------------------
16505|  27.0k|            case 0x33:
  ------------------
  |  Branch (16505:13): [True: 334, False: 210k]
  ------------------
16506|  27.4k|            case 0x34:
  ------------------
  |  Branch (16506:13): [True: 328, False: 210k]
  ------------------
16507|  27.8k|            case 0x35:
  ------------------
  |  Branch (16507:13): [True: 385, False: 210k]
  ------------------
16508|  28.1k|            case 0x36:
  ------------------
  |  Branch (16508:13): [True: 337, False: 210k]
  ------------------
16509|  28.4k|            case 0x37:
  ------------------
  |  Branch (16509:13): [True: 291, False: 210k]
  ------------------
16510|  28.8k|            case 0x38:
  ------------------
  |  Branch (16510:13): [True: 428, False: 210k]
  ------------------
16511|  29.2k|            case 0x39:
  ------------------
  |  Branch (16511:13): [True: 357, False: 210k]
  ------------------
16512|  29.7k|            case 0x3A:
  ------------------
  |  Branch (16512:13): [True: 526, False: 210k]
  ------------------
16513|  30.2k|            case 0x3B:
  ------------------
  |  Branch (16513:13): [True: 496, False: 210k]
  ------------------
16514|  30.5k|            case 0x3C:
  ------------------
  |  Branch (16514:13): [True: 309, False: 210k]
  ------------------
16515|  30.8k|            case 0x3D:
  ------------------
  |  Branch (16515:13): [True: 303, False: 210k]
  ------------------
16516|  31.4k|            case 0x3E:
  ------------------
  |  Branch (16516:13): [True: 571, False: 210k]
  ------------------
16517|  31.9k|            case 0x3F:
  ------------------
  |  Branch (16517:13): [True: 546, False: 210k]
  ------------------
16518|  32.3k|            case 0x40:
  ------------------
  |  Branch (16518:13): [True: 400, False: 210k]
  ------------------
16519|  32.9k|            case 0x41:
  ------------------
  |  Branch (16519:13): [True: 580, False: 210k]
  ------------------
16520|  33.3k|            case 0x42:
  ------------------
  |  Branch (16520:13): [True: 412, False: 210k]
  ------------------
16521|  33.6k|            case 0x43:
  ------------------
  |  Branch (16521:13): [True: 281, False: 210k]
  ------------------
16522|  34.0k|            case 0x44:
  ------------------
  |  Branch (16522:13): [True: 380, False: 210k]
  ------------------
16523|  34.3k|            case 0x45:
  ------------------
  |  Branch (16523:13): [True: 372, False: 210k]
  ------------------
16524|  34.7k|            case 0x46:
  ------------------
  |  Branch (16524:13): [True: 397, False: 210k]
  ------------------
16525|  35.1k|            case 0x47:
  ------------------
  |  Branch (16525:13): [True: 327, False: 210k]
  ------------------
16526|  35.5k|            case 0x48:
  ------------------
  |  Branch (16526:13): [True: 420, False: 210k]
  ------------------
16527|  35.7k|            case 0x49:
  ------------------
  |  Branch (16527:13): [True: 259, False: 210k]
  ------------------
16528|  36.0k|            case 0x4A:
  ------------------
  |  Branch (16528:13): [True: 283, False: 210k]
  ------------------
16529|  36.4k|            case 0x4B:
  ------------------
  |  Branch (16529:13): [True: 351, False: 210k]
  ------------------
16530|  36.7k|            case 0x4C:
  ------------------
  |  Branch (16530:13): [True: 277, False: 210k]
  ------------------
16531|  37.0k|            case 0x4D:
  ------------------
  |  Branch (16531:13): [True: 354, False: 210k]
  ------------------
16532|  37.3k|            case 0x4E:
  ------------------
  |  Branch (16532:13): [True: 330, False: 210k]
  ------------------
16533|  37.6k|            case 0x4F:
  ------------------
  |  Branch (16533:13): [True: 294, False: 210k]
  ------------------
16534|  38.2k|            case 0x50:
  ------------------
  |  Branch (16534:13): [True: 523, False: 210k]
  ------------------
16535|  38.7k|            case 0x51:
  ------------------
  |  Branch (16535:13): [True: 500, False: 210k]
  ------------------
16536|  39.0k|            case 0x52:
  ------------------
  |  Branch (16536:13): [True: 296, False: 210k]
  ------------------
16537|  39.4k|            case 0x53:
  ------------------
  |  Branch (16537:13): [True: 401, False: 210k]
  ------------------
16538|  39.7k|            case 0x54:
  ------------------
  |  Branch (16538:13): [True: 321, False: 210k]
  ------------------
16539|  39.9k|            case 0x55:
  ------------------
  |  Branch (16539:13): [True: 253, False: 210k]
  ------------------
16540|  40.3k|            case 0x56:
  ------------------
  |  Branch (16540:13): [True: 398, False: 210k]
  ------------------
16541|  40.7k|            case 0x57:
  ------------------
  |  Branch (16541:13): [True: 352, False: 210k]
  ------------------
16542|  40.9k|            case 0x58:
  ------------------
  |  Branch (16542:13): [True: 250, False: 210k]
  ------------------
16543|  41.3k|            case 0x59:
  ------------------
  |  Branch (16543:13): [True: 402, False: 210k]
  ------------------
16544|  41.7k|            case 0x5A:
  ------------------
  |  Branch (16544:13): [True: 349, False: 210k]
  ------------------
16545|  42.1k|            case 0x5B:
  ------------------
  |  Branch (16545:13): [True: 384, False: 210k]
  ------------------
16546|  42.4k|            case 0x5C:
  ------------------
  |  Branch (16546:13): [True: 313, False: 210k]
  ------------------
16547|  42.9k|            case 0x5D:
  ------------------
  |  Branch (16547:13): [True: 489, False: 210k]
  ------------------
16548|  43.4k|            case 0x5E:
  ------------------
  |  Branch (16548:13): [True: 506, False: 210k]
  ------------------
16549|  43.7k|            case 0x5F:
  ------------------
  |  Branch (16549:13): [True: 324, False: 210k]
  ------------------
16550|  44.3k|            case 0x60:
  ------------------
  |  Branch (16550:13): [True: 553, False: 210k]
  ------------------
16551|  44.6k|            case 0x61:
  ------------------
  |  Branch (16551:13): [True: 350, False: 210k]
  ------------------
16552|  45.0k|            case 0x62:
  ------------------
  |  Branch (16552:13): [True: 380, False: 210k]
  ------------------
16553|  45.2k|            case 0x63:
  ------------------
  |  Branch (16553:13): [True: 255, False: 210k]
  ------------------
16554|  45.7k|            case 0x64:
  ------------------
  |  Branch (16554:13): [True: 491, False: 210k]
  ------------------
16555|  46.2k|            case 0x65:
  ------------------
  |  Branch (16555:13): [True: 432, False: 210k]
  ------------------
16556|  46.4k|            case 0x66:
  ------------------
  |  Branch (16556:13): [True: 279, False: 210k]
  ------------------
16557|  46.9k|            case 0x67:
  ------------------
  |  Branch (16557:13): [True: 451, False: 210k]
  ------------------
16558|  47.2k|            case 0x68:
  ------------------
  |  Branch (16558:13): [True: 280, False: 210k]
  ------------------
16559|  47.5k|            case 0x69:
  ------------------
  |  Branch (16559:13): [True: 295, False: 210k]
  ------------------
16560|  47.9k|            case 0x6A:
  ------------------
  |  Branch (16560:13): [True: 431, False: 210k]
  ------------------
16561|  48.3k|            case 0x6B:
  ------------------
  |  Branch (16561:13): [True: 397, False: 210k]
  ------------------
16562|  48.6k|            case 0x6C:
  ------------------
  |  Branch (16562:13): [True: 264, False: 210k]
  ------------------
16563|  48.9k|            case 0x6D:
  ------------------
  |  Branch (16563:13): [True: 384, False: 210k]
  ------------------
16564|  49.3k|            case 0x6E:
  ------------------
  |  Branch (16564:13): [True: 408, False: 210k]
  ------------------
16565|  49.7k|            case 0x6F:
  ------------------
  |  Branch (16565:13): [True: 397, False: 210k]
  ------------------
16566|  50.2k|            case 0x70:
  ------------------
  |  Branch (16566:13): [True: 462, False: 210k]
  ------------------
16567|  50.7k|            case 0x71:
  ------------------
  |  Branch (16567:13): [True: 451, False: 210k]
  ------------------
16568|  51.1k|            case 0x72:
  ------------------
  |  Branch (16568:13): [True: 481, False: 210k]
  ------------------
16569|  51.6k|            case 0x73:
  ------------------
  |  Branch (16569:13): [True: 463, False: 210k]
  ------------------
16570|  52.1k|            case 0x74:
  ------------------
  |  Branch (16570:13): [True: 488, False: 210k]
  ------------------
16571|  52.4k|            case 0x75:
  ------------------
  |  Branch (16571:13): [True: 329, False: 210k]
  ------------------
16572|  52.8k|            case 0x76:
  ------------------
  |  Branch (16572:13): [True: 373, False: 210k]
  ------------------
16573|  53.2k|            case 0x77:
  ------------------
  |  Branch (16573:13): [True: 372, False: 210k]
  ------------------
16574|  53.4k|            case 0x78:
  ------------------
  |  Branch (16574:13): [True: 283, False: 210k]
  ------------------
16575|  53.7k|            case 0x79:
  ------------------
  |  Branch (16575:13): [True: 236, False: 211k]
  ------------------
16576|  54.1k|            case 0x7A:
  ------------------
  |  Branch (16576:13): [True: 399, False: 210k]
  ------------------
16577|  54.5k|            case 0x7B:
  ------------------
  |  Branch (16577:13): [True: 424, False: 210k]
  ------------------
16578|  55.0k|            case 0x7C:
  ------------------
  |  Branch (16578:13): [True: 482, False: 210k]
  ------------------
16579|  55.3k|            case 0x7D:
  ------------------
  |  Branch (16579:13): [True: 301, False: 210k]
  ------------------
16580|  55.8k|            case 0x7E:
  ------------------
  |  Branch (16580:13): [True: 489, False: 210k]
  ------------------
16581|  56.4k|            case 0x7F:
  ------------------
  |  Branch (16581:13): [True: 581, False: 210k]
  ------------------
16582|  56.4k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
16583|       |
16584|       |            // fixmap
16585|  2.15k|            case 0x80:
  ------------------
  |  Branch (16585:13): [True: 2.15k, False: 209k]
  ------------------
16586|  7.80k|            case 0x81:
  ------------------
  |  Branch (16586:13): [True: 5.64k, False: 205k]
  ------------------
16587|  8.69k|            case 0x82:
  ------------------
  |  Branch (16587:13): [True: 899, False: 210k]
  ------------------
16588|  9.05k|            case 0x83:
  ------------------
  |  Branch (16588:13): [True: 356, False: 210k]
  ------------------
16589|  9.53k|            case 0x84:
  ------------------
  |  Branch (16589:13): [True: 479, False: 210k]
  ------------------
16590|  9.88k|            case 0x85:
  ------------------
  |  Branch (16590:13): [True: 351, False: 210k]
  ------------------
16591|  10.1k|            case 0x86:
  ------------------
  |  Branch (16591:13): [True: 249, False: 210k]
  ------------------
16592|  10.4k|            case 0x87:
  ------------------
  |  Branch (16592:13): [True: 344, False: 210k]
  ------------------
16593|  10.7k|            case 0x88:
  ------------------
  |  Branch (16593:13): [True: 297, False: 210k]
  ------------------
16594|  11.0k|            case 0x89:
  ------------------
  |  Branch (16594:13): [True: 295, False: 210k]
  ------------------
16595|  11.3k|            case 0x8A:
  ------------------
  |  Branch (16595:13): [True: 255, False: 210k]
  ------------------
16596|  11.6k|            case 0x8B:
  ------------------
  |  Branch (16596:13): [True: 360, False: 210k]
  ------------------
16597|  12.1k|            case 0x8C:
  ------------------
  |  Branch (16597:13): [True: 434, False: 210k]
  ------------------
16598|  12.5k|            case 0x8D:
  ------------------
  |  Branch (16598:13): [True: 461, False: 210k]
  ------------------
16599|  12.8k|            case 0x8E:
  ------------------
  |  Branch (16599:13): [True: 307, False: 210k]
  ------------------
16600|  13.2k|            case 0x8F:
  ------------------
  |  Branch (16600:13): [True: 355, False: 210k]
  ------------------
16601|  13.2k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
16602|       |
16603|       |            // fixarray
16604|  2.66k|            case 0x90:
  ------------------
  |  Branch (16604:13): [True: 2.66k, False: 208k]
  ------------------
16605|  75.0k|            case 0x91:
  ------------------
  |  Branch (16605:13): [True: 72.4k, False: 138k]
  ------------------
16606|  75.8k|            case 0x92:
  ------------------
  |  Branch (16606:13): [True: 742, False: 210k]
  ------------------
16607|  76.9k|            case 0x93:
  ------------------
  |  Branch (16607:13): [True: 1.11k, False: 210k]
  ------------------
16608|  77.8k|            case 0x94:
  ------------------
  |  Branch (16608:13): [True: 874, False: 210k]
  ------------------
16609|  78.4k|            case 0x95:
  ------------------
  |  Branch (16609:13): [True: 592, False: 210k]
  ------------------
16610|  79.3k|            case 0x96:
  ------------------
  |  Branch (16610:13): [True: 985, False: 210k]
  ------------------
16611|  79.8k|            case 0x97:
  ------------------
  |  Branch (16611:13): [True: 453, False: 210k]
  ------------------
16612|  81.0k|            case 0x98:
  ------------------
  |  Branch (16612:13): [True: 1.20k, False: 210k]
  ------------------
16613|  81.8k|            case 0x99:
  ------------------
  |  Branch (16613:13): [True: 778, False: 210k]
  ------------------
16614|  82.8k|            case 0x9A:
  ------------------
  |  Branch (16614:13): [True: 978, False: 210k]
  ------------------
16615|  83.9k|            case 0x9B:
  ------------------
  |  Branch (16615:13): [True: 1.11k, False: 210k]
  ------------------
16616|  84.8k|            case 0x9C:
  ------------------
  |  Branch (16616:13): [True: 971, False: 210k]
  ------------------
16617|  86.0k|            case 0x9D:
  ------------------
  |  Branch (16617:13): [True: 1.19k, False: 210k]
  ------------------
16618|  87.2k|            case 0x9E:
  ------------------
  |  Branch (16618:13): [True: 1.15k, False: 210k]
  ------------------
16619|  87.9k|            case 0x9F:
  ------------------
  |  Branch (16619:13): [True: 716, False: 210k]
  ------------------
16620|  87.9k|                return enter_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
16621|       |
16622|       |            // fixstr
16623|  3.40k|            case 0xA0:
  ------------------
  |  Branch (16623:13): [True: 3.40k, False: 207k]
  ------------------
16624|  4.24k|            case 0xA1:
  ------------------
  |  Branch (16624:13): [True: 841, False: 210k]
  ------------------
16625|  4.78k|            case 0xA2:
  ------------------
  |  Branch (16625:13): [True: 534, False: 210k]
  ------------------
16626|  5.12k|            case 0xA3:
  ------------------
  |  Branch (16626:13): [True: 346, False: 210k]
  ------------------
16627|  5.46k|            case 0xA4:
  ------------------
  |  Branch (16627:13): [True: 336, False: 210k]
  ------------------
16628|  5.66k|            case 0xA5:
  ------------------
  |  Branch (16628:13): [True: 205, False: 211k]
  ------------------
16629|  5.86k|            case 0xA6:
  ------------------
  |  Branch (16629:13): [True: 194, False: 211k]
  ------------------
16630|  5.96k|            case 0xA7:
  ------------------
  |  Branch (16630:13): [True: 107, False: 211k]
  ------------------
16631|  6.24k|            case 0xA8:
  ------------------
  |  Branch (16631:13): [True: 271, False: 210k]
  ------------------
16632|  6.44k|            case 0xA9:
  ------------------
  |  Branch (16632:13): [True: 208, False: 211k]
  ------------------
16633|  6.60k|            case 0xAA:
  ------------------
  |  Branch (16633:13): [True: 160, False: 211k]
  ------------------
16634|  6.71k|            case 0xAB:
  ------------------
  |  Branch (16634:13): [True: 109, False: 211k]
  ------------------
16635|  6.84k|            case 0xAC:
  ------------------
  |  Branch (16635:13): [True: 130, False: 211k]
  ------------------
16636|  6.96k|            case 0xAD:
  ------------------
  |  Branch (16636:13): [True: 120, False: 211k]
  ------------------
16637|  7.03k|            case 0xAE:
  ------------------
  |  Branch (16637:13): [True: 68, False: 211k]
  ------------------
16638|  7.10k|            case 0xAF:
  ------------------
  |  Branch (16638:13): [True: 67, False: 211k]
  ------------------
16639|  7.17k|            case 0xB0:
  ------------------
  |  Branch (16639:13): [True: 77, False: 211k]
  ------------------
16640|  7.25k|            case 0xB1:
  ------------------
  |  Branch (16640:13): [True: 78, False: 211k]
  ------------------
16641|  7.36k|            case 0xB2:
  ------------------
  |  Branch (16641:13): [True: 106, False: 211k]
  ------------------
16642|  7.42k|            case 0xB3:
  ------------------
  |  Branch (16642:13): [True: 59, False: 211k]
  ------------------
16643|  7.50k|            case 0xB4:
  ------------------
  |  Branch (16643:13): [True: 87, False: 211k]
  ------------------
16644|  7.56k|            case 0xB5:
  ------------------
  |  Branch (16644:13): [True: 55, False: 211k]
  ------------------
16645|  7.62k|            case 0xB6:
  ------------------
  |  Branch (16645:13): [True: 64, False: 211k]
  ------------------
16646|  7.71k|            case 0xB7:
  ------------------
  |  Branch (16646:13): [True: 89, False: 211k]
  ------------------
16647|  7.77k|            case 0xB8:
  ------------------
  |  Branch (16647:13): [True: 60, False: 211k]
  ------------------
16648|  7.83k|            case 0xB9:
  ------------------
  |  Branch (16648:13): [True: 62, False: 211k]
  ------------------
16649|  7.90k|            case 0xBA:
  ------------------
  |  Branch (16649:13): [True: 69, False: 211k]
  ------------------
16650|  7.99k|            case 0xBB:
  ------------------
  |  Branch (16650:13): [True: 85, False: 211k]
  ------------------
16651|  8.04k|            case 0xBC:
  ------------------
  |  Branch (16651:13): [True: 53, False: 211k]
  ------------------
16652|  8.10k|            case 0xBD:
  ------------------
  |  Branch (16652:13): [True: 55, False: 211k]
  ------------------
16653|  8.15k|            case 0xBE:
  ------------------
  |  Branch (16653:13): [True: 56, False: 211k]
  ------------------
16654|  8.20k|            case 0xBF:
  ------------------
  |  Branch (16654:13): [True: 46, False: 211k]
  ------------------
16655|  8.85k|            case 0xD9: // str 8
  ------------------
  |  Branch (16655:13): [True: 651, False: 210k]
  ------------------
16656|  9.48k|            case 0xDA: // str 16
  ------------------
  |  Branch (16656:13): [True: 627, False: 210k]
  ------------------
16657|  9.61k|            case 0xDB: // str 32
  ------------------
  |  Branch (16657:13): [True: 129, False: 211k]
  ------------------
16658|  9.61k|            {
16659|  9.61k|                string_t s;
16660|  9.61k|                return get_msgpack_string(s) && sax->string(s);
  ------------------
  |  Branch (16660:24): [True: 9.17k, False: 436]
  |  Branch (16660:49): [True: 9.17k, False: 0]
  ------------------
16661|  9.48k|            }
16662|       |
16663|  2.01k|            case 0xC0: // nil
  ------------------
  |  Branch (16663:13): [True: 2.01k, False: 209k]
  ------------------
16664|  2.01k|                return sax->null();
16665|       |
16666|  1.35k|            case 0xC2: // false
  ------------------
  |  Branch (16666:13): [True: 1.35k, False: 209k]
  ------------------
16667|  1.35k|                return sax->boolean(false);
16668|       |
16669|  1.16k|            case 0xC3: // true
  ------------------
  |  Branch (16669:13): [True: 1.16k, False: 210k]
  ------------------
16670|  1.16k|                return sax->boolean(true);
16671|       |
16672|  7.58k|            case 0xC4: // bin 8
  ------------------
  |  Branch (16672:13): [True: 7.58k, False: 203k]
  ------------------
16673|  8.42k|            case 0xC5: // bin 16
  ------------------
  |  Branch (16673:13): [True: 842, False: 210k]
  ------------------
16674|  8.78k|            case 0xC6: // bin 32
  ------------------
  |  Branch (16674:13): [True: 364, False: 210k]
  ------------------
16675|  9.42k|            case 0xC7: // ext 8
  ------------------
  |  Branch (16675:13): [True: 634, False: 210k]
  ------------------
16676|  9.81k|            case 0xC8: // ext 16
  ------------------
  |  Branch (16676:13): [True: 391, False: 210k]
  ------------------
16677|  10.0k|            case 0xC9: // ext 32
  ------------------
  |  Branch (16677:13): [True: 197, False: 211k]
  ------------------
16678|  11.3k|            case 0xD4: // fixext 1
  ------------------
  |  Branch (16678:13): [True: 1.36k, False: 209k]
  ------------------
16679|  11.7k|            case 0xD5: // fixext 2
  ------------------
  |  Branch (16679:13): [True: 411, False: 210k]
  ------------------
16680|  12.0k|            case 0xD6: // fixext 4
  ------------------
  |  Branch (16680:13): [True: 293, False: 210k]
  ------------------
16681|  12.5k|            case 0xD7: // fixext 8
  ------------------
  |  Branch (16681:13): [True: 431, False: 210k]
  ------------------
16682|  12.5k|            case 0xD8: // fixext 16
  ------------------
  |  Branch (16682:13): [True: 71, False: 211k]
  ------------------
16683|  12.5k|            {
16684|  12.5k|                binary_t b;
16685|  12.5k|                return get_msgpack_binary(b) && sax->binary(b);
  ------------------
  |  Branch (16685:24): [True: 12.2k, False: 296]
  |  Branch (16685:49): [True: 12.2k, False: 0]
  ------------------
16686|  12.5k|            }
16687|       |
16688|  1.92k|            case 0xCA: // float 32
  ------------------
  |  Branch (16688:13): [True: 1.92k, False: 209k]
  ------------------
16689|  1.92k|            {
16690|  1.92k|                float number{};
16691|  1.92k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (16691:24): [True: 1.91k, False: 8]
  |  Branch (16691:46): [True: 1.91k, False: 0]
  ------------------
16692|  12.5k|            }
16693|       |
16694|    818|            case 0xCB: // float 64
  ------------------
  |  Branch (16694:13): [True: 818, False: 210k]
  ------------------
16695|    818|            {
16696|    818|                double number{};
16697|    818|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (16697:24): [True: 799, False: 19]
  |  Branch (16697:46): [True: 799, False: 0]
  ------------------
16698|  12.5k|            }
16699|       |
16700|    850|            case 0xCC: // uint 8
  ------------------
  |  Branch (16700:13): [True: 850, False: 210k]
  ------------------
16701|    850|            {
16702|    850|                std::uint8_t number{};
16703|    850|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16703:24): [True: 848, False: 2]
  |  Branch (16703:46): [True: 848, False: 0]
  ------------------
16704|  12.5k|            }
16705|       |
16706|    218|            case 0xCD: // uint 16
  ------------------
  |  Branch (16706:13): [True: 218, False: 211k]
  ------------------
16707|    218|            {
16708|    218|                std::uint16_t number{};
16709|    218|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16709:24): [True: 216, False: 2]
  |  Branch (16709:46): [True: 216, False: 0]
  ------------------
16710|  12.5k|            }
16711|       |
16712|    362|            case 0xCE: // uint 32
  ------------------
  |  Branch (16712:13): [True: 362, False: 210k]
  ------------------
16713|    362|            {
16714|    362|                std::uint32_t number{};
16715|    362|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16715:24): [True: 358, False: 4]
  |  Branch (16715:46): [True: 358, False: 0]
  ------------------
16716|  12.5k|            }
16717|       |
16718|    614|            case 0xCF: // uint 64
  ------------------
  |  Branch (16718:13): [True: 614, False: 210k]
  ------------------
16719|    614|            {
16720|    614|                std::uint64_t number{};
16721|    614|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16721:24): [True: 602, False: 12]
  |  Branch (16721:46): [True: 602, False: 0]
  ------------------
16722|  12.5k|            }
16723|       |
16724|  1.55k|            case 0xD0: // int 8
  ------------------
  |  Branch (16724:13): [True: 1.55k, False: 209k]
  ------------------
16725|  1.55k|            {
16726|  1.55k|                std::int8_t number{};
16727|  1.55k|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16727:24): [True: 1.55k, False: 3]
  |  Branch (16727:46): [True: 1.55k, False: 0]
  ------------------
16728|  12.5k|            }
16729|       |
16730|    394|            case 0xD1: // int 16
  ------------------
  |  Branch (16730:13): [True: 394, False: 210k]
  ------------------
16731|    394|            {
16732|    394|                std::int16_t number{};
16733|    394|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16733:24): [True: 390, False: 4]
  |  Branch (16733:46): [True: 390, False: 0]
  ------------------
16734|  12.5k|            }
16735|       |
16736|    435|            case 0xD2: // int 32
  ------------------
  |  Branch (16736:13): [True: 435, False: 210k]
  ------------------
16737|    435|            {
16738|    435|                std::int32_t number{};
16739|    435|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16739:24): [True: 425, False: 10]
  |  Branch (16739:46): [True: 425, False: 0]
  ------------------
16740|  12.5k|            }
16741|       |
16742|    694|            case 0xD3: // int 64
  ------------------
  |  Branch (16742:13): [True: 694, False: 210k]
  ------------------
16743|    694|            {
16744|    694|                std::int64_t number{};
16745|    694|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16745:24): [True: 672, False: 22]
  |  Branch (16745:46): [True: 672, False: 0]
  ------------------
16746|  12.5k|            }
16747|       |
16748|  1.42k|            case 0xDC: // array 16
  ------------------
  |  Branch (16748:13): [True: 1.42k, False: 209k]
  ------------------
16749|  1.42k|            {
16750|  1.42k|                std::uint16_t len{};
16751|  1.42k|                return get_number(len) && enter_array(static_cast<std::size_t>(len));
  ------------------
  |  Branch (16751:24): [True: 1.40k, False: 12]
  |  Branch (16751:43): [True: 1.40k, False: 0]
  ------------------
16752|  12.5k|            }
16753|       |
16754|    225|            case 0xDD: // array 32
  ------------------
  |  Branch (16754:13): [True: 225, False: 211k]
  ------------------
16755|    225|            {
16756|    225|                std::uint32_t len{};
16757|    225|                return get_number(len) && enter_array(conditional_static_cast<std::size_t>(len));
  ------------------
  |  Branch (16757:24): [True: 213, False: 12]
  |  Branch (16757:43): [True: 213, False: 0]
  ------------------
16758|  12.5k|            }
16759|       |
16760|    516|            case 0xDE: // map 16
  ------------------
  |  Branch (16760:13): [True: 516, False: 210k]
  ------------------
16761|    516|            {
16762|    516|                std::uint16_t len{};
16763|    516|                return get_number(len) && enter_object(static_cast<std::size_t>(len));
  ------------------
  |  Branch (16763:24): [True: 513, False: 3]
  |  Branch (16763:43): [True: 513, False: 0]
  ------------------
16764|  12.5k|            }
16765|       |
16766|    165|            case 0xDF: // map 32
  ------------------
  |  Branch (16766:13): [True: 165, False: 211k]
  ------------------
16767|    165|            {
16768|    165|                std::uint32_t len{};
16769|    165|                return get_number(len) && enter_object(conditional_static_cast<std::size_t>(len));
  ------------------
  |  Branch (16769:24): [True: 161, False: 4]
  |  Branch (16769:43): [True: 161, False: 0]
  ------------------
16770|  12.5k|            }
16771|       |
16772|       |            // negative fixint
16773|    543|            case 0xE0:
  ------------------
  |  Branch (16773:13): [True: 543, False: 210k]
  ------------------
16774|  1.07k|            case 0xE1:
  ------------------
  |  Branch (16774:13): [True: 529, False: 210k]
  ------------------
16775|  1.40k|            case 0xE2:
  ------------------
  |  Branch (16775:13): [True: 335, False: 210k]
  ------------------
16776|  1.78k|            case 0xE3:
  ------------------
  |  Branch (16776:13): [True: 374, False: 210k]
  ------------------
16777|  2.11k|            case 0xE4:
  ------------------
  |  Branch (16777:13): [True: 337, False: 210k]
  ------------------
16778|  2.76k|            case 0xE5:
  ------------------
  |  Branch (16778:13): [True: 646, False: 210k]
  ------------------
16779|  3.12k|            case 0xE6:
  ------------------
  |  Branch (16779:13): [True: 357, False: 210k]
  ------------------
16780|  3.47k|            case 0xE7:
  ------------------
  |  Branch (16780:13): [True: 353, False: 210k]
  ------------------
16781|  3.81k|            case 0xE8:
  ------------------
  |  Branch (16781:13): [True: 338, False: 210k]
  ------------------
16782|  4.16k|            case 0xE9:
  ------------------
  |  Branch (16782:13): [True: 356, False: 210k]
  ------------------
16783|  4.53k|            case 0xEA:
  ------------------
  |  Branch (16783:13): [True: 362, False: 210k]
  ------------------
16784|  4.79k|            case 0xEB:
  ------------------
  |  Branch (16784:13): [True: 269, False: 210k]
  ------------------
16785|  5.05k|            case 0xEC:
  ------------------
  |  Branch (16785:13): [True: 256, False: 210k]
  ------------------
16786|  5.47k|            case 0xED:
  ------------------
  |  Branch (16786:13): [True: 419, False: 210k]
  ------------------
16787|  5.92k|            case 0xEE:
  ------------------
  |  Branch (16787:13): [True: 450, False: 210k]
  ------------------
16788|  6.33k|            case 0xEF:
  ------------------
  |  Branch (16788:13): [True: 410, False: 210k]
  ------------------
16789|  6.88k|            case 0xF0:
  ------------------
  |  Branch (16789:13): [True: 547, False: 210k]
  ------------------
16790|  7.38k|            case 0xF1:
  ------------------
  |  Branch (16790:13): [True: 507, False: 210k]
  ------------------
16791|  7.83k|            case 0xF2:
  ------------------
  |  Branch (16791:13): [True: 446, False: 210k]
  ------------------
16792|  8.19k|            case 0xF3:
  ------------------
  |  Branch (16792:13): [True: 357, False: 210k]
  ------------------
16793|  8.58k|            case 0xF4:
  ------------------
  |  Branch (16793:13): [True: 397, False: 210k]
  ------------------
16794|  9.05k|            case 0xF5:
  ------------------
  |  Branch (16794:13): [True: 469, False: 210k]
  ------------------
16795|  9.42k|            case 0xF6:
  ------------------
  |  Branch (16795:13): [True: 365, False: 210k]
  ------------------
16796|  9.80k|            case 0xF7:
  ------------------
  |  Branch (16796:13): [True: 384, False: 210k]
  ------------------
16797|  10.2k|            case 0xF8:
  ------------------
  |  Branch (16797:13): [True: 485, False: 210k]
  ------------------
16798|  10.6k|            case 0xF9:
  ------------------
  |  Branch (16798:13): [True: 359, False: 210k]
  ------------------
16799|  10.8k|            case 0xFA:
  ------------------
  |  Branch (16799:13): [True: 243, False: 210k]
  ------------------
16800|  11.3k|            case 0xFB:
  ------------------
  |  Branch (16800:13): [True: 470, False: 210k]
  ------------------
16801|  11.7k|            case 0xFC:
  ------------------
  |  Branch (16801:13): [True: 415, False: 210k]
  ------------------
16802|  12.1k|            case 0xFD:
  ------------------
  |  Branch (16802:13): [True: 409, False: 210k]
  ------------------
16803|  12.9k|            case 0xFE:
  ------------------
  |  Branch (16803:13): [True: 746, False: 210k]
  ------------------
16804|  15.3k|            case 0xFF:
  ------------------
  |  Branch (16804:13): [True: 2.38k, False: 208k]
  ------------------
16805|  15.3k|                return sax->number_integer(static_cast<std::int8_t>(current));
16806|       |
16807|      3|            default: // anything else
  ------------------
  |  Branch (16807:13): [True: 3, False: 211k]
  ------------------
16808|      3|            {
16809|      3|                return unexpected_byte("invalid byte", "value");
16810|  12.9k|            }
16811|   211k|        }
16812|   211k|    }
_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_19json_sax_dom_parserISG_SL_EEE18get_msgpack_binaryERNS0_27byte_container_with_subtypeISF_EE:
16996|  12.5k|    {
16997|       |        // helper function to set the subtype
16998|  12.5k|        auto assign_and_return_true = [&result](std::int8_t subtype)
16999|  12.5k|        {
17000|  12.5k|            result.set_subtype(static_cast<std::uint8_t>(subtype));
17001|  12.5k|            return true;
17002|  12.5k|        };
17003|       |
17004|  12.5k|        switch (current)
17005|  12.5k|        {
17006|  7.58k|            case 0xC4: // bin 8
  ------------------
  |  Branch (17006:13): [True: 7.58k, False: 5.00k]
  ------------------
17007|  7.58k|            {
17008|  7.58k|                std::uint8_t len{};
17009|  7.58k|                return get_number(len) &&
  ------------------
  |  Branch (17009:24): [True: 7.57k, False: 5]
  ------------------
17010|  7.57k|                       get_binary(len, result);
  ------------------
  |  Branch (17010:24): [True: 7.55k, False: 26]
  ------------------
17011|      0|            }
17012|       |
17013|    842|            case 0xC5: // bin 16
  ------------------
  |  Branch (17013:13): [True: 842, False: 11.7k]
  ------------------
17014|    842|            {
17015|    842|                std::uint16_t len{};
17016|    842|                return get_number(len) &&
  ------------------
  |  Branch (17016:24): [True: 833, False: 9]
  ------------------
17017|    833|                       get_binary(len, result);
  ------------------
  |  Branch (17017:24): [True: 775, False: 58]
  ------------------
17018|      0|            }
17019|       |
17020|    364|            case 0xC6: // bin 32
  ------------------
  |  Branch (17020:13): [True: 364, False: 12.2k]
  ------------------
17021|    364|            {
17022|    364|                std::uint32_t len{};
17023|    364|                return get_number(len) &&
  ------------------
  |  Branch (17023:24): [True: 352, False: 12]
  ------------------
17024|    352|                       get_binary(len, result);
  ------------------
  |  Branch (17024:24): [True: 254, False: 98]
  ------------------
17025|      0|            }
17026|       |
17027|    634|            case 0xC7: // ext 8
  ------------------
  |  Branch (17027:13): [True: 634, False: 11.9k]
  ------------------
17028|    634|            {
17029|    634|                std::uint8_t len{};
17030|    634|                std::int8_t subtype{};
17031|    634|                return get_number(len) &&
  ------------------
  |  Branch (17031:24): [True: 631, False: 3]
  ------------------
17032|    631|                       get_number(subtype) &&
  ------------------
  |  Branch (17032:24): [True: 630, False: 1]
  ------------------
17033|    630|                       get_binary(len, result) &&
  ------------------
  |  Branch (17033:24): [True: 626, False: 4]
  ------------------
17034|    626|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17034:24): [True: 626, False: 0]
  ------------------
17035|      0|            }
17036|       |
17037|    391|            case 0xC8: // ext 16
  ------------------
  |  Branch (17037:13): [True: 391, False: 12.1k]
  ------------------
17038|    391|            {
17039|    391|                std::uint16_t len{};
17040|    391|                std::int8_t subtype{};
17041|    391|                return get_number(len) &&
  ------------------
  |  Branch (17041:24): [True: 383, False: 8]
  ------------------
17042|    383|                       get_number(subtype) &&
  ------------------
  |  Branch (17042:24): [True: 378, False: 5]
  ------------------
17043|    378|                       get_binary(len, result) &&
  ------------------
  |  Branch (17043:24): [True: 370, False: 8]
  ------------------
17044|    370|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17044:24): [True: 370, False: 0]
  ------------------
17045|      0|            }
17046|       |
17047|    197|            case 0xC9: // ext 32
  ------------------
  |  Branch (17047:13): [True: 197, False: 12.3k]
  ------------------
17048|    197|            {
17049|    197|                std::uint32_t len{};
17050|    197|                std::int8_t subtype{};
17051|    197|                return get_number(len) &&
  ------------------
  |  Branch (17051:24): [True: 186, False: 11]
  ------------------
17052|    186|                       get_number(subtype) &&
  ------------------
  |  Branch (17052:24): [True: 180, False: 6]
  ------------------
17053|    180|                       get_binary(len, result) &&
  ------------------
  |  Branch (17053:24): [True: 177, False: 3]
  ------------------
17054|    177|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17054:24): [True: 177, False: 0]
  ------------------
17055|      0|            }
17056|       |
17057|  1.36k|            case 0xD4: // fixext 1
  ------------------
  |  Branch (17057:13): [True: 1.36k, False: 11.2k]
  ------------------
17058|  1.36k|            {
17059|  1.36k|                std::int8_t subtype{};
17060|  1.36k|                return get_number(subtype) &&
  ------------------
  |  Branch (17060:24): [True: 1.36k, False: 3]
  ------------------
17061|  1.36k|                       get_binary(1, result) &&
  ------------------
  |  Branch (17061:24): [True: 1.36k, False: 2]
  ------------------
17062|  1.36k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17062:24): [True: 1.36k, False: 0]
  ------------------
17063|      0|            }
17064|       |
17065|    411|            case 0xD5: // fixext 2
  ------------------
  |  Branch (17065:13): [True: 411, False: 12.1k]
  ------------------
17066|    411|            {
17067|    411|                std::int8_t subtype{};
17068|    411|                return get_number(subtype) &&
  ------------------
  |  Branch (17068:24): [True: 407, False: 4]
  ------------------
17069|    407|                       get_binary(2, result) &&
  ------------------
  |  Branch (17069:24): [True: 403, False: 4]
  ------------------
17070|    403|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17070:24): [True: 403, False: 0]
  ------------------
17071|      0|            }
17072|       |
17073|    293|            case 0xD6: // fixext 4
  ------------------
  |  Branch (17073:13): [True: 293, False: 12.2k]
  ------------------
17074|    293|            {
17075|    293|                std::int8_t subtype{};
17076|    293|                return get_number(subtype) &&
  ------------------
  |  Branch (17076:24): [True: 291, False: 2]
  ------------------
17077|    291|                       get_binary(4, result) &&
  ------------------
  |  Branch (17077:24): [True: 288, False: 3]
  ------------------
17078|    288|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17078:24): [True: 288, False: 0]
  ------------------
17079|      0|            }
17080|       |
17081|    431|            case 0xD7: // fixext 8
  ------------------
  |  Branch (17081:13): [True: 431, False: 12.1k]
  ------------------
17082|    431|            {
17083|    431|                std::int8_t subtype{};
17084|    431|                return get_number(subtype) &&
  ------------------
  |  Branch (17084:24): [True: 428, False: 3]
  ------------------
17085|    428|                       get_binary(8, result) &&
  ------------------
  |  Branch (17085:24): [True: 422, False: 6]
  ------------------
17086|    422|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17086:24): [True: 422, False: 0]
  ------------------
17087|      0|            }
17088|       |
17089|     71|            case 0xD8: // fixext 16
  ------------------
  |  Branch (17089:13): [True: 71, False: 12.5k]
  ------------------
17090|     71|            {
17091|     71|                std::int8_t subtype{};
17092|     71|                return get_number(subtype) &&
  ------------------
  |  Branch (17092:24): [True: 67, False: 4]
  ------------------
17093|     67|                       get_binary(16, result) &&
  ------------------
  |  Branch (17093:24): [True: 59, False: 8]
  ------------------
17094|     59|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17094:24): [True: 59, False: 0]
  ------------------
17095|      0|            }
17096|       |
17097|      0|            default:           // LCOV_EXCL_LINE
  ------------------
  |  Branch (17097:13): [True: 0, False: 12.5k]
  ------------------
17098|      0|                return false;  // LCOV_EXCL_LINE
17099|  12.5k|        }
17100|  12.5k|    }
_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_19json_sax_dom_parserISG_SL_EEE18get_msgpack_binaryERNS0_27byte_container_with_subtypeISF_EEENKUlaE_clEa:
16999|  3.70k|        {
17000|  3.70k|            result.set_subtype(static_cast<std::uint8_t>(subtype));
17001|  3.70k|            return true;
17002|  3.70k|        };
_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_19json_sax_dom_parserISG_SL_EEE10get_numberIaLb0EEEbRT_:
18739|  5.33k|    {
18740|       |        // read in the original format
18741|       |
18742|  5.33k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.33k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  5.33k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 5.29k, False: 31]
  |  Branch (18746:34): [Folded, False: 5.29k]
  |  Branch (18746:57): [True: 0, False: 5.29k]
  ------------------
18747|  5.29k|        {
18748|  5.29k|            byte_swap(result);
18749|  5.29k|        }
18750|  5.33k|        return true;
18751|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE6get_toIaEEbRT_PKc:
18667|  5.33k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  5.33k|        auto new_chars_read = ia.get_elements(&dest);
18671|  5.33k|        chars_read += new_chars_read;
18672|  5.33k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 31, False: 5.29k]
  |  |  ------------------
  ------------------
18673|     31|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     31|            ++chars_read;
18676|     31|            static_cast<void>(report_eof(context));
18677|     31|            return false;
18678|     31|        }
18679|  5.29k|        return true;
18680|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIaEEmPT_m:
 8644|  5.33k|    {
 8645|  5.33k|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIaEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|  5.33k|    {
 8725|  5.33k|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  10.6k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 5.33k, False: 5.29k]
  ------------------
 8727|  5.33k|        {
 8728|  5.33k|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|  5.33k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 5.29k, False: 31]
  |  |  ------------------
  ------------------
 8729|  5.29k|            {
 8730|  5.29k|                ptr[read_index] = static_cast<char>(*current);
 8731|  5.29k|                std::advance(current, 1);
 8732|  5.29k|            }
 8733|     31|            else
 8734|     31|            {
 8735|     31|                return read_index;
 8736|     31|            }
 8737|  5.33k|        }
 8738|  5.29k|        return count * sizeof(T);
 8739|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EENS1_19json_sax_dom_parserISG_SL_EEE9byte_swapIaEEvRT_:
18698|  5.29k|    {
18699|  5.29k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  5.29k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.29k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 5.29k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  5.29k|    }
_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_19json_sax_dom_parserISG_SL_EEE11emit_signedIaEEbT_:
18771|  1.55k|    {
18772|  1.55k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  1.55k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.55k, False: 0]
  |  |  ------------------
  ------------------
18773|  1.55k|        {
18774|  1.55k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  1.55k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      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_19json_sax_dom_parserISG_SL_EEE10get_numberIsLb0EEEbRT_:
18739|    394|    {
18740|       |        // read in the original format
18741|       |
18742|    394|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    394|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 394]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    394|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 390, False: 4]
  |  Branch (18746:34): [Folded, False: 390]
  |  Branch (18746:57): [True: 0, False: 390]
  ------------------
18747|    390|        {
18748|    390|            byte_swap(result);
18749|    390|        }
18750|    394|        return true;
18751|    394|    }
_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_19json_sax_dom_parserISG_SL_EEE6get_toIsEEbRT_PKc:
18667|    394|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    394|        auto new_chars_read = ia.get_elements(&dest);
18671|    394|        chars_read += new_chars_read;
18672|    394|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    394|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4, False: 390]
  |  |  ------------------
  ------------------
18673|      4|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|      4|            ++chars_read;
18676|      4|            static_cast<void>(report_eof(context));
18677|      4|            return false;
18678|      4|        }
18679|    390|        return true;
18680|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E12get_elementsIsEEmPT_m:
 8644|    394|    {
 8645|    394|        return get_elements_impl(dest, count, std::integral_constant<bool, iterator_is_contiguous> {});
 8646|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E17get_elements_implIsEEmPT_mNS3_17integral_constantIbLb0EEE:
 8724|    394|    {
 8725|    394|        auto* ptr = reinterpret_cast<char*>(dest);
 8726|  1.17k|        for (std::size_t read_index = 0; read_index < count * sizeof(T); ++read_index)
  ------------------
  |  Branch (8726:42): [True: 786, False: 390]
  ------------------
 8727|    786|        {
 8728|    786|            if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|    786|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 782, False: 4]
  |  |  ------------------
  ------------------
 8729|    782|            {
 8730|    782|                ptr[read_index] = static_cast<char>(*current);
 8731|    782|                std::advance(current, 1);
 8732|    782|            }
 8733|      4|            else
 8734|      4|            {
 8735|      4|                return read_index;
 8736|      4|            }
 8737|    786|        }
 8738|    390|        return count * sizeof(T);
 8739|    394|    }
_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_19json_sax_dom_parserISG_SL_EEE9byte_swapIsEEvRT_:
18698|    390|    {
18699|    390|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    390|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|    780|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 390, False: 390]
  ------------------
18715|    390|            {
18716|    390|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|    390|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    390|    }
_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_19json_sax_dom_parserISG_SL_EEE11emit_signedIsEEbT_:
18771|    390|    {
18772|    390|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    390|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 390, False: 0]
  |  |  ------------------
  ------------------
18773|    390|        {
18774|    390|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    390|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      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_19json_sax_dom_parserISG_SL_EEE10get_numberIiLb0EEEbRT_:
18739|    435|    {
18740|       |        // read in the original format
18741|       |
18742|    435|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    435|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 435]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    435|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 425, False: 10]
  |  Branch (18746:34): [Folded, False: 425]
  |  Branch (18746:57): [True: 0, False: 425]
  ------------------
18747|    425|        {
18748|    425|            byte_swap(result);
18749|    425|        }
18750|    435|        return true;
18751|    435|    }
_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_19json_sax_dom_parserISG_SL_EEE10get_numberIlLb0EEEbRT_:
18739|    694|    {
18740|       |        // read in the original format
18741|       |
18742|    694|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    694|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 694]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    694|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 672, False: 22]
  |  Branch (18746:34): [Folded, False: 672]
  |  Branch (18746:57): [True: 0, False: 672]
  ------------------
18747|    672|        {
18748|    672|            byte_swap(result);
18749|    672|        }
18750|    694|        return true;
18751|    694|    }
_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_19json_sax_dom_parserISG_SL_EEE3getEv:
18652|   238k|    {
18653|   238k|        ++chars_read;
18654|   238k|        return current = ia.get_character();
18655|   238k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_E13get_characterEv:
 8590|   238k|    {
 8591|   238k|        if (JSON_HEDLEY_LIKELY(current != end))
  ------------------
  |  | 1666|   238k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 231k, False: 6.25k]
  |  |  ------------------
  ------------------
 8592|   231k|        {
 8593|   231k|            auto result = char_traits<char_type>::to_int_type(*current);
 8594|   231k|            std::advance(current, 1);
 8595|   231k|            return result;
 8596|   231k|        }
 8597|       |
 8598|  6.25k|        ++eof_reads;
 8599|  6.25k|        return char_traits<char_type>::eof();
 8600|   238k|    }
_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_19json_sax_dom_parserISG_SL_EEE15last_byte_errorENS1_12exception_idERKSC_PKcST_:
19116|    362|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    362|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    362|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 3, False: 359]
  ------------------
19120|    362|    }
_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_19json_sax_dom_parserISG_SL_EEED2Ev:
14954|  7.51k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_22iterator_input_adapterINS4_21__list_const_iteratorIhPvEESK_EEED2Ev:
13881|  7.51k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterINSt3__121__list_const_iteratorIhPvEES6_vEENS1_30iterator_input_adapter_factoryIT_T0_vE12adapter_typeES8_S9_:
 9007|  7.51k|{
 9008|  7.51k|    using factory_type = iterator_input_adapter_factory<IteratorType, SentinelType>;
 9009|  7.51k|    return factory_type::create(first, last);
 9010|  7.51k|}
_ZN8nlohmann16json_abi_v3_12_06detail30iterator_input_adapter_factoryINSt3__121__list_const_iteratorIhPvEES6_vE6createES6_S6_:
 8935|  7.51k|    {
 8936|  7.51k|        return adapter_type(std::move(first), std::move(last));
 8937|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail22iterator_input_adapterINSt3__121__list_const_iteratorIhPvEES6_EC2ES6_S6_:
 8586|  7.51k|        : begin(first), current(std::move(first)), end(std::move(last))
 8587|  7.51k|    {}
_ZN8nlohmann16json_abi_v3_12_010basic_jsonINSt3__13mapENS2_6vectorENS2_12basic_stringIcNS2_11char_traitsIcEENS2_9allocatorIcEEEEblmdS8_NS0_14adl_serializerENS4_IhNS8_IhEEEEvE12from_msgpackIRP8_IO_FILEEESE_OT_bbNS0_6detail15error_handler_tE:
36638|  7.51k|    {
36639|  7.51k|        return from_binary_impl(detail::input_adapter(std::forward<InputType>(i)), input_format_t::msgpack, strict, allow_exceptions, error_handler);
36640|  7.51k|    }
_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:
36385|  7.51k|    {
36386|  7.51k|        basic_json result;
36387|  7.51k|        detail::json_sax_dom_parser<basic_json, InputAdapterType> sdp(result, allow_exceptions);
36388|  7.51k|        binary_reader<InputAdapterType> reader(std::move(ia), format, error_handler);
36389|  7.51k|        if (!reader.sax_parse(&sdp, strict, tag_handler))
  ------------------
  |  Branch (36389:13): [True: 0, False: 7.51k]
  ------------------
36390|      0|        {
36391|      0|            result = value_t::discarded;
36392|      0|        }
36393|  7.51k|        return result;
36394|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEEC2ERSG_bPNS1_5lexerISG_SH_EE:
13873|  7.51k|        : root(r), allow_exceptions(allow_exceptions_), m_lexer_ref(lexer_)
13874|  7.51k|    {}
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEEC2EOSH_NS1_14input_format_tENS1_15error_handler_tE:
14944|  7.51k|        : ia(std::move(adapter)), input_format(format), error_handler(error_handler_)
14945|  7.51k|    {
14946|  7.51k|        (void)detail::is_sax_static_asserts<SAX, BasicJsonType> {};
14947|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9sax_parseEPSJ_bNS1_18cbor_tag_handler_tE:
14969|  7.51k|    {
14970|  7.51k|        sax = sax_;
14971|  7.51k|        container_stack.clear();
14972|  7.51k|        bon8_pushback_size = 0;
14973|  7.51k|        bool result = false;
14974|       |
14975|  7.51k|        switch (input_format)
14976|  7.51k|        {
14977|      0|            case input_format_t::bson:
  ------------------
  |  Branch (14977:13): [True: 0, False: 7.51k]
  ------------------
14978|      0|                result = parse_bson_internal();
14979|      0|                break;
14980|       |
14981|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (14981:13): [True: 0, False: 7.51k]
  ------------------
14982|      0|                result = parse_cbor_internal(tag_handler);
14983|      0|                break;
14984|       |
14985|  7.51k|            case input_format_t::msgpack:
  ------------------
  |  Branch (14985:13): [True: 7.51k, False: 0]
  ------------------
14986|  7.51k|                result = parse_msgpack_internal();
14987|  7.51k|                break;
14988|       |
14989|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (14989:13): [True: 0, False: 7.51k]
  ------------------
14990|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (14990:13): [True: 0, False: 7.51k]
  ------------------
14991|      0|                result = parse_ubjson_internal();
14992|      0|                break;
14993|       |
14994|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (14994:13): [True: 0, False: 7.51k]
  ------------------
14995|      0|                result = parse_bon8_internal();
14996|      0|                break;
14997|       |
14998|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (14998:13): [True: 0, False: 7.51k]
  ------------------
14999|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (14999:13): [True: 0, False: 7.51k]
  ------------------
15000|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (15000:17): [Folded, False: 0]
  ------------------
15001|  7.51k|        }
15002|       |
15003|       |        // strict mode: next byte must be EOF
15004|  4.88k|        if (result && strict)
  ------------------
  |  Branch (15004:13): [True: 4.88k, False: 0]
  |  Branch (15004:23): [True: 4.88k, False: 0]
  ------------------
15005|  4.88k|        {
15006|  4.88k|            if (input_format == input_format_t::ubjson || input_format == input_format_t::bjdata)
  ------------------
  |  Branch (15006:17): [True: 0, False: 4.88k]
  |  Branch (15006:59): [True: 0, False: 4.88k]
  ------------------
15007|      0|            {
15008|      0|                get_ignore_noop();
15009|      0|            }
15010|  4.88k|            else if (input_format == input_format_t::bon8)
  ------------------
  |  Branch (15010:22): [True: 0, False: 4.88k]
  ------------------
15011|      0|            {
15012|       |                // a string that ends a container hands back the byte after it
15013|      0|                get_bon8();
15014|      0|            }
15015|  4.88k|            else
15016|  4.88k|            {
15017|  4.88k|                get();
15018|  4.88k|            }
15019|       |
15020|  4.88k|            if (JSON_HEDLEY_UNLIKELY(current != char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  4.88k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 236, False: 4.65k]
  |  |  ------------------
  ------------------
15021|    236|            {
15022|    236|                return last_byte_error(exception_id::unexpected_end_of_input, "expected end of input", "value", "");
15023|    236|            }
15024|  4.88k|        }
15025|       |
15026|  4.65k|        return result;
15027|  4.88k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIiEEbRT_PKc:
18667|    435|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    435|        auto new_chars_read = ia.get_elements(&dest);
18671|    435|        chars_read += new_chars_read;
18672|    435|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    435|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 10, False: 425]
  |  |  ------------------
  ------------------
18673|     10|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     10|            ++chars_read;
18676|     10|            static_cast<void>(report_eof(context));
18677|     10|            return false;
18678|     10|        }
18679|    425|        return true;
18680|    435|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIiEEmPT_m:
 8374|    435|    {
 8375|    435|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|    435|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10report_eofEPKc:
19058|  2.49k|    {
19059|  2.49k|        return sax->parse_error(chars_read, "<end of file>",
19060|  2.49k|                                parse_error::create(exception_id::unexpected_end_of_input, chars_read, exception_message("unexpected end of input", context), nullptr));
19061|  2.49k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11parse_errorINS1_11parse_errorEEEbmRKSC_RKT_:
14004|  2.86k|    {
14005|  2.86k|        errored = true;
14006|  2.86k|        static_cast<void>(ex);
14007|  2.86k|        if (allow_exceptions)
  ------------------
  |  Branch (14007:13): [True: 2.86k, False: 0]
  ------------------
14008|  2.86k|        {
14009|  2.86k|            JSON_THROW(ex);
  ------------------
  |  | 2556|  2.86k|    #define JSON_THROW(exception) throw exception
  ------------------
14010|  2.86k|        }
14011|      0|        return false;
14012|  2.86k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17exception_messageERKSC_SM_:
19163|  2.86k|    {
19164|  2.86k|        std::string error_msg = "syntax error while parsing ";
19165|       |
19166|  2.86k|        switch (input_format)
19167|  2.86k|        {
19168|      0|            case input_format_t::cbor:
  ------------------
  |  Branch (19168:13): [True: 0, False: 2.86k]
  ------------------
19169|      0|                error_msg += "CBOR";
19170|      0|                break;
19171|       |
19172|  2.86k|            case input_format_t::msgpack:
  ------------------
  |  Branch (19172:13): [True: 2.86k, False: 0]
  ------------------
19173|  2.86k|                error_msg += "MessagePack";
19174|  2.86k|                break;
19175|       |
19176|      0|            case input_format_t::ubjson:
  ------------------
  |  Branch (19176:13): [True: 0, False: 2.86k]
  ------------------
19177|      0|                error_msg += "UBJSON";
19178|      0|                break;
19179|       |
19180|      0|            case input_format_t::bson:
  ------------------
  |  Branch (19180:13): [True: 0, False: 2.86k]
  ------------------
19181|      0|                error_msg += "BSON";
19182|      0|                break;
19183|       |
19184|      0|            case input_format_t::bjdata:
  ------------------
  |  Branch (19184:13): [True: 0, False: 2.86k]
  ------------------
19185|      0|                error_msg += "BJData";
19186|      0|                break;
19187|       |
19188|      0|            case input_format_t::bon8:
  ------------------
  |  Branch (19188:13): [True: 0, False: 2.86k]
  ------------------
19189|      0|                error_msg += "BON8";
19190|      0|                break;
19191|       |
19192|      0|            case input_format_t::json: // LCOV_EXCL_LINE
  ------------------
  |  Branch (19192:13): [True: 0, False: 2.86k]
  ------------------
19193|      0|            default:            // LCOV_EXCL_LINE
  ------------------
  |  Branch (19193:13): [True: 0, False: 2.86k]
  ------------------
19194|      0|                JSON_ASSERT(false); // NOLINT(cert-dcl03-c,hicpp-static-assert,misc-static-assert) LCOV_EXCL_LINE
  ------------------
  |  | 2591|      0|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19194:17): [Folded, False: 0]
  ------------------
19195|  2.86k|        }
19196|       |
19197|  2.86k|        return concat(error_msg, ' ', context, ": ", detail);
19198|  2.86k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIiEEvRT_:
18698|    425|    {
18699|    425|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    425|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  1.27k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 850, False: 425]
  ------------------
18715|    850|            {
18716|    850|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|    850|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    425|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15enter_containerEbmi:
15082|   103k|    {
15083|   103k|        if (JSON_HEDLEY_UNLIKELY(is_object ? !sax->start_object(len) : !sax->start_array(len)))
  ------------------
  |  | 1667|   207k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 103k]
  |  |  |  Branch (1667:94): [True: 13.9k, False: 89.5k]
  |  |  ------------------
  ------------------
15084|      0|        {
15085|      0|            return false;
15086|      0|        }
15087|       |
15088|   103k|        container_stack.emplace_back(len, is_object, type_marker);
15089|   103k|        return true;
15090|   103k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12start_objectEm:
13930|  13.9k|    {
13931|  13.9k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::object));
13932|       |
13933|       |#if JSON_DIAGNOSTIC_POSITIONS
13934|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13935|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13936|       |#endif
13937|       |
13938|  13.9k|        return check_container_size(*this, len, "object", ref_stack.back());
13939|  13.9k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueINS1_7value_tEEEPSG_OT_:
14030|   103k|    {
14031|   103k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4.57k, False: 98.9k]
  ------------------
14032|  4.57k|        {
14033|  4.57k|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|  4.57k|            return &root;
14040|  4.57k|        }
14041|       |
14042|  98.9k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  98.9k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 89.4k, False: 9.46k]
  |  Branch (14042:9): [True: 9.46k, False: 0]
  |  Branch (14042:9): [True: 98.9k, False: 0]
  ------------------
14043|       |
14044|  98.9k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 89.4k, False: 9.46k]
  ------------------
14045|  89.4k|        {
14046|  89.4k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  89.4k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  89.4k|        }
14054|       |
14055|  9.46k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  9.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 9.46k, False: 0]
  ------------------
14056|  9.46k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  9.46k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 9.46k, False: 0]
  ------------------
14057|  9.46k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  9.46k|        return object_element;
14064|  9.46k|    }
_ZN8nlohmann16json_abi_v3_12_06detail20check_container_sizeINS1_19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS5_6vectorENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEblmdSB_NS0_14adl_serializerENS7_IhNSB_IhEEEEvEENS1_18file_input_adapterEEESH_EEbRT_mPKcPT0_:
13724|   103k|{
13725|   103k|    if (JSON_HEDLEY_UNLIKELY(len != detail::unknown_size() && len > ref->max_size()))
  ------------------
  |  | 1667|   207k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 103k]
  |  |  |  Branch (1667:94): [True: 103k, False: 0]
  |  |  |  Branch (1667:94): [True: 0, False: 103k]
  |  |  ------------------
  ------------------
13726|      0|    {
13727|      0|        return container_too_large_error(sax, len, kind, ref);
13728|      0|    }
13729|   103k|    return true;
13730|   103k|}
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE11start_arrayEm:
13966|  89.5k|    {
13967|  89.5k|        ref_stack.push_back(handle_value(BasicJsonType::value_t::array));
13968|       |
13969|       |#if JSON_DIAGNOSTIC_POSITIONS
13970|       |        // Ensure this is after the call to handle_value to ensure correct start position.
13971|       |        diagnostic_positions::set_container_start(*ref_stack.back(), m_lexer_ref);
13972|       |#endif
13973|       |
13974|  89.5k|        if (JSON_HEDLEY_UNLIKELY(!check_container_size(*this, len, "array", ref_stack.back())))
  ------------------
  |  | 1667|  89.5k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 89.5k]
  |  |  ------------------
  ------------------
13975|      0|        {
13976|      0|            return false;
13977|      0|        }
13978|       |
13979|  89.5k|        if (len != detail::unknown_size())
  ------------------
  |  Branch (13979:13): [True: 89.5k, False: 0]
  ------------------
13980|  89.5k|        {
13981|  89.5k|            reserve_array(*ref_stack.back()->m_data.m_value.array, len, priority_tag<1> {});
13982|  89.5k|        }
13983|       |
13984|  89.5k|        return true;
13985|  89.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15container_frameC2Embi:
15051|   103k|            : 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_19json_sax_dom_parserISG_SH_EEE15leave_containerEv:
15114|  84.2k|    {
15115|  84.2k|        const bool is_object = container_stack.back().is_object;
15116|  84.2k|        container_stack.pop_back();
15117|  84.2k|        return is_object ? sax->end_object() : sax->end_array();
  ------------------
  |  Branch (15117:16): [True: 8.79k, False: 75.4k]
  ------------------
15118|  84.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE10end_objectEv:
13952|  8.79k|    {
13953|  8.79k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  8.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13953:9): [True: 8.79k, False: 0]
  ------------------
13954|  8.79k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.79k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13954:9): [True: 8.79k, False: 0]
  ------------------
13955|       |
13956|       |#if JSON_DIAGNOSTIC_POSITIONS
13957|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13958|       |#endif
13959|       |
13960|  8.79k|        ref_stack.back()->set_parents();
13961|  8.79k|        ref_stack.pop_back();
13962|  8.79k|        return true;
13963|  8.79k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE9end_arrayEv:
13988|  75.4k|    {
13989|  75.4k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  75.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13989:9): [True: 75.4k, False: 0]
  ------------------
13990|  75.4k|        JSON_ASSERT(ref_stack.back()->is_array());
  ------------------
  |  | 2591|  75.4k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13990:9): [True: 75.4k, False: 0]
  ------------------
13991|       |
13992|       |#if JSON_DIAGNOSTIC_POSITIONS
13993|       |        diagnostic_positions::set_container_end(*ref_stack.back(), m_lexer_ref);
13994|       |#endif
13995|       |
13996|  75.4k|        ref_stack.back()->set_parents();
13997|  75.4k|        ref_stack.pop_back();
13998|  75.4k|        return true;
13999|  75.4k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE12unexpect_eofEPKc:
19041|  33.4k|    {
19042|  33.4k|        if (JSON_HEDLEY_UNLIKELY(current == char_traits<char_type>::eof()))
  ------------------
  |  | 1667|  33.4k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 2.27k, False: 31.1k]
  |  |  ------------------
  ------------------
19043|  2.27k|        {
19044|  2.27k|            return report_eof(context);
19045|  2.27k|        }
19046|  31.1k|        return true;
19047|  33.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE17check_string_utf8ERSC_PKc:
18941|  30.6k|    {
18942|  30.6k|        if (error_handler == error_handler_t::keep || is_valid_utf8(result))
  ------------------
  |  Branch (18942:13): [True: 30.6k, False: 0]
  |  Branch (18942:55): [True: 0, False: 0]
  ------------------
18943|  30.6k|        {
18944|  30.6k|            return true;
18945|  30.6k|        }
18946|       |
18947|      0|        if (error_handler == error_handler_t::strict)
  ------------------
  |  Branch (18947:13): [True: 0, False: 0]
  ------------------
18948|      0|        {
18949|      0|            return last_byte_error(exception_id::invalid_string_or_size, "invalid string: ill-formed UTF-8 byte", context);
18950|      0|        }
18951|       |
18952|      0|        result = sanitize_utf8(result, error_handler);
18953|      0|        return true;
18954|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE3keyERSC_:
13942|  21.5k|    {
13943|  21.5k|        JSON_ASSERT(!ref_stack.empty());
  ------------------
  |  | 2591|  21.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13943:9): [True: 21.5k, False: 0]
  ------------------
13944|  21.5k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  21.5k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (13944:9): [True: 21.5k, False: 0]
  ------------------
13945|       |
13946|       |        // add null at the given key and store the reference for later
13947|  21.5k|        object_element = &(ref_stack.back()->m_data.m_value.object->operator[](val));
13948|  21.5k|        return true;
13949|  21.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIdEEbRT_PKc:
18667|    818|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    818|        auto new_chars_read = ia.get_elements(&dest);
18671|    818|        chars_read += new_chars_read;
18672|    818|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    818|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 19, False: 799]
  |  |  ------------------
  ------------------
18673|     19|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     19|            ++chars_read;
18676|     19|            static_cast<void>(report_eof(context));
18677|     19|            return false;
18678|     19|        }
18679|    799|        return true;
18680|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIdEEmPT_m:
 8374|    818|    {
 8375|    818|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIdEEvRT_:
18698|    799|    {
18699|    799|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    799|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.99k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.19k, False: 799]
  ------------------
18715|  3.19k|            {
18716|  3.19k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.19k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    799|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIdEEbT_:
18825|    799|    {
18826|    799|        const auto result = static_cast<number_float_t>(number);
18827|    799|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  1.59k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 799]
  |  |  |  Branch (1667:94): [True: 797, False: 2]
  |  |  |  Branch (1667:94): [True: 0, False: 797]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|    799|        return sax->number_float(result, "");
18832|    799|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE16get_token_stringEv:
19152|    724|    {
19153|    724|        return hex_byte(static_cast<std::uint8_t>(current));
19154|    724|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12number_floatEdRKSC_:
13908|  2.71k|    {
13909|  2.71k|        handle_value(val);
13910|  2.71k|        return true;
13911|  2.71k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRdEEPSG_OT_:
14030|  2.71k|    {
14031|  2.71k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 632, False: 2.08k]
  ------------------
14032|    632|        {
14033|    632|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    632|            return &root;
14040|    632|        }
14041|       |
14042|  2.08k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.08k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.96k, False: 120]
  |  Branch (14042:9): [True: 120, False: 0]
  |  Branch (14042:9): [True: 2.08k, False: 0]
  ------------------
14043|       |
14044|  2.08k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.96k, False: 120]
  ------------------
14045|  1.96k|        {
14046|  1.96k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.96k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.96k|        }
14054|       |
14055|    120|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    120|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 120, False: 0]
  ------------------
14056|    120|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    120|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 120, False: 0]
  ------------------
14057|    120|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    120|        return object_element;
14064|    120|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIcEEmPT_m:
 8374|  13.5k|    {
 8375|  13.5k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  13.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE6stringERSC_:
13914|  9.17k|    {
13915|       |        // json_sax documents that the passed value may be moved from,
13916|       |        // so hand the buffer over instead of copying it
13917|  9.17k|        handle_value(std::move(val));
13918|  9.17k|        return true;
13919|  9.17k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueISC_EEPSG_OT_:
14030|  9.17k|    {
14031|  9.17k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 564, False: 8.61k]
  ------------------
14032|    564|        {
14033|    564|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    564|            return &root;
14040|    564|        }
14041|       |
14042|  8.61k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  8.61k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 5.89k, False: 2.71k]
  |  Branch (14042:9): [True: 2.71k, False: 0]
  |  Branch (14042:9): [True: 8.61k, False: 0]
  ------------------
14043|       |
14044|  8.61k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 5.89k, False: 2.71k]
  ------------------
14045|  5.89k|        {
14046|  5.89k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  5.89k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  5.89k|        }
14054|       |
14055|  2.71k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 2.71k, False: 0]
  ------------------
14056|  2.71k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  2.71k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 2.71k, False: 0]
  ------------------
14057|  2.71k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  2.71k|        return object_element;
14064|  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_19json_sax_dom_parserISG_SH_EEE10get_binaryIiEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  2.55k|    {
18973|  2.55k|        return get_bytes(len, "binary", result);
18974|  2.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIiNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  2.55k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  2.55k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  5.09k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 2.55k, False: 2.53k]
  ------------------
19003|  2.55k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  2.55k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 2.55k, False: 0]
  ------------------
19007|  2.55k|                                       ? static_cast<std::size_t>(len)
19008|  2.55k|                                       : chunk_size;
19009|  2.55k|            const std::size_t old_size = result.size();
19010|  2.55k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  2.55k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  2.55k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 2.55k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  2.55k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  2.55k|            chars_read += bytes_read;
19018|  2.55k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  2.55k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 2.53k]
  |  |  ------------------
  ------------------
19019|     23|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     23|                result.resize(old_size + bytes_read);
19024|     23|                ++chars_read;
19025|     23|                current = char_traits<char_type>::eof();
19026|     23|                return unexpect_eof(context);
19027|     23|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  2.53k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  2.53k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 2.53k, False: 0]
  ------------------
19030|  2.53k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  2.53k|        }
19032|  2.53k|        return true;
19033|  2.55k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIhEEmPT_m:
 8374|  14.3k|    {
 8375|  14.3k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  14.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE6binaryERNS0_27byte_container_with_subtypeISF_EE:
13922|  12.2k|    {
13923|       |        // json_sax documents that the passed value may be moved from,
13924|       |        // so hand the buffer over instead of copying it
13925|  12.2k|        handle_value(std::move(val));
13926|  12.2k|        return true;
13927|  12.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_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_:
14030|  12.2k|    {
14031|  12.2k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 124, False: 12.1k]
  ------------------
14032|    124|        {
14033|    124|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    124|            return &root;
14040|    124|        }
14041|       |
14042|  12.1k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  12.1k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 11.1k, False: 1.02k]
  |  Branch (14042:9): [True: 1.02k, False: 0]
  |  Branch (14042:9): [True: 12.1k, False: 0]
  ------------------
14043|       |
14044|  12.1k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 11.1k, False: 1.02k]
  ------------------
14045|  11.1k|        {
14046|  11.1k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  11.1k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  11.1k|        }
14054|       |
14055|  1.02k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.02k, False: 0]
  ------------------
14056|  1.02k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.02k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.02k, False: 0]
  ------------------
14057|  1.02k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.02k|        return object_element;
14064|  1.02k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIhLb0EEEbRT_:
18739|  10.2k|    {
18740|       |        // read in the original format
18741|       |
18742|  10.2k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  10.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 10.2k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  10.2k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 10.2k, False: 23]
  |  Branch (18746:34): [Folded, False: 10.2k]
  |  Branch (18746:57): [True: 0, False: 10.2k]
  ------------------
18747|  10.2k|        {
18748|  10.2k|            byte_swap(result);
18749|  10.2k|        }
18750|  10.2k|        return true;
18751|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIhEEbRT_PKc:
18667|  10.2k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  10.2k|        auto new_chars_read = ia.get_elements(&dest);
18671|  10.2k|        chars_read += new_chars_read;
18672|  10.2k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  10.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 23, False: 10.2k]
  |  |  ------------------
  ------------------
18673|     23|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     23|            ++chars_read;
18676|     23|            static_cast<void>(report_eof(context));
18677|     23|            return false;
18678|     23|        }
18679|  10.2k|        return true;
18680|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIhEEvRT_:
18698|  10.2k|    {
18699|  10.2k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  10.2k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  10.2k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 10.2k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  10.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE7booleanEb:
13890|  2.51k|    {
13891|  2.51k|        handle_value(val);
13892|  2.51k|        return true;
13893|  2.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRbEEPSG_OT_:
14030|  2.51k|    {
14031|  2.51k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 4, False: 2.51k]
  ------------------
14032|      4|        {
14033|      4|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      4|            return &root;
14040|      4|        }
14041|       |
14042|  2.51k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.51k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 2.33k, False: 179]
  |  Branch (14042:9): [True: 179, False: 0]
  |  Branch (14042:9): [True: 2.51k, False: 0]
  ------------------
14043|       |
14044|  2.51k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 2.33k, False: 179]
  ------------------
14045|  2.33k|        {
14046|  2.33k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  2.33k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  2.33k|        }
14054|       |
14055|    179|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    179|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 179, False: 0]
  ------------------
14056|    179|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    179|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 179, False: 0]
  ------------------
14057|    179|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    179|        return object_element;
14064|    179|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE4nullEv:
13884|  2.01k|    {
13885|  2.01k|        handle_value(nullptr);
13886|  2.01k|        return true;
13887|  2.01k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIDnEEPSG_OT_:
14030|  2.01k|    {
14031|  2.01k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 2, False: 2.01k]
  ------------------
14032|      2|        {
14033|      2|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|      2|            return &root;
14040|      2|        }
14041|       |
14042|  2.01k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  2.01k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 1.20k, False: 813]
  |  Branch (14042:9): [True: 813, False: 0]
  |  Branch (14042:9): [True: 2.01k, False: 0]
  ------------------
14043|       |
14044|  2.01k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 1.20k, False: 813]
  ------------------
14045|  1.20k|        {
14046|  1.20k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  1.20k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  1.20k|        }
14054|       |
14055|    813|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|    813|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 813, False: 0]
  ------------------
14056|    813|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|    813|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 813, False: 0]
  ------------------
14057|    813|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|    813|        return object_element;
14064|    813|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIiEEbT_:
18771|    425|    {
18772|    425|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    425|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 425, False: 0]
  |  |  ------------------
  ------------------
18773|    425|        {
18774|    425|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    425|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE14number_integerEl:
13896|  18.3k|    {
13897|  18.3k|        handle_value(val);
13898|  18.3k|        return true;
13899|  18.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRlEEPSG_OT_:
14030|  18.3k|    {
14031|  18.3k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 607, False: 17.7k]
  ------------------
14032|    607|        {
14033|    607|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    607|            return &root;
14040|    607|        }
14041|       |
14042|  17.7k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  17.7k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 16.2k, False: 1.48k]
  |  Branch (14042:9): [True: 1.48k, False: 0]
  |  Branch (14042:9): [True: 17.7k, False: 0]
  ------------------
14043|       |
14044|  17.7k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 16.2k, False: 1.48k]
  ------------------
14045|  16.2k|        {
14046|  16.2k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  16.2k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  16.2k|        }
14054|       |
14055|  1.48k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  1.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 1.48k, False: 0]
  ------------------
14056|  1.48k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  1.48k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 1.48k, False: 0]
  ------------------
14057|  1.48k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  1.48k|        return object_element;
14064|  1.48k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE15number_unsignedEm:
13902|  58.4k|    {
13903|  58.4k|        handle_value(val);
13904|  58.4k|        return true;
13905|  58.4k|    }
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEE12handle_valueIRmEEPSG_OT_:
14030|  58.4k|    {
14031|  58.4k|        if (ref_stack.empty())
  ------------------
  |  Branch (14031:13): [True: 582, False: 57.8k]
  ------------------
14032|    582|        {
14033|    582|            root = BasicJsonType(std::forward<Value>(v));
14034|       |
14035|       |#if JSON_DIAGNOSTIC_POSITIONS
14036|       |            diagnostic_positions::set_from_lexer(root, m_lexer_ref);
14037|       |#endif
14038|       |
14039|    582|            return &root;
14040|    582|        }
14041|       |
14042|  57.8k|        JSON_ASSERT(ref_stack.back()->is_array() || ref_stack.back()->is_object());
  ------------------
  |  | 2591|  57.8k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14042:9): [True: 52.4k, False: 5.36k]
  |  Branch (14042:9): [True: 5.36k, False: 0]
  |  Branch (14042:9): [True: 57.8k, False: 0]
  ------------------
14043|       |
14044|  57.8k|        if (ref_stack.back()->is_array())
  ------------------
  |  Branch (14044:13): [True: 52.4k, False: 5.36k]
  ------------------
14045|  52.4k|        {
14046|  52.4k|            ref_stack.back()->m_data.m_value.array->emplace_back(std::forward<Value>(v));
14047|       |
14048|       |#if JSON_DIAGNOSTIC_POSITIONS
14049|       |            diagnostic_positions::set_from_lexer(ref_stack.back()->m_data.m_value.array->back(), m_lexer_ref);
14050|       |#endif
14051|       |
14052|  52.4k|            return &(ref_stack.back()->m_data.m_value.array->back());
14053|  52.4k|        }
14054|       |
14055|  5.36k|        JSON_ASSERT(ref_stack.back()->is_object());
  ------------------
  |  | 2591|  5.36k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14055:9): [True: 5.36k, False: 0]
  ------------------
14056|  5.36k|        JSON_ASSERT(object_element);
  ------------------
  |  | 2591|  5.36k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (14056:9): [True: 5.36k, False: 0]
  ------------------
14057|  5.36k|        *object_element = BasicJsonType(std::forward<Value>(v));
14058|       |
14059|       |#if JSON_DIAGNOSTIC_POSITIONS
14060|       |        diagnostic_positions::set_from_lexer(*object_element, m_lexer_ref);
14061|       |#endif
14062|       |
14063|  5.36k|        return object_element;
14064|  5.36k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIlEEbRT_PKc:
18667|    694|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    694|        auto new_chars_read = ia.get_elements(&dest);
18671|    694|        chars_read += new_chars_read;
18672|    694|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    694|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 22, False: 672]
  |  |  ------------------
  ------------------
18673|     22|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     22|            ++chars_read;
18676|     22|            static_cast<void>(report_eof(context));
18677|     22|            return false;
18678|     22|        }
18679|    672|        return true;
18680|    694|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIlEEmPT_m:
 8374|    694|    {
 8375|    694|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|    694|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIlEEvRT_:
18698|    672|    {
18699|    672|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    672|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.36k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.68k, False: 672]
  ------------------
18715|  2.68k|            {
18716|  2.68k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.68k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    672|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIlEEbT_:
18771|    672|    {
18772|    672|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    672|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 672, False: 0]
  |  |  ------------------
  ------------------
18773|    672|        {
18774|    672|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    672|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toImEEbRT_PKc:
18667|    614|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    614|        auto new_chars_read = ia.get_elements(&dest);
18671|    614|        chars_read += new_chars_read;
18672|    614|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    614|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 12, False: 602]
  |  |  ------------------
  ------------------
18673|     12|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     12|            ++chars_read;
18676|     12|            static_cast<void>(report_eof(context));
18677|     12|            return false;
18678|     12|        }
18679|    602|        return true;
18680|    614|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsImEEmPT_m:
 8374|    614|    {
 8375|    614|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|    614|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapImEEvRT_:
18698|    602|    {
18699|    602|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    602|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  3.01k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.40k, False: 602]
  ------------------
18715|  2.40k|            {
18716|  2.40k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.40k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    602|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedImEEbT_:
18799|    602|    {
18800|    602|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    602|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 602, False: 0]
  |  |  ------------------
  ------------------
18801|    602|        {
18802|    602|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    602|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    602|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIjEEbT_RSC_:
18910|  29.2k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  29.2k|        return get_bytes(len, "string", result);
18921|  29.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIjSC_EEbT_PKcRT0_:
18998|  29.2k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  29.2k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  41.5k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 12.6k, False: 28.8k]
  ------------------
19003|  12.6k|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|  12.6k|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 12.5k, False: 53]
  ------------------
19007|  12.6k|                                       ? static_cast<std::size_t>(len)
19008|  12.6k|                                       : chunk_size;
19009|  12.6k|            const std::size_t old_size = result.size();
19010|  12.6k|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|  12.6k|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|  12.6k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 12.6k, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|  12.6k|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|  12.6k|            chars_read += bytes_read;
19018|  12.6k|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|  12.6k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 349, False: 12.2k]
  |  |  ------------------
  ------------------
19019|    349|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    349|                result.resize(old_size + bytes_read);
19024|    349|                ++chars_read;
19025|    349|                current = char_traits<char_type>::eof();
19026|    349|                return unexpect_eof(context);
19027|    349|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|  12.2k|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|  12.2k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 12.2k, False: 0]
  ------------------
19030|  12.2k|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|  12.2k|        }
19032|  28.8k|        return true;
19033|  29.2k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringIhEEbT_RSC_:
18910|  1.15k|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|  1.15k|        return get_bytes(len, "string", result);
18921|  1.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIhSC_EEbT_PKcRT0_:
18998|  1.15k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.15k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.69k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 588, False: 1.10k]
  ------------------
19003|    588|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    588|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 588, False: 0]
  ------------------
19007|    588|                                       ? static_cast<std::size_t>(len)
19008|    588|                                       : chunk_size;
19009|    588|            const std::size_t old_size = result.size();
19010|    588|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    588|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    588|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 588, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    588|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    588|            chars_read += bytes_read;
19018|    588|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    588|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 45, False: 543]
  |  |  ------------------
  ------------------
19019|     45|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     45|                result.resize(old_size + bytes_read);
19024|     45|                ++chars_read;
19025|     45|                current = char_traits<char_type>::eof();
19026|     45|                return unexpect_eof(context);
19027|     45|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    543|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    543|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 543, False: 0]
  ------------------
19030|    543|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    543|        }
19032|  1.10k|        return true;
19033|  1.15k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberItLb0EEEbRT_:
18739|  4.12k|    {
18740|       |        // read in the original format
18741|       |
18742|  4.12k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 4.12k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  4.12k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 4.08k, False: 42]
  |  Branch (18746:34): [Folded, False: 4.08k]
  |  Branch (18746:57): [True: 0, False: 4.08k]
  ------------------
18747|  4.08k|        {
18748|  4.08k|            byte_swap(result);
18749|  4.08k|        }
18750|  4.12k|        return true;
18751|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toItEEbRT_PKc:
18667|  4.12k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  4.12k|        auto new_chars_read = ia.get_elements(&dest);
18671|  4.12k|        chars_read += new_chars_read;
18672|  4.12k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  4.12k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 42, False: 4.08k]
  |  |  ------------------
  ------------------
18673|     42|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     42|            ++chars_read;
18676|     42|            static_cast<void>(report_eof(context));
18677|     42|            return false;
18678|     42|        }
18679|  4.08k|        return true;
18680|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsItEEmPT_m:
 8374|  4.12k|    {
 8375|  4.12k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  4.12k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapItEEvRT_:
18698|  4.08k|    {
18699|  4.08k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  4.08k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  8.17k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 4.08k, False: 4.08k]
  ------------------
18715|  4.08k|            {
18716|  4.08k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  4.08k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  4.08k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_stringItEEbT_RSC_:
18910|    732|    {
18911|       |        // Strings are taken as is by default: none of CBOR (RFC 8949 §3.1
18912|       |        // leaves the choice to the decoder), MessagePack (whose spec
18913|       |        // explicitly allows a str object to contain an invalid byte
18914|       |        // sequence), UBJSON, BJData, or BSON requires a decoder to reject
18915|       |        // ill-formed UTF-8. Checking (and, with @ref error_handler_t::strict,
18916|       |        // rejecting, or with `replace`/`ignore`, sanitizing) is opt-in via
18917|       |        // @ref error_handler, applied once the whole string (all chunks of
18918|       |        // an indefinite-length CBOR string included) has been assembled, by
18919|       |        // @ref check_string_utf8 at the call site.
18920|    732|        return get_bytes(len, "string", result);
18921|    732|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesItSC_EEbT_PKcRT0_:
18998|    732|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    732|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.05k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 377, False: 675]
  ------------------
19003|    377|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    377|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 359, False: 18]
  ------------------
19007|    377|                                       ? static_cast<std::size_t>(len)
19008|    377|                                       : chunk_size;
19009|    377|            const std::size_t old_size = result.size();
19010|    377|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    377|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    377|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 377, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    377|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    377|            chars_read += bytes_read;
19018|    377|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    377|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 57, False: 320]
  |  |  ------------------
  ------------------
19019|     57|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     57|                result.resize(old_size + bytes_read);
19024|     57|                ++chars_read;
19025|     57|                current = char_traits<char_type>::eof();
19026|     57|                return unexpect_eof(context);
19027|     57|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    320|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    320|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 320, False: 0]
  ------------------
19030|    320|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    320|        }
19032|    675|        return true;
19033|    732|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIjLb0EEEbRT_:
18739|  1.45k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.45k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.45k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.45k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.39k, False: 55]
  |  Branch (18746:34): [Folded, False: 1.39k]
  |  Branch (18746:57): [True: 0, False: 1.39k]
  ------------------
18747|  1.39k|        {
18748|  1.39k|            byte_swap(result);
18749|  1.39k|        }
18750|  1.45k|        return true;
18751|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIjEEbRT_PKc:
18667|  1.45k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.45k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.45k|        chars_read += new_chars_read;
18672|  1.45k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.45k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 55, False: 1.39k]
  |  |  ------------------
  ------------------
18673|     55|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     55|            ++chars_read;
18676|     55|            static_cast<void>(report_eof(context));
18677|     55|            return false;
18678|     55|        }
18679|  1.39k|        return true;
18680|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIjEEmPT_m:
 8374|  1.45k|    {
 8375|  1.45k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.45k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIjEEvRT_:
18698|  1.39k|    {
18699|  1.39k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.39k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  4.19k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 2.79k, False: 1.39k]
  ------------------
18715|  2.79k|            {
18716|  2.79k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  2.79k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.39k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberImLb0EEEbRT_:
18739|    614|    {
18740|       |        // read in the original format
18741|       |
18742|    614|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    614|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 614]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    614|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 602, False: 12]
  |  Branch (18746:34): [Folded, False: 602]
  |  Branch (18746:57): [True: 0, False: 602]
  ------------------
18747|    602|        {
18748|    602|            byte_swap(result);
18749|    602|        }
18750|    614|        return true;
18751|    614|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedIhEEbT_:
18799|    848|    {
18800|    848|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    848|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 848, False: 0]
  |  |  ------------------
  ------------------
18801|    848|        {
18802|    848|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    848|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    848|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedItEEbT_:
18799|    216|    {
18800|    216|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    216|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 216, False: 0]
  |  |  ------------------
  ------------------
18801|    216|        {
18802|    216|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    216|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    216|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE13emit_unsignedIjEEbT_:
18799|    358|    {
18800|    358|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_unsigned_t>(number)))
  ------------------
  |  | 1666|    358|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 358, False: 0]
  |  |  ------------------
  ------------------
18801|    358|        {
18802|    358|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18803|    358|        }
18804|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18805|      0|        return emit_float(static_cast<long double>(number));
18806|    358|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIjEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|    532|    {
18973|    532|        return get_bytes(len, "binary", result);
18974|    532|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIjNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|    532|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|    532|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|    687|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 256, False: 431]
  ------------------
19003|    256|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    256|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 185, False: 71]
  ------------------
19007|    256|                                       ? static_cast<std::size_t>(len)
19008|    256|                                       : chunk_size;
19009|    256|            const std::size_t old_size = result.size();
19010|    256|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    256|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    256|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 256, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    256|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    256|            chars_read += bytes_read;
19018|    256|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    256|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 101, False: 155]
  |  |  ------------------
  ------------------
19019|    101|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|    101|                result.resize(old_size + bytes_read);
19024|    101|                ++chars_read;
19025|    101|                current = char_traits<char_type>::eof();
19026|    101|                return unexpect_eof(context);
19027|    101|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    155|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    155|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 155, False: 0]
  ------------------
19030|    155|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    155|        }
19032|    431|        return true;
19033|    532|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryIhEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  8.20k|    {
18973|  8.20k|        return get_bytes(len, "binary", result);
18974|  8.20k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesIhNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  8.20k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  8.20k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  9.00k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 823, False: 8.17k]
  ------------------
19003|    823|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    823|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 823, False: 0]
  ------------------
19007|    823|                                       ? static_cast<std::size_t>(len)
19008|    823|                                       : chunk_size;
19009|    823|            const std::size_t old_size = result.size();
19010|    823|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    823|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    823|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 823, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    823|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    823|            chars_read += bytes_read;
19018|    823|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    823|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 30, False: 793]
  |  |  ------------------
  ------------------
19019|     30|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     30|                result.resize(old_size + bytes_read);
19024|     30|                ++chars_read;
19025|     30|                current = char_traits<char_type>::eof();
19026|     30|                return unexpect_eof(context);
19027|     30|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    793|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    793|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 793, False: 0]
  ------------------
19030|    793|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    793|        }
19032|  8.17k|        return true;
19033|  8.20k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_binaryItEEbT_RNS0_27byte_container_with_subtypeISF_EE:
18972|  1.21k|    {
18973|  1.21k|        return get_bytes(len, "binary", result);
18974|  1.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9get_bytesItNS0_27byte_container_with_subtypeISF_EEEEbT_PKcRT0_:
18998|  1.21k|    {
18999|       |        // upper bound on the number of bytes read (and allocated) per chunk
19000|  1.21k|        constexpr std::size_t chunk_size = 4096;
19001|       |
19002|  1.66k|        while (len > 0)
  ------------------
  |  Branch (19002:16): [True: 519, False: 1.14k]
  ------------------
19003|    519|        {
19004|       |            // number of bytes to read this iteration: min(chunk_size, len),
19005|       |            // computed without truncating chunk_size to a narrow NumberType
19006|    519|            const std::size_t wanted = (static_cast<std::uintmax_t>(len) < static_cast<std::uintmax_t>(chunk_size))
  ------------------
  |  Branch (19006:40): [True: 499, False: 20]
  ------------------
19007|    519|                                       ? static_cast<std::size_t>(len)
19008|    519|                                       : chunk_size;
19009|    519|            const std::size_t old_size = result.size();
19010|    519|            result.resize(old_size + wanted);
19011|       |            // resize() is required to make size() exactly old_size + wanted;
19012|       |            // that is the room get_elements() is allowed to write into
19013|    519|            JSON_ASSERT(result.size() == old_size + wanted);
  ------------------
  |  | 2591|    519|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19013:13): [True: 519, False: 0]
  ------------------
19014|       |            // false positive: bytes_read is read on the next lines
19015|       |            // @infer-ignore DEAD_STORE
19016|    519|            const std::size_t bytes_read = ia.get_elements(&result[old_size], wanted);
19017|    519|            chars_read += bytes_read;
19018|    519|            if (JSON_HEDLEY_UNLIKELY(bytes_read < wanted))
  ------------------
  |  | 1667|    519|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 66, False: 453]
  |  |  ------------------
  ------------------
19019|     66|            {
19020|       |                // premature end of input: shrink to what was actually read and
19021|       |                // report the failure at the first missing byte (same position
19022|       |                // accounting as get_to() for partial number reads)
19023|     66|                result.resize(old_size + bytes_read);
19024|     66|                ++chars_read;
19025|     66|                current = char_traits<char_type>::eof();
19026|     66|                return unexpect_eof(context);
19027|     66|            }
19028|       |            // a full chunk was read; get_elements() never returns more than requested
19029|    453|            JSON_ASSERT(bytes_read == wanted);
  ------------------
  |  | 2591|    453|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (19029:13): [True: 453, False: 0]
  ------------------
19030|    453|            len = static_cast<NumberType>(len - static_cast<NumberType>(wanted));
19031|    453|        }
19032|  1.14k|        return true;
19033|  1.21k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11enter_arrayEmi:
15094|  89.5k|    {
15095|  89.5k|        return enter_container(/*is_object*/false, len, type_marker);
15096|  89.5k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE12enter_objectEmi:
15100|  13.9k|    {
15101|  13.9k|        return enter_container(/*is_object*/true, len, type_marker);
15102|  13.9k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15unexpected_byteEPKcSM_:
19130|      3|    {
19131|      3|        return last_byte_error(exception_id::unexpected_byte, concat(detail, ": 0x", get_token_string()), context);
19132|      3|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIfLb0EEEbRT_:
18739|  1.92k|    {
18740|       |        // read in the original format
18741|       |
18742|  1.92k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  1.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.92k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  1.92k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 1.91k, False: 8]
  |  Branch (18746:34): [Folded, False: 1.91k]
  |  Branch (18746:57): [True: 0, False: 1.91k]
  ------------------
18747|  1.91k|        {
18748|  1.91k|            byte_swap(result);
18749|  1.91k|        }
18750|  1.92k|        return true;
18751|  1.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIfEEbRT_PKc:
18667|  1.92k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  1.92k|        auto new_chars_read = ia.get_elements(&dest);
18671|  1.92k|        chars_read += new_chars_read;
18672|  1.92k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  1.92k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 8, False: 1.91k]
  |  |  ------------------
  ------------------
18673|      8|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|      8|            ++chars_read;
18676|      8|            static_cast<void>(report_eof(context));
18677|      8|            return false;
18678|      8|        }
18679|  1.91k|        return true;
18680|  1.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIfEEmPT_m:
 8374|  1.92k|    {
 8375|  1.92k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  1.92k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIfEEvRT_:
18698|  1.91k|    {
18699|  1.91k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  1.91k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.74k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 3.83k, False: 1.91k]
  ------------------
18715|  3.83k|            {
18716|  3.83k|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|  3.83k|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  1.91k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10emit_floatIfEEbT_:
18825|  1.91k|    {
18826|  1.91k|        const auto result = static_cast<number_float_t>(number);
18827|  1.91k|        if (JSON_HEDLEY_UNLIKELY(std::isfinite(number) && !std::isfinite(result)))
  ------------------
  |  | 1667|  3.63k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 1.91k]
  |  |  |  Branch (1667:94): [True: 1.71k, False: 198]
  |  |  |  Branch (1667:94): [True: 0, False: 1.71k]
  |  |  ------------------
  ------------------
18828|      0|        {
18829|      0|            return out_of_range_error(exception_id::number_overflow, "number overflow", "value");
18830|      0|        }
18831|  1.91k|        return sax->number_float(result, "");
18832|  1.91k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIdLb0EEEbRT_:
18739|    818|    {
18740|       |        // read in the original format
18741|       |
18742|    818|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    818|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 818]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    818|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 799, False: 19]
  |  Branch (18746:34): [Folded, False: 799]
  |  Branch (18746:57): [True: 0, False: 799]
  ------------------
18747|    799|        {
18748|    799|            byte_swap(result);
18749|    799|        }
18750|    818|        return true;
18751|    818|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE22parse_msgpack_internalEv:
17112|  7.51k|    {
17113|       |        // the key currently being read; hoisted out of the loop so that its
17114|       |        // capacity is reused across elements and across nesting levels
17115|  7.51k|        string_t key;
17116|       |
17117|   298k|        while (true)
  ------------------
  |  Branch (17117:16): [True: 295k, Folded]
  ------------------
17118|   295k|        {
17119|   295k|            if (!container_stack.empty())
  ------------------
  |  Branch (17119:17): [True: 288k, False: 7.51k]
  ------------------
17120|   288k|            {
17121|       |                // copied out before anything can push onto the stack and
17122|       |                // invalidate a reference into it
17123|   288k|                const bool is_object = container_stack.back().is_object;
17124|       |
17125|   288k|                if (container_stack.back().remaining == 0)
  ------------------
  |  Branch (17125:21): [True: 84.2k, False: 204k]
  ------------------
17126|  84.2k|                {
17127|  84.2k|                    if (JSON_HEDLEY_UNLIKELY(!leave_container()))
  ------------------
  |  | 1667|  84.2k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 84.2k]
  |  |  ------------------
  ------------------
17128|      0|                    {
17129|      0|                        return false;
17130|      0|                    }
17131|       |                    // the value begun here is complete once its container is
17132|  84.2k|                    if (container_stack.empty())
  ------------------
  |  Branch (17132:25): [True: 2.37k, False: 81.8k]
  ------------------
17133|  2.37k|                    {
17134|  2.37k|                        return true;
17135|  2.37k|                    }
17136|  81.8k|                    continue;
17137|  84.2k|                }
17138|       |
17139|       |                // claim the element about to be read
17140|   204k|                --container_stack.back().remaining;
17141|       |
17142|   204k|                if (is_object)
  ------------------
  |  Branch (17142:21): [True: 21.8k, False: 182k]
  ------------------
17143|  21.8k|                {
17144|  21.8k|                    get();
17145|  21.8k|                    key.clear();
17146|  21.8k|                    if (JSON_HEDLEY_UNLIKELY(!get_msgpack_object_key(key) || !sax->key(key)))
  ------------------
  |  | 1667|  43.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 21.8k]
  |  |  |  Branch (1667:94): [True: 388, False: 21.5k]
  |  |  |  Branch (1667:94): [True: 0, False: 21.5k]
  |  |  ------------------
  ------------------
17147|      0|                    {
17148|      0|                        return false;
17149|      0|                    }
17150|  21.8k|                }
17151|   204k|            }
17152|       |
17153|   211k|            if (JSON_HEDLEY_UNLIKELY(!parse_msgpack_value()))
  ------------------
  |  | 1667|   211k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 211k]
  |  |  ------------------
  ------------------
17154|      0|            {
17155|      0|                return false;
17156|      0|            }
17157|       |
17158|       |            // a value that opened a container left it on the stack; one that
17159|       |            // did not, and that was not inside a container, was the whole value
17160|   211k|            if (container_stack.empty())
  ------------------
  |  Branch (17160:17): [True: 2.51k, False: 209k]
  ------------------
17161|  2.51k|            {
17162|  2.51k|                return true;
17163|  2.51k|            }
17164|   211k|        }
17165|  7.51k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE22get_msgpack_object_keyERSC_:
16908|  21.8k|    {
16909|  21.8k|        const char* found = nullptr;
16910|  21.8k|        switch (current)
16911|  21.8k|        {
16912|      2|            case 0xC0:
  ------------------
  |  Branch (16912:13): [True: 2, False: 21.8k]
  ------------------
16913|      2|                found = "nil";
16914|      2|                break;
16915|      0|            case 0xC2:
  ------------------
  |  Branch (16915:13): [True: 0, False: 21.8k]
  ------------------
16916|      0|            case 0xC3:
  ------------------
  |  Branch (16916:13): [True: 0, False: 21.8k]
  ------------------
16917|      0|                found = "a boolean";
16918|      0|                break;
16919|      1|            case 0xCA:
  ------------------
  |  Branch (16919:13): [True: 1, False: 21.8k]
  ------------------
16920|      1|            case 0xCB:
  ------------------
  |  Branch (16920:13): [True: 0, False: 21.8k]
  ------------------
16921|      1|                found = "a float";
16922|      1|                break;
16923|      1|            case 0xC4:
  ------------------
  |  Branch (16923:13): [True: 1, False: 21.8k]
  ------------------
16924|      1|            case 0xC5:
  ------------------
  |  Branch (16924:13): [True: 0, False: 21.8k]
  ------------------
16925|      2|            case 0xC6:
  ------------------
  |  Branch (16925:13): [True: 1, False: 21.8k]
  ------------------
16926|      2|                found = "a bin";
16927|      2|                break;
16928|      0|            case 0xC7:
  ------------------
  |  Branch (16928:13): [True: 0, False: 21.8k]
  ------------------
16929|      0|            case 0xC8:
  ------------------
  |  Branch (16929:13): [True: 0, False: 21.8k]
  ------------------
16930|      0|            case 0xC9:
  ------------------
  |  Branch (16930:13): [True: 0, False: 21.8k]
  ------------------
16931|      1|            case 0xD4:
  ------------------
  |  Branch (16931:13): [True: 1, False: 21.8k]
  ------------------
16932|      2|            case 0xD5:
  ------------------
  |  Branch (16932:13): [True: 1, False: 21.8k]
  ------------------
16933|      2|            case 0xD6:
  ------------------
  |  Branch (16933:13): [True: 0, False: 21.8k]
  ------------------
16934|      2|            case 0xD7:
  ------------------
  |  Branch (16934:13): [True: 0, False: 21.8k]
  ------------------
16935|      2|            case 0xD8:
  ------------------
  |  Branch (16935:13): [True: 0, False: 21.8k]
  ------------------
16936|      2|                found = "an ext";
16937|      2|                break;
16938|      0|            case 0xCC:
  ------------------
  |  Branch (16938:13): [True: 0, False: 21.8k]
  ------------------
16939|      0|            case 0xCD:
  ------------------
  |  Branch (16939:13): [True: 0, False: 21.8k]
  ------------------
16940|      0|            case 0xCE:
  ------------------
  |  Branch (16940:13): [True: 0, False: 21.8k]
  ------------------
16941|      0|            case 0xCF:
  ------------------
  |  Branch (16941:13): [True: 0, False: 21.8k]
  ------------------
16942|      1|            case 0xD0:
  ------------------
  |  Branch (16942:13): [True: 1, False: 21.8k]
  ------------------
16943|      3|            case 0xD1:
  ------------------
  |  Branch (16943:13): [True: 2, False: 21.8k]
  ------------------
16944|      5|            case 0xD2:
  ------------------
  |  Branch (16944:13): [True: 2, False: 21.8k]
  ------------------
16945|      5|            case 0xD3:
  ------------------
  |  Branch (16945:13): [True: 0, False: 21.8k]
  ------------------
16946|      5|                found = "an integer";
16947|      5|                break;
16948|      0|            case 0xDC:
  ------------------
  |  Branch (16948:13): [True: 0, False: 21.8k]
  ------------------
16949|      0|            case 0xDD:
  ------------------
  |  Branch (16949:13): [True: 0, False: 21.8k]
  ------------------
16950|      0|                found = "an array";
16951|      0|                break;
16952|      1|            case 0xDE:
  ------------------
  |  Branch (16952:13): [True: 1, False: 21.8k]
  ------------------
16953|      2|            case 0xDF:
  ------------------
  |  Branch (16953:13): [True: 1, False: 21.8k]
  ------------------
16954|      2|                found = "a map";
16955|      2|                break;
16956|  21.8k|            default:
  ------------------
  |  Branch (16956:13): [True: 21.8k, False: 14]
  ------------------
16957|       |                // fixint, fixmap, and fixarray; strings, EOF, and the unused
16958|       |                // byte 0xC1 are left to get_msgpack_string
16959|  21.8k|                if (current == char_traits<char_type>::eof())
  ------------------
  |  Branch (16959:21): [True: 217, False: 21.6k]
  ------------------
16960|    217|                {
16961|    217|                    return get_msgpack_string(result, "key");
16962|    217|                }
16963|  21.6k|                if (current <= 0x7F || current >= 0xE0)
  ------------------
  |  Branch (16963:21): [True: 55, False: 21.6k]
  |  Branch (16963:40): [True: 26, False: 21.5k]
  ------------------
16964|     81|                {
16965|     81|                    found = "an integer";
16966|     81|                }
16967|  21.5k|                else if (current <= 0x8F)
  ------------------
  |  Branch (16967:26): [True: 14, False: 21.5k]
  ------------------
16968|     14|                {
16969|     14|                    found = "a map";
16970|     14|                }
16971|  21.5k|                else if (current <= 0x9F)
  ------------------
  |  Branch (16971:26): [True: 13, False: 21.5k]
  ------------------
16972|     13|                {
16973|     13|                    found = "an array";
16974|     13|                }
16975|  21.5k|                else
16976|  21.5k|                {
16977|  21.5k|                    return get_msgpack_string(result, "key");
16978|  21.5k|                }
16979|    108|                break;
16980|  21.8k|        }
16981|       |
16982|    122|        return last_byte_error(exception_id::invalid_string_or_size, "only string keys are supported, but found ", "object key", found);
16983|  21.8k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE18get_msgpack_stringERSC_PKc:
16825|  31.3k|    {
16826|  31.3k|        if (JSON_HEDLEY_UNLIKELY(!unexpect_eof("string")))
  ------------------
  |  | 1667|  31.3k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 31.3k]
  |  |  ------------------
  ------------------
16827|      0|        {
16828|      0|            return false;
16829|      0|        }
16830|       |
16831|  31.3k|        switch (current)
16832|  31.3k|        {
16833|       |            // fixstr
16834|  16.5k|            case 0xA0:
  ------------------
  |  Branch (16834:13): [True: 16.5k, False: 14.8k]
  ------------------
16835|  24.2k|            case 0xA1:
  ------------------
  |  Branch (16835:13): [True: 7.66k, False: 23.7k]
  ------------------
16836|  25.0k|            case 0xA2:
  ------------------
  |  Branch (16836:13): [True: 827, False: 30.5k]
  ------------------
16837|  25.4k|            case 0xA3:
  ------------------
  |  Branch (16837:13): [True: 405, False: 30.9k]
  ------------------
16838|  25.8k|            case 0xA4:
  ------------------
  |  Branch (16838:13): [True: 355, False: 31.0k]
  ------------------
16839|  26.0k|            case 0xA5:
  ------------------
  |  Branch (16839:13): [True: 216, False: 31.1k]
  ------------------
16840|  26.2k|            case 0xA6:
  ------------------
  |  Branch (16840:13): [True: 200, False: 31.1k]
  ------------------
16841|  26.3k|            case 0xA7:
  ------------------
  |  Branch (16841:13): [True: 118, False: 31.2k]
  ------------------
16842|  26.6k|            case 0xA8:
  ------------------
  |  Branch (16842:13): [True: 334, False: 31.0k]
  ------------------
16843|  26.9k|            case 0xA9:
  ------------------
  |  Branch (16843:13): [True: 251, False: 31.1k]
  ------------------
16844|  27.1k|            case 0xAA:
  ------------------
  |  Branch (16844:13): [True: 208, False: 31.1k]
  ------------------
16845|  27.2k|            case 0xAB:
  ------------------
  |  Branch (16845:13): [True: 132, False: 31.2k]
  ------------------
16846|  27.4k|            case 0xAC:
  ------------------
  |  Branch (16846:13): [True: 150, False: 31.2k]
  ------------------
16847|  27.5k|            case 0xAD:
  ------------------
  |  Branch (16847:13): [True: 146, False: 31.2k]
  ------------------
16848|  27.6k|            case 0xAE:
  ------------------
  |  Branch (16848:13): [True: 80, False: 31.2k]
  ------------------
16849|  27.7k|            case 0xAF:
  ------------------
  |  Branch (16849:13): [True: 95, False: 31.2k]
  ------------------
16850|  27.8k|            case 0xB0:
  ------------------
  |  Branch (16850:13): [True: 97, False: 31.2k]
  ------------------
16851|  27.9k|            case 0xB1:
  ------------------
  |  Branch (16851:13): [True: 94, False: 31.2k]
  ------------------
16852|  28.0k|            case 0xB2:
  ------------------
  |  Branch (16852:13): [True: 160, False: 31.2k]
  ------------------
16853|  28.1k|            case 0xB3:
  ------------------
  |  Branch (16853:13): [True: 60, False: 31.3k]
  ------------------
16854|  28.2k|            case 0xB4:
  ------------------
  |  Branch (16854:13): [True: 96, False: 31.2k]
  ------------------
16855|  28.3k|            case 0xB5:
  ------------------
  |  Branch (16855:13): [True: 55, False: 31.3k]
  ------------------
16856|  28.3k|            case 0xB6:
  ------------------
  |  Branch (16856:13): [True: 64, False: 31.3k]
  ------------------
16857|  28.5k|            case 0xB7:
  ------------------
  |  Branch (16857:13): [True: 175, False: 31.2k]
  ------------------
16858|  28.6k|            case 0xB8:
  ------------------
  |  Branch (16858:13): [True: 76, False: 31.3k]
  ------------------
16859|  28.6k|            case 0xB9:
  ------------------
  |  Branch (16859:13): [True: 69, False: 31.3k]
  ------------------
16860|  28.7k|            case 0xBA:
  ------------------
  |  Branch (16860:13): [True: 93, False: 31.2k]
  ------------------
16861|  28.8k|            case 0xBB:
  ------------------
  |  Branch (16861:13): [True: 103, False: 31.2k]
  ------------------
16862|  28.9k|            case 0xBC:
  ------------------
  |  Branch (16862:13): [True: 53, False: 31.3k]
  ------------------
16863|  29.0k|            case 0xBD:
  ------------------
  |  Branch (16863:13): [True: 74, False: 31.3k]
  ------------------
16864|  29.0k|            case 0xBE:
  ------------------
  |  Branch (16864:13): [True: 59, False: 31.3k]
  ------------------
16865|  29.1k|            case 0xBF:
  ------------------
  |  Branch (16865:13): [True: 47, False: 31.3k]
  ------------------
16866|  29.1k|            {
16867|  29.1k|                return get_string(static_cast<unsigned int>(current) & 0x1Fu, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16867:24): [True: 28.8k, False: 283]
  |  Branch (16867:90): [True: 28.8k, False: 0]
  ------------------
16868|  29.0k|            }
16869|       |
16870|  1.16k|            case 0xD9: // str 8
  ------------------
  |  Branch (16870:13): [True: 1.16k, False: 30.2k]
  ------------------
16871|  1.16k|            {
16872|  1.16k|                std::uint8_t len{};
16873|  1.16k|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16873:24): [True: 1.15k, False: 13]
  |  Branch (16873:43): [True: 1.10k, False: 45]
  |  Branch (16873:70): [True: 1.10k, False: 0]
  ------------------
16874|  29.0k|            }
16875|       |
16876|    740|            case 0xDA: // str 16
  ------------------
  |  Branch (16876:13): [True: 740, False: 30.6k]
  ------------------
16877|    740|            {
16878|    740|                std::uint16_t len{};
16879|    740|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16879:24): [True: 732, False: 8]
  |  Branch (16879:43): [True: 675, False: 57]
  |  Branch (16879:70): [True: 675, False: 0]
  ------------------
16880|  29.0k|            }
16881|       |
16882|    140|            case 0xDB: // str 32
  ------------------
  |  Branch (16882:13): [True: 140, False: 31.2k]
  ------------------
16883|    140|            {
16884|    140|                std::uint32_t len{};
16885|    140|                return get_number(len) && get_string(len, result) && check_string_utf8(result, context);
  ------------------
  |  Branch (16885:24): [True: 128, False: 12]
  |  Branch (16885:43): [True: 62, False: 66]
  |  Branch (16885:70): [True: 62, False: 0]
  ------------------
16886|  29.0k|            }
16887|       |
16888|      1|            default:
  ------------------
  |  Branch (16888:13): [True: 1, False: 31.3k]
  ------------------
16889|      1|            {
16890|      1|                return last_byte_error(exception_id::invalid_string_or_size, "expected length specification (0xA0-0xBF, 0xD9-0xDB)", "string", "");
16891|  29.0k|            }
16892|  31.3k|        }
16893|  31.3k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE19parse_msgpack_valueEv:
16446|   211k|    {
16447|   211k|        switch (get())
16448|   211k|        {
16449|       |            // EOF
16450|  1.38k|            case char_traits<char_type>::eof():
  ------------------
  |  Branch (16450:13): [True: 1.38k, False: 209k]
  ------------------
16451|  1.38k|                return unexpect_eof("value");
16452|       |
16453|       |            // positive fixint
16454|  6.23k|            case 0x00:
  ------------------
  |  Branch (16454:13): [True: 6.23k, False: 205k]
  ------------------
16455|  6.98k|            case 0x01:
  ------------------
  |  Branch (16455:13): [True: 751, False: 210k]
  ------------------
16456|  7.42k|            case 0x02:
  ------------------
  |  Branch (16456:13): [True: 435, False: 210k]
  ------------------
16457|  7.85k|            case 0x03:
  ------------------
  |  Branch (16457:13): [True: 434, False: 210k]
  ------------------
16458|  8.29k|            case 0x04:
  ------------------
  |  Branch (16458:13): [True: 438, False: 210k]
  ------------------
16459|  8.69k|            case 0x05:
  ------------------
  |  Branch (16459:13): [True: 398, False: 210k]
  ------------------
16460|  9.05k|            case 0x06:
  ------------------
  |  Branch (16460:13): [True: 364, False: 210k]
  ------------------
16461|  9.47k|            case 0x07:
  ------------------
  |  Branch (16461:13): [True: 417, False: 210k]
  ------------------
16462|  10.0k|            case 0x08:
  ------------------
  |  Branch (16462:13): [True: 573, False: 210k]
  ------------------
16463|  10.5k|            case 0x09:
  ------------------
  |  Branch (16463:13): [True: 546, False: 210k]
  ------------------
16464|  11.0k|            case 0x0A:
  ------------------
  |  Branch (16464:13): [True: 412, False: 210k]
  ------------------
16465|  11.4k|            case 0x0B:
  ------------------
  |  Branch (16465:13): [True: 413, False: 210k]
  ------------------
16466|  11.7k|            case 0x0C:
  ------------------
  |  Branch (16466:13): [True: 341, False: 210k]
  ------------------
16467|  12.1k|            case 0x0D:
  ------------------
  |  Branch (16467:13): [True: 425, False: 210k]
  ------------------
16468|  12.6k|            case 0x0E:
  ------------------
  |  Branch (16468:13): [True: 445, False: 210k]
  ------------------
16469|  12.9k|            case 0x0F:
  ------------------
  |  Branch (16469:13): [True: 310, False: 210k]
  ------------------
16470|  13.2k|            case 0x10:
  ------------------
  |  Branch (16470:13): [True: 351, False: 210k]
  ------------------
16471|  13.5k|            case 0x11:
  ------------------
  |  Branch (16471:13): [True: 294, False: 210k]
  ------------------
16472|  13.9k|            case 0x12:
  ------------------
  |  Branch (16472:13): [True: 401, False: 210k]
  ------------------
16473|  14.3k|            case 0x13:
  ------------------
  |  Branch (16473:13): [True: 335, False: 210k]
  ------------------
16474|  14.6k|            case 0x14:
  ------------------
  |  Branch (16474:13): [True: 374, False: 210k]
  ------------------
16475|  15.1k|            case 0x15:
  ------------------
  |  Branch (16475:13): [True: 474, False: 210k]
  ------------------
16476|  15.5k|            case 0x16:
  ------------------
  |  Branch (16476:13): [True: 353, False: 210k]
  ------------------
16477|  15.8k|            case 0x17:
  ------------------
  |  Branch (16477:13): [True: 365, False: 210k]
  ------------------
16478|  16.4k|            case 0x18:
  ------------------
  |  Branch (16478:13): [True: 559, False: 210k]
  ------------------
16479|  16.8k|            case 0x19:
  ------------------
  |  Branch (16479:13): [True: 422, False: 210k]
  ------------------
16480|  17.5k|            case 0x1A:
  ------------------
  |  Branch (16480:13): [True: 637, False: 210k]
  ------------------
16481|  17.7k|            case 0x1B:
  ------------------
  |  Branch (16481:13): [True: 286, False: 210k]
  ------------------
16482|  18.0k|            case 0x1C:
  ------------------
  |  Branch (16482:13): [True: 285, False: 210k]
  ------------------
16483|  18.4k|            case 0x1D:
  ------------------
  |  Branch (16483:13): [True: 333, False: 210k]
  ------------------
16484|  18.8k|            case 0x1E:
  ------------------
  |  Branch (16484:13): [True: 427, False: 210k]
  ------------------
16485|  19.1k|            case 0x1F:
  ------------------
  |  Branch (16485:13): [True: 273, False: 210k]
  ------------------
16486|  19.4k|            case 0x20:
  ------------------
  |  Branch (16486:13): [True: 353, False: 210k]
  ------------------
16487|  19.8k|            case 0x21:
  ------------------
  |  Branch (16487:13): [True: 407, False: 210k]
  ------------------
16488|  20.3k|            case 0x22:
  ------------------
  |  Branch (16488:13): [True: 486, False: 210k]
  ------------------
16489|  20.6k|            case 0x23:
  ------------------
  |  Branch (16489:13): [True: 327, False: 210k]
  ------------------
16490|  21.1k|            case 0x24:
  ------------------
  |  Branch (16490:13): [True: 435, False: 210k]
  ------------------
16491|  21.5k|            case 0x25:
  ------------------
  |  Branch (16491:13): [True: 452, False: 210k]
  ------------------
16492|  22.0k|            case 0x26:
  ------------------
  |  Branch (16492:13): [True: 456, False: 210k]
  ------------------
16493|  22.3k|            case 0x27:
  ------------------
  |  Branch (16493:13): [True: 324, False: 210k]
  ------------------
16494|  22.8k|            case 0x28:
  ------------------
  |  Branch (16494:13): [True: 462, False: 210k]
  ------------------
16495|  23.1k|            case 0x29:
  ------------------
  |  Branch (16495:13): [True: 343, False: 210k]
  ------------------
16496|  23.5k|            case 0x2A:
  ------------------
  |  Branch (16496:13): [True: 354, False: 210k]
  ------------------
16497|  23.9k|            case 0x2B:
  ------------------
  |  Branch (16497:13): [True: 404, False: 210k]
  ------------------
16498|  24.2k|            case 0x2C:
  ------------------
  |  Branch (16498:13): [True: 379, False: 210k]
  ------------------
16499|  24.6k|            case 0x2D:
  ------------------
  |  Branch (16499:13): [True: 400, False: 210k]
  ------------------
16500|  25.2k|            case 0x2E:
  ------------------
  |  Branch (16500:13): [True: 544, False: 210k]
  ------------------
16501|  25.6k|            case 0x2F:
  ------------------
  |  Branch (16501:13): [True: 409, False: 210k]
  ------------------
16502|  26.0k|            case 0x30:
  ------------------
  |  Branch (16502:13): [True: 381, False: 210k]
  ------------------
16503|  26.4k|            case 0x31:
  ------------------
  |  Branch (16503:13): [True: 382, False: 210k]
  ------------------
16504|  26.7k|            case 0x32:
  ------------------
  |  Branch (16504:13): [True: 352, False: 210k]
  ------------------
16505|  27.0k|            case 0x33:
  ------------------
  |  Branch (16505:13): [True: 334, False: 210k]
  ------------------
16506|  27.4k|            case 0x34:
  ------------------
  |  Branch (16506:13): [True: 328, False: 210k]
  ------------------
16507|  27.8k|            case 0x35:
  ------------------
  |  Branch (16507:13): [True: 385, False: 210k]
  ------------------
16508|  28.1k|            case 0x36:
  ------------------
  |  Branch (16508:13): [True: 337, False: 210k]
  ------------------
16509|  28.4k|            case 0x37:
  ------------------
  |  Branch (16509:13): [True: 291, False: 210k]
  ------------------
16510|  28.8k|            case 0x38:
  ------------------
  |  Branch (16510:13): [True: 428, False: 210k]
  ------------------
16511|  29.2k|            case 0x39:
  ------------------
  |  Branch (16511:13): [True: 357, False: 210k]
  ------------------
16512|  29.7k|            case 0x3A:
  ------------------
  |  Branch (16512:13): [True: 526, False: 210k]
  ------------------
16513|  30.2k|            case 0x3B:
  ------------------
  |  Branch (16513:13): [True: 496, False: 210k]
  ------------------
16514|  30.5k|            case 0x3C:
  ------------------
  |  Branch (16514:13): [True: 309, False: 210k]
  ------------------
16515|  30.8k|            case 0x3D:
  ------------------
  |  Branch (16515:13): [True: 303, False: 210k]
  ------------------
16516|  31.4k|            case 0x3E:
  ------------------
  |  Branch (16516:13): [True: 571, False: 210k]
  ------------------
16517|  31.9k|            case 0x3F:
  ------------------
  |  Branch (16517:13): [True: 546, False: 210k]
  ------------------
16518|  32.3k|            case 0x40:
  ------------------
  |  Branch (16518:13): [True: 400, False: 210k]
  ------------------
16519|  32.9k|            case 0x41:
  ------------------
  |  Branch (16519:13): [True: 580, False: 210k]
  ------------------
16520|  33.3k|            case 0x42:
  ------------------
  |  Branch (16520:13): [True: 412, False: 210k]
  ------------------
16521|  33.6k|            case 0x43:
  ------------------
  |  Branch (16521:13): [True: 281, False: 210k]
  ------------------
16522|  34.0k|            case 0x44:
  ------------------
  |  Branch (16522:13): [True: 380, False: 210k]
  ------------------
16523|  34.3k|            case 0x45:
  ------------------
  |  Branch (16523:13): [True: 372, False: 210k]
  ------------------
16524|  34.7k|            case 0x46:
  ------------------
  |  Branch (16524:13): [True: 397, False: 210k]
  ------------------
16525|  35.1k|            case 0x47:
  ------------------
  |  Branch (16525:13): [True: 327, False: 210k]
  ------------------
16526|  35.5k|            case 0x48:
  ------------------
  |  Branch (16526:13): [True: 420, False: 210k]
  ------------------
16527|  35.7k|            case 0x49:
  ------------------
  |  Branch (16527:13): [True: 259, False: 210k]
  ------------------
16528|  36.0k|            case 0x4A:
  ------------------
  |  Branch (16528:13): [True: 283, False: 210k]
  ------------------
16529|  36.4k|            case 0x4B:
  ------------------
  |  Branch (16529:13): [True: 351, False: 210k]
  ------------------
16530|  36.7k|            case 0x4C:
  ------------------
  |  Branch (16530:13): [True: 277, False: 210k]
  ------------------
16531|  37.0k|            case 0x4D:
  ------------------
  |  Branch (16531:13): [True: 354, False: 210k]
  ------------------
16532|  37.3k|            case 0x4E:
  ------------------
  |  Branch (16532:13): [True: 330, False: 210k]
  ------------------
16533|  37.6k|            case 0x4F:
  ------------------
  |  Branch (16533:13): [True: 294, False: 210k]
  ------------------
16534|  38.2k|            case 0x50:
  ------------------
  |  Branch (16534:13): [True: 523, False: 210k]
  ------------------
16535|  38.7k|            case 0x51:
  ------------------
  |  Branch (16535:13): [True: 500, False: 210k]
  ------------------
16536|  39.0k|            case 0x52:
  ------------------
  |  Branch (16536:13): [True: 296, False: 210k]
  ------------------
16537|  39.4k|            case 0x53:
  ------------------
  |  Branch (16537:13): [True: 401, False: 210k]
  ------------------
16538|  39.7k|            case 0x54:
  ------------------
  |  Branch (16538:13): [True: 321, False: 210k]
  ------------------
16539|  39.9k|            case 0x55:
  ------------------
  |  Branch (16539:13): [True: 253, False: 210k]
  ------------------
16540|  40.3k|            case 0x56:
  ------------------
  |  Branch (16540:13): [True: 398, False: 210k]
  ------------------
16541|  40.7k|            case 0x57:
  ------------------
  |  Branch (16541:13): [True: 352, False: 210k]
  ------------------
16542|  40.9k|            case 0x58:
  ------------------
  |  Branch (16542:13): [True: 250, False: 210k]
  ------------------
16543|  41.3k|            case 0x59:
  ------------------
  |  Branch (16543:13): [True: 402, False: 210k]
  ------------------
16544|  41.7k|            case 0x5A:
  ------------------
  |  Branch (16544:13): [True: 349, False: 210k]
  ------------------
16545|  42.1k|            case 0x5B:
  ------------------
  |  Branch (16545:13): [True: 384, False: 210k]
  ------------------
16546|  42.4k|            case 0x5C:
  ------------------
  |  Branch (16546:13): [True: 313, False: 210k]
  ------------------
16547|  42.9k|            case 0x5D:
  ------------------
  |  Branch (16547:13): [True: 489, False: 210k]
  ------------------
16548|  43.4k|            case 0x5E:
  ------------------
  |  Branch (16548:13): [True: 506, False: 210k]
  ------------------
16549|  43.7k|            case 0x5F:
  ------------------
  |  Branch (16549:13): [True: 324, False: 210k]
  ------------------
16550|  44.3k|            case 0x60:
  ------------------
  |  Branch (16550:13): [True: 553, False: 210k]
  ------------------
16551|  44.6k|            case 0x61:
  ------------------
  |  Branch (16551:13): [True: 350, False: 210k]
  ------------------
16552|  45.0k|            case 0x62:
  ------------------
  |  Branch (16552:13): [True: 380, False: 210k]
  ------------------
16553|  45.2k|            case 0x63:
  ------------------
  |  Branch (16553:13): [True: 255, False: 210k]
  ------------------
16554|  45.7k|            case 0x64:
  ------------------
  |  Branch (16554:13): [True: 491, False: 210k]
  ------------------
16555|  46.2k|            case 0x65:
  ------------------
  |  Branch (16555:13): [True: 432, False: 210k]
  ------------------
16556|  46.4k|            case 0x66:
  ------------------
  |  Branch (16556:13): [True: 279, False: 210k]
  ------------------
16557|  46.9k|            case 0x67:
  ------------------
  |  Branch (16557:13): [True: 451, False: 210k]
  ------------------
16558|  47.2k|            case 0x68:
  ------------------
  |  Branch (16558:13): [True: 280, False: 210k]
  ------------------
16559|  47.5k|            case 0x69:
  ------------------
  |  Branch (16559:13): [True: 295, False: 210k]
  ------------------
16560|  47.9k|            case 0x6A:
  ------------------
  |  Branch (16560:13): [True: 431, False: 210k]
  ------------------
16561|  48.3k|            case 0x6B:
  ------------------
  |  Branch (16561:13): [True: 397, False: 210k]
  ------------------
16562|  48.6k|            case 0x6C:
  ------------------
  |  Branch (16562:13): [True: 264, False: 210k]
  ------------------
16563|  48.9k|            case 0x6D:
  ------------------
  |  Branch (16563:13): [True: 384, False: 210k]
  ------------------
16564|  49.3k|            case 0x6E:
  ------------------
  |  Branch (16564:13): [True: 408, False: 210k]
  ------------------
16565|  49.7k|            case 0x6F:
  ------------------
  |  Branch (16565:13): [True: 397, False: 210k]
  ------------------
16566|  50.2k|            case 0x70:
  ------------------
  |  Branch (16566:13): [True: 462, False: 210k]
  ------------------
16567|  50.7k|            case 0x71:
  ------------------
  |  Branch (16567:13): [True: 451, False: 210k]
  ------------------
16568|  51.1k|            case 0x72:
  ------------------
  |  Branch (16568:13): [True: 481, False: 210k]
  ------------------
16569|  51.6k|            case 0x73:
  ------------------
  |  Branch (16569:13): [True: 463, False: 210k]
  ------------------
16570|  52.1k|            case 0x74:
  ------------------
  |  Branch (16570:13): [True: 488, False: 210k]
  ------------------
16571|  52.4k|            case 0x75:
  ------------------
  |  Branch (16571:13): [True: 329, False: 210k]
  ------------------
16572|  52.8k|            case 0x76:
  ------------------
  |  Branch (16572:13): [True: 373, False: 210k]
  ------------------
16573|  53.2k|            case 0x77:
  ------------------
  |  Branch (16573:13): [True: 372, False: 210k]
  ------------------
16574|  53.4k|            case 0x78:
  ------------------
  |  Branch (16574:13): [True: 283, False: 210k]
  ------------------
16575|  53.7k|            case 0x79:
  ------------------
  |  Branch (16575:13): [True: 236, False: 211k]
  ------------------
16576|  54.1k|            case 0x7A:
  ------------------
  |  Branch (16576:13): [True: 399, False: 210k]
  ------------------
16577|  54.5k|            case 0x7B:
  ------------------
  |  Branch (16577:13): [True: 424, False: 210k]
  ------------------
16578|  55.0k|            case 0x7C:
  ------------------
  |  Branch (16578:13): [True: 482, False: 210k]
  ------------------
16579|  55.3k|            case 0x7D:
  ------------------
  |  Branch (16579:13): [True: 301, False: 210k]
  ------------------
16580|  55.8k|            case 0x7E:
  ------------------
  |  Branch (16580:13): [True: 489, False: 210k]
  ------------------
16581|  56.4k|            case 0x7F:
  ------------------
  |  Branch (16581:13): [True: 581, False: 210k]
  ------------------
16582|  56.4k|                return sax->number_unsigned(static_cast<number_unsigned_t>(current));
16583|       |
16584|       |            // fixmap
16585|  2.15k|            case 0x80:
  ------------------
  |  Branch (16585:13): [True: 2.15k, False: 209k]
  ------------------
16586|  7.80k|            case 0x81:
  ------------------
  |  Branch (16586:13): [True: 5.64k, False: 205k]
  ------------------
16587|  8.69k|            case 0x82:
  ------------------
  |  Branch (16587:13): [True: 899, False: 210k]
  ------------------
16588|  9.05k|            case 0x83:
  ------------------
  |  Branch (16588:13): [True: 356, False: 210k]
  ------------------
16589|  9.53k|            case 0x84:
  ------------------
  |  Branch (16589:13): [True: 479, False: 210k]
  ------------------
16590|  9.88k|            case 0x85:
  ------------------
  |  Branch (16590:13): [True: 351, False: 210k]
  ------------------
16591|  10.1k|            case 0x86:
  ------------------
  |  Branch (16591:13): [True: 249, False: 210k]
  ------------------
16592|  10.4k|            case 0x87:
  ------------------
  |  Branch (16592:13): [True: 344, False: 210k]
  ------------------
16593|  10.7k|            case 0x88:
  ------------------
  |  Branch (16593:13): [True: 297, False: 210k]
  ------------------
16594|  11.0k|            case 0x89:
  ------------------
  |  Branch (16594:13): [True: 295, False: 210k]
  ------------------
16595|  11.3k|            case 0x8A:
  ------------------
  |  Branch (16595:13): [True: 255, False: 210k]
  ------------------
16596|  11.6k|            case 0x8B:
  ------------------
  |  Branch (16596:13): [True: 360, False: 210k]
  ------------------
16597|  12.1k|            case 0x8C:
  ------------------
  |  Branch (16597:13): [True: 434, False: 210k]
  ------------------
16598|  12.5k|            case 0x8D:
  ------------------
  |  Branch (16598:13): [True: 461, False: 210k]
  ------------------
16599|  12.8k|            case 0x8E:
  ------------------
  |  Branch (16599:13): [True: 307, False: 210k]
  ------------------
16600|  13.2k|            case 0x8F:
  ------------------
  |  Branch (16600:13): [True: 355, False: 210k]
  ------------------
16601|  13.2k|                return enter_object(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
16602|       |
16603|       |            // fixarray
16604|  2.66k|            case 0x90:
  ------------------
  |  Branch (16604:13): [True: 2.66k, False: 208k]
  ------------------
16605|  75.0k|            case 0x91:
  ------------------
  |  Branch (16605:13): [True: 72.4k, False: 138k]
  ------------------
16606|  75.8k|            case 0x92:
  ------------------
  |  Branch (16606:13): [True: 742, False: 210k]
  ------------------
16607|  76.9k|            case 0x93:
  ------------------
  |  Branch (16607:13): [True: 1.11k, False: 210k]
  ------------------
16608|  77.8k|            case 0x94:
  ------------------
  |  Branch (16608:13): [True: 874, False: 210k]
  ------------------
16609|  78.4k|            case 0x95:
  ------------------
  |  Branch (16609:13): [True: 592, False: 210k]
  ------------------
16610|  79.3k|            case 0x96:
  ------------------
  |  Branch (16610:13): [True: 985, False: 210k]
  ------------------
16611|  79.8k|            case 0x97:
  ------------------
  |  Branch (16611:13): [True: 453, False: 210k]
  ------------------
16612|  81.0k|            case 0x98:
  ------------------
  |  Branch (16612:13): [True: 1.20k, False: 210k]
  ------------------
16613|  81.8k|            case 0x99:
  ------------------
  |  Branch (16613:13): [True: 778, False: 210k]
  ------------------
16614|  82.8k|            case 0x9A:
  ------------------
  |  Branch (16614:13): [True: 978, False: 210k]
  ------------------
16615|  83.9k|            case 0x9B:
  ------------------
  |  Branch (16615:13): [True: 1.11k, False: 210k]
  ------------------
16616|  84.8k|            case 0x9C:
  ------------------
  |  Branch (16616:13): [True: 971, False: 210k]
  ------------------
16617|  86.0k|            case 0x9D:
  ------------------
  |  Branch (16617:13): [True: 1.19k, False: 210k]
  ------------------
16618|  87.2k|            case 0x9E:
  ------------------
  |  Branch (16618:13): [True: 1.15k, False: 210k]
  ------------------
16619|  87.9k|            case 0x9F:
  ------------------
  |  Branch (16619:13): [True: 716, False: 210k]
  ------------------
16620|  87.9k|                return enter_array(conditional_static_cast<std::size_t>(static_cast<unsigned int>(current) & 0x0Fu));
16621|       |
16622|       |            // fixstr
16623|  3.40k|            case 0xA0:
  ------------------
  |  Branch (16623:13): [True: 3.40k, False: 207k]
  ------------------
16624|  4.24k|            case 0xA1:
  ------------------
  |  Branch (16624:13): [True: 841, False: 210k]
  ------------------
16625|  4.78k|            case 0xA2:
  ------------------
  |  Branch (16625:13): [True: 534, False: 210k]
  ------------------
16626|  5.12k|            case 0xA3:
  ------------------
  |  Branch (16626:13): [True: 346, False: 210k]
  ------------------
16627|  5.46k|            case 0xA4:
  ------------------
  |  Branch (16627:13): [True: 336, False: 210k]
  ------------------
16628|  5.66k|            case 0xA5:
  ------------------
  |  Branch (16628:13): [True: 205, False: 211k]
  ------------------
16629|  5.86k|            case 0xA6:
  ------------------
  |  Branch (16629:13): [True: 194, False: 211k]
  ------------------
16630|  5.96k|            case 0xA7:
  ------------------
  |  Branch (16630:13): [True: 107, False: 211k]
  ------------------
16631|  6.24k|            case 0xA8:
  ------------------
  |  Branch (16631:13): [True: 271, False: 210k]
  ------------------
16632|  6.44k|            case 0xA9:
  ------------------
  |  Branch (16632:13): [True: 208, False: 211k]
  ------------------
16633|  6.60k|            case 0xAA:
  ------------------
  |  Branch (16633:13): [True: 160, False: 211k]
  ------------------
16634|  6.71k|            case 0xAB:
  ------------------
  |  Branch (16634:13): [True: 109, False: 211k]
  ------------------
16635|  6.84k|            case 0xAC:
  ------------------
  |  Branch (16635:13): [True: 130, False: 211k]
  ------------------
16636|  6.96k|            case 0xAD:
  ------------------
  |  Branch (16636:13): [True: 120, False: 211k]
  ------------------
16637|  7.03k|            case 0xAE:
  ------------------
  |  Branch (16637:13): [True: 68, False: 211k]
  ------------------
16638|  7.10k|            case 0xAF:
  ------------------
  |  Branch (16638:13): [True: 67, False: 211k]
  ------------------
16639|  7.17k|            case 0xB0:
  ------------------
  |  Branch (16639:13): [True: 77, False: 211k]
  ------------------
16640|  7.25k|            case 0xB1:
  ------------------
  |  Branch (16640:13): [True: 78, False: 211k]
  ------------------
16641|  7.36k|            case 0xB2:
  ------------------
  |  Branch (16641:13): [True: 106, False: 211k]
  ------------------
16642|  7.42k|            case 0xB3:
  ------------------
  |  Branch (16642:13): [True: 59, False: 211k]
  ------------------
16643|  7.50k|            case 0xB4:
  ------------------
  |  Branch (16643:13): [True: 87, False: 211k]
  ------------------
16644|  7.56k|            case 0xB5:
  ------------------
  |  Branch (16644:13): [True: 55, False: 211k]
  ------------------
16645|  7.62k|            case 0xB6:
  ------------------
  |  Branch (16645:13): [True: 64, False: 211k]
  ------------------
16646|  7.71k|            case 0xB7:
  ------------------
  |  Branch (16646:13): [True: 89, False: 211k]
  ------------------
16647|  7.77k|            case 0xB8:
  ------------------
  |  Branch (16647:13): [True: 60, False: 211k]
  ------------------
16648|  7.83k|            case 0xB9:
  ------------------
  |  Branch (16648:13): [True: 62, False: 211k]
  ------------------
16649|  7.90k|            case 0xBA:
  ------------------
  |  Branch (16649:13): [True: 69, False: 211k]
  ------------------
16650|  7.99k|            case 0xBB:
  ------------------
  |  Branch (16650:13): [True: 85, False: 211k]
  ------------------
16651|  8.04k|            case 0xBC:
  ------------------
  |  Branch (16651:13): [True: 53, False: 211k]
  ------------------
16652|  8.10k|            case 0xBD:
  ------------------
  |  Branch (16652:13): [True: 55, False: 211k]
  ------------------
16653|  8.15k|            case 0xBE:
  ------------------
  |  Branch (16653:13): [True: 56, False: 211k]
  ------------------
16654|  8.20k|            case 0xBF:
  ------------------
  |  Branch (16654:13): [True: 46, False: 211k]
  ------------------
16655|  8.85k|            case 0xD9: // str 8
  ------------------
  |  Branch (16655:13): [True: 651, False: 210k]
  ------------------
16656|  9.48k|            case 0xDA: // str 16
  ------------------
  |  Branch (16656:13): [True: 627, False: 210k]
  ------------------
16657|  9.61k|            case 0xDB: // str 32
  ------------------
  |  Branch (16657:13): [True: 129, False: 211k]
  ------------------
16658|  9.61k|            {
16659|  9.61k|                string_t s;
16660|  9.61k|                return get_msgpack_string(s) && sax->string(s);
  ------------------
  |  Branch (16660:24): [True: 9.17k, False: 436]
  |  Branch (16660:49): [True: 9.17k, False: 0]
  ------------------
16661|  9.48k|            }
16662|       |
16663|  2.01k|            case 0xC0: // nil
  ------------------
  |  Branch (16663:13): [True: 2.01k, False: 209k]
  ------------------
16664|  2.01k|                return sax->null();
16665|       |
16666|  1.35k|            case 0xC2: // false
  ------------------
  |  Branch (16666:13): [True: 1.35k, False: 209k]
  ------------------
16667|  1.35k|                return sax->boolean(false);
16668|       |
16669|  1.16k|            case 0xC3: // true
  ------------------
  |  Branch (16669:13): [True: 1.16k, False: 210k]
  ------------------
16670|  1.16k|                return sax->boolean(true);
16671|       |
16672|  7.58k|            case 0xC4: // bin 8
  ------------------
  |  Branch (16672:13): [True: 7.58k, False: 203k]
  ------------------
16673|  8.42k|            case 0xC5: // bin 16
  ------------------
  |  Branch (16673:13): [True: 842, False: 210k]
  ------------------
16674|  8.78k|            case 0xC6: // bin 32
  ------------------
  |  Branch (16674:13): [True: 364, False: 210k]
  ------------------
16675|  9.42k|            case 0xC7: // ext 8
  ------------------
  |  Branch (16675:13): [True: 634, False: 210k]
  ------------------
16676|  9.81k|            case 0xC8: // ext 16
  ------------------
  |  Branch (16676:13): [True: 391, False: 210k]
  ------------------
16677|  10.0k|            case 0xC9: // ext 32
  ------------------
  |  Branch (16677:13): [True: 197, False: 211k]
  ------------------
16678|  11.3k|            case 0xD4: // fixext 1
  ------------------
  |  Branch (16678:13): [True: 1.36k, False: 209k]
  ------------------
16679|  11.7k|            case 0xD5: // fixext 2
  ------------------
  |  Branch (16679:13): [True: 411, False: 210k]
  ------------------
16680|  12.0k|            case 0xD6: // fixext 4
  ------------------
  |  Branch (16680:13): [True: 293, False: 210k]
  ------------------
16681|  12.5k|            case 0xD7: // fixext 8
  ------------------
  |  Branch (16681:13): [True: 431, False: 210k]
  ------------------
16682|  12.5k|            case 0xD8: // fixext 16
  ------------------
  |  Branch (16682:13): [True: 71, False: 211k]
  ------------------
16683|  12.5k|            {
16684|  12.5k|                binary_t b;
16685|  12.5k|                return get_msgpack_binary(b) && sax->binary(b);
  ------------------
  |  Branch (16685:24): [True: 12.2k, False: 296]
  |  Branch (16685:49): [True: 12.2k, False: 0]
  ------------------
16686|  12.5k|            }
16687|       |
16688|  1.92k|            case 0xCA: // float 32
  ------------------
  |  Branch (16688:13): [True: 1.92k, False: 209k]
  ------------------
16689|  1.92k|            {
16690|  1.92k|                float number{};
16691|  1.92k|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (16691:24): [True: 1.91k, False: 8]
  |  Branch (16691:46): [True: 1.91k, False: 0]
  ------------------
16692|  12.5k|            }
16693|       |
16694|    818|            case 0xCB: // float 64
  ------------------
  |  Branch (16694:13): [True: 818, False: 210k]
  ------------------
16695|    818|            {
16696|    818|                double number{};
16697|    818|                return get_number(number) && emit_float(number);
  ------------------
  |  Branch (16697:24): [True: 799, False: 19]
  |  Branch (16697:46): [True: 799, False: 0]
  ------------------
16698|  12.5k|            }
16699|       |
16700|    850|            case 0xCC: // uint 8
  ------------------
  |  Branch (16700:13): [True: 850, False: 210k]
  ------------------
16701|    850|            {
16702|    850|                std::uint8_t number{};
16703|    850|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16703:24): [True: 848, False: 2]
  |  Branch (16703:46): [True: 848, False: 0]
  ------------------
16704|  12.5k|            }
16705|       |
16706|    218|            case 0xCD: // uint 16
  ------------------
  |  Branch (16706:13): [True: 218, False: 211k]
  ------------------
16707|    218|            {
16708|    218|                std::uint16_t number{};
16709|    218|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16709:24): [True: 216, False: 2]
  |  Branch (16709:46): [True: 216, False: 0]
  ------------------
16710|  12.5k|            }
16711|       |
16712|    362|            case 0xCE: // uint 32
  ------------------
  |  Branch (16712:13): [True: 362, False: 210k]
  ------------------
16713|    362|            {
16714|    362|                std::uint32_t number{};
16715|    362|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16715:24): [True: 358, False: 4]
  |  Branch (16715:46): [True: 358, False: 0]
  ------------------
16716|  12.5k|            }
16717|       |
16718|    614|            case 0xCF: // uint 64
  ------------------
  |  Branch (16718:13): [True: 614, False: 210k]
  ------------------
16719|    614|            {
16720|    614|                std::uint64_t number{};
16721|    614|                return get_number(number) && emit_unsigned(number);
  ------------------
  |  Branch (16721:24): [True: 602, False: 12]
  |  Branch (16721:46): [True: 602, False: 0]
  ------------------
16722|  12.5k|            }
16723|       |
16724|  1.55k|            case 0xD0: // int 8
  ------------------
  |  Branch (16724:13): [True: 1.55k, False: 209k]
  ------------------
16725|  1.55k|            {
16726|  1.55k|                std::int8_t number{};
16727|  1.55k|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16727:24): [True: 1.55k, False: 3]
  |  Branch (16727:46): [True: 1.55k, False: 0]
  ------------------
16728|  12.5k|            }
16729|       |
16730|    394|            case 0xD1: // int 16
  ------------------
  |  Branch (16730:13): [True: 394, False: 210k]
  ------------------
16731|    394|            {
16732|    394|                std::int16_t number{};
16733|    394|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16733:24): [True: 390, False: 4]
  |  Branch (16733:46): [True: 390, False: 0]
  ------------------
16734|  12.5k|            }
16735|       |
16736|    435|            case 0xD2: // int 32
  ------------------
  |  Branch (16736:13): [True: 435, False: 210k]
  ------------------
16737|    435|            {
16738|    435|                std::int32_t number{};
16739|    435|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16739:24): [True: 425, False: 10]
  |  Branch (16739:46): [True: 425, False: 0]
  ------------------
16740|  12.5k|            }
16741|       |
16742|    694|            case 0xD3: // int 64
  ------------------
  |  Branch (16742:13): [True: 694, False: 210k]
  ------------------
16743|    694|            {
16744|    694|                std::int64_t number{};
16745|    694|                return get_number(number) && emit_signed(number);
  ------------------
  |  Branch (16745:24): [True: 672, False: 22]
  |  Branch (16745:46): [True: 672, False: 0]
  ------------------
16746|  12.5k|            }
16747|       |
16748|  1.42k|            case 0xDC: // array 16
  ------------------
  |  Branch (16748:13): [True: 1.42k, False: 209k]
  ------------------
16749|  1.42k|            {
16750|  1.42k|                std::uint16_t len{};
16751|  1.42k|                return get_number(len) && enter_array(static_cast<std::size_t>(len));
  ------------------
  |  Branch (16751:24): [True: 1.40k, False: 12]
  |  Branch (16751:43): [True: 1.40k, False: 0]
  ------------------
16752|  12.5k|            }
16753|       |
16754|    225|            case 0xDD: // array 32
  ------------------
  |  Branch (16754:13): [True: 225, False: 211k]
  ------------------
16755|    225|            {
16756|    225|                std::uint32_t len{};
16757|    225|                return get_number(len) && enter_array(conditional_static_cast<std::size_t>(len));
  ------------------
  |  Branch (16757:24): [True: 213, False: 12]
  |  Branch (16757:43): [True: 213, False: 0]
  ------------------
16758|  12.5k|            }
16759|       |
16760|    516|            case 0xDE: // map 16
  ------------------
  |  Branch (16760:13): [True: 516, False: 210k]
  ------------------
16761|    516|            {
16762|    516|                std::uint16_t len{};
16763|    516|                return get_number(len) && enter_object(static_cast<std::size_t>(len));
  ------------------
  |  Branch (16763:24): [True: 513, False: 3]
  |  Branch (16763:43): [True: 513, False: 0]
  ------------------
16764|  12.5k|            }
16765|       |
16766|    165|            case 0xDF: // map 32
  ------------------
  |  Branch (16766:13): [True: 165, False: 211k]
  ------------------
16767|    165|            {
16768|    165|                std::uint32_t len{};
16769|    165|                return get_number(len) && enter_object(conditional_static_cast<std::size_t>(len));
  ------------------
  |  Branch (16769:24): [True: 161, False: 4]
  |  Branch (16769:43): [True: 161, False: 0]
  ------------------
16770|  12.5k|            }
16771|       |
16772|       |            // negative fixint
16773|    543|            case 0xE0:
  ------------------
  |  Branch (16773:13): [True: 543, False: 210k]
  ------------------
16774|  1.07k|            case 0xE1:
  ------------------
  |  Branch (16774:13): [True: 529, False: 210k]
  ------------------
16775|  1.40k|            case 0xE2:
  ------------------
  |  Branch (16775:13): [True: 335, False: 210k]
  ------------------
16776|  1.78k|            case 0xE3:
  ------------------
  |  Branch (16776:13): [True: 374, False: 210k]
  ------------------
16777|  2.11k|            case 0xE4:
  ------------------
  |  Branch (16777:13): [True: 337, False: 210k]
  ------------------
16778|  2.76k|            case 0xE5:
  ------------------
  |  Branch (16778:13): [True: 646, False: 210k]
  ------------------
16779|  3.12k|            case 0xE6:
  ------------------
  |  Branch (16779:13): [True: 357, False: 210k]
  ------------------
16780|  3.47k|            case 0xE7:
  ------------------
  |  Branch (16780:13): [True: 353, False: 210k]
  ------------------
16781|  3.81k|            case 0xE8:
  ------------------
  |  Branch (16781:13): [True: 338, False: 210k]
  ------------------
16782|  4.16k|            case 0xE9:
  ------------------
  |  Branch (16782:13): [True: 356, False: 210k]
  ------------------
16783|  4.53k|            case 0xEA:
  ------------------
  |  Branch (16783:13): [True: 362, False: 210k]
  ------------------
16784|  4.79k|            case 0xEB:
  ------------------
  |  Branch (16784:13): [True: 269, False: 210k]
  ------------------
16785|  5.05k|            case 0xEC:
  ------------------
  |  Branch (16785:13): [True: 256, False: 210k]
  ------------------
16786|  5.47k|            case 0xED:
  ------------------
  |  Branch (16786:13): [True: 419, False: 210k]
  ------------------
16787|  5.92k|            case 0xEE:
  ------------------
  |  Branch (16787:13): [True: 450, False: 210k]
  ------------------
16788|  6.33k|            case 0xEF:
  ------------------
  |  Branch (16788:13): [True: 410, False: 210k]
  ------------------
16789|  6.88k|            case 0xF0:
  ------------------
  |  Branch (16789:13): [True: 547, False: 210k]
  ------------------
16790|  7.38k|            case 0xF1:
  ------------------
  |  Branch (16790:13): [True: 507, False: 210k]
  ------------------
16791|  7.83k|            case 0xF2:
  ------------------
  |  Branch (16791:13): [True: 446, False: 210k]
  ------------------
16792|  8.19k|            case 0xF3:
  ------------------
  |  Branch (16792:13): [True: 357, False: 210k]
  ------------------
16793|  8.58k|            case 0xF4:
  ------------------
  |  Branch (16793:13): [True: 397, False: 210k]
  ------------------
16794|  9.05k|            case 0xF5:
  ------------------
  |  Branch (16794:13): [True: 469, False: 210k]
  ------------------
16795|  9.42k|            case 0xF6:
  ------------------
  |  Branch (16795:13): [True: 365, False: 210k]
  ------------------
16796|  9.80k|            case 0xF7:
  ------------------
  |  Branch (16796:13): [True: 384, False: 210k]
  ------------------
16797|  10.2k|            case 0xF8:
  ------------------
  |  Branch (16797:13): [True: 485, False: 210k]
  ------------------
16798|  10.6k|            case 0xF9:
  ------------------
  |  Branch (16798:13): [True: 359, False: 210k]
  ------------------
16799|  10.8k|            case 0xFA:
  ------------------
  |  Branch (16799:13): [True: 243, False: 210k]
  ------------------
16800|  11.3k|            case 0xFB:
  ------------------
  |  Branch (16800:13): [True: 470, False: 210k]
  ------------------
16801|  11.7k|            case 0xFC:
  ------------------
  |  Branch (16801:13): [True: 415, False: 210k]
  ------------------
16802|  12.1k|            case 0xFD:
  ------------------
  |  Branch (16802:13): [True: 409, False: 210k]
  ------------------
16803|  12.9k|            case 0xFE:
  ------------------
  |  Branch (16803:13): [True: 746, False: 210k]
  ------------------
16804|  15.3k|            case 0xFF:
  ------------------
  |  Branch (16804:13): [True: 2.38k, False: 208k]
  ------------------
16805|  15.3k|                return sax->number_integer(static_cast<std::int8_t>(current));
16806|       |
16807|      3|            default: // anything else
  ------------------
  |  Branch (16807:13): [True: 3, False: 211k]
  ------------------
16808|      3|            {
16809|      3|                return unexpected_byte("invalid byte", "value");
16810|  12.9k|            }
16811|   211k|        }
16812|   211k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE18get_msgpack_binaryERNS0_27byte_container_with_subtypeISF_EE:
16996|  12.5k|    {
16997|       |        // helper function to set the subtype
16998|  12.5k|        auto assign_and_return_true = [&result](std::int8_t subtype)
16999|  12.5k|        {
17000|  12.5k|            result.set_subtype(static_cast<std::uint8_t>(subtype));
17001|  12.5k|            return true;
17002|  12.5k|        };
17003|       |
17004|  12.5k|        switch (current)
17005|  12.5k|        {
17006|  7.58k|            case 0xC4: // bin 8
  ------------------
  |  Branch (17006:13): [True: 7.58k, False: 5.00k]
  ------------------
17007|  7.58k|            {
17008|  7.58k|                std::uint8_t len{};
17009|  7.58k|                return get_number(len) &&
  ------------------
  |  Branch (17009:24): [True: 7.57k, False: 5]
  ------------------
17010|  7.57k|                       get_binary(len, result);
  ------------------
  |  Branch (17010:24): [True: 7.55k, False: 26]
  ------------------
17011|      0|            }
17012|       |
17013|    842|            case 0xC5: // bin 16
  ------------------
  |  Branch (17013:13): [True: 842, False: 11.7k]
  ------------------
17014|    842|            {
17015|    842|                std::uint16_t len{};
17016|    842|                return get_number(len) &&
  ------------------
  |  Branch (17016:24): [True: 833, False: 9]
  ------------------
17017|    833|                       get_binary(len, result);
  ------------------
  |  Branch (17017:24): [True: 775, False: 58]
  ------------------
17018|      0|            }
17019|       |
17020|    364|            case 0xC6: // bin 32
  ------------------
  |  Branch (17020:13): [True: 364, False: 12.2k]
  ------------------
17021|    364|            {
17022|    364|                std::uint32_t len{};
17023|    364|                return get_number(len) &&
  ------------------
  |  Branch (17023:24): [True: 352, False: 12]
  ------------------
17024|    352|                       get_binary(len, result);
  ------------------
  |  Branch (17024:24): [True: 254, False: 98]
  ------------------
17025|      0|            }
17026|       |
17027|    634|            case 0xC7: // ext 8
  ------------------
  |  Branch (17027:13): [True: 634, False: 11.9k]
  ------------------
17028|    634|            {
17029|    634|                std::uint8_t len{};
17030|    634|                std::int8_t subtype{};
17031|    634|                return get_number(len) &&
  ------------------
  |  Branch (17031:24): [True: 631, False: 3]
  ------------------
17032|    631|                       get_number(subtype) &&
  ------------------
  |  Branch (17032:24): [True: 630, False: 1]
  ------------------
17033|    630|                       get_binary(len, result) &&
  ------------------
  |  Branch (17033:24): [True: 626, False: 4]
  ------------------
17034|    626|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17034:24): [True: 626, False: 0]
  ------------------
17035|      0|            }
17036|       |
17037|    391|            case 0xC8: // ext 16
  ------------------
  |  Branch (17037:13): [True: 391, False: 12.1k]
  ------------------
17038|    391|            {
17039|    391|                std::uint16_t len{};
17040|    391|                std::int8_t subtype{};
17041|    391|                return get_number(len) &&
  ------------------
  |  Branch (17041:24): [True: 383, False: 8]
  ------------------
17042|    383|                       get_number(subtype) &&
  ------------------
  |  Branch (17042:24): [True: 378, False: 5]
  ------------------
17043|    378|                       get_binary(len, result) &&
  ------------------
  |  Branch (17043:24): [True: 370, False: 8]
  ------------------
17044|    370|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17044:24): [True: 370, False: 0]
  ------------------
17045|      0|            }
17046|       |
17047|    197|            case 0xC9: // ext 32
  ------------------
  |  Branch (17047:13): [True: 197, False: 12.3k]
  ------------------
17048|    197|            {
17049|    197|                std::uint32_t len{};
17050|    197|                std::int8_t subtype{};
17051|    197|                return get_number(len) &&
  ------------------
  |  Branch (17051:24): [True: 186, False: 11]
  ------------------
17052|    186|                       get_number(subtype) &&
  ------------------
  |  Branch (17052:24): [True: 180, False: 6]
  ------------------
17053|    180|                       get_binary(len, result) &&
  ------------------
  |  Branch (17053:24): [True: 177, False: 3]
  ------------------
17054|    177|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17054:24): [True: 177, False: 0]
  ------------------
17055|      0|            }
17056|       |
17057|  1.36k|            case 0xD4: // fixext 1
  ------------------
  |  Branch (17057:13): [True: 1.36k, False: 11.2k]
  ------------------
17058|  1.36k|            {
17059|  1.36k|                std::int8_t subtype{};
17060|  1.36k|                return get_number(subtype) &&
  ------------------
  |  Branch (17060:24): [True: 1.36k, False: 3]
  ------------------
17061|  1.36k|                       get_binary(1, result) &&
  ------------------
  |  Branch (17061:24): [True: 1.36k, False: 2]
  ------------------
17062|  1.36k|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17062:24): [True: 1.36k, False: 0]
  ------------------
17063|      0|            }
17064|       |
17065|    411|            case 0xD5: // fixext 2
  ------------------
  |  Branch (17065:13): [True: 411, False: 12.1k]
  ------------------
17066|    411|            {
17067|    411|                std::int8_t subtype{};
17068|    411|                return get_number(subtype) &&
  ------------------
  |  Branch (17068:24): [True: 407, False: 4]
  ------------------
17069|    407|                       get_binary(2, result) &&
  ------------------
  |  Branch (17069:24): [True: 403, False: 4]
  ------------------
17070|    403|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17070:24): [True: 403, False: 0]
  ------------------
17071|      0|            }
17072|       |
17073|    293|            case 0xD6: // fixext 4
  ------------------
  |  Branch (17073:13): [True: 293, False: 12.2k]
  ------------------
17074|    293|            {
17075|    293|                std::int8_t subtype{};
17076|    293|                return get_number(subtype) &&
  ------------------
  |  Branch (17076:24): [True: 291, False: 2]
  ------------------
17077|    291|                       get_binary(4, result) &&
  ------------------
  |  Branch (17077:24): [True: 288, False: 3]
  ------------------
17078|    288|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17078:24): [True: 288, False: 0]
  ------------------
17079|      0|            }
17080|       |
17081|    431|            case 0xD7: // fixext 8
  ------------------
  |  Branch (17081:13): [True: 431, False: 12.1k]
  ------------------
17082|    431|            {
17083|    431|                std::int8_t subtype{};
17084|    431|                return get_number(subtype) &&
  ------------------
  |  Branch (17084:24): [True: 428, False: 3]
  ------------------
17085|    428|                       get_binary(8, result) &&
  ------------------
  |  Branch (17085:24): [True: 422, False: 6]
  ------------------
17086|    422|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17086:24): [True: 422, False: 0]
  ------------------
17087|      0|            }
17088|       |
17089|     71|            case 0xD8: // fixext 16
  ------------------
  |  Branch (17089:13): [True: 71, False: 12.5k]
  ------------------
17090|     71|            {
17091|     71|                std::int8_t subtype{};
17092|     71|                return get_number(subtype) &&
  ------------------
  |  Branch (17092:24): [True: 67, False: 4]
  ------------------
17093|     67|                       get_binary(16, result) &&
  ------------------
  |  Branch (17093:24): [True: 59, False: 8]
  ------------------
17094|     59|                       assign_and_return_true(subtype);
  ------------------
  |  Branch (17094:24): [True: 59, False: 0]
  ------------------
17095|      0|            }
17096|       |
17097|      0|            default:           // LCOV_EXCL_LINE
  ------------------
  |  Branch (17097:13): [True: 0, False: 12.5k]
  ------------------
17098|      0|                return false;  // LCOV_EXCL_LINE
17099|  12.5k|        }
17100|  12.5k|    }
_ZZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE18get_msgpack_binaryERNS0_27byte_container_with_subtypeISF_EEENKUlaE_clEa:
16999|  3.70k|        {
17000|  3.70k|            result.set_subtype(static_cast<std::uint8_t>(subtype));
17001|  3.70k|            return true;
17002|  3.70k|        };
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIaLb0EEEbRT_:
18739|  5.33k|    {
18740|       |        // read in the original format
18741|       |
18742|  5.33k|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 5.33k]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|  5.33k|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 5.29k, False: 31]
  |  Branch (18746:34): [Folded, False: 5.29k]
  |  Branch (18746:57): [True: 0, False: 5.29k]
  ------------------
18747|  5.29k|        {
18748|  5.29k|            byte_swap(result);
18749|  5.29k|        }
18750|  5.33k|        return true;
18751|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIaEEbRT_PKc:
18667|  5.33k|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|  5.33k|        auto new_chars_read = ia.get_elements(&dest);
18671|  5.33k|        chars_read += new_chars_read;
18672|  5.33k|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|  5.33k|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 31, False: 5.29k]
  |  |  ------------------
  ------------------
18673|     31|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|     31|            ++chars_read;
18676|     31|            static_cast<void>(report_eof(context));
18677|     31|            return false;
18678|     31|        }
18679|  5.29k|        return true;
18680|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIaEEmPT_m:
 8374|  5.33k|    {
 8375|  5.33k|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|  5.33k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIaEEvRT_:
18698|  5.29k|    {
18699|  5.29k|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|  5.29k|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|  5.29k|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 0, False: 5.29k]
  ------------------
18715|      0|            {
18716|      0|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|      0|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|  5.29k|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIaEEbT_:
18771|  1.55k|    {
18772|  1.55k|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|  1.55k|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 1.55k, False: 0]
  |  |  ------------------
  ------------------
18773|  1.55k|        {
18774|  1.55k|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|  1.55k|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIsLb0EEEbRT_:
18739|    394|    {
18740|       |        // read in the original format
18741|       |
18742|    394|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    394|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 394]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    394|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 390, False: 4]
  |  Branch (18746:34): [Folded, False: 390]
  |  Branch (18746:57): [True: 0, False: 390]
  ------------------
18747|    390|        {
18748|    390|            byte_swap(result);
18749|    390|        }
18750|    394|        return true;
18751|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE6get_toIsEEbRT_PKc:
18667|    394|    {
18668|       |        // false positive: new_chars_read is read on the next lines
18669|       |        // @infer-ignore DEAD_STORE
18670|    394|        auto new_chars_read = ia.get_elements(&dest);
18671|    394|        chars_read += new_chars_read;
18672|    394|        if (JSON_HEDLEY_UNLIKELY(new_chars_read < sizeof(T)))
  ------------------
  |  | 1667|    394|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 4, False: 390]
  |  |  ------------------
  ------------------
18673|      4|        {
18674|       |            // in case of failure, advance position by 1 to report the failing location
18675|      4|            ++chars_read;
18676|      4|            static_cast<void>(report_eof(context));
18677|      4|            return false;
18678|      4|        }
18679|    390|        return true;
18680|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter12get_elementsIsEEmPT_m:
 8374|    394|    {
 8375|    394|        return fread(dest, 1, sizeof(T) * count, m_file);
 8376|    394|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE9byte_swapIsEEvRT_:
18698|    390|    {
18699|    390|        constexpr std::size_t sz = sizeof(number);
18700|       |#ifdef __cpp_lib_byteswap
18701|       |        if constexpr (sz == 1)
18702|       |        {
18703|       |            return;
18704|       |        }
18705|       |        else if constexpr(std::is_integral_v<NumberType>)
18706|       |        {
18707|       |            number = std::byteswap(number);
18708|       |            return;
18709|       |        }
18710|       |        else
18711|       |        {
18712|       |#endif
18713|    390|            auto* ptr = reinterpret_cast<std::uint8_t*>(&number);
18714|    780|            for (std::size_t i = 0; i < sz / 2; ++i)
  ------------------
  |  Branch (18714:37): [True: 390, False: 390]
  ------------------
18715|    390|            {
18716|    390|                std::swap(ptr[i], ptr[sz - i - 1]);
18717|    390|            }
18718|       |#ifdef __cpp_lib_byteswap
18719|       |        }
18720|       |#endif
18721|    390|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE11emit_signedIsEEbT_:
18771|    390|    {
18772|    390|        if (JSON_HEDLEY_LIKELY(value_in_range_of<number_integer_t>(number)))
  ------------------
  |  | 1666|    390|#  define JSON_HEDLEY_LIKELY(expr)                      __builtin_expect                 (!!(expr),    1                  )
  |  |  ------------------
  |  |  |  Branch (1666:57): [True: 390, False: 0]
  |  |  ------------------
  ------------------
18773|    390|        {
18774|    390|            return sax->number_integer(static_cast<number_integer_t>(number));
18775|    390|        }
18776|      0|        if (value_in_range_of<number_unsigned_t>(number))
  ------------------
  |  Branch (18776:13): [True: 0, False: 0]
  ------------------
18777|      0|        {
18778|      0|            return sax->number_unsigned(static_cast<number_unsigned_t>(number));
18779|      0|        }
18780|       |        // std::isfinite has no integer overloads in MSVC's <cmath>
18781|      0|        return emit_float(static_cast<long double>(number));
18782|      0|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIiLb0EEEbRT_:
18739|    435|    {
18740|       |        // read in the original format
18741|       |
18742|    435|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    435|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 435]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    435|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 425, False: 10]
  |  Branch (18746:34): [Folded, False: 425]
  |  Branch (18746:57): [True: 0, False: 425]
  ------------------
18747|    425|        {
18748|    425|            byte_swap(result);
18749|    425|        }
18750|    435|        return true;
18751|    435|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE10get_numberIlLb0EEEbRT_:
18739|    694|    {
18740|       |        // read in the original format
18741|       |
18742|    694|        if (JSON_HEDLEY_UNLIKELY(!get_to(result, "number")))
  ------------------
  |  | 1667|    694|#  define JSON_HEDLEY_UNLIKELY(expr)                    __builtin_expect                 (!!(expr),    0                  )
  |  |  ------------------
  |  |  |  Branch (1667:57): [True: 0, False: 694]
  |  |  ------------------
  ------------------
18743|      0|        {
18744|      0|            return false;
18745|      0|        }
18746|    694|        if (is_little_endian != (InputIsLittleEndian || input_format == input_format_t::bjdata))
  ------------------
  |  Branch (18746:13): [True: 672, False: 22]
  |  Branch (18746:34): [Folded, False: 672]
  |  Branch (18746:57): [True: 0, False: 672]
  ------------------
18747|    672|        {
18748|    672|            byte_swap(result);
18749|    672|        }
18750|    694|        return true;
18751|    694|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE3getEv:
18652|   238k|    {
18653|   238k|        ++chars_read;
18654|   238k|        return current = ia.get_character();
18655|   238k|    }
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapter13get_characterEv:
 8367|   238k|    {
 8368|   238k|        return std::fgetc(m_file);
 8369|   238k|    }
_ZNK8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEE15last_byte_errorENS1_12exception_idERKSC_PKcSP_:
19116|    362|    {
19117|       |        // with a tail, the message reads "<detail><tail>; last byte: 0x<token>"
19118|    362|        return sax->parse_error(chars_read, get_token_string(), parse_error::create(id_, chars_read,
19119|    362|                                exception_message(tail == nullptr ? detail : concat(detail, tail, "; last byte: 0x", get_token_string()), context), nullptr));
  ------------------
  |  Branch (19119:51): [True: 3, False: 359]
  ------------------
19120|    362|    }
_ZN8nlohmann16json_abi_v3_12_06detail13binary_readerINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterENS1_19json_sax_dom_parserISG_SH_EEED2Ev:
14954|  7.51k|    ~binary_reader() = default;
_ZN8nlohmann16json_abi_v3_12_06detail19json_sax_dom_parserINS0_10basic_jsonINSt3__13mapENS4_6vectorENS4_12basic_stringIcNS4_11char_traitsIcEENS4_9allocatorIcEEEEblmdSA_NS0_14adl_serializerENS6_IhNSA_IhEEEEvEENS1_18file_input_adapterEED2Ev:
13881|  7.51k|    ~json_sax_dom_parser() = default;
_ZN8nlohmann16json_abi_v3_12_06detail13input_adapterEP8_IO_FILE:
 9114|  7.51k|{
 9115|  7.51k|    if (file == nullptr)
  ------------------
  |  Branch (9115:9): [True: 0, False: 7.51k]
  ------------------
 9116|      0|    {
 9117|      0|        JSON_THROW(parse_error::create(exception_id::syntax_error, 0, "attempting to parse an empty input; check that your input string or stream contains the expected JSON", nullptr));
  ------------------
  |  | 2556|      0|    #define JSON_THROW(exception) throw exception
  ------------------
 9118|      0|    }
 9119|  7.51k|    return file_input_adapter(file);
 9120|  7.51k|}
_ZN8nlohmann16json_abi_v3_12_06detail18file_input_adapterC2EP8_IO_FILE:
 8354|  7.51k|        : m_file(f)
 8355|  7.51k|    {
 8356|       |        JSON_ASSERT(m_file != nullptr);
  ------------------
  |  | 2591|  7.51k|    #define JSON_ASSERT(x) assert(x)
  ------------------
  |  Branch (8356:9): [True: 7.51k, False: 0]
  ------------------
 8357|  7.51k|    }

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

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

