_ZN2pw5async18FunctionDispatcher4PostEON3fit13function_implILm8ELb0EFvRNS0_7ContextENS_6StatusEENSt3__19allocatorISt4byteEEEE:
   37|   543k|  virtual Status Post(TaskFunction&& task_func) {
   38|   543k|    return PostAt(std::move(task_func), now());
   39|   543k|  }

_ZN2pw5async4test14FakeDispatcherC2Ev:
   36|  3.05k|  FakeDispatcher() : native_dispatcher_(*this) {}
_ZN2pw5async4test14FakeDispatcher3nowEv:
   72|   543k|  chrono::SystemClock::time_point now() override {
   73|   543k|    return native_dispatcher_.now();
   74|   543k|  }
_ZN2pw5async4test14FakeDispatcher9PostAfterERNS0_4TaskENSt3__16chrono8durationIlNS5_5ratioILl1ELl1000000000EEEEE:
   63|   297k|  void PostAfter(Task& task, chrono::SystemClock::duration delay) override {
   64|   297k|    native_dispatcher_.PostAfter(task, delay);
   65|   297k|  }
_ZN2pw5async4test14FakeDispatcher6PostAtERNS0_4TaskENSt3__16chrono10time_pointINS_6chrono11SystemClockENS6_8durationIlNS5_5ratioILl1ELl1000000000EEEEEEE:
   66|   543k|  void PostAt(Task& task, chrono::SystemClock::time_point time) override {
   67|   543k|    native_dispatcher_.PostAt(task, time);
   68|   543k|  }
_ZN2pw5async4test14FakeDispatcher6CancelERNS0_4TaskE:
   69|   297k|  bool Cancel(Task& task) override { return native_dispatcher_.Cancel(task); }
_ZN2pw5async4test14FakeDispatcher12RunUntilIdleEv:
   40|  64.6k|  bool RunUntilIdle() { return native_dispatcher_.RunUntilIdle(); }

_ZN2pw5async4test21FakeDispatcherFixture12RunUntilIdleEv:
   49|  64.6k|  bool RunUntilIdle() { return dispatcher_.RunUntilIdle(); }
_ZN2pw5async4test21FakeDispatcherFixture10dispatcherEv:
   42|  6.11k|  FakeDispatcher& dispatcher() { return dispatcher_; }

_ZN2pw5async14HeapDispatcherC2ERNS0_10DispatcherE:
   25|  6.11k|  HeapDispatcher(Dispatcher& dispatcher) : dispatcher_(dispatcher) {}
_ZN2pw5async14HeapDispatcher3nowEv:
   40|   543k|  inline chrono::SystemClock::time_point now() override {
   41|   543k|    return dispatcher_.now();
   42|   543k|  }

_ZN2pw5async4TaskC2Ev:
   35|   543k|  Task() : native_type_(*this) {}
_ZN2pw5async4TaskC2EON3fit13function_implILm8ELb0EFvRNS0_7ContextENS_6StatusEENSt3__19allocatorISt4byteEEEE:
   38|   297k|  explicit Task(TaskFunction&& f) : native_type_(*this, std::move(f)) {}
_ZN2pw5async4Task12set_functionEON3fit13function_implILm8ELb0EFvRNS0_7ContextENS_6StatusEENSt3__19allocatorISt4byteEEEE:
   47|   543k|  void set_function(TaskFunction&& f) {
   48|   543k|    native_type_.set_function(std::move(f));
   49|   543k|  }
_ZN2pw5async4Task11native_typeEv:
   56|  1.13M|  backend::NativeTask& native_type() { return native_type_; }

_ZN2pw5async4test7backend20NativeFakeDispatcher3nowEv:
   43|  1.40M|  chrono::SystemClock::time_point now() { return now_; }

_ZN2pw5async7backend10NativeTaskC2ERNS0_4TaskE:
   37|   543k|  NativeTask(::pw::async::Task& task) : task_(task) {}
_ZN2pw5async7backend10NativeTaskC2ERNS0_4TaskEON3fit13function_implILm8ELb0EFvRNS0_7ContextENS_6StatusEENSt3__19allocatorISt4byteEEEE:
   39|   297k|      : func_(std::move(f)), task_(task) {}
_ZN2pw5async7backend10NativeTaskclERNS0_7ContextENS_6StatusE:
   40|   543k|  void operator()(Context& ctx, Status status) { func_(ctx, status); }
_ZN2pw5async7backend10NativeTask12set_functionEON3fit13function_implILm8ELb0EFvRNS0_7ContextENS_6StatusEENSt3__19allocatorISt4byteEEEE:
   41|   543k|  void set_function(TaskFunction&& f) { func_ = std::move(f); }
_ZNK2pw5async7backend10NativeTask8due_timeEv:
   43|   270M|  pw::chrono::SystemClock::time_point due_time() const { return due_time_; }
_ZN2pw5async7backend10NativeTask12set_due_timeENSt3__16chrono10time_pointINS_6chrono11SystemClockENS4_8durationIlNS3_5ratioILl1ELl1000000000EEEEEEE:
   44|   841k|  void set_due_time(chrono::SystemClock::time_point due_time) {
   45|   841k|    due_time_ = due_time;
   46|   841k|  }

_ZN2pw18bluetooth_sapphire7testing17FakeLeaseProviderC2Ev:
   23|  6.11k|  FakeLeaseProvider() = default;
_ZN2pw18bluetooth_sapphire7testing17FakeLeaseProvider7AcquireEPKc:
   28|  1.16M|  Result<Lease> Acquire(PW_SAPPHIRE_LEASE_TOKEN_TYPE) override {
   29|  1.16M|    if (!status_.ok()) {
  ------------------
  |  Branch (29:9): [True: 0, False: 1.16M]
  ------------------
   30|      0|      return status_;
   31|      0|    }
   32|  1.16M|    lease_count_++;
   33|  1.16M|    return Lease([this]() { lease_count_--; });
   34|  1.16M|  }
_ZZN2pw18bluetooth_sapphire7testing17FakeLeaseProvider7AcquireEPKcENKUlvE_clEv:
   33|  1.16M|    return Lease([this]() { lease_count_--; });

_ZN2pw18bluetooth_sapphire13LeaseProviderD2Ev:
   54|  6.11k|  virtual ~LeaseProvider() = default;
_ZN2pw18bluetooth_sapphire5LeaseC2EN3fit13function_implILm8ELb0EFvvENSt3__19allocatorISt4byteEEEE:
   34|  1.16M|  Lease(pw::Function<void()> unlock_fn) : unlock_fn_(std::move(unlock_fn)) {}
_ZN2pw18bluetooth_sapphire5LeaseC2EOS1_:
   35|  2.80M|  Lease(Lease&&) = default;
_ZN2pw18bluetooth_sapphire5LeaseD2Ev:
   40|  4.39M|  ~Lease() {
   41|  4.39M|    if (unlock_fn_) {
  ------------------
  |  Branch (41:9): [True: 1.16M, False: 3.22M]
  ------------------
   42|  1.16M|      unlock_fn_();
   43|  1.16M|    }
   44|  4.39M|  }
_ZN2pw18bluetooth_sapphire5LeaseC2Ev:
   33|   419k|  Lease() = default;

_ZN2bt17MutableByteBuffer9AsMutableINS_8hci_spec13ACLDataHeaderEEEPT_v:
  330|  1.08M|  T* AsMutable() {
  331|  1.08M|    static_assert(std::is_trivially_copyable_v<T>);
  332|  1.08M|    PW_CHECK(size() >= sizeof(T));
  ------------------
  |  |   39|  1.08M|  do {                                                                         \
  |  |   40|  1.08M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 1.08M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  1.08M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  333|  1.08M|    return reinterpret_cast<T*>(mutable_data());
  334|  1.08M|  }
_ZNK2bt10ByteBuffer10ReadMemberITnDaXadL_ZNS_8hci_spec13ACLDataHeader16handle_and_flagsEEEEEDav:
  165|   543k|  auto ReadMember() const {
  166|   543k|    using ClassT = typename bt_lib_cpp_type::MemberPointerTraits<
  167|   543k|        PointerToMember>::ClassType;
  168|   543k|    PW_CHECK(sizeof(ClassT) <= this->size(),
  ------------------
  |  |   39|   543k|  do {                                                                         \
  |  |   40|   543k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 543k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   543k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  169|   543k|             "insufficient buffer (class size: %zu, buffer size: %zu)",
  170|   543k|             sizeof(ClassT),
  171|   543k|             this->size());
  172|   543k|    using MemberT = typename bt_lib_cpp_type::MemberPointerTraits<
  173|   543k|        PointerToMember>::MemberType;
  174|       |    if constexpr (std::is_array_v<MemberT>) {
  175|       |      static_assert(
  176|       |          std::extent_v<MemberT> > 0,
  177|       |          "use indexed overload of ReadMember for flexible array members");
  178|       |    }
  179|   543k|    using ReturnType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<MemberT>>;
  180|       |
  181|       |    // std::array is required to be an aggregate that's list-initialized per
  182|       |    // ISO/IEC 14882:2017(E) § 26.3.7.1 [array.overview] ¶ 2, so its layout's
  183|       |    // initial run is identical to a raw array.
  184|   543k|    static_assert(sizeof(MemberT) <= sizeof(ReturnType));
  185|   543k|    static_assert(std::is_trivially_copyable_v<MemberT>,
  186|   543k|                  "unsafe to copy representation");
  187|   543k|    static_assert(std::is_trivially_copyable_v<ReturnType>,
  188|   543k|                  "unsafe to copy representation");
  189|   543k|    ReturnType out{};
  190|   543k|    const size_t offset =
  191|   543k|        bt_lib_cpp_type::MemberPointerTraits<PointerToMember>::offset();
  192|   543k|    CopyRaw(/*dst_data=*/std::addressof(out),
  193|   543k|            /*dst_capacity=*/sizeof(out),
  194|   543k|            /*src_offset=*/offset,
  195|   543k|            /*copy_size=*/sizeof(MemberT));
  196|   543k|    return out;
  197|   543k|  }
_ZN2bt10ByteBufferD2Ev:
   48|  17.2M|  virtual ~ByteBuffer() = default;
_ZN2bt17MutableByteBuffer5WriteERKNS_10ByteBufferEm:
  337|   514k|  inline void Write(const ByteBuffer& data, size_t pos = 0) {
  338|   514k|    Write(data.data(), data.size(), pos);
  339|   514k|  }
_ZNK2bt10ByteBuffer2ToIjEEDav:
  129|    440|  [[nodiscard]] auto To() const {
  130|    440|    static_assert(std::is_trivially_copyable_v<T>,
  131|    440|                  "unsafe to copy representation");
  132|    440|    static_assert(std::is_default_constructible_v<T>);
  133|    440|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|    440|    OutType out{};
  141|    440|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|    440|            /*dst_capacity=*/sizeof(out),
  143|    440|            /*src_offset=*/0,
  144|    440|            /*copy_size=*/sizeof(out));
  145|    440|    return out;
  146|    440|  }
_ZNK2bt10ByteBuffer2ToImEEDav:
  129|    836|  [[nodiscard]] auto To() const {
  130|    836|    static_assert(std::is_trivially_copyable_v<T>,
  131|    836|                  "unsafe to copy representation");
  132|    836|    static_assert(std::is_default_constructible_v<T>);
  133|    836|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|    836|    OutType out{};
  141|    836|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|    836|            /*dst_capacity=*/sizeof(out),
  143|    836|            /*src_offset=*/0,
  144|    836|            /*copy_size=*/sizeof(out));
  145|    836|    return out;
  146|    836|  }
_ZN2bt17DynamicByteBufferD2Ev:
  472|  2.91M|  ~DynamicByteBuffer() override = default;
_ZNK2bt10ByteBuffer2ToINS_5l2cap13CommandHeaderEEEDav:
  129|  1.41M|  [[nodiscard]] auto To() const {
  130|  1.41M|    static_assert(std::is_trivially_copyable_v<T>,
  131|  1.41M|                  "unsafe to copy representation");
  132|  1.41M|    static_assert(std::is_default_constructible_v<T>);
  133|  1.41M|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|  1.41M|    OutType out{};
  141|  1.41M|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|  1.41M|            /*dst_capacity=*/sizeof(out),
  143|  1.41M|            /*src_offset=*/0,
  144|  1.41M|            /*copy_size=*/sizeof(out));
  145|  1.41M|    return out;
  146|  1.41M|  }
_ZNK2bt16StaticByteBufferILm4EE4sizeEv:
  443|  2.19M|  size_t size() const override { return buffer_.size(); }
_ZN2bt16StaticByteBufferILm4EEC2Ev:
  395|   365k|  StaticByteBuffer() {
  396|   365k|    static_assert(BufferSize, "|BufferSize| must be non-zero");
  397|   365k|  }
_ZNK2bt16StaticByteBufferILm4EE4dataEv:
  442|   365k|  const uint8_t* data() const override { return buffer_.data(); }
_ZN2bt16StaticByteBufferILm4EE12mutable_dataEv:
  448|   365k|  uint8_t* mutable_data() override { return buffer_.data(); }
_ZN2bt17MutableByteBuffer8WriteObjINS_5l2cap11BasicHeaderEEEvRKT_m:
  351|   365k|  void WriteObj(const T& data, size_t pos = 0) {
  352|       |    // ByteBuffers are (mostly?) not TriviallyCopyable, but check this first for
  353|       |    // the error to be useful.
  354|   365k|    static_assert(!std::is_base_of_v<ByteBuffer, T>,
  355|   365k|                  "ByteBuffer passed to WriteObj; use Write");
  356|   365k|    static_assert(!std::is_pointer_v<T>,
  357|   365k|                  "Pointer passed to WriteObj, deref or use Write");
  358|   365k|    static_assert(std::is_trivially_copyable_v<T>,
  359|   365k|                  "Unsafe to peek byte representation");
  360|   365k|    Write(reinterpret_cast<const uint8_t*>(&data), sizeof(T), pos);
  361|   365k|  }
_ZNK2bt10ByteBuffer10ReadMemberITnDaXadL_ZNS_5l2cap20CommandRejectPayload6reasonEEEEEDav:
  165|  1.32k|  auto ReadMember() const {
  166|  1.32k|    using ClassT = typename bt_lib_cpp_type::MemberPointerTraits<
  167|  1.32k|        PointerToMember>::ClassType;
  168|  1.32k|    PW_CHECK(sizeof(ClassT) <= this->size(),
  ------------------
  |  |   39|  1.32k|  do {                                                                         \
  |  |   40|  1.32k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 1.32k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  1.32k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  169|  1.32k|             "insufficient buffer (class size: %zu, buffer size: %zu)",
  170|  1.32k|             sizeof(ClassT),
  171|  1.32k|             this->size());
  172|  1.32k|    using MemberT = typename bt_lib_cpp_type::MemberPointerTraits<
  173|  1.32k|        PointerToMember>::MemberType;
  174|       |    if constexpr (std::is_array_v<MemberT>) {
  175|       |      static_assert(
  176|       |          std::extent_v<MemberT> > 0,
  177|       |          "use indexed overload of ReadMember for flexible array members");
  178|       |    }
  179|  1.32k|    using ReturnType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<MemberT>>;
  180|       |
  181|       |    // std::array is required to be an aggregate that's list-initialized per
  182|       |    // ISO/IEC 14882:2017(E) § 26.3.7.1 [array.overview] ¶ 2, so its layout's
  183|       |    // initial run is identical to a raw array.
  184|  1.32k|    static_assert(sizeof(MemberT) <= sizeof(ReturnType));
  185|  1.32k|    static_assert(std::is_trivially_copyable_v<MemberT>,
  186|  1.32k|                  "unsafe to copy representation");
  187|  1.32k|    static_assert(std::is_trivially_copyable_v<ReturnType>,
  188|  1.32k|                  "unsafe to copy representation");
  189|  1.32k|    ReturnType out{};
  190|  1.32k|    const size_t offset =
  191|  1.32k|        bt_lib_cpp_type::MemberPointerTraits<PointerToMember>::offset();
  192|  1.32k|    CopyRaw(/*dst_data=*/std::addressof(out),
  193|  1.32k|            /*dst_capacity=*/sizeof(out),
  194|  1.32k|            /*src_offset=*/offset,
  195|  1.32k|            /*copy_size=*/sizeof(MemberT));
  196|  1.32k|    return out;
  197|  1.32k|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap17InvalidCIDPayloadEEEDav:
  129|     98|  [[nodiscard]] auto To() const {
  130|     98|    static_assert(std::is_trivially_copyable_v<T>,
  131|     98|                  "unsafe to copy representation");
  132|     98|    static_assert(std::is_default_constructible_v<T>);
  133|     98|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|     98|    OutType out{};
  141|     98|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|     98|            /*dst_capacity=*/sizeof(out),
  143|     98|            /*src_offset=*/0,
  144|     98|            /*copy_size=*/sizeof(out));
  145|     98|    return out;
  146|     98|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap28DisconnectionResponsePayloadEEEDav:
  129|     17|  [[nodiscard]] auto To() const {
  130|     17|    static_assert(std::is_trivially_copyable_v<T>,
  131|     17|                  "unsafe to copy representation");
  132|     17|    static_assert(std::is_default_constructible_v<T>);
  133|     17|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|     17|    OutType out{};
  141|     17|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|     17|            /*dst_capacity=*/sizeof(out),
  143|     17|            /*src_offset=*/0,
  144|     17|            /*copy_size=*/sizeof(out));
  145|     17|    return out;
  146|     17|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap27DisconnectionRequestPayloadEEEDav:
  129|  4.74k|  [[nodiscard]] auto To() const {
  130|  4.74k|    static_assert(std::is_trivially_copyable_v<T>,
  131|  4.74k|                  "unsafe to copy representation");
  132|  4.74k|    static_assert(std::is_default_constructible_v<T>);
  133|  4.74k|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|  4.74k|    OutType out{};
  141|  4.74k|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|  4.74k|            /*dst_capacity=*/sizeof(out),
  143|  4.74k|            /*src_offset=*/0,
  144|  4.74k|            /*copy_size=*/sizeof(out));
  145|  4.74k|    return out;
  146|  4.74k|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap28ConfigurationResponsePayloadEEEDav:
  129|  4.46k|  [[nodiscard]] auto To() const {
  130|  4.46k|    static_assert(std::is_trivially_copyable_v<T>,
  131|  4.46k|                  "unsafe to copy representation");
  132|  4.46k|    static_assert(std::is_default_constructible_v<T>);
  133|  4.46k|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|  4.46k|    OutType out{};
  141|  4.46k|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|  4.46k|            /*dst_capacity=*/sizeof(out),
  143|  4.46k|            /*src_offset=*/0,
  144|  4.46k|            /*copy_size=*/sizeof(out));
  145|  4.46k|    return out;
  146|  4.46k|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap26InformationResponsePayloadEEEDav:
  129|  2.19k|  [[nodiscard]] auto To() const {
  130|  2.19k|    static_assert(std::is_trivially_copyable_v<T>,
  131|  2.19k|                  "unsafe to copy representation");
  132|  2.19k|    static_assert(std::is_default_constructible_v<T>);
  133|  2.19k|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|  2.19k|    OutType out{};
  141|  2.19k|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|  2.19k|            /*dst_capacity=*/sizeof(out),
  143|  2.19k|            /*src_offset=*/0,
  144|  2.19k|            /*copy_size=*/sizeof(out));
  145|  2.19k|    return out;
  146|  2.19k|  }
_ZN2bt16StaticByteBufferILm12EEC2Ev:
  395|    573|  StaticByteBuffer() {
  396|    573|    static_assert(BufferSize, "|BufferSize| must be non-zero");
  397|    573|  }
_ZNK2bt16StaticByteBufferILm12EE4dataEv:
  442|    573|  const uint8_t* data() const override { return buffer_.data(); }
_ZNK2bt16StaticByteBufferILm12EE4sizeEv:
  443|  5.15k|  size_t size() const override { return buffer_.size(); }
_ZN2bt16StaticByteBufferILm12EE12mutable_dataEv:
  448|  1.71k|  uint8_t* mutable_data() override { return buffer_.data(); }
_ZNK2bt10ByteBuffer2ToINS_5l2cap24ConnectionRequestPayloadEEEDav:
  129|  30.5k|  [[nodiscard]] auto To() const {
  130|  30.5k|    static_assert(std::is_trivially_copyable_v<T>,
  131|  30.5k|                  "unsafe to copy representation");
  132|  30.5k|    static_assert(std::is_default_constructible_v<T>);
  133|  30.5k|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|  30.5k|    OutType out{};
  141|  30.5k|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|  30.5k|            /*dst_capacity=*/sizeof(out),
  143|  30.5k|            /*src_offset=*/0,
  144|  30.5k|            /*copy_size=*/sizeof(out));
  145|  30.5k|    return out;
  146|  30.5k|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap27ConfigurationRequestPayloadEEEDav:
  129|  48.9k|  [[nodiscard]] auto To() const {
  130|  48.9k|    static_assert(std::is_trivially_copyable_v<T>,
  131|  48.9k|                  "unsafe to copy representation");
  132|  48.9k|    static_assert(std::is_default_constructible_v<T>);
  133|  48.9k|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|  48.9k|    OutType out{};
  141|  48.9k|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|  48.9k|            /*dst_capacity=*/sizeof(out),
  143|  48.9k|            /*src_offset=*/0,
  144|  48.9k|            /*copy_size=*/sizeof(out));
  145|  48.9k|    return out;
  146|  48.9k|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap25InformationRequestPayloadEEEDav:
  129|    788|  [[nodiscard]] auto To() const {
  130|    788|    static_assert(std::is_trivially_copyable_v<T>,
  131|    788|                  "unsafe to copy representation");
  132|    788|    static_assert(std::is_default_constructible_v<T>);
  133|    788|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|    788|    OutType out{};
  141|    788|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|    788|            /*dst_capacity=*/sizeof(out),
  143|    788|            /*src_offset=*/0,
  144|    788|            /*copy_size=*/sizeof(out));
  145|    788|    return out;
  146|    788|  }
_ZNK2bt10ByteBuffer10ReadMemberITnDaXadL_ZNS_5l2cap16MtuOptionPayload3mtuEEEEEDav:
  165|    549|  auto ReadMember() const {
  166|    549|    using ClassT = typename bt_lib_cpp_type::MemberPointerTraits<
  167|    549|        PointerToMember>::ClassType;
  168|    549|    PW_CHECK(sizeof(ClassT) <= this->size(),
  ------------------
  |  |   39|    549|  do {                                                                         \
  |  |   40|    549|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 549]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    549|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  169|    549|             "insufficient buffer (class size: %zu, buffer size: %zu)",
  170|    549|             sizeof(ClassT),
  171|    549|             this->size());
  172|    549|    using MemberT = typename bt_lib_cpp_type::MemberPointerTraits<
  173|    549|        PointerToMember>::MemberType;
  174|       |    if constexpr (std::is_array_v<MemberT>) {
  175|       |      static_assert(
  176|       |          std::extent_v<MemberT> > 0,
  177|       |          "use indexed overload of ReadMember for flexible array members");
  178|       |    }
  179|    549|    using ReturnType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<MemberT>>;
  180|       |
  181|       |    // std::array is required to be an aggregate that's list-initialized per
  182|       |    // ISO/IEC 14882:2017(E) § 26.3.7.1 [array.overview] ¶ 2, so its layout's
  183|       |    // initial run is identical to a raw array.
  184|    549|    static_assert(sizeof(MemberT) <= sizeof(ReturnType));
  185|    549|    static_assert(std::is_trivially_copyable_v<MemberT>,
  186|    549|                  "unsafe to copy representation");
  187|    549|    static_assert(std::is_trivially_copyable_v<ReturnType>,
  188|    549|                  "unsafe to copy representation");
  189|    549|    ReturnType out{};
  190|    549|    const size_t offset =
  191|    549|        bt_lib_cpp_type::MemberPointerTraits<PointerToMember>::offset();
  192|    549|    CopyRaw(/*dst_data=*/std::addressof(out),
  193|    549|            /*dst_capacity=*/sizeof(out),
  194|    549|            /*src_offset=*/offset,
  195|    549|            /*copy_size=*/sizeof(MemberT));
  196|    549|    return out;
  197|    549|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap41RetransmissionAndFlowControlOptionPayloadEEEDav:
  129|    344|  [[nodiscard]] auto To() const {
  130|    344|    static_assert(std::is_trivially_copyable_v<T>,
  131|    344|                  "unsafe to copy representation");
  132|    344|    static_assert(std::is_default_constructible_v<T>);
  133|    344|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|    344|    OutType out{};
  141|    344|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|    344|            /*dst_capacity=*/sizeof(out),
  143|    344|            /*src_offset=*/0,
  144|    344|            /*copy_size=*/sizeof(out));
  145|    344|    return out;
  146|    344|  }
_ZNK2bt10ByteBuffer10ReadMemberITnDaXadL_ZNS_5l2cap31FrameCheckSequenceOptionPayload8fcs_typeEEEEEDav:
  165|    667|  auto ReadMember() const {
  166|    667|    using ClassT = typename bt_lib_cpp_type::MemberPointerTraits<
  167|    667|        PointerToMember>::ClassType;
  168|    667|    PW_CHECK(sizeof(ClassT) <= this->size(),
  ------------------
  |  |   39|    667|  do {                                                                         \
  |  |   40|    667|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 667]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    667|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  169|    667|             "insufficient buffer (class size: %zu, buffer size: %zu)",
  170|    667|             sizeof(ClassT),
  171|    667|             this->size());
  172|    667|    using MemberT = typename bt_lib_cpp_type::MemberPointerTraits<
  173|    667|        PointerToMember>::MemberType;
  174|       |    if constexpr (std::is_array_v<MemberT>) {
  175|       |      static_assert(
  176|       |          std::extent_v<MemberT> > 0,
  177|       |          "use indexed overload of ReadMember for flexible array members");
  178|       |    }
  179|    667|    using ReturnType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<MemberT>>;
  180|       |
  181|       |    // std::array is required to be an aggregate that's list-initialized per
  182|       |    // ISO/IEC 14882:2017(E) § 26.3.7.1 [array.overview] ¶ 2, so its layout's
  183|       |    // initial run is identical to a raw array.
  184|    667|    static_assert(sizeof(MemberT) <= sizeof(ReturnType));
  185|    667|    static_assert(std::is_trivially_copyable_v<MemberT>,
  186|    667|                  "unsafe to copy representation");
  187|    667|    static_assert(std::is_trivially_copyable_v<ReturnType>,
  188|    667|                  "unsafe to copy representation");
  189|    667|    ReturnType out{};
  190|    667|    const size_t offset =
  191|    667|        bt_lib_cpp_type::MemberPointerTraits<PointerToMember>::offset();
  192|    667|    CopyRaw(/*dst_data=*/std::addressof(out),
  193|    667|            /*dst_capacity=*/sizeof(out),
  194|    667|            /*src_offset=*/offset,
  195|    667|            /*copy_size=*/sizeof(MemberT));
  196|    667|    return out;
  197|    667|  }
_ZNK2bt10ByteBuffer10ReadMemberITnDaXadL_ZNS_5l2cap25FlushTimeoutOptionPayload13flush_timeoutEEEEEDav:
  165|    598|  auto ReadMember() const {
  166|    598|    using ClassT = typename bt_lib_cpp_type::MemberPointerTraits<
  167|    598|        PointerToMember>::ClassType;
  168|    598|    PW_CHECK(sizeof(ClassT) <= this->size(),
  ------------------
  |  |   39|    598|  do {                                                                         \
  |  |   40|    598|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 598]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    598|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  169|    598|             "insufficient buffer (class size: %zu, buffer size: %zu)",
  170|    598|             sizeof(ClassT),
  171|    598|             this->size());
  172|    598|    using MemberT = typename bt_lib_cpp_type::MemberPointerTraits<
  173|    598|        PointerToMember>::MemberType;
  174|       |    if constexpr (std::is_array_v<MemberT>) {
  175|       |      static_assert(
  176|       |          std::extent_v<MemberT> > 0,
  177|       |          "use indexed overload of ReadMember for flexible array members");
  178|       |    }
  179|    598|    using ReturnType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<MemberT>>;
  180|       |
  181|       |    // std::array is required to be an aggregate that's list-initialized per
  182|       |    // ISO/IEC 14882:2017(E) § 26.3.7.1 [array.overview] ¶ 2, so its layout's
  183|       |    // initial run is identical to a raw array.
  184|    598|    static_assert(sizeof(MemberT) <= sizeof(ReturnType));
  185|    598|    static_assert(std::is_trivially_copyable_v<MemberT>,
  186|    598|                  "unsafe to copy representation");
  187|    598|    static_assert(std::is_trivially_copyable_v<ReturnType>,
  188|    598|                  "unsafe to copy representation");
  189|    598|    ReturnType out{};
  190|    598|    const size_t offset =
  191|    598|        bt_lib_cpp_type::MemberPointerTraits<PointerToMember>::offset();
  192|    598|    CopyRaw(/*dst_data=*/std::addressof(out),
  193|    598|            /*dst_capacity=*/sizeof(out),
  194|    598|            /*src_offset=*/offset,
  195|    598|            /*copy_size=*/sizeof(MemberT));
  196|    598|    return out;
  197|    598|  }
_ZNK2bt10ByteBuffer2ToINS_5l2cap19ConfigurationOptionEEEDav:
  129|   431k|  [[nodiscard]] auto To() const {
  130|   431k|    static_assert(std::is_trivially_copyable_v<T>,
  131|   431k|                  "unsafe to copy representation");
  132|   431k|    static_assert(std::is_default_constructible_v<T>);
  133|   431k|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|   431k|    OutType out{};
  141|   431k|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|   431k|            /*dst_capacity=*/sizeof(out),
  143|   431k|            /*src_offset=*/0,
  144|   431k|            /*copy_size=*/sizeof(out));
  145|   431k|    return out;
  146|   431k|  }
_ZN2bt17MutableByteBuffer8WriteObjINS_5l2cap16MtuOptionPayloadEEEvRKT_m:
  351|  11.9k|  void WriteObj(const T& data, size_t pos = 0) {
  352|       |    // ByteBuffers are (mostly?) not TriviallyCopyable, but check this first for
  353|       |    // the error to be useful.
  354|  11.9k|    static_assert(!std::is_base_of_v<ByteBuffer, T>,
  355|  11.9k|                  "ByteBuffer passed to WriteObj; use Write");
  356|  11.9k|    static_assert(!std::is_pointer_v<T>,
  357|  11.9k|                  "Pointer passed to WriteObj, deref or use Write");
  358|  11.9k|    static_assert(std::is_trivially_copyable_v<T>,
  359|  11.9k|                  "Unsafe to peek byte representation");
  360|  11.9k|    Write(reinterpret_cast<const uint8_t*>(&data), sizeof(T), pos);
  361|  11.9k|  }
_ZN2bt17MutableByteBuffer8WriteObjINS_5l2cap41RetransmissionAndFlowControlOptionPayloadEEEvRKT_m:
  351|    182|  void WriteObj(const T& data, size_t pos = 0) {
  352|       |    // ByteBuffers are (mostly?) not TriviallyCopyable, but check this first for
  353|       |    // the error to be useful.
  354|    182|    static_assert(!std::is_base_of_v<ByteBuffer, T>,
  355|    182|                  "ByteBuffer passed to WriteObj; use Write");
  356|    182|    static_assert(!std::is_pointer_v<T>,
  357|    182|                  "Pointer passed to WriteObj, deref or use Write");
  358|    182|    static_assert(std::is_trivially_copyable_v<T>,
  359|    182|                  "Unsafe to peek byte representation");
  360|    182|    Write(reinterpret_cast<const uint8_t*>(&data), sizeof(T), pos);
  361|    182|  }
_ZN2bt16StaticByteBufferILm6EEC2Ev:
  395|  58.9k|  StaticByteBuffer() {
  396|  58.9k|    static_assert(BufferSize, "|BufferSize| must be non-zero");
  397|  58.9k|  }
_ZNK2bt16StaticByteBufferILm6EE4dataEv:
  442|  58.9k|  const uint8_t* data() const override { return buffer_.data(); }
_ZNK2bt16StaticByteBufferILm6EE4sizeEv:
  443|   412k|  size_t size() const override { return buffer_.size(); }
_ZN2bt16StaticByteBufferILm6EE12mutable_dataEv:
  448|   117k|  uint8_t* mutable_data() override { return buffer_.data(); }
_ZN2bt16StaticByteBufferILm68EEC2Ev:
  395|   897k|  StaticByteBuffer() {
  396|   897k|    static_assert(BufferSize, "|BufferSize| must be non-zero");
  397|   897k|  }
_ZNK2bt16StaticByteBufferILm68EE4dataEv:
  442|  4.38M|  const uint8_t* data() const override { return buffer_.data(); }
_ZNK2bt16StaticByteBufferILm68EE4sizeEv:
  443|  13.4M|  size_t size() const override { return buffer_.size(); }
_ZN2bt16StaticByteBufferILm68EE12mutable_dataEv:
  448|  1.62M|  uint8_t* mutable_data() override { return buffer_.data(); }
_ZN2bt16StaticByteBufferILm260EEC2Ev:
  395|  11.9k|  StaticByteBuffer() {
  396|  11.9k|    static_assert(BufferSize, "|BufferSize| must be non-zero");
  397|  11.9k|  }
_ZNK2bt16StaticByteBufferILm260EE4dataEv:
  442|  82.4k|  const uint8_t* data() const override { return buffer_.data(); }
_ZNK2bt16StaticByteBufferILm260EE4sizeEv:
  443|   212k|  size_t size() const override { return buffer_.size(); }
_ZN2bt16StaticByteBufferILm260EE12mutable_dataEv:
  448|  11.9k|  uint8_t* mutable_data() override { return buffer_.data(); }
_ZNK2bt10ByteBuffer2ToINS_8hci_spec13ACLDataHeaderEEEDav:
  129|  3.63M|  [[nodiscard]] auto To() const {
  130|  3.63M|    static_assert(std::is_trivially_copyable_v<T>,
  131|  3.63M|                  "unsafe to copy representation");
  132|  3.63M|    static_assert(std::is_default_constructible_v<T>);
  133|  3.63M|    using OutType = std::remove_cv_t<bt_lib_cpp_type::ToStdArrayT<T>>;
  134|       |
  135|       |    // This is value-initialized in order to construct objects that have const
  136|       |    // members. The consideration for modifying the object through its
  137|       |    // representation even if the constituent types are cv-qualified is based on
  138|       |    // the potent rules for memcpy'ing "underlying bytes" at ISO/IEC
  139|       |    // 14882:2017(E) § 6.9 [basic.types] ¶ 4.2–4.3.
  140|  3.63M|    OutType out{};
  141|  3.63M|    CopyRaw(/*dst_data=*/std::addressof(out),
  142|  3.63M|            /*dst_capacity=*/sizeof(out),
  143|  3.63M|            /*src_offset=*/0,
  144|  3.63M|            /*copy_size=*/sizeof(out));
  145|  3.63M|    return out;
  146|  3.63M|  }

_ZNK7inspect4NodecvbEv:
   43|   291k|  explicit operator bool() const { return false; }
_ZN7inspect8PropertyImE3SetERKm:
   28|   371k|  void Set(const T& /*value*/) {}

_ZN2bt11InspectableINSt3__16chrono8durationIlNS1_5ratioILl1ELl1000000000EEEEEN7inspect12UintPropertyEmEC2ES6_N3fit13function_implILm16ELb0EFmRKS6_ENS1_9allocatorISt4byteEEEE:
  105|   142k|      : value_(std::move(initial_value)), convert_(std::move(convert)) {}
_ZN2bt11InspectableINSt3__16chrono8durationIlNS1_5ratioILl1ELl1000000000EEEEEN7inspect12UintPropertyEmED2Ev:
  116|   142k|  virtual ~Inspectable() = default;
_ZN2bt11InspectableImN7inspect12UintPropertyEmEC2EmN3fit13function_implILm16ELb0EFmRKmENSt3__19allocatorISt4byteEEEE:
  105|  15.2k|      : value_(std::move(initial_value)), convert_(std::move(convert)) {}
_ZN2bt11InspectableImN7inspect12UintPropertyEmED2Ev:
  116|  15.2k|  virtual ~Inspectable() = default;
_ZN2bt11InspectableImN7inspect12UintPropertyEmE14DefaultConvertERKm:
  155|   371k|  static PropertyInnerT DefaultConvert(const ValueT& value) { return value; }
_ZNK2bt11InspectableImN7inspect12UintPropertyEmE5valueEv:
  118|  6.11k|  const ValueT& value() const { return value_; }
_ZN2bt11InspectableImN7inspect12UintPropertyEmE3SetEOm:
  132|  6.11k|  const ValueT& Set(ValueT&& value) {
  133|  6.11k|    value_ = std::move(value);
  134|  6.11k|    UpdateProperty();
  135|  6.11k|    return value_;
  136|  6.11k|  }
_ZN2bt11InspectableImN7inspect12UintPropertyEmE14UpdatePropertyEv:
  158|   371k|  void UpdateProperty() { property_.Set(convert_(value_)); }
_ZN2bt11InspectableImN7inspect12UintPropertyEmEC2EN3fit13function_implILm16ELb0EFmRKmENSt3__19allocatorISt4byteEEEE:
  109|  6.11k|      : Inspectable(ValueT(), std::move(convert)) {
  110|  6.11k|    static_assert(std::is_default_constructible<ValueT>(),
  111|  6.11k|                  "ValueT is not default constructable");
  112|  6.11k|  }
_ZNK2bt11InspectableImN7inspect12UintPropertyEmEdeEv:
  120|  1.12M|  const ValueT& operator*() const { return value_; }
_ZN2bt11InspectableImN7inspect12UintPropertyEmE7MutableEv:
  150|   365k|  InspectableGuard<ValueT> Mutable() {
  151|   365k|    return InspectableGuard(
  152|   365k|        value_, fit::bind_member<&Inspectable::UpdateProperty>(this));
  153|   365k|  }
_ZN2bt16InspectableGuardImEC2ERmN3fit13function_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEE:
   43|   365k|      : value_(value), update_cb_(std::move(update_cb)) {}
_ZN2bt16InspectableGuardImED2Ev:
   44|   365k|  ~InspectableGuard() { update_cb_(); }
_ZN2bt16InspectableGuardImEdeEv:
   46|   365k|  ValueT& operator*() { return value_; }

_ZN2bt8internal11CheckFormatEPKcz:
  129|  2.59M|constexpr void CheckFormat([[maybe_unused]] const char* fmt, ...) {}

_ZNK2bt14PacketViewBase4dataEv:
   33|   442k|  BufferView data() const { return buffer_->view(0, size_); }
_ZNK2bt14PacketViewBase12payload_dataEv:
   34|   641k|  BufferView payload_data() const {
   35|   641k|    return buffer_->view(header_size(), size_ - header_size());
   36|   641k|  }
_ZNK2bt14PacketViewBase4sizeEv:
   38|  7.09M|  size_t size() const { return size_; }
_ZNK2bt14PacketViewBase12payload_sizeEv:
   39|  1.65M|  size_t payload_size() const {
   40|  1.65M|    PW_CHECK(size() >= header_size());
  ------------------
  |  |   39|  1.65M|  do {                                                                         \
  |  |   40|  1.65M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 1.65M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  1.65M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   41|  1.65M|    return size() - header_size();
   42|  1.65M|  }
_ZN2bt14PacketViewBase6ResizeEm:
   55|   543k|  void Resize(size_t payload_size) {
   56|   543k|    this->set_size(header_size() + payload_size);
   57|   543k|  }
_ZN2bt14PacketViewBaseC2EmPKNS_10ByteBufferEm:
   67|  2.20M|      : header_size_(header_size),
   68|  2.20M|        buffer_(buffer),
   69|  2.20M|        size_(header_size_ + payload_size) {
   70|  2.20M|    PW_CHECK(buffer_);
  ------------------
  |  |   39|  2.20M|  do {                                                                         \
  |  |   40|  2.20M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 2.20M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  2.20M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   71|  2.20M|    PW_CHECK(buffer_->size() >= size_,
  ------------------
  |  |   39|  2.20M|  do {                                                                         \
  |  |   40|  2.20M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 2.20M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  2.20M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   72|  2.20M|             "view size %zu exceeds buffer size %zu",
   73|  2.20M|             size_,
   74|  2.20M|             buffer_->size());
   75|  2.20M|  }
_ZN2bt14PacketViewBase8set_sizeEm:
   82|   543k|  void set_size(size_t size) {
   83|   543k|    PW_CHECK(buffer_->size() >= size);
  ------------------
  |  |   39|   543k|  do {                                                                         \
  |  |   40|   543k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 543k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   543k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   84|   543k|    PW_CHECK(size >= header_size());
  ------------------
  |  |   39|   543k|  do {                                                                         \
  |  |   40|   543k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 543k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   543k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   85|   543k|    size_ = size;
   86|   543k|  }
_ZNK2bt14PacketViewBase11header_sizeEv:
   88|  7.53M|  size_t header_size() const { return header_size_; }
_ZNK2bt14PacketViewBase6bufferEv:
   90|  9.21M|  const ByteBuffer* buffer() const { return buffer_; }
_ZNK2bt14PacketViewBase12mutable_dataEv:
   93|  2.75M|  MutableBufferView mutable_data() const {
   94|  2.75M|    return mutable_buffer()->mutable_view(0, this->size());
   95|  2.75M|  }
_ZNK2bt14PacketViewBase20mutable_payload_dataEv:
   98|   920k|  MutableBufferView mutable_payload_data() const {
   99|   920k|    return mutable_buffer()->mutable_view(header_size(),
  100|   920k|                                          this->size() - header_size());
  101|   920k|  }
_ZNK2bt14PacketViewBase14mutable_bufferEv:
  111|  3.67M|  MutableByteBuffer* mutable_buffer() const {
  112|       |    // For use only by MutableBufferView, which is constructed with a
  113|       |    // MutableBufferView*. This restores the mutability that is implicitly
  114|       |    // upcasted away when stored in this Base class.
  115|  3.67M|    return const_cast<MutableByteBuffer*>(
  116|  3.67M|        static_cast<const MutableByteBuffer*>(this->buffer()));
  117|  3.67M|  }
_ZN2bt10PacketViewINS_5l2cap13CommandHeaderEEC2EPKNS_10ByteBufferEm:
  174|  1.03M|      : PacketViewBase(sizeof(HeaderType), buffer, payload_size) {}
_ZNK2bt10PacketViewINS_5l2cap13CommandHeaderEE6headerEv:
  176|  1.41M|  HeaderType header() const { return buffer()->template To<HeaderType>(); }
_ZN2bt10PacketViewINS_5l2cap28ConfigurationResponsePayloadEEC2EPKNS_10ByteBufferEm:
  174|  19.1k|      : PacketViewBase(sizeof(HeaderType), buffer, payload_size) {}
_ZNK2bt10PacketViewINS_5l2cap28ConfigurationResponsePayloadEE6headerEv:
  176|  4.46k|  HeaderType header() const { return buffer()->template To<HeaderType>(); }
_ZN2bt10PacketViewINS_5l2cap26InformationResponsePayloadEEC2EPKNS_10ByteBufferEm:
  174|  1.66k|      : PacketViewBase(sizeof(HeaderType), buffer, payload_size) {}
_ZNK2bt10PacketViewINS_5l2cap26InformationResponsePayloadEE6headerEv:
  176|  2.19k|  HeaderType header() const { return buffer()->template To<HeaderType>(); }
_ZN2bt17MutablePacketViewINS_5l2cap28ConfigurationResponsePayloadEEC2EPNS_17MutableByteBufferEm:
  184|  17.6k|      : PacketView<HeaderType>(buffer, payload_size) {}
_ZNK2bt17MutablePacketViewINS_5l2cap28ConfigurationResponsePayloadEE14mutable_headerEv:
  190|  52.9k|  HeaderType* mutable_header() const {
  191|  52.9k|    return reinterpret_cast<HeaderType*>(mutable_data().mutable_data());
  192|  52.9k|  }
_ZN2bt17MutablePacketViewINS_5l2cap26InformationResponsePayloadEEC2EPNS_17MutableByteBufferEm:
  184|    573|      : PacketView<HeaderType>(buffer, payload_size) {}
_ZNK2bt17MutablePacketViewINS_5l2cap26InformationResponsePayloadEE14mutable_headerEv:
  190|  1.14k|  HeaderType* mutable_header() const {
  191|  1.14k|    return reinterpret_cast<HeaderType*>(mutable_data().mutable_data());
  192|  1.14k|  }
_ZN2bt17MutablePacketViewINS_5l2cap27ConfigurationRequestPayloadEEC2EPNS_17MutableByteBufferEm:
  184|  10.8k|      : PacketView<HeaderType>(buffer, payload_size) {}
_ZN2bt10PacketViewINS_5l2cap27ConfigurationRequestPayloadEEC2EPKNS_10ByteBufferEm:
  174|  35.2k|      : PacketViewBase(sizeof(HeaderType), buffer, payload_size) {}
_ZNK2bt17MutablePacketViewINS_5l2cap27ConfigurationRequestPayloadEE14mutable_headerEv:
  190|  21.6k|  HeaderType* mutable_header() const {
  191|  21.6k|    return reinterpret_cast<HeaderType*>(mutable_data().mutable_data());
  192|  21.6k|  }
_ZNK2bt10PacketViewINS_5l2cap27ConfigurationRequestPayloadEE6headerEv:
  176|  48.9k|  HeaderType header() const { return buffer()->template To<HeaderType>(); }
_ZN2bt10PacketViewINS_5l2cap19ConfigurationOptionEEC2EPKNS_10ByteBufferEm:
  174|   150k|      : PacketViewBase(sizeof(HeaderType), buffer, payload_size) {}
_ZNK2bt10PacketViewINS_5l2cap19ConfigurationOptionEE6headerEv:
  176|   431k|  HeaderType header() const { return buffer()->template To<HeaderType>(); }
_ZN2bt17MutablePacketViewINS_5l2cap19ConfigurationOptionEEC2EPNS_17MutableByteBufferEm:
  184|  59.3k|      : PacketView<HeaderType>(buffer, payload_size) {}
_ZNK2bt17MutablePacketViewINS_5l2cap19ConfigurationOptionEE14mutable_headerEv:
  190|   118k|  HeaderType* mutable_header() const {
  191|   118k|    return reinterpret_cast<HeaderType*>(mutable_data().mutable_data());
  192|   118k|  }
_ZNK2bt14PacketViewBase7payloadINS_5l2cap11BasicHeaderEEERKT_v:
   45|   415k|  const PayloadType& payload() const {
   46|   415k|    PW_CHECK(sizeof(PayloadType) <= payload_size());
  ------------------
  |  |   39|   415k|  do {                                                                         \
  |  |   40|   415k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 415k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   415k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   47|   415k|    return *reinterpret_cast<const PayloadType*>(payload_data().data());
   48|   415k|  }
_ZN2bt17MutablePacketViewINS_5l2cap13CommandHeaderEEC2EPNS_17MutableByteBufferEm:
  184|   407k|      : PacketView<HeaderType>(buffer, payload_size) {}
_ZNK2bt17MutablePacketViewINS_5l2cap13CommandHeaderEE14mutable_headerEv:
  190|  1.22M|  HeaderType* mutable_header() const {
  191|  1.22M|    return reinterpret_cast<HeaderType*>(mutable_data().mutable_data());
  192|  1.22M|  }
_ZN2bt17MutablePacketViewINS_5l2cap20CommandRejectPayloadEEC2EPNS_17MutableByteBufferEm:
  184|  58.9k|      : PacketView<HeaderType>(buffer, payload_size) {}
_ZN2bt10PacketViewINS_5l2cap20CommandRejectPayloadEEC2EPKNS_10ByteBufferEm:
  174|  58.9k|      : PacketViewBase(sizeof(HeaderType), buffer, payload_size) {}
_ZNK2bt17MutablePacketViewINS_5l2cap20CommandRejectPayloadEE14mutable_headerEv:
  190|  58.9k|  HeaderType* mutable_header() const {
  191|  58.9k|    return reinterpret_cast<HeaderType*>(mutable_data().mutable_data());
  192|  58.9k|  }
_ZN2bt17MutablePacketViewINS_8hci_spec13ACLDataHeaderEEC2EPNS_17MutableByteBufferEm:
  184|   909k|      : PacketView<HeaderType>(buffer, payload_size) {}
_ZN2bt10PacketViewINS_8hci_spec13ACLDataHeaderEEC2EPKNS_10ByteBufferEm:
  174|   909k|      : PacketViewBase(sizeof(HeaderType), buffer, payload_size) {}
_ZNK2bt10PacketViewINS_8hci_spec13ACLDataHeaderEE6headerEv:
  176|  3.63M|  HeaderType header() const { return buffer()->template To<HeaderType>(); }
_ZNK2bt17MutablePacketViewINS_8hci_spec13ACLDataHeaderEE14mutable_headerEv:
  190|   731k|  HeaderType* mutable_header() const {
  191|   731k|    return reinterpret_cast<HeaderType*>(mutable_data().mutable_data());
  192|   731k|  }

_ZN2bt9SmartTaskC2ERN2pw5async10DispatcherEON3fit13function_implILm8ELb0EFvRNS2_7ContextENS1_6StatusEENSt3__19allocatorISt4byteEEEE:
   29|   297k|      : dispatcher_(dispatcher), func_(std::move(func)) {}
_ZN2bt9SmartTaskD2Ev:
   31|   297k|  ~SmartTask() {
   32|   297k|    if (pending_) {
  ------------------
  |  Branch (32:9): [True: 297k, False: 0]
  ------------------
   33|   297k|      PW_CHECK(Cancel());
  ------------------
  |  |   39|   297k|  do {                                                                         \
  |  |   40|   297k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 297k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   297k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   34|   297k|    }
   35|   297k|  }
_ZN2bt9SmartTask9PostAfterENSt3__16chrono8durationIlNS1_5ratioILl1ELl1000000000EEEEE:
   42|   297k|  void PostAfter(pw::chrono::SystemClock::duration delay) {
   43|   297k|    pending_ = true;
   44|   297k|    dispatcher_.PostAfter(task_, delay);
   45|   297k|  }
_ZN2bt9SmartTask6CancelEv:
   52|   297k|  bool Cancel() {
   53|   297k|    pending_ = false;
   54|   297k|    return dispatcher_.Cancel(task_);
   55|   297k|  }
_ZN2bt9SmartTask12set_functionEON3fit13function_implILm8ELb0EFvRN2pw5async7ContextENS3_6StatusEENSt3__19allocatorISt4byteEEEE:
   57|   297k|  void set_function(pw::async::TaskFunction&& func) { func_ = std::move(func); }

_ZN2bt8internal8ToStringINS_5l2cap8internal20ChannelConfigurationEEENSt3__19enable_ifIXsr6detailE20HasToStringMemberFnVIT_EENS5_12basic_stringIcNS5_11char_traitsIcEENS5_9allocatorIcEEEEE4typeERKS7_:
   45|  31.1k|    const T& value) {
   46|  31.1k|  return value.ToString();
   47|  31.1k|}

_ZN7WeakPtrIN2bt7testing16FuzzerControllerE18DynamicWeakManagerIS2_EEC2Ev:
  165|  3.05k|  WeakPtr() : ptr_(nullptr) {}
_ZN8WeakSelfIN2bt7testing16FuzzerControllerE18DynamicWeakManagerIS2_EEC2EPS2_:
  253|  3.05k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt7testing16FuzzerControllerEEC2EPS2_:
  132|  3.05k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt7testing16FuzzerControllerE18DynamicWeakManagerIS2_EED2Ev:
  254|  3.05k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt7testing16FuzzerControllerEED2Ev:
  136|  3.05k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt7testing16FuzzerControllerEE13InvalidateAllEv:
  145|  3.05k|  void InvalidateAll() {
  146|  3.05k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 3.05k, False: 0]
  ------------------
  147|  3.05k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|  3.05k|    }
  149|  3.05k|  }
_ZN7WeakRef11maybe_unsetEPKv:
   47|   739k|  void maybe_unset(const void* doomed) {
   48|   739k|    if (ptr_ == doomed) {
  ------------------
  |  Branch (48:9): [True: 739k, False: 0]
  ------------------
   49|   739k|      ptr_ = nullptr;
   50|   739k|    }
   51|   739k|  }
_ZN8WeakSelfIN2bt7testing16FuzzerControllerE18DynamicWeakManagerIS2_EE10GetWeakPtrEv:
  264|  3.05k|  WeakPtr GetWeakPtr() {
  265|  3.05k|    auto weak_ref = manager_.GetWeakRef();
  266|  3.05k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|  3.05k|  do {                                                                         \
  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|  3.05k|    return WeakPtr(*std::move(weak_ref));
  268|  3.05k|  }
_ZN18DynamicWeakManagerIN2bt7testing16FuzzerControllerEE10GetWeakRefEv:
  138|  3.05k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|  3.05k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 3.05k, False: 0]
  ------------------
  140|  3.05k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|  3.05k|    }
  142|  3.05k|    return weak_ptr_ref_;
  143|  3.05k|  }
_ZN7WeakRefC2EPv:
   57|   739k|  explicit WeakRef(void* ptr) : ptr_(ptr) {}
_ZN7WeakPtrIN2bt7testing16FuzzerControllerE18DynamicWeakManagerIS2_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|  3.05k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt7testing16FuzzerControllerE18DynamicWeakManagerIS2_EEptEv:
  184|   546k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt7testing16FuzzerControllerE18DynamicWeakManagerIS2_EE3getEv:
  179|   546k|  T& get() const {
  180|   546k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|   546k|  do {                                                                         \
  |  |   40|   546k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 546k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   546k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|   546k|    return *static_cast<T*>(ptr_->get());
  182|   546k|  }
_ZN7WeakRef3getEv:
   40|  7.09M|  void* get() {
   41|  7.09M|    PW_CHECK(ptr_, "attempted to get a destroyed ptr");
  ------------------
  |  |   39|  7.09M|  do {                                                                         \
  |  |   40|  7.09M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 7.09M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  7.09M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   42|  7.09M|    return ptr_;
   43|  7.09M|  }
_ZNK7WeakPtrIN2bt5l2cap7ChannelE18DynamicWeakManagerIS2_EE8is_aliveEv:
  178|   835k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 835k, False: 0]
  |  Branch (178:42): [True: 692k, False: 142k]
  ------------------
_ZN7WeakRef8is_aliveEv:
   37|  4.29M|  bool is_alive() { return !!ptr_; }
_ZNK7WeakPtrIN2bt5l2cap7ChannelE18DynamicWeakManagerIS2_EEptEv:
  184|   143k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt5l2cap7ChannelE18DynamicWeakManagerIS2_EE3getEv:
  179|   835k|  T& get() const {
  180|   835k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|   835k|  do {                                                                         \
  |  |   40|   835k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 835k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   835k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|   835k|    return *static_cast<T*>(ptr_->get());
  182|   835k|  }
_ZN8WeakSelfIN2bt3hci14CommandChannelE18DynamicWeakManagerIS2_EE10GetWeakPtrEv:
  264|   146k|  WeakPtr GetWeakPtr() {
  265|   146k|    auto weak_ref = manager_.GetWeakRef();
  266|   146k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|   146k|  do {                                                                         \
  |  |   40|   146k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 146k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   146k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|   146k|    return WeakPtr(*std::move(weak_ref));
  268|   146k|  }
_ZN18DynamicWeakManagerIN2bt3hci14CommandChannelEE10GetWeakRefEv:
  138|   146k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|   146k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 3.05k, False: 143k]
  ------------------
  140|  3.05k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|  3.05k|    }
  142|   146k|    return weak_ptr_ref_;
  143|   146k|  }
_ZN18DynamicWeakManagerIN2bt5l2cap18A2dpOffloadManagerEE13InvalidateAllEv:
  145|  3.05k|  void InvalidateAll() {
  146|  3.05k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 0, False: 3.05k]
  ------------------
  147|      0|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|      0|    }
  149|  3.05k|  }
_ZN8WeakSelfIN2bt5l2cap8internal11ChannelImplE18DynamicWeakManagerIS3_EE10GetWeakPtrEv:
  264|   793k|  WeakPtr GetWeakPtr() {
  265|   793k|    auto weak_ref = manager_.GetWeakRef();
  266|   793k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|   793k|  do {                                                                         \
  |  |   40|   793k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 793k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   793k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|   793k|    return WeakPtr(*std::move(weak_ref));
  268|   793k|  }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal11ChannelImplEE10GetWeakRefEv:
  138|   793k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|   793k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 143k, False: 650k]
  ------------------
  140|   143k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|   143k|    }
  142|   793k|    return weak_ptr_ref_;
  143|   793k|  }
_ZN7WeakPtrIN2bt3hci14CommandChannelE18DynamicWeakManagerIS2_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|   146k|      : ptr_(std::move(ptr)) {}
_ZN8WeakSelfIN2bt5l2cap18ChannelManagerImplE18DynamicWeakManagerIS2_EED2Ev:
  254|  3.05k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt5l2cap18ChannelManagerImplEED2Ev:
  136|  3.05k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt5l2cap18ChannelManagerImplEE13InvalidateAllEv:
  145|  3.05k|  void InvalidateAll() {
  146|  3.05k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 3.05k, False: 0]
  ------------------
  147|  3.05k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|  3.05k|    }
  149|  3.05k|  }
_ZN8WeakSelfIN2bt5l2cap8internal11LogicalLinkE18DynamicWeakManagerIS3_EE10GetWeakPtrEv:
  264|   285k|  WeakPtr GetWeakPtr() {
  265|   285k|    auto weak_ref = manager_.GetWeakRef();
  266|   285k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|   285k|  do {                                                                         \
  |  |   40|   285k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 285k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   285k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|   285k|    return WeakPtr(*std::move(weak_ref));
  268|   285k|  }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal11LogicalLinkEE10GetWeakRefEv:
  138|   285k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|   285k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 142k, False: 143k]
  ------------------
  140|   142k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|   142k|    }
  142|   285k|    return weak_ptr_ref_;
  143|   285k|  }
_ZN7WeakPtrIN2bt5l2cap8internal11LogicalLinkE18DynamicWeakManagerIS3_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|   285k|      : ptr_(std::move(ptr)) {}
_ZN8WeakSelfIN2bt5l2cap18A2dpOffloadManagerE18DynamicWeakManagerIS2_EEC2EPS2_:
  253|  3.05k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt5l2cap18A2dpOffloadManagerEEC2EPS2_:
  132|  3.05k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt5l2cap18A2dpOffloadManagerE18DynamicWeakManagerIS2_EED2Ev:
  254|  3.05k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt5l2cap18A2dpOffloadManagerEED2Ev:
  136|  3.05k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN8WeakSelfIN2bt5l2cap18ChannelManagerImplE18DynamicWeakManagerIS2_EEC2EPS2_:
  253|  3.05k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt5l2cap18ChannelManagerImplEEC2EPS2_:
  132|  3.05k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt5l2cap18ChannelManagerImplE18DynamicWeakManagerIS2_EE10GetWeakPtrEv:
  264|  3.05k|  WeakPtr GetWeakPtr() {
  265|  3.05k|    auto weak_ref = manager_.GetWeakRef();
  266|  3.05k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|  3.05k|  do {                                                                         \
  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|  3.05k|    return WeakPtr(*std::move(weak_ref));
  268|  3.05k|  }
_ZN18DynamicWeakManagerIN2bt5l2cap18ChannelManagerImplEE10GetWeakRefEv:
  138|  3.05k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|  3.05k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 3.05k, False: 0]
  ------------------
  140|  3.05k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|  3.05k|    }
  142|  3.05k|    return weak_ptr_ref_;
  143|  3.05k|  }
_ZN7WeakPtrIN2bt5l2cap18ChannelManagerImplE18DynamicWeakManagerIS2_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|  3.05k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt5l2cap18ChannelManagerImplE18DynamicWeakManagerIS2_EE8is_aliveEv:
  178|   543k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 543k, False: 0]
  |  Branch (178:42): [True: 543k, False: 0]
  ------------------
_ZNK7WeakPtrIN2bt5l2cap18ChannelManagerImplE18DynamicWeakManagerIS2_EEptEv:
  184|   543k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt5l2cap18ChannelManagerImplE18DynamicWeakManagerIS2_EE3getEv:
  179|   543k|  T& get() const {
  180|   543k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|   543k|  do {                                                                         \
  |  |   40|   543k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 543k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   543k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|   543k|    return *static_cast<T*>(ptr_->get());
  182|   543k|  }
_ZN7WeakPtrIN2bt5l2cap7ChannelE18DynamicWeakManagerIS2_EEC2Ev:
  165|    149|  WeakPtr() : ptr_(nullptr) {}
_ZN7WeakPtrIN2bt5l2cap8internal11LogicalLinkE18DynamicWeakManagerIS3_EEC2Ev:
  165|   143k|  WeakPtr() : ptr_(nullptr) {}
_ZN8WeakSelfIN2bt5l2cap8internal11LogicalLinkE18DynamicWeakManagerIS3_EED2Ev:
  254|   142k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt5l2cap8internal11LogicalLinkEED2Ev:
  136|   142k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal11LogicalLinkEE13InvalidateAllEv:
  145|   142k|  void InvalidateAll() {
  146|   142k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 142k, False: 0]
  ------------------
  147|   142k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|   142k|    }
  149|   142k|  }
_ZN8WeakSelfIN2bt3hci14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS3_EED2Ev:
  254|   142k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt3hci14AclDataChannel19ConnectionInterfaceEED2Ev:
  136|   142k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt3hci14AclDataChannel19ConnectionInterfaceEE13InvalidateAllEv:
  145|   142k|  void InvalidateAll() {
  146|   142k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 142k, False: 0]
  ------------------
  147|   142k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|   142k|    }
  149|   142k|  }
_ZN7WeakPtrIN2bt5l2cap8internal11ChannelImplE18DynamicWeakManagerIS3_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|   793k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt5l2cap8internal11LogicalLinkE18DynamicWeakManagerIS3_EE8is_aliveEv:
  178|  1.43M|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 1.43M, False: 0]
  |  Branch (178:42): [True: 1.43M, False: 0]
  ------------------
_ZNK7WeakPtrIN2bt5l2cap8internal11LogicalLinkE18DynamicWeakManagerIS3_EEptEv:
  184|   951k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt5l2cap8internal11LogicalLinkE18DynamicWeakManagerIS3_EE3getEv:
  179|   951k|  T& get() const {
  180|   951k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|   951k|  do {                                                                         \
  |  |   40|   951k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 951k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   951k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|   951k|    return *static_cast<T*>(ptr_->get());
  182|   951k|  }
_ZN8WeakSelfIN2bt3hci14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS3_EEC2EPS3_:
  253|   142k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt3hci14AclDataChannel19ConnectionInterfaceEEC2EPS3_:
  132|   142k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt5l2cap8internal11LogicalLinkE18DynamicWeakManagerIS3_EEC2EPS3_:
  253|   142k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt5l2cap8internal11LogicalLinkEEC2EPS3_:
  132|   142k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN7WeakPtrIN2bt5l2cap8internal11ChannelImplE18DynamicWeakManagerIS3_EEC2Ev:
  165|   515k|  WeakPtr() : ptr_(nullptr) {}
_ZN8WeakSelfIN2bt3hci14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS3_EE10GetWeakPtrEv:
  264|   142k|  WeakPtr GetWeakPtr() {
  265|   142k|    auto weak_ref = manager_.GetWeakRef();
  266|   142k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|   142k|    return WeakPtr(*std::move(weak_ref));
  268|   142k|  }
_ZN18DynamicWeakManagerIN2bt3hci14AclDataChannel19ConnectionInterfaceEE10GetWeakRefEv:
  138|   142k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|   142k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 142k, False: 0]
  ------------------
  140|   142k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|   142k|    }
  142|   142k|    return weak_ptr_ref_;
  143|   142k|  }
_ZN7WeakPtrIN2bt3hci14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS3_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|   142k|      : ptr_(std::move(ptr)) {}
_ZN8WeakSelfIN2bt5l2cap8internal16SignalingChannelE18DynamicWeakManagerIS3_EED2Ev:
  254|   142k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt5l2cap8internal16SignalingChannelEED2Ev:
  136|   142k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal16SignalingChannelEE13InvalidateAllEv:
  145|   142k|  void InvalidateAll() {
  146|   142k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 142k, False: 0]
  ------------------
  147|   142k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|   142k|    }
  149|   142k|  }
_ZN8WeakSelfIN2bt5l2cap8internal22DynamicChannelRegistryE18DynamicWeakManagerIS3_EED2Ev:
  254|   142k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt5l2cap8internal22DynamicChannelRegistryEED2Ev:
  136|   142k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal22DynamicChannelRegistryEE13InvalidateAllEv:
  145|   142k|  void InvalidateAll() {
  146|   142k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 142k, False: 0]
  ------------------
  147|   142k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|   142k|    }
  149|   142k|  }
_ZN7WeakPtrIN2bt5l2cap7ChannelE18DynamicWeakManagerIS2_EEC2INS1_8internal11ChannelImplEvEEOS_IT_S3_IS9_EE:
  176|   285k|  WeakPtr(WeakPtr<U>&& r) : WeakPtr(std::move(r.ptr_)) {}
_ZN7WeakPtrIN2bt5l2cap7ChannelE18DynamicWeakManagerIS2_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|   285k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt5l2cap8internal11ChannelImplE18DynamicWeakManagerIS3_EE8is_aliveEv:
  178|   747k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 602k, False: 144k]
  |  Branch (178:42): [True: 602k, False: 0]
  ------------------
_ZNK7WeakPtrIN2bt5l2cap8internal11ChannelImplE18DynamicWeakManagerIS3_EEptEv:
  184|   602k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt5l2cap8internal11ChannelImplE18DynamicWeakManagerIS3_EE3getEv:
  179|   602k|  T& get() const {
  180|   602k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|   602k|  do {                                                                         \
  |  |   40|   602k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 602k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   602k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|   602k|    return *static_cast<T*>(ptr_->get());
  182|   602k|  }
_ZN8WeakSelfIN2bt5l2cap7ChannelE18DynamicWeakManagerIS2_EED2Ev:
  254|   143k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt5l2cap7ChannelEED2Ev:
  136|   143k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt5l2cap7ChannelEE13InvalidateAllEv:
  145|   143k|  void InvalidateAll() {
  146|   143k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 0, False: 143k]
  ------------------
  147|      0|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|      0|    }
  149|   143k|  }
_ZN8WeakSelfIN2bt5l2cap8internal11ChannelImplE18DynamicWeakManagerIS3_EED2Ev:
  254|   143k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt5l2cap8internal11ChannelImplEED2Ev:
  136|   143k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal11ChannelImplEE13InvalidateAllEv:
  145|   143k|  void InvalidateAll() {
  146|   143k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 143k, False: 0]
  ------------------
  147|   143k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|   143k|    }
  149|   143k|  }
_ZN8WeakSelfIN2bt5l2cap7ChannelE18DynamicWeakManagerIS2_EEC2EPS2_:
  253|   143k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt5l2cap7ChannelEEC2EPS2_:
  132|   143k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt5l2cap8internal11ChannelImplE18DynamicWeakManagerIS3_EEC2EPS3_:
  253|   143k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt5l2cap8internal11ChannelImplEEC2EPS3_:
  132|   143k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZNK7WeakPtrIN2bt3hci14CommandChannelE18DynamicWeakManagerIS2_EE8is_aliveEv:
  178|   142k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 142k, False: 0]
  |  Branch (178:42): [True: 142k, False: 0]
  ------------------
_ZN8WeakSelfIN2bt5l2cap8internal22DynamicChannelRegistryE18DynamicWeakManagerIS3_EE10GetWeakPtrEv:
  264|   145k|  WeakPtr GetWeakPtr() {
  265|   145k|    auto weak_ref = manager_.GetWeakRef();
  266|   145k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|   145k|  do {                                                                         \
  |  |   40|   145k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 145k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   145k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|   145k|    return WeakPtr(*std::move(weak_ref));
  268|   145k|  }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal22DynamicChannelRegistryEE10GetWeakRefEv:
  138|   145k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|   145k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 142k, False: 3.28k]
  ------------------
  140|   142k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|   142k|    }
  142|   145k|    return weak_ptr_ref_;
  143|   145k|  }
_ZN7WeakPtrIN2bt5l2cap8internal22DynamicChannelRegistryE18DynamicWeakManagerIS3_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|   145k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt5l2cap8internal22DynamicChannelRegistryE18DynamicWeakManagerIS3_EE8is_aliveEv:
  178|  2.91k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 2.91k, False: 0]
  |  Branch (178:42): [True: 2.91k, False: 0]
  ------------------
_ZNK7WeakPtrIN2bt5l2cap8internal22DynamicChannelRegistryE18DynamicWeakManagerIS3_EEptEv:
  184|  2.27k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt5l2cap8internal22DynamicChannelRegistryE18DynamicWeakManagerIS3_EE3getEv:
  179|  2.27k|  T& get() const {
  180|  2.27k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|  2.27k|  do {                                                                         \
  |  |   40|  2.27k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 2.27k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  2.27k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|  2.27k|    return *static_cast<T*>(ptr_->get());
  182|  2.27k|  }
_ZN8WeakSelfIN2bt5l2cap8internal22DynamicChannelRegistryE18DynamicWeakManagerIS3_EEC2EPS3_:
  253|   142k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt5l2cap8internal22DynamicChannelRegistryEEC2EPS3_:
  132|   142k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt5l2cap8internal19BrEdrDynamicChannelE18DynamicWeakManagerIS3_EED2Ev:
  254|  10.7k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt5l2cap8internal19BrEdrDynamicChannelEED2Ev:
  136|  10.7k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal19BrEdrDynamicChannelEE13InvalidateAllEv:
  145|  10.7k|  void InvalidateAll() {
  146|  10.7k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 10.7k, False: 0]
  ------------------
  147|  10.7k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|  10.7k|    }
  149|  10.7k|  }
_ZN8WeakSelfIN2bt5l2cap8internal19BrEdrDynamicChannelE18DynamicWeakManagerIS3_EE10GetWeakPtrEv:
  264|  24.1k|  WeakPtr GetWeakPtr() {
  265|  24.1k|    auto weak_ref = manager_.GetWeakRef();
  266|  24.1k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|  24.1k|  do {                                                                         \
  |  |   40|  24.1k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 24.1k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  24.1k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|  24.1k|    return WeakPtr(*std::move(weak_ref));
  268|  24.1k|  }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal19BrEdrDynamicChannelEE10GetWeakRefEv:
  138|  24.1k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|  24.1k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 10.7k, False: 13.3k]
  ------------------
  140|  10.7k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|  10.7k|    }
  142|  24.1k|    return weak_ptr_ref_;
  143|  24.1k|  }
_ZN7WeakPtrIN2bt5l2cap8internal19BrEdrDynamicChannelE18DynamicWeakManagerIS3_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|  24.1k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt5l2cap8internal19BrEdrDynamicChannelE18DynamicWeakManagerIS3_EE8is_aliveEv:
  178|  2.44k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 2.44k, False: 0]
  |  Branch (178:42): [True: 2.42k, False: 22]
  ------------------
_ZNK7WeakPtrIN2bt5l2cap8internal19BrEdrDynamicChannelE18DynamicWeakManagerIS3_EEptEv:
  184|  2.18k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt5l2cap8internal19BrEdrDynamicChannelE18DynamicWeakManagerIS3_EE3getEv:
  179|  2.18k|  T& get() const {
  180|  2.18k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|  2.18k|  do {                                                                         \
  |  |   40|  2.18k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 2.18k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  2.18k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|  2.18k|    return *static_cast<T*>(ptr_->get());
  182|  2.18k|  }
_ZN8WeakSelfIN2bt5l2cap8internal19BrEdrDynamicChannelE18DynamicWeakManagerIS3_EEC2EPS3_:
  253|  10.7k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt5l2cap8internal19BrEdrDynamicChannelEEC2EPS3_:
  132|  10.7k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt5l2cap8internal16SignalingChannelE18DynamicWeakManagerIS3_EEC2EPS3_:
  253|   142k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt5l2cap8internal16SignalingChannelEEC2EPS3_:
  132|   142k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt5l2cap8internal16SignalingChannelE18DynamicWeakManagerIS3_EE10GetWeakPtrEv:
  264|   142k|  WeakPtr GetWeakPtr() {
  265|   142k|    auto weak_ref = manager_.GetWeakRef();
  266|   142k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|   142k|    return WeakPtr(*std::move(weak_ref));
  268|   142k|  }
_ZN18DynamicWeakManagerIN2bt5l2cap8internal16SignalingChannelEE10GetWeakRefEv:
  138|   142k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|   142k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 142k, False: 0]
  ------------------
  140|   142k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|   142k|    }
  142|   142k|    return weak_ptr_ref_;
  143|   142k|  }
_ZN7WeakPtrIN2bt5l2cap8internal16SignalingChannelE18DynamicWeakManagerIS3_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|   142k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt5l2cap8internal16SignalingChannelE18DynamicWeakManagerIS3_EE8is_aliveEv:
  178|   186k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 186k, False: 0]
  |  Branch (178:42): [True: 186k, False: 0]
  ------------------
_ZNK7WeakPtrIN2bt5l2cap8internal16SignalingChannelE18DynamicWeakManagerIS3_EEptEv:
  184|   186k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt5l2cap8internal16SignalingChannelE18DynamicWeakManagerIS3_EE3getEv:
  179|   186k|  T& get() const {
  180|   186k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|   186k|  do {                                                                         \
  |  |   40|   186k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 186k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   186k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|   186k|    return *static_cast<T*>(ptr_->get());
  182|   186k|  }
_ZN8WeakSelfIN2bt3hci14CommandChannelE18DynamicWeakManagerIS2_EED2Ev:
  254|  3.05k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt3hci14CommandChannelEED2Ev:
  136|  3.05k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt3hci14CommandChannelEE13InvalidateAllEv:
  145|  3.05k|  void InvalidateAll() {
  146|  3.05k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 3.05k, False: 0]
  ------------------
  147|  3.05k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|  3.05k|    }
  149|  3.05k|  }
_ZN8WeakSelfIN2bt3hci14CommandChannelE18DynamicWeakManagerIS2_EEC2EPS2_:
  253|  3.05k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt3hci14CommandChannelEEC2EPS2_:
  132|  3.05k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt3hci9TransportE18DynamicWeakManagerIS2_EED2Ev:
  254|  3.05k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt3hci9TransportEED2Ev:
  136|  3.05k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt3hci9TransportEE13InvalidateAllEv:
  145|  3.05k|  void InvalidateAll() {
  146|  3.05k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 3.05k, False: 0]
  ------------------
  147|  3.05k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|  3.05k|    }
  149|  3.05k|  }
_ZN8WeakSelfIN2bt3hci9TransportE18DynamicWeakManagerIS2_EEC2EPS2_:
  253|  3.05k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt3hci9TransportEEC2EPS2_:
  132|  3.05k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt3hci9TransportE18DynamicWeakManagerIS2_EE10GetWeakPtrEv:
  264|  3.05k|  WeakPtr GetWeakPtr() {
  265|  3.05k|    auto weak_ref = manager_.GetWeakRef();
  266|  3.05k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|  3.05k|  do {                                                                         \
  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|  3.05k|    return WeakPtr(*std::move(weak_ref));
  268|  3.05k|  }
_ZN18DynamicWeakManagerIN2bt3hci9TransportEE10GetWeakRefEv:
  138|  3.05k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|  3.05k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 3.05k, False: 0]
  ------------------
  140|  3.05k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|  3.05k|    }
  142|  3.05k|    return weak_ptr_ref_;
  143|  3.05k|  }
_ZN7WeakPtrIN2bt3hci9TransportE18DynamicWeakManagerIS2_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|  3.05k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt3hci9TransportE18DynamicWeakManagerIS2_EE8is_aliveEv:
  178|  6.11k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 6.11k, False: 0]
  |  Branch (178:42): [True: 6.11k, False: 0]
  ------------------
_ZNK7WeakPtrIN2bt3hci9TransportE18DynamicWeakManagerIS2_EEptEv:
  184|  21.3k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt3hci9TransportE18DynamicWeakManagerIS2_EE3getEv:
  179|  21.3k|  T& get() const {
  180|  21.3k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|  21.3k|  do {                                                                         \
  |  |   40|  21.3k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 21.3k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  21.3k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|  21.3k|    return *static_cast<T*>(ptr_->get());
  182|  21.3k|  }
_ZNK7WeakPtrIN2bt3hci14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS3_EEptEv:
  184|  2.85M|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt3hci14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS3_EE3getEv:
  179|  2.85M|  T& get() const {
  180|  2.85M|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|  2.85M|  do {                                                                         \
  |  |   40|  2.85M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 2.85M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  2.85M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|  2.85M|    return *static_cast<T*>(ptr_->get());
  182|  2.85M|  }
_ZN8WeakSelfIN2bt7testing24ControllerTestDoubleBaseE18DynamicWeakManagerIS2_EED2Ev:
  254|  3.05k|  ~WeakSelf() = default;
_ZN18DynamicWeakManagerIN2bt7testing24ControllerTestDoubleBaseEED2Ev:
  136|  3.05k|  ~DynamicWeakManager() { InvalidateAll(); }
_ZN18DynamicWeakManagerIN2bt7testing24ControllerTestDoubleBaseEE13InvalidateAllEv:
  145|  3.05k|  void InvalidateAll() {
  146|  3.05k|    if (weak_ptr_ref_) {
  ------------------
  |  Branch (146:9): [True: 3.04k, False: 14]
  ------------------
  147|  3.04k|      weak_ptr_ref_->maybe_unset(self_ptr_);
  148|  3.04k|    }
  149|  3.05k|  }
_ZN8WeakSelfIN2bt7testing24ControllerTestDoubleBaseE18DynamicWeakManagerIS2_EEC2EPS2_:
  253|  3.05k|  explicit WeakSelf(T* self_ptr) : manager_(self_ptr) {}
_ZN18DynamicWeakManagerIN2bt7testing24ControllerTestDoubleBaseEEC2EPS2_:
  132|  3.05k|      : self_ptr_(self_ptr), weak_ptr_ref_(nullptr) {}
_ZN8WeakSelfIN2bt7testing24ControllerTestDoubleBaseE18DynamicWeakManagerIS2_EE10GetWeakPtrEv:
  264|   543k|  WeakPtr GetWeakPtr() {
  265|   543k|    auto weak_ref = manager_.GetWeakRef();
  266|   543k|    PW_CHECK(weak_ref.has_value(), "weak pointer not available");
  ------------------
  |  |   39|   543k|  do {                                                                         \
  |  |   40|   543k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 543k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   543k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  267|   543k|    return WeakPtr(*std::move(weak_ref));
  268|   543k|  }
_ZN18DynamicWeakManagerIN2bt7testing24ControllerTestDoubleBaseEE10GetWeakRefEv:
  138|   543k|  std::optional<pw::IntrusivePtr<RefType>> GetWeakRef() {
  139|   543k|    if (weak_ptr_ref_ == nullptr) {
  ------------------
  |  Branch (139:9): [True: 3.04k, False: 540k]
  ------------------
  140|  3.04k|      weak_ptr_ref_ = pw::IntrusivePtr(new RefType(self_ptr_));
  141|  3.04k|    }
  142|   543k|    return weak_ptr_ref_;
  143|   543k|  }
_ZN7WeakPtrIN2bt7testing24ControllerTestDoubleBaseE18DynamicWeakManagerIS2_EEC2EON2pw12IntrusivePtrI7WeakRefEE:
  203|   543k|      : ptr_(std::move(ptr)) {}
_ZNK7WeakPtrIN2bt7testing24ControllerTestDoubleBaseE18DynamicWeakManagerIS2_EE8is_aliveEv:
  178|   543k|  bool is_alive() const { return ptr_ && ptr_->is_alive(); }
  ------------------
  |  Branch (178:34): [True: 543k, False: 0]
  |  Branch (178:42): [True: 543k, False: 0]
  ------------------
_ZNK7WeakPtrIN2bt7testing24ControllerTestDoubleBaseE18DynamicWeakManagerIS2_EEptEv:
  184|   543k|  T* operator->() const { return &get(); }
_ZNK7WeakPtrIN2bt7testing24ControllerTestDoubleBaseE18DynamicWeakManagerIS2_EE3getEv:
  179|   543k|  T& get() const {
  180|   543k|    PW_CHECK(ptr_, "tried to get never-assigned weak pointer");
  ------------------
  |  |   39|   543k|  do {                                                                         \
  |  |   40|   543k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 543k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   543k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|   543k|    return *static_cast<T*>(ptr_->get());
  182|   543k|  }

_ZN2bt5l2cap11PsmToStringEt:
  316|    180|inline std::string PsmToString(l2cap::Psm psm) {
  317|    180|  switch (psm) {
  ------------------
  |  Branch (317:11): [True: 0, False: 180]
  ------------------
  318|      0|    case kInvalidPsm:
  ------------------
  |  Branch (318:5): [True: 0, False: 180]
  ------------------
  319|      0|      return "InvalidPsm";
  320|      0|    case kSDP:
  ------------------
  |  Branch (320:5): [True: 0, False: 180]
  ------------------
  321|      0|      return "SDP";
  322|      0|    case kRFCOMM:
  ------------------
  |  Branch (322:5): [True: 0, False: 180]
  ------------------
  323|      0|      return "RFCOMM";
  324|      0|    case kTCSBIN:
  ------------------
  |  Branch (324:5): [True: 0, False: 180]
  ------------------
  325|      0|      return "TCSBIN";
  326|      0|    case kTCSBINCordless:
  ------------------
  |  Branch (326:5): [True: 0, False: 180]
  ------------------
  327|      0|      return "TCSBINCordless";
  328|      0|    case kBNEP:
  ------------------
  |  Branch (328:5): [True: 0, False: 180]
  ------------------
  329|      0|      return "BNEP";
  330|      0|    case kHIDControl:
  ------------------
  |  Branch (330:5): [True: 0, False: 180]
  ------------------
  331|      0|      return "HIDControl";
  332|      0|    case kHIDInteerup:
  ------------------
  |  Branch (332:5): [True: 0, False: 180]
  ------------------
  333|      0|      return "HIDInteerup";
  334|      0|    case kAVCTP:
  ------------------
  |  Branch (334:5): [True: 0, False: 180]
  ------------------
  335|      0|      return "AVCTP";
  336|    180|    case kAVDTP:
  ------------------
  |  Branch (336:5): [True: 180, False: 0]
  ------------------
  337|    180|      return "AVDTP";
  338|      0|    case kAVCTP_Browse:
  ------------------
  |  Branch (338:5): [True: 0, False: 180]
  ------------------
  339|      0|      return "AVCTP_Browse";
  340|      0|    case kATT:
  ------------------
  |  Branch (340:5): [True: 0, False: 180]
  ------------------
  341|      0|      return "ATT";
  342|      0|    case k3DSP:
  ------------------
  |  Branch (342:5): [True: 0, False: 180]
  ------------------
  343|      0|      return "3DSP";
  344|      0|    case kLE_IPSP:
  ------------------
  |  Branch (344:5): [True: 0, False: 180]
  ------------------
  345|      0|      return "LE_IPSP";
  346|      0|    case kOTS:
  ------------------
  |  Branch (346:5): [True: 0, False: 180]
  ------------------
  347|      0|      return "OTS";
  348|    180|  }
  349|      0|  return "PSM:" + std::to_string(psm);
  350|    180|}

_ZN2bt5l2cap18A2dpOffloadManagerC2E7WeakPtrINS_3hci14CommandChannelE18DynamicWeakManagerIS4_EE:
   49|  3.05k|      : cmd_channel_(std::move(cmd_channel)) {}

_ZN2bt5l2cap8internal17BasicModeRxEngineC2Ev:
   24|   143k|  BasicModeRxEngine() = default;
_ZN2bt5l2cap8internal17BasicModeRxEngine12IsQueueEmptyEv:
   29|   770k|  bool IsQueueEmpty() override { return true; }

_ZN2bt5l2cap8internal17BasicModeTxEngineC2EttRNS1_8TxEngine9TxChannelE:
   31|   143k|      : TxEngine(channel_id, max_tx_sdu_size, channel) {}
_ZN2bt5l2cap8internal17BasicModeTxEngine12IsQueueEmptyEv:
   39|   770k|  bool IsQueueEmpty() override {
   40|       |    // This class has no internal queue.
   41|   770k|    return true;
   42|   770k|  }

_ZNK2bt5l2cap8internal19BrEdrCommandHandler21ConfigurationResponse6resultEv:
   58|  2.83k|    ConfigurationResult result() const { return result_; }
_ZNK2bt5l2cap8internal19BrEdrCommandHandler21ConfigurationResponse6configEv:
   59|  2.31k|    const ChannelConfiguration& config() const { return config_; }
_ZNK2bt5l2cap8internal19BrEdrCommandHandler19InformationResponse4typeEv:
   77|  2.13k|    InformationType type() const { return type_; }
_ZNK2bt5l2cap8internal19BrEdrCommandHandler19InformationResponse6resultEv:
   78|  3.16k|    InformationResult result() const { return result_; }
_ZNK2bt5l2cap8internal19BrEdrCommandHandler19InformationResponse17extended_featuresEv:
   86|    440|    ExtendedFeatures extended_features() const {
   87|    440|      PW_CHECK(result() == InformationResult::kSuccess);
  ------------------
  |  |   39|    440|  do {                                                                         \
  |  |   40|    440|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 440]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    440|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   88|    440|      PW_CHECK(type() == InformationType::kExtendedFeaturesSupported);
  ------------------
  |  |   39|    440|  do {                                                                         \
  |  |   40|    440|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 440]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    440|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   89|    440|      return data_.To<ExtendedFeatures>();
   90|    440|    }
_ZNK2bt5l2cap8internal19BrEdrCommandHandler19InformationResponse14fixed_channelsEv:
   92|    836|    FixedChannelsSupported fixed_channels() const {
   93|    836|      PW_CHECK(result() == InformationResult::kSuccess);
  ------------------
  |  |   39|    836|  do {                                                                         \
  |  |   40|    836|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 836]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    836|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   94|    836|      PW_CHECK(type() == InformationType::kFixedChannelsSupported);
  ------------------
  |  |   39|    836|  do {                                                                         \
  |  |   40|    836|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 836]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    836|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   95|    836|      return data_.To<FixedChannelsSupported>();
   96|    836|    }

_ZNK2bt5l2cap8internal19BrEdrDynamicChannel13remote_configEv:
  199|    360|  const ChannelConfiguration& remote_config() const { return remote_config_; }
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel12local_configEv:
  203|  2.72k|  const ChannelConfiguration& local_config() const { return local_config_; }
_ZN2bt5l2cap8internal19BrEdrDynamicChannelD2Ev:
  165|  10.7k|  ~BrEdrDynamicChannel() override = default;

_ZNK2bt5l2cap7Channel2idEv:
   95|   571k|  ChannelId id() const { return id_; }
_ZNK2bt5l2cap7Channel9remote_idEv:
   99|   364k|  ChannelId remote_id() const { return remote_id_; }
_ZNK2bt5l2cap7Channel11link_handleEv:
  105|   285k|  hci_spec::ConnectionHandle link_handle() const { return link_handle_; }
_ZNK2bt5l2cap7Channel15max_tx_sdu_sizeEv:
  132|   143k|  uint16_t max_tx_sdu_size() const { return info().max_tx_sdu_size; }
_ZNK2bt5l2cap7Channel4infoEv:
  135|   872k|  const ChannelInfo& info() const { return info_; }
_ZNK2bt5l2cap7Channel13max_tx_queuedEv:
  137|   814k|  uint16_t max_tx_queued() const { return max_tx_queued_; }
_ZNK2bt5l2cap8internal11ChannelImpl7HasPDUsEv:
  316|  1.48M|  bool HasPDUs() const { return !pending_tx_pdus_.empty(); }
_ZNK2bt5l2cap8internal11ChannelImpl12HasFragmentsEv:
  318|  1.35M|  bool HasFragments() const { return !pending_tx_fragments_.empty(); }
_ZN2bt5l2cap8internal11ChannelImpl10GetWeakPtrEv:
  344|   793k|  WeakPtr GetWeakPtr() { return weak_self_.GetWeakPtr(); }
_ZN2bt5l2cap7ChannelD2Ev:
   89|   143k|  virtual ~Channel() = default;

_ZN2bt5l2cap8internal20ChannelConfiguration9MtuOptionC2Et:
   85|  26.0k|    explicit MtuOption(uint16_t mtu) : mtu_(mtu) {}
_ZNK2bt5l2cap8internal20ChannelConfiguration9MtuOption3mtuEv:
   91|  3.05k|    uint16_t mtu() const { return mtu_; }
_ZNK2bt5l2cap8internal20ChannelConfiguration9MtuOption4sizeEv:
  101|  11.9k|    size_t size() const override { return kEncodedSize; }
_ZNK2bt5l2cap8internal20ChannelConfiguration34RetransmissionAndFlowControlOption4modeEv:
  133|  16.5k|    RetransmissionAndFlowControlMode mode() const { return mode_; }
_ZNK2bt5l2cap8internal20ChannelConfiguration34RetransmissionAndFlowControlOption4sizeEv:
  178|    182|    size_t size() const override { return kEncodedSize; }
_ZNK2bt5l2cap8internal20ChannelConfiguration13UnknownOption4sizeEv:
  284|   173k|    size_t size() const override {
  285|   173k|      return sizeof(ConfigurationOption) + payload_.size();
  286|   173k|    }
_ZN2bt5l2cap8internal20ChannelConfiguration14set_mtu_optionENSt3__18optionalINS2_9MtuOptionEEE:
  314|  27.2k|  void set_mtu_option(std::optional<MtuOption> option) {
  315|  27.2k|    mtu_option_ = std::move(option);
  316|  27.2k|  }
_ZN2bt5l2cap8internal20ChannelConfiguration38set_retransmission_flow_control_optionENSt3__18optionalINS2_34RetransmissionAndFlowControlOptionEEE:
  319|  34.5k|      std::optional<RetransmissionAndFlowControlOption> option) {
  320|  34.5k|    retransmission_flow_control_option_ = std::move(option);
  321|  34.5k|  }
_ZNK2bt5l2cap8internal20ChannelConfiguration10mtu_optionEv:
  333|  8.56k|  const std::optional<MtuOption>& mtu_option() const { return mtu_option_; }
_ZNK2bt5l2cap8internal20ChannelConfiguration34retransmission_flow_control_optionEv:
  338|  34.2k|  retransmission_flow_control_option() const {
  339|  34.2k|    return retransmission_flow_control_option_;
  340|  34.2k|  }
_ZNK2bt5l2cap8internal20ChannelConfiguration15unknown_optionsEv:
  354|  4.79k|  const std::vector<UnknownOption>& unknown_options() const {
  355|  4.79k|    return unknown_options_;
  356|  4.79k|  }
_ZN2bt5l2cap8internal20ChannelConfiguration15OnReadMtuOptionENS2_9MtuOptionE:
  360|    549|  void OnReadMtuOption(MtuOption option) { mtu_option_ = option; }
_ZN2bt5l2cap8internal20ChannelConfiguration40OnReadRetransmissionAndFlowControlOptionENS2_34RetransmissionAndFlowControlOptionE:
  362|    344|      RetransmissionAndFlowControlOption option) {
  363|    344|    retransmission_flow_control_option_ = option;
  364|    344|  }
_ZN2bt5l2cap8internal20ChannelConfiguration30OnReadFrameCheckSequenceOptionENS2_24FrameCheckSequenceOptionE:
  365|    667|  void OnReadFrameCheckSequenceOption(FrameCheckSequenceOption option) {
  366|    667|    fcs_option_ = option;
  367|    667|  }
_ZN2bt5l2cap8internal20ChannelConfiguration24OnReadFlushTimeoutOptionENS2_18FlushTimeoutOptionE:
  368|    598|  void OnReadFlushTimeoutOption(FlushTimeoutOption option) {
  369|    598|    flush_timeout_option_ = option;
  370|    598|  }
_ZN2bt5l2cap8internal20ChannelConfiguration28ConfigurationOptionInterfaceD2Ev:
   65|   621k|    virtual ~ConfigurationOptionInterface() = default;

_ZN2bt5l2cap14ChannelManagerD2Ev:
   69|  3.05k|  virtual ~ChannelManager() = default;

_ZN2bt5l2cap8internal14CommandHandler8ResponseC2ENS1_25SignalingChannelInterface6StatusE:
  101|  4.35k|    explicit Response(Status status) : status_(status) {}
_ZNK2bt5l2cap8internal14CommandHandler8Response6statusEv:
  103|  3.50k|    Status status() const { return status_; }
_ZNK2bt5l2cap8internal14CommandHandler8Response9local_cidEv:
  107|  1.11k|    ChannelId local_cid() const { return local_cid_; }
_ZNK2bt5l2cap8internal14CommandHandler8Response10remote_cidEv:
  108|    297|    ChannelId remote_cid() const { return remote_cid_; }
_ZNK2bt5l2cap8internal14CommandHandler8Response13reject_reasonEv:
  112|  2.36k|    RejectReason reject_reason() const { return reject_reason_; }
_ZNK2bt5l2cap8internal14CommandHandler9Responder9local_cidEv:
  153|  11.3k|    ChannelId local_cid() const { return local_cid_; }
_ZNK2bt5l2cap8internal14CommandHandler9Responder10remote_cidEv:
  154|  41.8k|    ChannelId remote_cid() const { return remote_cid_; }
_ZNK2bt5l2cap8internal14CommandHandler3sigEv:
  278|   867k|  SignalingChannelInterface* sig() const { return sig_; }
_ZN2bt5l2cap8internal14CommandHandlerD2Ev:
  198|   439k|  virtual ~CommandHandler() = default;
_ZN2bt5l2cap8internal14CommandHandler20BuildResponseHandlerINS2_21DisconnectionResponseEN3fit13function_implILm16ELb0EFvRKS4_ENSt3__19allocatorISt4byteEEEEEENS6_ILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionENSF_6StatusERKNS_10ByteBufferEESD_EET0_:
  213|  1.25k|      CallbackT response_cb) {
  214|  1.25k|    return [rsp_cb = std::move(response_cb),
  215|  1.25k|            fail_cb = request_fail_callback_.share()](
  216|  1.25k|               Status status, const ByteBuffer& rsp_payload) {
  217|  1.25k|      if (status == Status::kTimeOut) {
  218|  1.25k|        bt_log(INFO,
  219|  1.25k|               "l2cap",
  220|  1.25k|               "cmd: timed out waiting for \"%s\"",
  221|  1.25k|               ResponseT::kName);
  222|  1.25k|        if (fail_cb) {
  223|  1.25k|          fail_cb();
  224|  1.25k|        }
  225|  1.25k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  226|  1.25k|      }
  227|       |
  228|  1.25k|      ResponseT rsp(status);
  229|  1.25k|      if (status == Status::kReject) {
  230|  1.25k|        if (!rsp.ParseReject(rsp_payload)) {
  231|  1.25k|          bt_log(DEBUG,
  232|  1.25k|                 "l2cap",
  233|  1.25k|                 "cmd: ignoring malformed Command Reject, size %zu",
  234|  1.25k|                 rsp_payload.size());
  235|  1.25k|          return ResponseHandlerAction::kCompleteOutboundTransaction;
  236|  1.25k|        }
  237|  1.25k|        return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  238|  1.25k|      }
  239|       |
  240|  1.25k|      if (rsp_payload.size() < sizeof(typename ResponseT::PayloadT)) {
  241|  1.25k|        bt_log(DEBUG,
  242|  1.25k|               "l2cap",
  243|  1.25k|               "cmd: ignoring malformed \"%s\", size %zu (expected %zu)",
  244|  1.25k|               ResponseT::kName,
  245|  1.25k|               rsp_payload.size(),
  246|  1.25k|               sizeof(typename ResponseT::PayloadT));
  247|  1.25k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  248|  1.25k|      }
  249|       |
  250|  1.25k|      if (!rsp.Decode(rsp_payload)) {
  251|  1.25k|        bt_log(DEBUG,
  252|  1.25k|               "l2cap",
  253|  1.25k|               "cmd: ignoring malformed \"%s\", could not decode",
  254|  1.25k|               ResponseT::kName);
  255|  1.25k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  256|  1.25k|      }
  257|       |
  258|  1.25k|      return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  259|  1.25k|    };
  260|  1.25k|  }
_ZZN2bt5l2cap8internal14CommandHandler20BuildResponseHandlerINS2_21DisconnectionResponseEN3fit13function_implILm16ELb0EFvRKS4_ENSt3__19allocatorISt4byteEEEEEENS6_ILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionENSF_6StatusERKNS_10ByteBufferEESD_EET0_ENKUlSH_SK_E_clESH_SK_:
  216|    301|               Status status, const ByteBuffer& rsp_payload) {
  217|    301|      if (status == Status::kTimeOut) {
  ------------------
  |  Branch (217:11): [True: 0, False: 301]
  ------------------
  218|      0|        bt_log(INFO,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  219|      0|               "l2cap",
  220|      0|               "cmd: timed out waiting for \"%s\"",
  221|      0|               ResponseT::kName);
  222|      0|        if (fail_cb) {
  ------------------
  |  Branch (222:13): [True: 0, False: 0]
  ------------------
  223|      0|          fail_cb();
  224|      0|        }
  225|      0|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  226|      0|      }
  227|       |
  228|    301|      ResponseT rsp(status);
  229|    301|      if (status == Status::kReject) {
  ------------------
  |  Branch (229:11): [True: 269, False: 32]
  ------------------
  230|    269|        if (!rsp.ParseReject(rsp_payload)) {
  ------------------
  |  Branch (230:13): [True: 43, False: 226]
  ------------------
  231|     43|          bt_log(DEBUG,
  ------------------
  |  |  141|     43|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     43|  do {                                                                     \
  |  |  |  |   74|     43|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     43|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     43|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     43|  do {                                                    \
  |  |  |  |  |  |   56|     43|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     43|           (flags),                                       \
  |  |  |  |  |  |   58|     43|           module,                                        \
  |  |  |  |  |  |   59|     43|           __FILE__,                                      \
  |  |  |  |  |  |   60|     43|           __LINE__,                                      \
  |  |  |  |  |  |   61|     43|           __func__,                                      \
  |  |  |  |  |  |   62|     43|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     43|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     43|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     43|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     43|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     43|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     43|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     43|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     43|    }                                                                      \
  |  |  |  |   77|     43|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     43|         PW_LOG_LEVEL,                             \
  |  |  143|     43|         tag,                                      \
  |  |  144|     43|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     43|         __VA_ARGS__);                             \
  |  |  146|     43|  ::bt::internal::CheckFormat(tag)
  ------------------
  232|     43|                 "l2cap",
  233|     43|                 "cmd: ignoring malformed Command Reject, size %zu",
  234|     43|                 rsp_payload.size());
  235|     43|          return ResponseHandlerAction::kCompleteOutboundTransaction;
  236|     43|        }
  237|    226|        return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  238|    269|      }
  239|       |
  240|     32|      if (rsp_payload.size() < sizeof(typename ResponseT::PayloadT)) {
  ------------------
  |  Branch (240:11): [True: 15, False: 17]
  ------------------
  241|     15|        bt_log(DEBUG,
  ------------------
  |  |  141|     15|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     15|  do {                                                                     \
  |  |  |  |   74|     15|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     15|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     15|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     15|  do {                                                    \
  |  |  |  |  |  |   56|     15|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     15|           (flags),                                       \
  |  |  |  |  |  |   58|     15|           module,                                        \
  |  |  |  |  |  |   59|     15|           __FILE__,                                      \
  |  |  |  |  |  |   60|     15|           __LINE__,                                      \
  |  |  |  |  |  |   61|     15|           __func__,                                      \
  |  |  |  |  |  |   62|     15|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     15|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     15|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     15|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     15|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     15|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     15|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     15|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     15|    }                                                                      \
  |  |  |  |   77|     15|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     15|         PW_LOG_LEVEL,                             \
  |  |  143|     15|         tag,                                      \
  |  |  144|     15|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     15|         __VA_ARGS__);                             \
  |  |  146|     15|  ::bt::internal::CheckFormat(tag)
  ------------------
  242|     15|               "l2cap",
  243|     15|               "cmd: ignoring malformed \"%s\", size %zu (expected %zu)",
  244|     15|               ResponseT::kName,
  245|     15|               rsp_payload.size(),
  246|     15|               sizeof(typename ResponseT::PayloadT));
  247|     15|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  248|     15|      }
  249|       |
  250|     17|      if (!rsp.Decode(rsp_payload)) {
  ------------------
  |  Branch (250:11): [True: 0, False: 17]
  ------------------
  251|      0|        bt_log(DEBUG,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  252|      0|               "l2cap",
  253|      0|               "cmd: ignoring malformed \"%s\", could not decode",
  254|      0|               ResponseT::kName);
  255|      0|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  256|      0|      }
  257|       |
  258|     17|      return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  259|     17|    };
_ZN2bt5l2cap8internal14CommandHandler22InvokeResponseCallbackIKN3fit13function_implILm16ELb0EFvRKNS2_21DisconnectionResponseEENSt3__19allocatorISt4byteEEEES6_EENS1_25SignalingChannelInterface21ResponseHandlerActionEPT_T0_:
  269|    243|      CallbackT* const rsp_cb, ResponseT rsp) {
  270|    243|    if constexpr (std::is_void_v<std::invoke_result_t<CallbackT, ResponseT>>) {
  271|    243|      (*rsp_cb)(rsp);
  272|    243|      return ResponseHandlerAction::kCompleteOutboundTransaction;
  273|       |    } else {
  274|       |      return (*rsp_cb)(rsp);
  275|       |    }
  276|    243|  }
_ZN2bt5l2cap8internal14CommandHandler9ResponderD2Ev:
  150|  60.5k|    virtual ~Responder() = default;
_ZN2bt5l2cap8internal14CommandHandler20BuildResponseHandlerINS1_19BrEdrCommandHandler21ConfigurationResponseEN3fit13function_implILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionERKS5_ENSt3__19allocatorISt4byteEEEEEENS7_ILm16ELb0EFS9_NS8_6StatusERKNS_10ByteBufferEESG_EET0_:
  213|  10.8k|      CallbackT response_cb) {
  214|  10.8k|    return [rsp_cb = std::move(response_cb),
  215|  10.8k|            fail_cb = request_fail_callback_.share()](
  216|  10.8k|               Status status, const ByteBuffer& rsp_payload) {
  217|  10.8k|      if (status == Status::kTimeOut) {
  218|  10.8k|        bt_log(INFO,
  219|  10.8k|               "l2cap",
  220|  10.8k|               "cmd: timed out waiting for \"%s\"",
  221|  10.8k|               ResponseT::kName);
  222|  10.8k|        if (fail_cb) {
  223|  10.8k|          fail_cb();
  224|  10.8k|        }
  225|  10.8k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  226|  10.8k|      }
  227|       |
  228|  10.8k|      ResponseT rsp(status);
  229|  10.8k|      if (status == Status::kReject) {
  230|  10.8k|        if (!rsp.ParseReject(rsp_payload)) {
  231|  10.8k|          bt_log(DEBUG,
  232|  10.8k|                 "l2cap",
  233|  10.8k|                 "cmd: ignoring malformed Command Reject, size %zu",
  234|  10.8k|                 rsp_payload.size());
  235|  10.8k|          return ResponseHandlerAction::kCompleteOutboundTransaction;
  236|  10.8k|        }
  237|  10.8k|        return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  238|  10.8k|      }
  239|       |
  240|  10.8k|      if (rsp_payload.size() < sizeof(typename ResponseT::PayloadT)) {
  241|  10.8k|        bt_log(DEBUG,
  242|  10.8k|               "l2cap",
  243|  10.8k|               "cmd: ignoring malformed \"%s\", size %zu (expected %zu)",
  244|  10.8k|               ResponseT::kName,
  245|  10.8k|               rsp_payload.size(),
  246|  10.8k|               sizeof(typename ResponseT::PayloadT));
  247|  10.8k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  248|  10.8k|      }
  249|       |
  250|  10.8k|      if (!rsp.Decode(rsp_payload)) {
  251|  10.8k|        bt_log(DEBUG,
  252|  10.8k|               "l2cap",
  253|  10.8k|               "cmd: ignoring malformed \"%s\", could not decode",
  254|  10.8k|               ResponseT::kName);
  255|  10.8k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  256|  10.8k|      }
  257|       |
  258|  10.8k|      return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  259|  10.8k|    };
  260|  10.8k|  }
_ZZN2bt5l2cap8internal14CommandHandler20BuildResponseHandlerINS1_19BrEdrCommandHandler21ConfigurationResponseEN3fit13function_implILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionERKS5_ENSt3__19allocatorISt4byteEEEEEENS7_ILm16ELb0EFS9_NS8_6StatusERKNS_10ByteBufferEESG_EET0_ENKUlSI_SL_E_clESI_SL_:
  216|  2.42k|               Status status, const ByteBuffer& rsp_payload) {
  217|  2.42k|      if (status == Status::kTimeOut) {
  ------------------
  |  Branch (217:11): [True: 0, False: 2.42k]
  ------------------
  218|      0|        bt_log(INFO,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  219|      0|               "l2cap",
  220|      0|               "cmd: timed out waiting for \"%s\"",
  221|      0|               ResponseT::kName);
  222|      0|        if (fail_cb) {
  ------------------
  |  Branch (222:13): [True: 0, False: 0]
  ------------------
  223|      0|          fail_cb();
  224|      0|        }
  225|      0|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  226|      0|      }
  227|       |
  228|  2.42k|      ResponseT rsp(status);
  229|  2.42k|      if (status == Status::kReject) {
  ------------------
  |  Branch (229:11): [True: 888, False: 1.54k]
  ------------------
  230|    888|        if (!rsp.ParseReject(rsp_payload)) {
  ------------------
  |  Branch (230:13): [True: 87, False: 801]
  ------------------
  231|     87|          bt_log(DEBUG,
  ------------------
  |  |  141|     87|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     87|  do {                                                                     \
  |  |  |  |   74|     87|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     87|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     87|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     87|  do {                                                    \
  |  |  |  |  |  |   56|     87|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     87|           (flags),                                       \
  |  |  |  |  |  |   58|     87|           module,                                        \
  |  |  |  |  |  |   59|     87|           __FILE__,                                      \
  |  |  |  |  |  |   60|     87|           __LINE__,                                      \
  |  |  |  |  |  |   61|     87|           __func__,                                      \
  |  |  |  |  |  |   62|     87|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     87|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     87|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     87|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     87|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     87|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     87|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     87|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     87|    }                                                                      \
  |  |  |  |   77|     87|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     87|         PW_LOG_LEVEL,                             \
  |  |  143|     87|         tag,                                      \
  |  |  144|     87|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     87|         __VA_ARGS__);                             \
  |  |  146|     87|  ::bt::internal::CheckFormat(tag)
  ------------------
  232|     87|                 "l2cap",
  233|     87|                 "cmd: ignoring malformed Command Reject, size %zu",
  234|     87|                 rsp_payload.size());
  235|     87|          return ResponseHandlerAction::kCompleteOutboundTransaction;
  236|     87|        }
  237|    801|        return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  238|    888|      }
  239|       |
  240|  1.54k|      if (rsp_payload.size() < sizeof(typename ResponseT::PayloadT)) {
  ------------------
  |  Branch (240:11): [True: 51, False: 1.48k]
  ------------------
  241|     51|        bt_log(DEBUG,
  ------------------
  |  |  141|     51|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     51|  do {                                                                     \
  |  |  |  |   74|     51|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     51|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     51|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|  do {                                                    \
  |  |  |  |  |  |   56|     51|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     51|           (flags),                                       \
  |  |  |  |  |  |   58|     51|           module,                                        \
  |  |  |  |  |  |   59|     51|           __FILE__,                                      \
  |  |  |  |  |  |   60|     51|           __LINE__,                                      \
  |  |  |  |  |  |   61|     51|           __func__,                                      \
  |  |  |  |  |  |   62|     51|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     51|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     51|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     51|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     51|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     51|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     51|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     51|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     51|    }                                                                      \
  |  |  |  |   77|     51|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     51|         PW_LOG_LEVEL,                             \
  |  |  143|     51|         tag,                                      \
  |  |  144|     51|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     51|         __VA_ARGS__);                             \
  |  |  146|     51|  ::bt::internal::CheckFormat(tag)
  ------------------
  242|     51|               "l2cap",
  243|     51|               "cmd: ignoring malformed \"%s\", size %zu (expected %zu)",
  244|     51|               ResponseT::kName,
  245|     51|               rsp_payload.size(),
  246|     51|               sizeof(typename ResponseT::PayloadT));
  247|     51|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  248|     51|      }
  249|       |
  250|  1.48k|      if (!rsp.Decode(rsp_payload)) {
  ------------------
  |  Branch (250:11): [True: 86, False: 1.40k]
  ------------------
  251|     86|        bt_log(DEBUG,
  ------------------
  |  |  141|     86|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     86|  do {                                                                     \
  |  |  |  |   74|     86|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     86|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     86|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|  do {                                                    \
  |  |  |  |  |  |   56|     86|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     86|           (flags),                                       \
  |  |  |  |  |  |   58|     86|           module,                                        \
  |  |  |  |  |  |   59|     86|           __FILE__,                                      \
  |  |  |  |  |  |   60|     86|           __LINE__,                                      \
  |  |  |  |  |  |   61|     86|           __func__,                                      \
  |  |  |  |  |  |   62|     86|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     86|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     86|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     86|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     86|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     86|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     86|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     86|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     86|    }                                                                      \
  |  |  |  |   77|     86|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     86|         PW_LOG_LEVEL,                             \
  |  |  143|     86|         tag,                                      \
  |  |  144|     86|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     86|         __VA_ARGS__);                             \
  |  |  146|     86|  ::bt::internal::CheckFormat(tag)
  ------------------
  252|     86|               "l2cap",
  253|     86|               "cmd: ignoring malformed \"%s\", could not decode",
  254|     86|               ResponseT::kName);
  255|     86|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  256|     86|      }
  257|       |
  258|  1.40k|      return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  259|  1.48k|    };
_ZN2bt5l2cap8internal14CommandHandler22InvokeResponseCallbackIKN3fit13function_implILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionERKNS1_19BrEdrCommandHandler21ConfigurationResponseEENSt3__19allocatorISt4byteEEEES9_EES7_PT_T0_:
  269|  2.20k|      CallbackT* const rsp_cb, ResponseT rsp) {
  270|       |    if constexpr (std::is_void_v<std::invoke_result_t<CallbackT, ResponseT>>) {
  271|       |      (*rsp_cb)(rsp);
  272|       |      return ResponseHandlerAction::kCompleteOutboundTransaction;
  273|  2.20k|    } else {
  274|  2.20k|      return (*rsp_cb)(rsp);
  275|  2.20k|    }
  276|  2.20k|  }
_ZN2bt5l2cap8internal14CommandHandler20BuildResponseHandlerINS1_19BrEdrCommandHandler19InformationResponseEN3fit13function_implILm16ELb0EFvRKS5_ENSt3__19allocatorISt4byteEEEEEENS7_ILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionENSG_6StatusERKNS_10ByteBufferEESE_EET0_:
  213|   285k|      CallbackT response_cb) {
  214|   285k|    return [rsp_cb = std::move(response_cb),
  215|   285k|            fail_cb = request_fail_callback_.share()](
  216|   285k|               Status status, const ByteBuffer& rsp_payload) {
  217|   285k|      if (status == Status::kTimeOut) {
  218|   285k|        bt_log(INFO,
  219|   285k|               "l2cap",
  220|   285k|               "cmd: timed out waiting for \"%s\"",
  221|   285k|               ResponseT::kName);
  222|   285k|        if (fail_cb) {
  223|   285k|          fail_cb();
  224|   285k|        }
  225|   285k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  226|   285k|      }
  227|       |
  228|   285k|      ResponseT rsp(status);
  229|   285k|      if (status == Status::kReject) {
  230|   285k|        if (!rsp.ParseReject(rsp_payload)) {
  231|   285k|          bt_log(DEBUG,
  232|   285k|                 "l2cap",
  233|   285k|                 "cmd: ignoring malformed Command Reject, size %zu",
  234|   285k|                 rsp_payload.size());
  235|   285k|          return ResponseHandlerAction::kCompleteOutboundTransaction;
  236|   285k|        }
  237|   285k|        return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  238|   285k|      }
  239|       |
  240|   285k|      if (rsp_payload.size() < sizeof(typename ResponseT::PayloadT)) {
  241|   285k|        bt_log(DEBUG,
  242|   285k|               "l2cap",
  243|   285k|               "cmd: ignoring malformed \"%s\", size %zu (expected %zu)",
  244|   285k|               ResponseT::kName,
  245|   285k|               rsp_payload.size(),
  246|   285k|               sizeof(typename ResponseT::PayloadT));
  247|   285k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  248|   285k|      }
  249|       |
  250|   285k|      if (!rsp.Decode(rsp_payload)) {
  251|   285k|        bt_log(DEBUG,
  252|   285k|               "l2cap",
  253|   285k|               "cmd: ignoring malformed \"%s\", could not decode",
  254|   285k|               ResponseT::kName);
  255|   285k|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  256|   285k|      }
  257|       |
  258|   285k|      return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  259|   285k|    };
  260|   285k|  }
_ZZN2bt5l2cap8internal14CommandHandler20BuildResponseHandlerINS1_19BrEdrCommandHandler19InformationResponseEN3fit13function_implILm16ELb0EFvRKS5_ENSt3__19allocatorISt4byteEEEEEENS7_ILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionENSG_6StatusERKNS_10ByteBufferEESE_EET0_ENKUlSI_SL_E_clESI_SL_:
  216|  1.62k|               Status status, const ByteBuffer& rsp_payload) {
  217|  1.62k|      if (status == Status::kTimeOut) {
  ------------------
  |  Branch (217:11): [True: 0, False: 1.62k]
  ------------------
  218|      0|        bt_log(INFO,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  219|      0|               "l2cap",
  220|      0|               "cmd: timed out waiting for \"%s\"",
  221|      0|               ResponseT::kName);
  222|      0|        if (fail_cb) {
  ------------------
  |  Branch (222:13): [True: 0, False: 0]
  ------------------
  223|      0|          fail_cb();
  224|      0|        }
  225|      0|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  226|      0|      }
  227|       |
  228|  1.62k|      ResponseT rsp(status);
  229|  1.62k|      if (status == Status::kReject) {
  ------------------
  |  Branch (229:11): [True: 426, False: 1.19k]
  ------------------
  230|    426|        if (!rsp.ParseReject(rsp_payload)) {
  ------------------
  |  Branch (230:13): [True: 166, False: 260]
  ------------------
  231|    166|          bt_log(DEBUG,
  ------------------
  |  |  141|    166|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    166|  do {                                                                     \
  |  |  |  |   74|    166|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    166|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    166|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    166|  do {                                                    \
  |  |  |  |  |  |   56|    166|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    166|           (flags),                                       \
  |  |  |  |  |  |   58|    166|           module,                                        \
  |  |  |  |  |  |   59|    166|           __FILE__,                                      \
  |  |  |  |  |  |   60|    166|           __LINE__,                                      \
  |  |  |  |  |  |   61|    166|           __func__,                                      \
  |  |  |  |  |  |   62|    166|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    166|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    166|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    166|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    166|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    166|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    166|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    166|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    166|    }                                                                      \
  |  |  |  |   77|    166|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    166|         PW_LOG_LEVEL,                             \
  |  |  143|    166|         tag,                                      \
  |  |  144|    166|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    166|         __VA_ARGS__);                             \
  |  |  146|    166|  ::bt::internal::CheckFormat(tag)
  ------------------
  232|    166|                 "l2cap",
  233|    166|                 "cmd: ignoring malformed Command Reject, size %zu",
  234|    166|                 rsp_payload.size());
  235|    166|          return ResponseHandlerAction::kCompleteOutboundTransaction;
  236|    166|        }
  237|    260|        return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  238|    426|      }
  239|       |
  240|  1.19k|      if (rsp_payload.size() < sizeof(typename ResponseT::PayloadT)) {
  ------------------
  |  Branch (240:11): [True: 100, False: 1.09k]
  ------------------
  241|    100|        bt_log(DEBUG,
  ------------------
  |  |  141|    100|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    100|  do {                                                                     \
  |  |  |  |   74|    100|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    100|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    100|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    100|  do {                                                    \
  |  |  |  |  |  |   56|    100|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    100|           (flags),                                       \
  |  |  |  |  |  |   58|    100|           module,                                        \
  |  |  |  |  |  |   59|    100|           __FILE__,                                      \
  |  |  |  |  |  |   60|    100|           __LINE__,                                      \
  |  |  |  |  |  |   61|    100|           __func__,                                      \
  |  |  |  |  |  |   62|    100|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    100|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    100|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    100|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    100|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    100|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    100|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    100|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    100|    }                                                                      \
  |  |  |  |   77|    100|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    100|         PW_LOG_LEVEL,                             \
  |  |  143|    100|         tag,                                      \
  |  |  144|    100|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    100|         __VA_ARGS__);                             \
  |  |  146|    100|  ::bt::internal::CheckFormat(tag)
  ------------------
  242|    100|               "l2cap",
  243|    100|               "cmd: ignoring malformed \"%s\", size %zu (expected %zu)",
  244|    100|               ResponseT::kName,
  245|    100|               rsp_payload.size(),
  246|    100|               sizeof(typename ResponseT::PayloadT));
  247|    100|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  248|    100|      }
  249|       |
  250|  1.09k|      if (!rsp.Decode(rsp_payload)) {
  ------------------
  |  Branch (250:11): [True: 35, False: 1.06k]
  ------------------
  251|     35|        bt_log(DEBUG,
  ------------------
  |  |  141|     35|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     35|  do {                                                                     \
  |  |  |  |   74|     35|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     35|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     35|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|  do {                                                    \
  |  |  |  |  |  |   56|     35|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     35|           (flags),                                       \
  |  |  |  |  |  |   58|     35|           module,                                        \
  |  |  |  |  |  |   59|     35|           __FILE__,                                      \
  |  |  |  |  |  |   60|     35|           __LINE__,                                      \
  |  |  |  |  |  |   61|     35|           __func__,                                      \
  |  |  |  |  |  |   62|     35|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     35|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     35|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     35|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     35|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     35|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     35|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     35|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     35|    }                                                                      \
  |  |  |  |   77|     35|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     35|         PW_LOG_LEVEL,                             \
  |  |  143|     35|         tag,                                      \
  |  |  144|     35|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     35|         __VA_ARGS__);                             \
  |  |  146|     35|  ::bt::internal::CheckFormat(tag)
  ------------------
  252|     35|               "l2cap",
  253|     35|               "cmd: ignoring malformed \"%s\", could not decode",
  254|     35|               ResponseT::kName);
  255|     35|        return ResponseHandlerAction::kCompleteOutboundTransaction;
  256|     35|      }
  257|       |
  258|  1.06k|      return InvokeResponseCallback(&rsp_cb, std::move(rsp));
  259|  1.09k|    };
_ZN2bt5l2cap8internal14CommandHandler22InvokeResponseCallbackIKN3fit13function_implILm16ELb0EFvRKNS1_19BrEdrCommandHandler19InformationResponseEENSt3__19allocatorISt4byteEEEES7_EENS1_25SignalingChannelInterface21ResponseHandlerActionEPT_T0_:
  269|  1.32k|      CallbackT* const rsp_cb, ResponseT rsp) {
  270|  1.32k|    if constexpr (std::is_void_v<std::invoke_result_t<CallbackT, ResponseT>>) {
  271|  1.32k|      (*rsp_cb)(rsp);
  272|  1.32k|      return ResponseHandlerAction::kCompleteOutboundTransaction;
  273|       |    } else {
  274|       |      return (*rsp_cb)(rsp);
  275|       |    }
  276|  1.32k|  }

_ZNK2bt5l2cap8internal14DynamicChannel3psmEv:
   94|  14.6k|  Psm psm() const { return psm_; }
_ZNK2bt5l2cap8internal14DynamicChannel9local_cidEv:
   98|  96.8k|  ChannelId local_cid() const { return local_cid_; }
_ZNK2bt5l2cap8internal14DynamicChannel10remote_cidEv:
  102|   173k|  ChannelId remote_cid() const { return remote_cid_; }
_ZNK2bt5l2cap8internal14DynamicChannel6openedEv:
  107|  2.15k|  bool opened() const { return opened_; }
_ZN2bt5l2cap8internal14DynamicChannel10set_openedEv:
  125|    180|  void set_opened() { opened_ = true; }
_ZN2bt5l2cap8internal14DynamicChannelD2Ev:
   61|  10.7k|  virtual ~DynamicChannel() = default;

_ZN2bt5l2cap8internal22DynamicChannelRegistryD2Ev:
   53|   142k|  virtual ~DynamicChannelRegistry() = default;

_ZNK2bt5l2cap13OutboundFrame11include_fcsEv:
   51|  2.19M|  bool include_fcs() const {
   52|  2.19M|    return fcs_option_ == FrameCheckSequenceOption::kIncludeFcs;
   53|  2.19M|  }

_ZN2bt5l2cap8internal11LogicalLink10GetWeakPtrEv:
  181|   285k|  WeakPtr GetWeakPtr() { return weak_self_.GetWeakPtr(); }
_ZNK2bt5l2cap8internal11LogicalLink6handleEv:
  184|   937k|  hci_spec::ConnectionHandle handle() const override { return handle_; }
_ZNK2bt5l2cap8internal11LogicalLink4typeEv:
  185|  1.25M|  bt::LinkType type() const override { return type_; }

_ZNK2bt5l2cap3PDU8is_validEv:
   51|  1.53M|  bool is_valid() const { return !fragments_.empty(); }
_ZNK2bt5l2cap3PDU14fragment_countEv:
   54|   116k|  size_t fragment_count() const { return fragments_.size(); }
_ZNK2bt5l2cap3PDU6lengthEv:
   58|   136k|  uint16_t length() const {
   59|   136k|    return pw::bytes::ConvertOrderFrom(cpp20::endian::little,
   60|   136k|                                       basic_header().length);
   61|   136k|  }
_ZNK2bt5l2cap3PDU10channel_idEv:
   64|  53.4k|  ChannelId channel_id() const {
   65|  53.4k|    return pw::bytes::ConvertOrderFrom(cpp20::endian::little,
   66|  53.4k|                                       basic_header().channel_id);
   67|  53.4k|  }
_ZN2bt5l2cap3PDU12set_trace_idEm:
   96|  1.55k|  void set_trace_id(trace_flow_id_t id) { trace_id_ = id; }
_ZN2bt5l2cap3PDUD2Ev:
   43|   886k|  ~PDU() = default;
_ZN2bt5l2cap3PDUC2Ev:
   42|   540k|  PDU() = default;

_ZN2bt5l2cap8internal8RxEngineD2Ev:
   28|   143k|  virtual ~RxEngine() = default;
_ZN2bt5l2cap8internal8RxEngineC2Ev:
   27|   143k|  RxEngine() = default;

_ZNK2bt5l2cap13ScopedChannel9is_activeEv:
   31|   549k|  [[nodiscard]] bool is_active() const { return chan_.is_alive(); }
_ZNK2bt5l2cap13ScopedChannelcvbEv:
   41|   549k|  explicit operator bool() const { return is_active(); }
_ZNK2bt5l2cap13ScopedChannelptEv:
   44|   692k|  Channel* operator->() const { return &chan_.get(); }

_ZNK2bt5l2cap8internal16SignalingChannel7is_openEv:
  135|   594k|  bool is_open() const { return is_open_; }
_ZNK2bt5l2cap8internal16SignalingChannel3mtuEv:
  138|  99.0k|  uint16_t mtu() const { return mtu_; }
_ZN2bt5l2cap8internal16SignalingChannel7set_mtuEt:
  139|   142k|  void set_mtu(uint16_t mtu) { mtu_ = mtu; }
_ZNK2bt5l2cap8internal16SignalingChannel13ResponderImpl3sigEv:
  154|  68.2k|    SignalingChannel* sig() const { return sig_; }
_ZN2bt5l2cap8internal16SignalingChannel14PendingCommandC2ERKNS_10ByteBufferEhN3fit13function_implILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionENS9_6StatusES6_ENSt3__19allocatorISt4byteEEEERN2pw5async10DispatcherENSI_18bluetooth_sapphire5LeaseE:
  266|   297k|        : response_code(response_command_code),
  267|   297k|          response_handler(std::move(response_handler_cb)),
  268|   297k|          command_packet(std::make_unique<DynamicByteBuffer>(request_packet)),
  269|   297k|          transmit_count(1u),
  270|   297k|          timer_duration(0u),
  271|   297k|          response_timeout_task(dispatcher),
  272|   297k|          wake_lease(std::move(wake_lease_in)) {}
_ZN2bt5l2cap8internal16SignalingChannelD2Ev:
  125|   142k|  ~SignalingChannel() override = default;
_ZN2bt5l2cap8internal25SignalingChannelInterfaceD2Ev:
  112|   142k|  virtual ~SignalingChannelInterface() = default;
_ZN2bt5l2cap8internal25SignalingChannelInterface9ResponderD2Ev:
   90|  68.4k|    virtual ~Responder() = default;

_ZN2bt5l2cap8internal8TxEngineC2EttRNS2_9TxChannelE:
   62|   143k|      : channel_id_(channel_id),
   63|   143k|        max_tx_sdu_size_(max_tx_sdu_size),
   64|   143k|        channel_(channel) {
   65|   143k|    PW_CHECK(max_tx_sdu_size_);
  ------------------
  |  |   39|   143k|  do {                                                                         \
  |  |   40|   143k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 143k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   143k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   66|   143k|  }
_ZNK2bt5l2cap8internal8TxEngine15max_tx_sdu_sizeEv:
   85|   407k|  uint16_t max_tx_sdu_size() const { return max_tx_sdu_size_; }
_ZN2bt5l2cap8internal8TxEngine7channelEv:
   87|   814k|  TxChannel& channel() { return channel_; }
_ZN2bt5l2cap8internal8TxEngineD2Ev:
   67|   143k|  virtual ~TxEngine() = default;
_ZN2bt5l2cap8internal8TxEngine9TxChannelD2Ev:
   37|   143k|    virtual ~TxChannel() = default;

_ZN2bt5l2cap11ChannelInfo13MakeBasicModeEttNSt3__18optionalItEENS3_INS2_6chrono8durationIlNS2_5ratioILl1ELl1000000000EEEEEEE:
  138|   143k|          std::nullopt) {
  139|   143k|    return ChannelInfo(RetransmissionAndFlowControlMode::kBasic,
  140|   143k|                       max_rx_sdu_size,
  141|   143k|                       max_tx_sdu_size,
  142|   143k|                       0,
  143|   143k|                       0,
  144|   143k|                       0,
  145|   143k|                       psm,
  146|   143k|                       flush_timeout);
  147|   143k|  }
_ZN2bt5l2cap11ChannelInfoC2ENSt3__17variantIJNS0_32RetransmissionAndFlowControlModeENS0_26CreditBasedFlowControlModeEEEEtthhtNS2_8optionalItEENS7_INS2_6chrono8durationIlNS2_5ratioILl1ELl1000000000EEEEEEES8_:
  197|   143k|      : mode(mode_in),
  198|   143k|        max_rx_sdu_size(max_rx_sdu_size_in),
  199|   143k|        max_tx_sdu_size(max_tx_sdu_size_in),
  200|   143k|        n_frames_in_tx_window(n_frames_in_tx_window_in),
  201|   143k|        max_transmissions(max_transmissions_in),
  202|   143k|        max_tx_pdu_payload_size(max_tx_pdu_payload_size_in),
  203|   143k|        psm(psm_in),
  204|   143k|        flush_timeout(flush_timeout_in),
  205|   143k|        remote_initial_credits(remote_initial_credits_in) {}
_ZN2bt5l2cap11ServiceInfoIN3fit13function_implILm16ELb0EFv7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS5_EEENSt3__19allocatorISt4byteEEEEEC2EOSF_:
  234|  13.8k|  ServiceInfo(ServiceInfo&&) = default;
_ZN2bt5l2cap11ServiceInfoIN3fit13function_implILm16ELb0EFv7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS5_EEENSt3__19allocatorISt4byteEEEEEC2ENS0_17ChannelParametersESE_:
  233|  13.8k|      : channel_params(params), channel_cb(std::move(cb)) {}
_ZN2bt5l2cap11ServiceInfoIN3fit13function_implILm16ELb0EFvPKNS0_8internal14DynamicChannelEENSt3__19allocatorISt4byteEEEEEC2EOSE_:
  234|  10.7k|  ServiceInfo(ServiceInfo&&) = default;
_ZN2bt5l2cap11ServiceInfoIN3fit13function_implILm16ELb0EFvPKNS0_8internal14DynamicChannelEENSt3__19allocatorISt4byteEEEEEC2ENS0_17ChannelParametersESD_:
  233|  10.7k|      : channel_params(params), channel_cb(std::move(cb)) {}

_ZN2bt7testing24ControllerTestDoubleBase16SetEventFunctionEN3fit13function_implILm8ELb0EFvN2pw4spanIKSt4byteLm18446744073709551615EEEENSt3__19allocatorIS6_EEEE:
   93|  6.11k|  void SetEventFunction(DataFunction func) override {
   94|  6.11k|    event_cb_ = std::move(func);
   95|  6.11k|  }
_ZN2bt7testing24ControllerTestDoubleBase21SetReceiveAclFunctionEN3fit13function_implILm8ELb0EFvN2pw4spanIKSt4byteLm18446744073709551615EEEENSt3__19allocatorIS6_EEEE:
   97|  9.16k|  void SetReceiveAclFunction(DataFunction func) override {
   98|  9.16k|    acl_cb_ = std::move(func);
   99|  9.16k|  }
_ZN2bt7testing24ControllerTestDoubleBase11GetFeaturesEN3fit13callback_implILm8ELb0EFvN2pw9bluetooth10Controller12FeaturesBitsEENSt3__19allocatorISt4byteEEEE:
  121|  3.05k|  void GetFeatures(pw::Callback<void(FeaturesBits)> callback) override {
  122|  3.05k|    callback(features_);
  123|  3.05k|  }
_ZN2bt7testing24ControllerTestDoubleBase12set_featuresEN2pw9bluetooth10Controller12FeaturesBitsE:
   80|  3.05k|  void set_features(FeaturesBits features) { features_ = features; }
_ZN2bt7testing24ControllerTestDoubleBase15heap_dispatcherEv:
   49|   543k|  pw::async::HeapDispatcher& heap_dispatcher() { return heap_dispatcher_; }

_ZN2bt7testing28FakeDispatcherControllerTestINS0_16FuzzerControllerEEC2Ev:
  194|  3.05k|      : ControllerTest<ControllerTestDoubleType>(dispatcher()) {}
_ZN2bt7testing14ControllerTestINS0_16FuzzerControllerEEC2ERN2pw5async10DispatcherE:
   58|  3.05k|  ControllerTest(pw::async::Dispatcher& dispatcher) : dispatcher_(dispatcher) {}
_ZN2bt7testing28FakeDispatcherControllerTestINS0_16FuzzerControllerEE5SetUpEv:
  196|  3.05k|  void SetUp() override {
  197|  3.05k|    SetUp(pw::bluetooth::Controller::FeaturesBits::kHciSco);
  198|  3.05k|  }
_ZN2bt7testing28FakeDispatcherControllerTestINS0_16FuzzerControllerEE5SetUpEN2pw9bluetooth10Controller12FeaturesBitsEb:
  201|  3.05k|             bool initialize_transport = true) {
  202|  3.05k|    ControllerTest<ControllerTestDoubleType>::Initialize(features,
  203|  3.05k|                                                         initialize_transport);
  204|  3.05k|    RunUntilIdle();
  205|  3.05k|  }
_ZN2bt7testing14ControllerTestINS0_16FuzzerControllerEE10InitializeEN2pw9bluetooth10Controller12FeaturesBitsEb:
   63|  3.05k|                  bool initialize_transport = true) {
   64|  3.05k|    std::unique_ptr<pw::bluetooth::Controller> controller =
   65|  3.05k|        ControllerTest<ControllerTestDoubleType>::SetUpTestController();
   66|  3.05k|    test_device_->set_features(features);
   67|  3.05k|    transport_ = std::make_unique<hci::Transport>(
   68|  3.05k|        std::move(controller), dispatcher_, lease_provider_);
   69|       |
   70|  3.05k|    if (initialize_transport) {
  ------------------
  |  Branch (70:9): [True: 3.05k, False: 0]
  ------------------
   71|  3.05k|      std::optional<bool> init_result;
   72|  3.05k|      transport_->Initialize(
   73|  3.05k|          [&init_result](bool success) { init_result = success; });
   74|  3.05k|      ASSERT_TRUE(init_result.has_value());
   75|  3.05k|      ASSERT_TRUE(init_result.value());
   76|  3.05k|    }
   77|  3.05k|  }
_ZN2bt7testing14ControllerTestINS0_16FuzzerControllerEE19SetUpTestControllerEv:
  144|  3.05k|  std::unique_ptr<pw::bluetooth::Controller> SetUpTestController() {
  145|  3.05k|    std::unique_ptr<ControllerTestDoubleType> controller =
  146|  3.05k|        std::make_unique<ControllerTestDoubleType>(dispatcher_);
  147|  3.05k|    test_device_ = controller->GetWeakPtr();
  148|  3.05k|    return controller;
  149|  3.05k|  }
_ZZN2bt7testing14ControllerTestINS0_16FuzzerControllerEE10InitializeEN2pw9bluetooth10Controller12FeaturesBitsEbENKUlbE_clEb:
   73|  3.05k|          [&init_result](bool success) { init_result = success; });
_ZN2bt7testing14ControllerTestINS0_16FuzzerControllerEE24InitializeACLDataChannelERKNS_3hci14DataBufferInfoES7_:
   88|  3.05k|      const hci::DataBufferInfo& le_buffer_info = hci::DataBufferInfo()) {
   89|  3.05k|    if (!transport_->InitializeACLDataChannel(bredr_buffer_info,
  ------------------
  |  Branch (89:9): [True: 0, False: 3.05k]
  ------------------
   90|  3.05k|                                              le_buffer_info)) {
   91|      0|      return false;
   92|      0|    }
   93|       |
   94|  3.05k|    transport_->acl_data_channel()->SetDataRxHandler(
   95|  3.05k|        std::bind(&ControllerTest<ControllerTestDoubleType>::OnAclDataReceived,
   96|  3.05k|                  this,
   97|  3.05k|                  std::placeholders::_1));
   98|       |
   99|  3.05k|    return true;
  100|  3.05k|  }
_ZNK2bt7testing14ControllerTestINS0_16FuzzerControllerEE9transportEv:
  119|  6.11k|  hci::Transport* transport() const { return transport_.get(); }
_ZN2bt7testing14ControllerTestINS0_16FuzzerControllerEED2Ev:
   59|  3.05k|  ~ControllerTest() = default;
_ZN2bt7testing28FakeDispatcherControllerTestINS0_16FuzzerControllerEE8TearDownEv:
  207|  3.05k|  void TearDown() override {
  208|  3.05k|    RunUntilIdle();
  209|  3.05k|    ControllerTest<ControllerTestDoubleType>::DeleteTransport();
  210|  3.05k|  }
_ZN2bt7testing14ControllerTestINS0_16FuzzerControllerEE15DeleteTransportEv:
  132|  3.05k|  void DeleteTransport() { transport_ = nullptr; }
_ZNK2bt7testing14ControllerTestINS0_16FuzzerControllerEE11test_deviceEv:
  135|   543k|  const typename ControllerTestDoubleType::WeakPtr& test_device() const {
  136|   543k|    return test_device_;
  137|   543k|  }

_ZN2bt3hci14AclDataChannel19ConnectionInterfaceD2Ev:
   53|   142k|    virtual ~ConnectionInterface() = default;
_ZN2bt3hci14AclDataChannelD2Ev:
  114|  3.05k|  virtual ~AclDataChannel() = default;

_ZN2bt3hci6PacketINS_8hci_spec13ACLDataHeaderEE12set_trace_idEm:
   61|   210k|  void set_trace_id(trace_flow_id_t id) { async_id_ = id; }

_ZN2bt3hci14CommandChannel22set_channel_timeout_cbEN3fit13function_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEE:
  222|  3.05k|  void set_channel_timeout_cb(fit::closure timeout_cb) {
  223|  3.05k|    channel_timeout_cb_ = std::move(timeout_cb);
  224|  3.05k|  }
_ZN2bt3hci14CommandChannel9AsWeakPtrEv:
  232|   146k|  WeakPtr AsWeakPtr() { return weak_ptr_factory_.GetWeakPtr(); }
_ZNK2bt3hci14CommandChannel16EventHandlerData8is_asyncEv:
  364|  6.11k|    bool is_async() const { return pending_opcode != hci_spec::kNoOp; }

_ZN2bt3hci14DataBufferInfoC2Emm:
   27|  3.05k|      : max_data_length_(max_data_length), max_num_packets_(max_num_packets) {}
_ZN2bt3hci14DataBufferInfoC2Ev:
   32|  3.05k|  DataBufferInfo() = default;
_ZNK2bt3hci14DataBufferInfo15max_data_lengthEv:
   36|  6.11k|  size_t max_data_length() const { return max_data_length_; }
_ZNK2bt3hci14DataBufferInfo15max_num_packetsEv:
   40|  1.12M|  size_t max_num_packets() const { return max_num_packets_; }
_ZNK2bt3hci14DataBufferInfo11IsAvailableEv:
   43|  2.13M|  bool IsAvailable() const { return max_data_length_ && max_num_packets_; }
  ------------------
  |  Branch (43:37): [True: 3.05k, False: 2.12M]
  |  Branch (43:57): [True: 3.05k, False: 0]
  ------------------

_ZN2bt3hci10PacketBaseINS_8hci_spec13ACLDataHeaderENS0_6PacketIS3_EEE12mutable_viewEv:
  103|  2.18M|  MutablePacketView<HeaderType>* mutable_view() { return &view_; }
_ZNK2bt3hci10PacketBaseINS_8hci_spec13ACLDataHeaderENS0_6PacketIS3_EEE4viewEv:
  102|  5.30M|  const PacketView<HeaderType>& view() const { return view_; }
_ZN2bt3hci10PacketBaseINS_8hci_spec13ACLDataHeaderENS0_6PacketIS3_EEEC2ERKNS_17MutablePacketViewIS3_EE:
  107|   909k|      : view_(view) {}
_ZN2bt3hci10PacketBaseINS_8hci_spec13ACLDataHeaderENS0_6PacketIS3_EEED2Ev:
  100|   909k|  virtual ~PacketBase() = default;

_ZN2bt3hci10allocators8internal15FixedSizePacketINS_8hci_spec13ACLDataHeaderELm68EEC2Em:
   93|   897k|      : Packet<HeaderType>(
   94|   897k|            MutablePacketView<HeaderType>(&this->buffer_, payload_size)) {}
_ZN2bt3hci10allocators8internal15FixedSizePacketINS_8hci_spec13ACLDataHeaderELm68EED2Ev:
   96|   897k|  ~FixedSizePacket() override = default;
_ZN2bt3hci10allocators8internal15FixedSizePacketINS_8hci_spec13ACLDataHeaderELm260EEC2Em:
   93|  11.9k|      : Packet<HeaderType>(
   94|  11.9k|            MutablePacketView<HeaderType>(&this->buffer_, payload_size)) {}
_ZN2bt3hci10allocators8internal15FixedSizePacketINS_8hci_spec13ACLDataHeaderELm260EED2Ev:
   96|  11.9k|  ~FixedSizePacket() override = default;

_ZNK2bt3hci9Transport16acl_data_channelEv:
   80|  6.11k|  AclDataChannel* acl_data_channel() const { return acl_data_channel_.get(); }
_ZNK2bt3hci9Transport15command_channelEv:
   75|  15.2k|  CommandChannel* command_channel() const { return command_channel_.get(); }

_ZN15bt_lib_cpp_type19MemberPointerTraitsIXadL_ZN2bt8hci_spec13ACLDataHeader16handle_and_flagsEEEE6offsetEv:
   46|   543k|  static size_t constexpr offset() {
   47|       |    // Pointer subtraction is only defined for array objects per ISO/IEC
   48|       |    // 14882:2017(E) § 8.7 [expr.add] ¶ 2.5, so we have to actually construct an
   49|       |    // object rather than use a nullptr pointer or std::declval (whose rules
   50|       |    // disallow odr-use).
   51|   543k|    static_assert(std::is_standard_layout_v<ClassType>);
   52|       |
   53|       |    // This assumes that the layout of the ClassT temporary construct is the
   54|       |    // same as that of ClassT objects elsewhere, an assumption that is likely UB
   55|       |    // as only the first member of ClassT is guaranteed (by [class.mem] ¶ 17) to
   56|       |    // be pointer-interconvertible with ClassT. Subsequent members are only
   57|       |    // guaranteed to have increasing addresses ([class.mem] ¶ 24), so it's not
   58|       |    // impossible that a compiler may use different padding around members that
   59|       |    // are not accessed in this function than it uses elsewhere. For now, it's
   60|       |    // safest to use this _only_ with
   61|       |    // [[gnu::packed]] classes.
   62|   543k|    const ClassType
   63|   543k|        temporary{};  // Value initialization in case of const members
   64|   543k|    return size_t(&(temporary.*PointerToMember)) - size_t(&temporary);
   65|   543k|  }
_ZN15bt_lib_cpp_type19MemberPointerTraitsIXadL_ZN2bt5l2cap20CommandRejectPayload6reasonEEEE6offsetEv:
   46|  1.32k|  static size_t constexpr offset() {
   47|       |    // Pointer subtraction is only defined for array objects per ISO/IEC
   48|       |    // 14882:2017(E) § 8.7 [expr.add] ¶ 2.5, so we have to actually construct an
   49|       |    // object rather than use a nullptr pointer or std::declval (whose rules
   50|       |    // disallow odr-use).
   51|  1.32k|    static_assert(std::is_standard_layout_v<ClassType>);
   52|       |
   53|       |    // This assumes that the layout of the ClassT temporary construct is the
   54|       |    // same as that of ClassT objects elsewhere, an assumption that is likely UB
   55|       |    // as only the first member of ClassT is guaranteed (by [class.mem] ¶ 17) to
   56|       |    // be pointer-interconvertible with ClassT. Subsequent members are only
   57|       |    // guaranteed to have increasing addresses ([class.mem] ¶ 24), so it's not
   58|       |    // impossible that a compiler may use different padding around members that
   59|       |    // are not accessed in this function than it uses elsewhere. For now, it's
   60|       |    // safest to use this _only_ with
   61|       |    // [[gnu::packed]] classes.
   62|  1.32k|    const ClassType
   63|  1.32k|        temporary{};  // Value initialization in case of const members
   64|  1.32k|    return size_t(&(temporary.*PointerToMember)) - size_t(&temporary);
   65|  1.32k|  }
_ZN15bt_lib_cpp_type19MemberPointerTraitsIXadL_ZN2bt5l2cap16MtuOptionPayload3mtuEEEE6offsetEv:
   46|    549|  static size_t constexpr offset() {
   47|       |    // Pointer subtraction is only defined for array objects per ISO/IEC
   48|       |    // 14882:2017(E) § 8.7 [expr.add] ¶ 2.5, so we have to actually construct an
   49|       |    // object rather than use a nullptr pointer or std::declval (whose rules
   50|       |    // disallow odr-use).
   51|    549|    static_assert(std::is_standard_layout_v<ClassType>);
   52|       |
   53|       |    // This assumes that the layout of the ClassT temporary construct is the
   54|       |    // same as that of ClassT objects elsewhere, an assumption that is likely UB
   55|       |    // as only the first member of ClassT is guaranteed (by [class.mem] ¶ 17) to
   56|       |    // be pointer-interconvertible with ClassT. Subsequent members are only
   57|       |    // guaranteed to have increasing addresses ([class.mem] ¶ 24), so it's not
   58|       |    // impossible that a compiler may use different padding around members that
   59|       |    // are not accessed in this function than it uses elsewhere. For now, it's
   60|       |    // safest to use this _only_ with
   61|       |    // [[gnu::packed]] classes.
   62|    549|    const ClassType
   63|    549|        temporary{};  // Value initialization in case of const members
   64|    549|    return size_t(&(temporary.*PointerToMember)) - size_t(&temporary);
   65|    549|  }
_ZN15bt_lib_cpp_type19MemberPointerTraitsIXadL_ZN2bt5l2cap31FrameCheckSequenceOptionPayload8fcs_typeEEEE6offsetEv:
   46|    667|  static size_t constexpr offset() {
   47|       |    // Pointer subtraction is only defined for array objects per ISO/IEC
   48|       |    // 14882:2017(E) § 8.7 [expr.add] ¶ 2.5, so we have to actually construct an
   49|       |    // object rather than use a nullptr pointer or std::declval (whose rules
   50|       |    // disallow odr-use).
   51|    667|    static_assert(std::is_standard_layout_v<ClassType>);
   52|       |
   53|       |    // This assumes that the layout of the ClassT temporary construct is the
   54|       |    // same as that of ClassT objects elsewhere, an assumption that is likely UB
   55|       |    // as only the first member of ClassT is guaranteed (by [class.mem] ¶ 17) to
   56|       |    // be pointer-interconvertible with ClassT. Subsequent members are only
   57|       |    // guaranteed to have increasing addresses ([class.mem] ¶ 24), so it's not
   58|       |    // impossible that a compiler may use different padding around members that
   59|       |    // are not accessed in this function than it uses elsewhere. For now, it's
   60|       |    // safest to use this _only_ with
   61|       |    // [[gnu::packed]] classes.
   62|    667|    const ClassType
   63|    667|        temporary{};  // Value initialization in case of const members
   64|    667|    return size_t(&(temporary.*PointerToMember)) - size_t(&temporary);
   65|    667|  }
_ZN15bt_lib_cpp_type19MemberPointerTraitsIXadL_ZN2bt5l2cap25FlushTimeoutOptionPayload13flush_timeoutEEEE6offsetEv:
   46|    598|  static size_t constexpr offset() {
   47|       |    // Pointer subtraction is only defined for array objects per ISO/IEC
   48|       |    // 14882:2017(E) § 8.7 [expr.add] ¶ 2.5, so we have to actually construct an
   49|       |    // object rather than use a nullptr pointer or std::declval (whose rules
   50|       |    // disallow odr-use).
   51|    598|    static_assert(std::is_standard_layout_v<ClassType>);
   52|       |
   53|       |    // This assumes that the layout of the ClassT temporary construct is the
   54|       |    // same as that of ClassT objects elsewhere, an assumption that is likely UB
   55|       |    // as only the first member of ClassT is guaranteed (by [class.mem] ¶ 17) to
   56|       |    // be pointer-interconvertible with ClassT. Subsequent members are only
   57|       |    // guaranteed to have increasing addresses ([class.mem] ¶ 24), so it's not
   58|       |    // impossible that a compiler may use different padding around members that
   59|       |    // are not accessed in this function than it uses elsewhere. For now, it's
   60|       |    // safest to use this _only_ with
   61|       |    // [[gnu::packed]] classes.
   62|    598|    const ClassType
   63|    598|        temporary{};  // Value initialization in case of const members
   64|    598|    return size_t(&(temporary.*PointerToMember)) - size_t(&temporary);
   65|    598|  }

_ZN2pw5bytes14ConvertOrderToItEET_N5cpp206endianES2_:
  127|  2.62M|constexpr T ConvertOrderTo(endian to_endianness, T value) {
  128|  2.62M|  return ConvertOrder(endian::native, to_endianness, value);
  129|  2.62M|}
_ZN2pw5bytes12ConvertOrderItEET_N5cpp206endianES4_S2_:
  119|  6.79M|constexpr T ConvertOrder(endian from, endian to, T value) {
  120|  6.79M|  return from == to ? value : internal::ReverseBytes(value);
  ------------------
  |  Branch (120:10): [True: 6.79M, False: 0]
  ------------------
  121|  6.79M|}
_ZN2pw5bytes16ConvertOrderFromItEET_N5cpp206endianES2_:
  133|  4.16M|constexpr T ConvertOrderFrom(endian from_endianness, T value) {
  134|  4.16M|  return ConvertOrder(from_endianness, endian::native, value);
  135|  4.16M|}
_ZN2pw5bytes14ConvertOrderToIjEET_N5cpp206endianES2_:
  127|    383|constexpr T ConvertOrderTo(endian to_endianness, T value) {
  128|    383|  return ConvertOrder(endian::native, to_endianness, value);
  129|    383|}
_ZN2pw5bytes12ConvertOrderIjEET_N5cpp206endianES4_S2_:
  119|    383|constexpr T ConvertOrder(endian from, endian to, T value) {
  120|    383|  return from == to ? value : internal::ReverseBytes(value);
  ------------------
  |  Branch (120:10): [True: 383, False: 0]
  ------------------
  121|    383|}
_ZN2pw5bytes14ConvertOrderToImEET_N5cpp206endianES2_:
  127|   366k|constexpr T ConvertOrderTo(endian to_endianness, T value) {
  128|   366k|  return ConvertOrder(endian::native, to_endianness, value);
  129|   366k|}
_ZN2pw5bytes12ConvertOrderImEET_N5cpp206endianES4_S2_:
  119|   366k|constexpr T ConvertOrder(endian from, endian to, T value) {
  120|   366k|  return from == to ? value : internal::ReverseBytes(value);
  ------------------
  |  Branch (120:10): [True: 366k, False: 0]
  ------------------
  121|   366k|}

_ZN2pw6chrono12VirtualClockINS0_11SystemClockEED2Ev:
  180|  9.16k|  virtual ~VirtualClock() = default;

_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEEC2Ev:
  122|  3.05k|  constexpr IntrusiveForwardList() { CheckItemType(); }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE13CheckItemTypeEv:
  332|  3.05k|  static constexpr void CheckItemType() {
  333|  3.05k|    using IntrusiveItemType =
  334|  3.05k|        typename containers::internal::IntrusiveItem<ItemBase, T>::Type;
  335|  3.05k|    static_assert(
  336|  3.05k|        std::is_base_of<IntrusiveItemType, T>(),
  337|  3.05k|        "IntrusiveForwardList items must be derived from "
  338|  3.05k|        "IntrusiveForwardList<T>::Item, where T is the item or one of its "
  339|  3.05k|        "bases.");
  340|  3.05k|  }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE5clearEv:
  198|  3.05k|  void clear() { list_.clear(); }
_ZNK2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE5emptyEv:
  188|   610k|  [[nodiscard]] bool empty() const noexcept { return list_.empty(); }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE5frontEv:
  162|  1.65M|  reference front() { return *static_cast<T*>(list_.begin()); }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE9pop_frontEv:
  232|   543k|  void pop_front() { remove(front()); }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE6removeERKS3_:
  282|   841k|  bool remove(const T& item) { return list_.remove(item); }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE5beginEv:
  175|   841k|  iterator begin() noexcept { return iterator(list_.begin()); }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE12before_beginEv:
  169|   841k|  iterator before_begin() noexcept { return iterator(list_.before_begin()); }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE3endEv:
  181|   270M|  iterator end() noexcept { return iterator(list_.end()); }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE12insert_afterENS_10containers8internal15ForwardIteratorIS3_NS6_24IntrusiveForwardListItemEEERS3_:
  201|   841k|  iterator insert_after(iterator pos, T& item) {
  202|   841k|    return iterator(list_.insert_after(pos.item_, item));
  203|   841k|  }
_ZN2pw20IntrusiveForwardListINS_5async7backend10NativeTaskEE4ItemC2Ev:
  106|   840k|    constexpr explicit Item() = default;

_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE5beginEv:
   76|  2.49M|  constexpr Item* begin() noexcept { return head_.next_; }
_ZNK2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE5beginEv:
   77|   616k|  constexpr const Item* begin() const noexcept { return head_.next_; }
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE12before_beginEv:
   72|  1.68M|  constexpr Item* before_begin() noexcept { return &head_; }
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE3endEv:
   83|   386M|  constexpr Item* end() noexcept { return &head_; }
_ZNK2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE3endEv:
   84|   616k|  constexpr const Item* end() const noexcept { return &head_; }
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEEC2Ev:
   38|  3.05k|  constexpr GenericIntrusiveList() : head_() {}
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEED2Ev:
   61|  3.05k|  ~GenericIntrusiveList() { CheckIntrusiveContainerIsEmpty(empty()); }
_ZNK2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE5emptyEv:
   88|   616k|  bool empty() const noexcept { return begin() == end(); }
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE5clearEv:
  100|  3.05k|  void clear() {
  101|  3.05k|    while (!empty()) {
  ------------------
  |  Branch (101:12): [True: 0, False: 3.05k]
  ------------------
  102|      0|      erase_after(before_begin());
  103|      0|    }
  104|  3.05k|  }
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE11erase_afterEPS3_:
  143|   841k|  static Item* erase_after(Item* item) {
  144|   841k|    item->next_->unlist(item);
  145|   841k|    return item->next_;
  146|   841k|  }
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE6removeERKS3_:
  219|   841k|  bool remove(const Item& item_to_remove) {
  220|   841k|    return remove_if(
  221|   841k|               [&item_to_remove](const Item& item) -> bool {
  222|   841k|                 return &item_to_remove == &item;
  223|   841k|               },
  224|   841k|               1) != 0;
  225|   841k|  }
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE9remove_ifIZNS4_6removeERKS3_EUlS7_E_EEmT_m:
  235|   841k|                   size_t max = std::numeric_limits<size_t>::max()) {
  236|   841k|    size_t removed = 0;
  237|   841k|    Item* prev = before_begin();
  238|   116M|    while (true) {
  ------------------
  |  Branch (238:12): [Folded - Ignored]
  ------------------
  239|   116M|      Item* item = prev->next_;
  240|   116M|      if (item == end()) {
  ------------------
  |  Branch (240:11): [True: 0, False: 116M]
  ------------------
  241|      0|        break;
  242|      0|      }
  243|   116M|      if (pred(*item)) {
  ------------------
  |  Branch (243:11): [True: 841k, False: 115M]
  ------------------
  244|   841k|        erase_after(prev);
  245|   841k|        ++removed;
  246|   841k|        if (removed == max) {
  ------------------
  |  Branch (246:13): [True: 841k, False: 0]
  ------------------
  247|   841k|          break;
  248|   841k|        }
  249|   115M|      } else {
  250|   115M|        prev = item;
  251|   115M|      }
  252|   116M|    }
  253|   841k|    return removed;
  254|   841k|  }
_ZZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE6removeERKS3_ENKUlS6_E_clES6_:
  221|   116M|               [&item_to_remove](const Item& item) -> bool {
  222|   116M|                 return &item_to_remove == &item;
  223|   116M|               },
_ZN2pw10containers8internal20GenericIntrusiveListINS1_24IntrusiveForwardListItemEE12insert_afterEPS3_RS3_:
  115|   841k|  static Item* insert_after(Item* prev, Item& item) {
  116|   841k|    CheckIntrusiveItemIsUncontained(item.unlisted());
  117|   841k|    item.next_ = prev->next_;
  118|   841k|    item.set_previous(prev);
  119|   841k|    prev->next_ = &item;
  120|   841k|    item.next_->set_previous(&item);
  121|   841k|    return &item;
  122|   841k|  }

_ZNK2pw10containers8internal24IntrusiveForwardListItem13DoGetPreviousEv:
  141|   840k|  IntrusiveForwardListItem* DoGetPrevious() const {
  142|   840k|    IntrusiveForwardListItem* prev = next_;
  143|   840k|    while (prev->next_ != this) {
  ------------------
  |  Branch (143:12): [True: 0, False: 840k]
  ------------------
  144|      0|      prev = prev->next_;
  145|      0|    }
  146|   840k|    return prev;
  147|   840k|  }
_ZN2pw10containers8internal24IntrusiveForwardListItem13DoSetPreviousEPS2_:
  149|  5.04M|  void DoSetPrevious(IntrusiveForwardListItem*) {}
_ZN2pw10containers8internal21IntrusiveListItemBaseINS1_24IntrusiveForwardListItemEE7derivedEv:
  103|  4.20M|  constexpr Derived* derived() { return static_cast<Derived*>(this); }
_ZNK2pw10containers8internal21IntrusiveListItemBaseINS1_24IntrusiveForwardListItemEE8unlistedEv:
   49|  2.52M|  bool unlisted() const { return this == next_; }
_ZN2pw10containers8internal21IntrusiveListItemBaseINS1_24IntrusiveForwardListItemEE6unlistEPS3_:
   55|  1.68M|  void unlist(Derived* prev = nullptr) {
   56|  1.68M|    if (prev == nullptr) {
  ------------------
  |  Branch (56:9): [True: 840k, False: 841k]
  ------------------
   57|   840k|      prev = previous();
   58|   840k|    }
   59|  1.68M|    prev->next_ = next_;
   60|  1.68M|    next_->set_previous(prev);
   61|  1.68M|    set_previous(derived());
   62|  1.68M|    next_ = derived();
   63|  1.68M|  }
_ZNK2pw10containers8internal21IntrusiveListItemBaseINS1_24IntrusiveForwardListItemEE7derivedEv:
  104|   840k|  constexpr const Derived* derived() const {
  105|   840k|    return static_cast<const Derived*>(this);
  106|   840k|  }
_ZNK2pw10containers8internal21IntrusiveListItemBaseINS1_24IntrusiveForwardListItemEE8previousEv:
  118|   840k|  Derived* previous() const { return derived()->DoGetPrevious(); }
_ZN2pw10containers8internal21IntrusiveListItemBaseINS1_24IntrusiveForwardListItemEE12set_previousEPS3_:
  121|  5.04M|  void set_previous(Derived* prev) {
  122|  5.04M|    static_cast<Derived*>(this)->DoSetPrevious(prev);
  123|  5.04M|  }
_ZN2pw10containers8internal24IntrusiveForwardListItemC2Ev:
  133|   843k|  constexpr IntrusiveForwardListItem() = default;
_ZN2pw10containers8internal21IntrusiveListItemBaseINS1_24IntrusiveForwardListItemEEC2Ev:
   44|   843k|  constexpr IntrusiveListItemBase() : next_(derived()) {}
_ZN2pw10containers8internal21IntrusiveListItemBaseINS1_24IntrusiveForwardListItemEED2Ev:
   37|   843k|  ~IntrusiveListItemBase() { CheckIntrusiveItemIsUncontained(unlisted()); }

_ZNK2pw10containers8internal12IteratorBaseINS1_15ForwardIteratorINS_5async7backend10NativeTaskENS1_24IntrusiveForwardListItemEEES6_S7_EneIS8_S6_S7_vEEbRKNS2_IT_T0_T1_EE:
   60|   270M|  constexpr bool operator!=(const IteratorBase<D2, T2, I2>& rhs) const {
   61|   270M|    return !operator==(rhs);
   62|   270M|  }
_ZNK2pw10containers8internal12IteratorBaseINS1_15ForwardIteratorINS_5async7backend10NativeTaskENS1_24IntrusiveForwardListItemEEES6_S7_EeqIS8_S6_S7_vEEbRKNS2_IT_T0_T1_EE:
   50|   270M|  constexpr bool operator==(const IteratorBase<D2, T2, I2>& rhs) const {
   51|   270M|    return static_cast<const I*>(derived().item_) ==
   52|   270M|           static_cast<const I2*>(rhs.derived().item_);
   53|   270M|  }
_ZNK2pw10containers8internal12IteratorBaseINS1_15ForwardIteratorINS_5async7backend10NativeTaskENS1_24IntrusiveForwardListItemEEES6_S7_E7derivedEv:
   69|   540M|  const Derived& derived() const { return static_cast<const Derived&>(*this); }
_ZN2pw10containers8internal12IteratorBaseINS1_15ForwardIteratorINS_5async7backend10NativeTaskENS1_24IntrusiveForwardListItemEEES6_S7_EptEv:
   43|   269M|  constexpr T* operator->() { return downcast(); }
_ZN2pw10containers8internal12IteratorBaseINS1_15ForwardIteratorINS_5async7backend10NativeTaskENS1_24IntrusiveForwardListItemEEES6_S7_E8downcastEv:
   71|   269M|  T* downcast() { return static_cast<T*>(derived().item_); }
_ZN2pw10containers8internal12IteratorBaseINS1_15ForwardIteratorINS_5async7backend10NativeTaskENS1_24IntrusiveForwardListItemEEES6_S7_E7derivedEv:
   68|   269M|  Derived& derived() { return static_cast<Derived&>(*this); }
_ZN2pw10containers8internal13IncrementableINS1_15ForwardIteratorINS_5async7backend10NativeTaskENS1_24IntrusiveForwardListItemEEES7_EppEv:
   79|   539M|  constexpr Derived& operator++() {
   80|   539M|    auto* derived = static_cast<Derived*>(this);
   81|   539M|    derived->item_ = static_cast<I*>(derived->item_->next_);
   82|   539M|    return *derived;
   83|   539M|  }
_ZN2pw10containers8internal15ForwardIteratorINS_5async7backend10NativeTaskENS1_24IntrusiveForwardListItemEEC2EPS6_:
  144|   272M|  constexpr explicit ForwardIterator(I* item) : item_{item} {}

_ZN2pw10containers8internal19LegacyIntrusiveListINS_5async7backend10NativeTaskEEC2Ev:
   50|  3.05k|  constexpr LegacyIntrusiveList() = default;
_ZN2pw10containers8internal19LegacyIntrusiveListINS_5async7backend10NativeTaskEED2Ev:
   58|  3.05k|  ~LegacyIntrusiveList() {
   59|       |    // The legacy intrusive list unlisted the sentinel item on destruction.
   60|  3.05k|    Base::clear();
   61|  3.05k|  }
_ZN2pw10containers8internal19LegacyIntrusiveListINS_5async7backend10NativeTaskEE4ItemD2Ev:
   38|   840k|    ~Item() { Base::Item::unlist(); }
_ZN2pw10containers8internal19LegacyIntrusiveListINS_5async7backend10NativeTaskEE4ItemC2Ev:
   41|   840k|    constexpr explicit Item() = default;

_ZN2pw8internal14RefCountedBaseC2Ev:
   31|   739k|  constexpr RefCountedBase() = default;

_ZN2pw12IntrusivePtrI7WeakRefEC2EDn:
   51|  1.54M|  constexpr IntrusivePtr(std::nullptr_t) : IntrusivePtr() {}
_ZN2pw12IntrusivePtrI7WeakRefEC2Ev:
   46|  1.54M|  constexpr IntrusivePtr() : ptr_(nullptr) {}
_ZN2pw12IntrusivePtrI7WeakRefED2Ev:
  103|  13.8M|  ~IntrusivePtr() {
  104|  13.8M|    T* ptr = ptr_;
  105|       |    // Clear ptr_ to help detect re-entrancy in ~T.
  106|  13.8M|    ptr_ = nullptr;
  107|  13.8M|    if (ptr && ptr->ReleaseRef()) {
  ------------------
  |  Branch (107:9): [True: 4.38M, False: 9.51M]
  |  Branch (107:16): [True: 739k, False: 3.64M]
  ------------------
  108|   739k|      recycle_or_delete(ptr);
  109|   739k|    }
  110|  13.8M|  }
_ZN2pw12IntrusivePtrI7WeakRefE17recycle_or_deleteEPS1_:
  140|   739k|  static void recycle_or_delete(T* ptr) {
  141|       |    if constexpr (::pw::internal::has_pw_recycle_v<T>) {
  142|       |      ::pw::internal::recycle<T>(ptr);
  143|   739k|    } else {
  144|   739k|      delete ptr;
  145|   739k|    }
  146|   739k|  }
_ZNK2pw12IntrusivePtrI7WeakRefEcvbEv:
  122|  12.4M|  explicit operator bool() const { return ptr_; }
_ZNK2pw12IntrusivePtrI7WeakRefEptEv:
  120|  12.1M|  T* operator->() const { return ptr_; }
_ZN2pweqI7WeakRefEEbRKNS_12IntrusivePtrIT_EEDn:
  162|  2.23M|inline bool operator==(const IntrusivePtr<T>& ptr, std::nullptr_t) {
  163|  2.23M|  return ptr.get() == nullptr;
  164|  2.23M|}
_ZNK2pw12IntrusivePtrI7WeakRefE3getEv:
  114|  2.23M|  T* get() const { return ptr_; }
_ZN2pw12IntrusivePtrI7WeakRefEC2EPS1_:
   63|  4.38M|  explicit IntrusivePtr(T* p) : ptr_(p) {
   64|  4.38M|    if (ptr_) {
  ------------------
  |  Branch (64:9): [True: 4.38M, False: 0]
  ------------------
   65|  4.38M|      ptr_->AddRef();
   66|  4.38M|    }
   67|  4.38M|  }
_ZN2pw12IntrusivePtrI7WeakRefEaSEOS2_:
   95|  1.62M|  IntrusivePtr& operator=(IntrusivePtr&& other) noexcept {
   96|  1.62M|    if (&other == this) {
  ------------------
  |  Branch (96:9): [True: 0, False: 1.62M]
  ------------------
   97|      0|      return *this;
   98|      0|    }
   99|  1.62M|    IntrusivePtr(std::move(other)).swap(*this);
  100|  1.62M|    return *this;
  101|  1.62M|  }
_ZN2pw12IntrusivePtrI7WeakRefEC2EOS2_:
   72|  7.96M|      : ptr_(std::exchange(other.ptr_, nullptr)) {}
_ZN2pw12IntrusivePtrI7WeakRefE4swapERS2_:
  112|  1.62M|  void swap(IntrusivePtr& other) { std::swap(ptr_, other.ptr_); }
_ZN2pw12IntrusivePtrI7WeakRefEC2ERKS2_:
   69|  3.64M|  IntrusivePtr(const IntrusivePtr& other) : IntrusivePtr(other.ptr_) {}

_ZN2pw6random21FuzzerRandomGeneratorC2EP18FuzzedDataProvider:
   28|  3.05k|  FuzzerRandomGenerator(FuzzedDataProvider* provider) : provider_(provider) {}

_ZN2pw6random15RandomGeneratorD2Ev:
   36|  3.05k|  virtual ~RandomGenerator() = default;

_ZN2pw15internal_result12StatusOrDataINS_18bluetooth_sapphire5LeaseELb0EEC2IJS3_EEENSt3__110in_place_tEDpOT_:
  208|  1.16M|      : status_(), data_(std::forward<Args>(args)...) {}                       \
_ZNK2pw15internal_result12StatusOrDataINS_18bluetooth_sapphire5LeaseELb0EE2okEv:
  265|  1.16M|  constexpr bool ok() const { return status_.ok(); }                           \
_ZN2pw15internal_result12StatusOrDataINS_18bluetooth_sapphire5LeaseELb0EED2Ev:
  301|  1.16M|  ~StatusOrData() {
  302|  1.16M|    if (ok()) {
  ------------------
  |  Branch (302:9): [True: 1.16M, False: 0]
  ------------------
  303|  1.16M|      data_.~T();
  304|  1.16M|    }
  305|  1.16M|  }
heap_dispatcher.cc:_ZN2pw15internal_result12StatusOrDataIPNS_5async12_GLOBAL__N_115TaskAndFunctionELb1EEC2IJS5_EEENSt3__110in_place_tEDpOT_:
  208|   543k|      : status_(), data_(std::forward<Args>(args)...) {}                       \

_ZN2pw6ResultINS_18bluetooth_sapphire5LeaseEEC2IS2_TnNSt3__19enable_ifIXsr3std11conjunctionINS5_11disjunctionIJNS5_7is_sameIS2_u11__remove_cvIu20__remove_reference_tIOT_EEEENS5_8negationINS7_IJNS8_IS3_SC_EENS8_INS_6StatusESC_EENS8_INS5_10in_place_tESC_EENS_15internal_result31IsDirectInitializationAmbiguousIS2_SA_EEEEEEEEEENS5_16is_constructibleIS2_JSA_EEENS5_14is_convertibleISA_S2_EENS7_IJNS8_Iu11__remove_cvIu20__remove_reference_tIS9_EES2_EENS5_11conjunctionIJNSE_INSS_ISA_SG_EEEENSE_INSK_29HasConversionOperatorToResultIS2_SA_vEEEEEEEEEEEE5valueEiE4typeELi0EEESA_:
  396|  1.16M|      : Result(std::in_place, std::forward<U>(u)) {}
_ZN2pw6ResultINS_18bluetooth_sapphire5LeaseEEC2IJS2_EEENSt3__110in_place_tEDpOT_:
  770|  1.16M|    : Base(std::in_place, std::forward<Args>(args)...) {}
_ZNO2pw6ResultINS_18bluetooth_sapphire5LeaseEE8value_orIS2_EES2_OT_:
  859|   419k|constexpr T Result<T>::value_or(U&& default_value) && {
  860|   419k|  if (ok()) {
  ------------------
  |  Branch (860:7): [True: 419k, False: 0]
  ------------------
  861|   419k|    return std::move(this->data_);
  862|   419k|  }
  863|      0|  return std::forward<U>(default_value);
  864|   419k|}
_ZNK2pw6ResultINS_18bluetooth_sapphire5LeaseEE2okEv:
  430|   801k|  [[nodiscard]] constexpr bool ok() const { return this->status_.ok(); }
heap_dispatcher.cc:_ZN2pw6ResultIPNS_5async12_GLOBAL__N_115TaskAndFunctionEEC2IS4_TnNSt3__19enable_ifIXsr3std11conjunctionINS7_11disjunctionIJNS7_7is_sameIS4_u11__remove_cvIu20__remove_reference_tIOT_EEEENS7_8negationINS9_IJNSA_IS5_SE_EENSA_INS_6StatusESE_EENSA_INS7_10in_place_tESE_EENS_15internal_result31IsDirectInitializationAmbiguousIS4_SC_EEEEEEEEEENS7_16is_constructibleIS4_JSC_EEENS7_14is_convertibleISC_S4_EENS9_IJNSA_Iu11__remove_cvIu20__remove_reference_tISB_EES4_EENS7_11conjunctionIJNSG_INSU_ISC_SI_EEEENSG_INSM_29HasConversionOperatorToResultIS4_SC_vEEEEEEEEEEEE5valueEiE4typeELi0EEESC_:
  396|   543k|      : Result(std::in_place, std::forward<U>(u)) {}
heap_dispatcher.cc:_ZN2pw6ResultIPNS_5async12_GLOBAL__N_115TaskAndFunctionEEC2IJS4_EEENSt3__110in_place_tEDpOT_:
  770|   543k|    : Base(std::in_place, std::forward<Args>(args)...) {}
heap_dispatcher.cc:_ZNK2pw6ResultIPNS_5async12_GLOBAL__N_115TaskAndFunctionEE2okEv:
  430|   543k|  [[nodiscard]] constexpr bool ok() const { return this->status_.ok(); }
heap_dispatcher.cc:_ZNR2pw6ResultIPNS_5async12_GLOBAL__N_115TaskAndFunctionEEdeEv:
  819|   543k|constexpr T& Result<T>::operator*() & {
  820|   543k|  PW_ASSERT(this->status_.ok());
  821|   543k|  return this->data_;
  822|   543k|}

_ZNK2pw16pw_span_internal13ExtentStorageILm18446744073709551615EE4sizeEv:
  154|   258M|  constexpr size_t size() const noexcept { return size_; }
_ZN2pw16pw_span_internal13ExtentStorageILm18446744073709551615EEC2Em:
  153|  21.5M|  constexpr explicit ExtentStorage(size_t size) noexcept : size_(size) {}
_ZNK2pw4spanIKSt4byteLm18446744073709551615EE4sizeEv:
  375|   196M|  constexpr size_t size() const noexcept { return ExtentStorage::size(); }
_ZNK2pw4spanIKSt4byteLm18446744073709551615EE4dataEv:
  400|   188M|  constexpr T* data() const noexcept { return data_; }
_ZNK2pw4spanIcLm18446744073709551615EE4sizeEv:
  375|  51.6M|  constexpr size_t size() const noexcept { return ExtentStorage::size(); }
_ZNK2pw4spanIcLm18446744073709551615EE5emptyEv:
  377|  27.5M|  [[nodiscard]] constexpr bool empty() const noexcept { return size() == 0; }
_ZNK2pw4spanIcLm18446744073709551615EE4dataEv:
  400|  27.5M|  constexpr T* data() const noexcept { return data_; }
_ZNK2pw4spanIcLm18446744073709551615EEixEm:
  380|  10.3M|  constexpr T& operator[](size_t idx) const noexcept {
  381|       |    // Note: CHECK_LT is not constexpr, hence regular CHECK must be used.
  382|  10.3M|    _PW_SPAN_ASSERT(idx < size());
  383|  10.3M|    return *(data() + idx);
  384|  10.3M|  }
_ZNK2pw4spanIKcLm18446744073709551615EE4dataEv:
  400|  17.2M|  constexpr T* data() const noexcept { return data_; }
_ZNK2pw4spanIKcLm18446744073709551615EE4sizeEv:
  375|  10.3M|  constexpr size_t size() const noexcept { return ExtentStorage::size(); }
_ZNK2pw4spanIcLm18446744073709551615EE7subspanEmm:
  367|  3.44M|      size_t offset, size_t count = dynamic_extent) const noexcept {
  368|       |    // Note: CHECK_LE is not constexpr, hence regular CHECK must be used.
  369|  3.44M|    _PW_SPAN_ASSERT(offset <= size());
  370|  3.44M|    _PW_SPAN_ASSERT(count == dynamic_extent || count <= size() - offset);
  371|  3.44M|    return {data() + offset, count != dynamic_extent ? count : size() - offset};
  ------------------
  |  Branch (371:30): [True: 0, False: 3.44M]
  ------------------
  372|  3.44M|  }
_ZN2pw4spanIcLm18446744073709551615EEC2INSt3__112basic_stringIcNS3_11char_traitsIcEENS3_9allocatorIcEEEEvEERT_:
  297|    180|      : span(std::data(container), std::size(container)) {}
_ZN2pw4spanIcLm18446744073709551615EEC2EPcm:
  255|  6.88M|      : ExtentStorage(size), data_(data) {
  256|  6.88M|    _PW_SPAN_ASSERT(Extent == dynamic_extent || Extent == size);
  257|  6.88M|  }
_ZN2pw4spanIKSt4byteLm18446744073709551615EEC2EPS2_m:
  255|  4.35M|      : ExtentStorage(size), data_(data) {
  256|  4.35M|    _PW_SPAN_ASSERT(Extent == dynamic_extent || Extent == size);
  257|  4.35M|  }
_ZN2pw4spanIcLm18446744073709551615EEC2ILm150EvEERAT__c:
  273|  3.44M|  constexpr span(T (&array)[N]) noexcept : span(std::data(array), N) {}
_ZN2pw4spanIKcLm18446744073709551615EEC2INSt3__117basic_string_viewIcNS4_11char_traitsIcEEEEvEERT_:
  297|  3.44M|      : span(std::data(container), std::size(container)) {}
_ZN2pw4spanIKcLm18446744073709551615EEC2EPS1_m:
  255|  10.3M|      : ExtentStorage(size), data_(data) {
  256|  10.3M|    _PW_SPAN_ASSERT(Extent == dynamic_extent || Extent == size);
  257|  10.3M|  }
_ZN2pw8as_bytesIKcLm18446744073709551615EEENS_4spanIKSt4byteXqueqT0_L_ZNS_14dynamic_extentEEL_ZNS_14dynamic_extentEEmlstT_T0_EEENS2_IS5_XT0_EEE:
  425|  3.44M|as_bytes(span<T, X> s) noexcept {
  426|  3.44M|  return {reinterpret_cast<const std::byte*>(s.data()), s.size_bytes()};
  427|  3.44M|}
_ZNK2pw4spanIKcLm18446744073709551615EE10size_bytesEv:
  376|  3.44M|  constexpr size_t size_bytes() const noexcept { return size() * sizeof(T); }
_ZNK2pw4spanIKSt4byteLm18446744073709551615EE10size_bytesEv:
  376|   195M|  constexpr size_t size_bytes() const noexcept { return size() * sizeof(T); }
_ZNK2pw4spanIKSt4byteLm18446744073709551615EEixEm:
  380|   188M|  constexpr T& operator[](size_t idx) const noexcept {
  381|       |    // Note: CHECK_LT is not constexpr, hence regular CHECK must be used.
  382|   188M|    _PW_SPAN_ASSERT(idx < size());
  383|   188M|    return *(data() + idx);
  384|   188M|  }

_ZN2pw6StatusC2E9pw_Status:
  146|   211M|  constexpr Status(Code code = PW_STATUS_OK) : code_(code) {}
_ZNK2pw6Status2okEv:
  157|   200M|  [[nodiscard]] constexpr bool ok() const { return code_ == PW_STATUS_OK; }
_ZN2pw6Status17ResourceExhaustedEv:
  116|  13.8k|  [[nodiscard]] static constexpr Status ResourceExhausted() {
  117|  13.8k|    return PW_STATUS_RESOURCE_EXHAUSTED;
  118|  13.8k|  }
_ZNK2pw6Status4codeEv:
  152|  20.6M|  constexpr Code code() const { return code_; }
_ZN2pw8OkStatusEv:
  234|   206M|[[nodiscard]] constexpr Status OkStatus() { return Status(); }

_ZN2pw14StatusWithSize17ResourceExhaustedEm:
   75|  13.8k|  static constexpr StatusWithSize ResourceExhausted(size_t size = 0) {
   76|  13.8k|    return StatusWithSize(Status::ResourceExhausted(), size);
   77|  13.8k|  }
_ZN2pw14StatusWithSizeC2ENS_6StatusEm:
  113|  3.45M|      : StatusWithSize((static_cast<size_t>(status.code()) << kStatusShift) |
  114|  3.45M|                       size) {}
_ZNK2pw14StatusWithSize4sizeEv:
  146|  6.88M|  [[nodiscard]] constexpr size_t size() const { return size_ & kSizeMask; }
_ZNK2pw14StatusWithSize2okEv:
  152|  3.44M|  [[nodiscard]] constexpr bool ok() const {
  153|  3.44M|    return (size_ & kStatusMask) == 0u;
  154|  3.44M|  }
_ZNK2pw14StatusWithSize11IgnoreErrorEv:
  159|  3.44M|  constexpr void IgnoreError() const {}
_ZNK2pw14StatusWithSize6statusEv:
  161|  3.44M|  [[nodiscard]] constexpr Status status() const {
  162|  3.44M|    return static_cast<Status::Code>((size_ & kStatusMask) >> kStatusShift);
  163|  3.44M|  }
_ZN2pw14StatusWithSizeC2ImvEET_:
  107|  6.90M|  explicit constexpr StatusWithSize(T size) : size_(static_cast<size_t>(size)) {
  108|       |    // TODO(hepler): Add debug-only assert that size <= max_size().
  109|  6.90M|  }
_ZN2pw14StatusWithSizeC2IivEET_:
  107|  3.42M|  explicit constexpr StatusWithSize(T size) : size_(static_cast<size_t>(size)) {
  108|       |    // TODO(hepler): Add debug-only assert that size <= max_size().
  109|  3.42M|  }

_ZN2pw13StringBuilderC2ENS_4spanIcLm18446744073709551615EEE:
   91|  3.44M|      : buffer_(buffer), size_(&inline_size_), inline_size_(0) {
   92|  3.44M|    NullTerminate();
   93|  3.44M|  }
_ZNK2pw13StringBuilder4dataEv:
  114|  3.44M|  const char* data() const { return buffer_.data(); }
_ZNK2pw13StringBuilder4viewEv:
  120|  3.44M|  std::string_view view() const { return std::string_view(data(), size()); }
_ZNK2pw13StringBuildercvNSt3__117basic_string_viewIcNS1_11char_traitsIcEEEEEv:
  124|  3.44M|  operator std::string_view() const { return view(); }
_ZNK2pw13StringBuilder4sizeEv:
  167|  37.8M|  size_t size() const { return *size_; }
_ZNK2pw13StringBuilder8max_sizeEv:
  170|  6.88M|  size_t max_size() const { return buffer_.empty() ? 0u : buffer_.size() - 1; }
  ------------------
  |  Branch (170:36): [True: 0, False: 6.88M]
  ------------------
_ZN2pw13StringBuilder10StatusCodeENS_6StatusE:
  291|  17.2M|  static constexpr unsigned char StatusCode(Status status) {
  292|  17.2M|    return static_cast<unsigned char>(status.code());
  293|  17.2M|  }
_ZN2pw13StringBuilder13NullTerminateEv:
  301|  10.3M|  constexpr void NullTerminate() {
  302|  10.3M|    if (!buffer_.empty()) {
  ------------------
  |  Branch (302:9): [True: 10.3M, False: 0]
  ------------------
  303|  10.3M|      buffer_[size()] = '\0';
  304|  10.3M|    }
  305|  10.3M|  }
_ZN2pw13StringBuilderlsIPKcEERS0_RKT_:
  224|  3.44M|  StringBuilder& operator<<(const T& value) {
  225|       |    /// For types compatible with `std::string_view`, use the `append` function,
  226|       |    /// which gives smaller code size.
  227|  3.44M|    if constexpr (std::is_convertible_v<T, std::string_view>) {
  228|  3.44M|      append(value);
  229|       |    } else if constexpr (std::is_convertible_v<T, span<const std::byte>>) {
  230|       |      WriteBytes(value);
  231|       |    } else {
  232|       |      HandleStatusWithSize(ToString(value, buffer_.subspan(size())));
  233|       |    }
  234|  3.44M|    return *this;
  235|  3.44M|  }
_ZN2pw12StringBufferILm150EEC2Ev:
  333|  3.44M|  StringBuffer() : StringBuilder(buffer_) {}
_ZN2pw12StringBufferILm150EElsIPKcEERS1_OT_:
  387|  3.44M|  StringBuffer& operator<<(T&& value) {
  388|  3.44M|    static_cast<StringBuilder&>(*this) << std::forward<T>(value);
  389|  3.44M|    return *this;
  390|  3.44M|  }
_ZN2pw12StringBufferILm150EElsIRA3_KcEERS1_OT_:
  387|  3.44M|  StringBuffer& operator<<(T&& value) {
  388|  3.44M|    static_cast<StringBuilder&>(*this) << std::forward<T>(value);
  389|  3.44M|    return *this;
  390|  3.44M|  }
_ZN2pw13StringBuilderlsIA3_cEERS0_RKT_:
  224|  3.44M|  StringBuilder& operator<<(const T& value) {
  225|       |    /// For types compatible with `std::string_view`, use the `append` function,
  226|       |    /// which gives smaller code size.
  227|  3.44M|    if constexpr (std::is_convertible_v<T, std::string_view>) {
  228|  3.44M|      append(value);
  229|       |    } else if constexpr (std::is_convertible_v<T, span<const std::byte>>) {
  230|       |      WriteBytes(value);
  231|       |    } else {
  232|       |      HandleStatusWithSize(ToString(value, buffer_.subspan(size())));
  233|       |    }
  234|  3.44M|    return *this;
  235|  3.44M|  }

_ZN2pw6string8internal13ClampedLengthEPKcm:
   30|  6.88M|constexpr size_t ClampedLength(const char* str, size_t max_len) {
   31|  6.88M|  size_t length = 0;
   32|       |
   33|  6.88M|  if (str != nullptr) {
  ------------------
  |  Branch (33:7): [True: 6.88M, False: 0]
  ------------------
   34|  68.8M|    for (; length < max_len; ++length) {
  ------------------
  |  Branch (34:12): [True: 68.8M, False: 0]
  ------------------
   35|  68.8M|      if (str[length] == '\0') {
  ------------------
  |  Branch (35:11): [True: 6.88M, False: 61.9M]
  ------------------
   36|  6.88M|        break;
   37|  6.88M|      }
   38|  68.8M|    }
   39|  6.88M|  }
   40|       |
   41|  6.88M|  return length;
   42|  6.88M|}

_ZN2pw6string14ClampedCStringENS_4spanIKcLm18446744073709551615EEE:
   58|  6.88M|constexpr std::string_view ClampedCString(span<const char> str) {
   59|  6.88M|  return std::string_view(str.data(),
   60|  6.88M|                          internal::ClampedLength(str.data(), str.size()));
   61|  6.88M|}
_ZN2pw6string14ClampedCStringEPKcm:
   63|  6.88M|constexpr std::string_view ClampedCString(const char* str, size_t max_len) {
   64|  6.88M|  return ClampedCString(span<const char>(str, max_len));
   65|  6.88M|}

_ZN7testing8internal16BoolFromGTestEnvEPKcb:
 1366|     24|bool BoolFromGTestEnv(const char* flag, bool default_value) {
 1367|       |#if defined(GTEST_GET_BOOL_FROM_ENV_)
 1368|       |  return GTEST_GET_BOOL_FROM_ENV_(flag, default_value);
 1369|       |#else
 1370|     24|  const std::string env_var = FlagToEnvVar(flag);
 1371|     24|  const char* const string_value = posix::GetEnv(env_var.c_str());
 1372|     24|  return string_value == nullptr ? default_value
  ------------------
  |  Branch (1372:10): [True: 24, False: 0]
  ------------------
 1373|     24|                                 : strcmp(string_value, "0") != 0;
 1374|     24|#endif  // defined(GTEST_GET_BOOL_FROM_ENV_)
 1375|     24|}
_ZN7testing8internal17Int32FromGTestEnvEPKci:
 1380|      6|int32_t Int32FromGTestEnv(const char* flag, int32_t default_value) {
 1381|       |#if defined(GTEST_GET_INT32_FROM_ENV_)
 1382|       |  return GTEST_GET_INT32_FROM_ENV_(flag, default_value);
 1383|       |#else
 1384|      6|  const std::string env_var = FlagToEnvVar(flag);
 1385|      6|  const char* const string_value = posix::GetEnv(env_var.c_str());
 1386|      6|  if (string_value == nullptr) {
  ------------------
  |  Branch (1386:7): [True: 6, False: 0]
  ------------------
 1387|       |    // The environment variable is not set.
 1388|      6|    return default_value;
 1389|      6|  }
 1390|       |
 1391|      0|  int32_t result = default_value;
 1392|      0|  if (!ParseInt32(Message() << "Environment variable " << env_var, string_value,
  ------------------
  |  Branch (1392:7): [True: 0, False: 0]
  ------------------
 1393|      0|                  &result)) {
 1394|      0|    printf("The default value %s is used.\n",
 1395|      0|           (Message() << default_value).GetString().c_str());
 1396|      0|    fflush(stdout);
 1397|      0|    return default_value;
 1398|      0|  }
 1399|       |
 1400|      0|  return result;
 1401|      0|#endif  // defined(GTEST_GET_INT32_FROM_ENV_)
 1402|      0|}
_ZN7testing8internal25OutputFlagAlsoCheckEnvVarEv:
 1412|      2|std::string OutputFlagAlsoCheckEnvVar() {
 1413|      2|  std::string default_value_for_output_flag = "";
 1414|      2|  const char* xml_output_file_env = posix::GetEnv("XML_OUTPUT_FILE");
 1415|      2|  if (nullptr != xml_output_file_env) {
  ------------------
  |  Branch (1415:7): [True: 0, False: 2]
  ------------------
 1416|      0|    default_value_for_output_flag = std::string("xml:") + xml_output_file_env;
 1417|      0|  }
 1418|      2|  return default_value_for_output_flag;
 1419|      2|}
_ZN7testing8internal18StringFromGTestEnvEPKcS2_:
 1423|     12|const char* StringFromGTestEnv(const char* flag, const char* default_value) {
 1424|       |#if defined(GTEST_GET_STRING_FROM_ENV_)
 1425|       |  return GTEST_GET_STRING_FROM_ENV_(flag, default_value);
 1426|       |#else
 1427|     12|  const std::string env_var = FlagToEnvVar(flag);
 1428|     12|  const char* const value = posix::GetEnv(env_var.c_str());
 1429|     12|  return value == nullptr ? default_value : value;
  ------------------
  |  Branch (1429:10): [True: 12, False: 0]
  ------------------
 1430|     12|#endif  // defined(GTEST_GET_STRING_FROM_ENV_)
 1431|     12|}
gtest-port.cc:_ZN7testing8internalL12FlagToEnvVarEPKc:
 1309|     42|static std::string FlagToEnvVar(const char* flag) {
 1310|     42|  const std::string full_flag =
 1311|     42|      (Message() << GTEST_FLAG_PREFIX_ << flag).GetString();
 1312|       |
 1313|     42|  Message env_var;
 1314|    870|  for (size_t i = 0; i != full_flag.length(); i++) {
  ------------------
  |  Branch (1314:22): [True: 828, False: 42]
  ------------------
 1315|    828|    env_var << ToUpper(full_flag.c_str()[i]);
 1316|    828|  }
 1317|       |
 1318|     42|  return env_var.GetString();
 1319|     42|}

_ZN7testing8internal13GetTestTypeIdEv:
  988|      2|TypeId GetTestTypeId() { return GetTypeId<Test>(); }
_ZN7testing7MessageC2Ev:
 1301|     84|Message::Message() : ss_(new ::std::stringstream) {
 1302|       |  // By default, we want there to be enough precision when printing
 1303|       |  // a double to a Message.
 1304|     84|  *ss_ << std::setprecision(std::numeric_limits<double>::digits10 + 2);
 1305|     84|}
_ZNK7testing7Message9GetStringEv:
 1327|     84|std::string Message::GetString() const {
 1328|     84|  return internal::StringStreamToString(ss_.get());
 1329|     84|}
_ZN7testing8internal20StringStreamToStringEPNSt3__118basic_stringstreamIcNS1_11char_traitsIcEENS1_9allocatorIcEEEE:
 2257|     84|std::string StringStreamToString(::std::stringstream* ss) {
 2258|     84|  const ::std::string& str = ss->str();
 2259|     84|  const char* const start = str.c_str();
 2260|     84|  const char* const end = start + str.length();
 2261|       |
 2262|     84|  std::string result;
 2263|     84|  result.reserve(static_cast<size_t>(2 * (end - start)));
 2264|  1.74k|  for (const char* ch = start; ch != end; ++ch) {
  ------------------
  |  Branch (2264:32): [True: 1.65k, False: 84]
  ------------------
 2265|  1.65k|    if (*ch == '\0') {
  ------------------
  |  Branch (2265:9): [True: 0, False: 1.65k]
  ------------------
 2266|      0|      result += "\\0";  // Replaces NUL with "\\0";
 2267|  1.65k|    } else {
 2268|  1.65k|      result += *ch;
 2269|  1.65k|    }
 2270|  1.65k|  }
 2271|       |
 2272|     84|  return result;
 2273|     84|}
_ZN7testing4TestC2Ev:
 2502|  3.05k|Test::Test() : gtest_flag_saver_(new GTEST_FLAG_SAVER_) {}
_ZN7testing4TestD2Ev:
 2507|  3.05k|Test::~Test() = default;
gtest.cc:_ZN7testingL18GetDefaultFailFastEv:
  244|      2|static bool GetDefaultFailFast() {
  245|      2|  const char* const testbridge_test_runner_fail_fast =
  246|      2|      internal::posix::GetEnv("TESTBRIDGE_TEST_RUNNER_FAIL_FAST");
  247|      2|  if (testbridge_test_runner_fail_fast != nullptr) {
  ------------------
  |  Branch (247:7): [True: 0, False: 2]
  ------------------
  248|      0|    return strcmp(testbridge_test_runner_fail_fast, "1") == 0;
  249|      0|  }
  250|      2|  return false;
  251|      2|}
gtest.cc:_ZN7testingL16GetDefaultFilterEv:
  233|      2|static const char* GetDefaultFilter() {
  234|      2|  const char* const testbridge_test_only =
  235|      2|      internal::posix::GetEnv("TESTBRIDGE_TEST_ONLY");
  236|      2|  if (testbridge_test_only != nullptr) {
  ------------------
  |  Branch (236:7): [True: 0, False: 2]
  ------------------
  237|      0|    return testbridge_test_only;
  238|      0|  }
  239|      2|  return kUniversalFilter;
  240|      2|}

_ZN2pw5async14HeapDispatcher6PostAtEON3fit13function_implILm8ELb0EFvRNS0_7ContextENS_6StatusEENSt3__19allocatorISt4byteEEEENS8_6chrono10time_pointINS_6chrono11SystemClockENSE_8durationIlNS8_5ratioILl1ELl1000000000EEEEEEE:
   57|   543k|                              chrono::SystemClock::time_point time) {
   58|   543k|  Result<TaskAndFunction*> result = TaskAndFunction::New(std::move(task_func));
   59|   543k|  if (!result.ok()) {
  ------------------
  |  Branch (59:7): [True: 0, False: 543k]
  ------------------
   60|      0|    return result.status();
   61|      0|  }
   62|   543k|  dispatcher_.PostAt((*result)->task, time);
   63|   543k|  return Status();
   64|   543k|}
heap_dispatcher.cc:_ZN2pw5async12_GLOBAL__N_115TaskAndFunction3NewEON3fit13function_implILm8ELb0EFvRNS0_7ContextENS_6StatusEENSt3__19allocatorISt4byteEEEE:
   29|   543k|  static Result<TaskAndFunction*> New(TaskFunction&& task) {
   30|       |    // std::nothrow causes new to return a nullptr on failure instead of
   31|       |    // throwing.
   32|   543k|    TaskAndFunction* t = new (std::nothrow) TaskAndFunction();
   33|   543k|    if (!t) {
  ------------------
  |  Branch (33:9): [True: 0, False: 543k]
  ------------------
   34|      0|      return Status::ResourceExhausted();
   35|      0|    }
   36|   543k|    t->func = std::move(task);
   37|       |
   38|       |    // Closure captures must not include references, as that would be UB due to
   39|       |    // the `delete` at the end of the function. See
   40|       |    // https://reviews.llvm.org/D48239.
   41|   543k|    t->task.set_function([t](Context& ctx, Status status) {
   42|   543k|      t->func(ctx, status);
   43|       |
   44|       |      // Delete must appear at the very end of this closure to avoid
   45|       |      // use-after-free of captures or Context.task.
   46|   543k|      delete t;
   47|   543k|    });
   48|       |
   49|   543k|    return t;
   50|   543k|  }
heap_dispatcher.cc:_ZZN2pw5async12_GLOBAL__N_115TaskAndFunction3NewEON3fit13function_implILm8ELb0EFvRNS0_7ContextENS_6StatusEENSt3__19allocatorISt4byteEEEEENKUlS6_S7_E_clES6_S7_:
   41|   543k|    t->task.set_function([t](Context& ctx, Status status) {
   42|   543k|      t->func(ctx, status);
   43|       |
   44|       |      // Delete must appear at the very end of this closure to avoid
   45|       |      // use-after-free of captures or Context.task.
   46|   543k|      delete t;
   47|   543k|    });

_ZN2pw5async4test7backend20NativeFakeDispatcherC2ERNS0_10DispatcherE:
   25|  3.05k|    : dispatcher_(dispatcher) {}
_ZN2pw5async4test7backend20NativeFakeDispatcherD2Ev:
   27|  3.05k|NativeFakeDispatcher::~NativeFakeDispatcher() {
   28|  3.05k|  RequestStop();
   29|  3.05k|  DrainTaskQueue();
   30|  3.05k|}
_ZN2pw5async4test7backend20NativeFakeDispatcher12RunUntilIdleEv:
   32|  64.6k|bool NativeFakeDispatcher::RunUntilIdle() {
   33|  64.6k|  bool tasks_ran = ExecuteDueTasks();
   34|  64.6k|  if (stop_requested_) {
  ------------------
  |  Branch (34:7): [True: 0, False: 64.6k]
  ------------------
   35|      0|    tasks_ran |= DrainTaskQueue();
   36|      0|  }
   37|  64.6k|  return tasks_ran;
   38|  64.6k|}
_ZN2pw5async4test7backend20NativeFakeDispatcher15ExecuteDueTasksEv:
   63|  64.6k|bool NativeFakeDispatcher::ExecuteDueTasks() {
   64|  64.6k|  bool task_ran = false;
   65|   607k|  while (!task_queue_.empty() && task_queue_.front().due_time() <= now() &&
  ------------------
  |  Branch (65:10): [True: 563k, False: 43.8k]
  |  Branch (65:10): [True: 543k, False: 64.6k]
  |  Branch (65:34): [True: 543k, False: 20.8k]
  ------------------
   66|   607k|         !stop_requested_) {
  ------------------
  |  Branch (66:10): [True: 543k, False: 0]
  ------------------
   67|   543k|    ::pw::async::backend::NativeTask& task = task_queue_.front();
   68|   543k|    task_queue_.pop_front();
   69|       |
   70|   543k|    Context ctx{&dispatcher_, &task.task_};
   71|   543k|    task(ctx, OkStatus());
   72|       |
   73|   543k|    task_ran = true;
   74|   543k|  }
   75|  64.6k|  return task_ran;
   76|  64.6k|}
_ZN2pw5async4test7backend20NativeFakeDispatcher11RequestStopEv:
   78|  3.05k|void NativeFakeDispatcher::RequestStop() {
   79|  3.05k|  PW_LOG_DEBUG("stop requested");
  ------------------
  |  |   84|  3.05k|  PW_LOG(PW_LOG_LEVEL_DEBUG, \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|  3.05k|         PW_LOG_LEVEL,       \
  |  |   86|  3.05k|         PW_LOG_MODULE_NAME, \
  |  |   87|  3.05k|         PW_LOG_FLAGS,       \
  |  |   88|  3.05k|         __VA_ARGS__)
  ------------------
   80|  3.05k|  stop_requested_ = true;
   81|  3.05k|}
_ZN2pw5async4test7backend20NativeFakeDispatcher14DrainTaskQueueEv:
   83|  3.05k|bool NativeFakeDispatcher::DrainTaskQueue() {
   84|  3.05k|  bool task_ran = false;
   85|  3.05k|  while (!task_queue_.empty()) {
  ------------------
  |  Branch (85:10): [True: 0, False: 3.05k]
  ------------------
   86|      0|    ::pw::async::backend::NativeTask& task = task_queue_.front();
   87|      0|    task_queue_.pop_front();
   88|       |
   89|      0|    PW_LOG_DEBUG("running cancelled task");
  ------------------
  |  |   84|      0|  PW_LOG(PW_LOG_LEVEL_DEBUG, \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|      0|         PW_LOG_LEVEL,       \
  |  |   86|      0|         PW_LOG_MODULE_NAME, \
  |  |   87|      0|         PW_LOG_FLAGS,       \
  |  |   88|      0|         __VA_ARGS__)
  ------------------
   90|      0|    Context ctx{&dispatcher_, &task.task_};
   91|      0|    task(ctx, Status::Cancelled());
   92|       |
   93|      0|    task_ran = true;
   94|      0|  }
   95|  3.05k|  return task_ran;
   96|  3.05k|}
_ZN2pw5async4test7backend20NativeFakeDispatcher9PostAfterERNS0_4TaskENSt3__16chrono8durationIlNS6_5ratioILl1ELl1000000000EEEEE:
  101|   297k|                                     chrono::SystemClock::duration delay) {
  102|   297k|  PostAt(task, now() + delay);
  103|   297k|}
_ZN2pw5async4test7backend20NativeFakeDispatcher6PostAtERNS0_4TaskENSt3__16chrono10time_pointINS_6chrono11SystemClockENS7_8durationIlNS6_5ratioILl1ELl1000000000EEEEEEE:
  106|   841k|                                  chrono::SystemClock::time_point time) {
  107|   841k|  PW_LOG_DEBUG("posting task");
  ------------------
  |  |   84|   841k|  PW_LOG(PW_LOG_LEVEL_DEBUG, \
  |  |  ------------------
  |  |  |  |   73|   841k|  do {                                                                     \
  |  |  |  |   74|   841k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   841k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   841k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   841k|  do {                                                    \
  |  |  |  |  |  |   56|   841k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   841k|           (flags),                                       \
  |  |  |  |  |  |   58|   841k|           module,                                        \
  |  |  |  |  |  |   59|   841k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   841k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   841k|           __func__,                                      \
  |  |  |  |  |  |   62|   841k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|   841k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   841k|    }                                                                      \
  |  |  |  |   77|   841k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   85|   841k|         PW_LOG_LEVEL,       \
  |  |   86|   841k|         PW_LOG_MODULE_NAME, \
  |  |   87|   841k|         PW_LOG_FLAGS,       \
  |  |   88|   841k|         __VA_ARGS__)
  ------------------
  108|   841k|  PostTaskInternal(task.native_type(), time);
  109|   841k|}
_ZN2pw5async4test7backend20NativeFakeDispatcher6CancelERNS0_4TaskE:
  111|   297k|bool NativeFakeDispatcher::Cancel(Task& task) {
  112|   297k|  return task_queue_.remove(task.native_type());
  113|   297k|}
_ZN2pw5async4test7backend20NativeFakeDispatcher16PostTaskInternalERNS0_7backend10NativeTaskENSt3__16chrono10time_pointINS_6chrono11SystemClockENS8_8durationIlNS7_5ratioILl1ELl1000000000EEEEEEE:
  117|   841k|    chrono::SystemClock::time_point time_due) {
  118|   841k|  if (!task.unlisted()) {
  ------------------
  |  Branch (118:7): [True: 0, False: 841k]
  ------------------
  119|      0|    if (task.due_time() <= time_due) {
  ------------------
  |  Branch (119:9): [True: 0, False: 0]
  ------------------
  120|       |      // No need to repost a task that was already queued to run.
  121|      0|      return;
  122|      0|    }
  123|       |    // The task needs its time updated, so we have to move it to
  124|       |    // a different part of the list.
  125|      0|    task.unlist();
  126|      0|  }
  127|   841k|  task.set_due_time(time_due);
  128|   841k|  auto it_front = task_queue_.begin();
  129|   841k|  auto it_behind = task_queue_.before_begin();
  130|   270M|  while (it_front != task_queue_.end() && time_due >= it_front->due_time()) {
  ------------------
  |  Branch (130:10): [True: 269M, False: 582k]
  |  Branch (130:10): [True: 269M, False: 841k]
  |  Branch (130:43): [True: 269M, False: 258k]
  ------------------
  131|   269M|    ++it_front;
  132|   269M|    ++it_behind;
  133|   269M|  }
  134|   841k|  task_queue_.insert_after(it_behind, task);
  135|   841k|}

_ZNK2bt10ByteBuffer4CopyEPNS_17MutableByteBufferE:
   25|  2.63M|void ByteBuffer::Copy(MutableByteBuffer* out_buffer) const {
   26|  2.63M|  PW_CHECK(out_buffer);
  ------------------
  |  |   39|  2.63M|  do {                                                                         \
  |  |   40|  2.63M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 2.63M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  2.63M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   27|  2.63M|  CopyRaw(out_buffer->mutable_data(), out_buffer->size(), 0, size());
   28|  2.63M|}
_ZNK2bt10ByteBuffer4CopyEPNS_17MutableByteBufferEmm:
   32|   730k|                      size_t size) const {
   33|   730k|  PW_CHECK(out_buffer);
  ------------------
  |  |   39|   730k|  do {                                                                         \
  |  |   40|   730k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 730k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   730k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   34|   730k|  CopyRaw(out_buffer->mutable_data(), out_buffer->size(), pos, size);
   35|   730k|}
_ZNK2bt10ByteBuffer4viewEmm:
   60|  3.35M|BufferView ByteBuffer::view(size_t pos, size_t size) const {
   61|  3.35M|  PW_CHECK(pos <= this->size(),
  ------------------
  |  |   39|  3.35M|  do {                                                                         \
  |  |   40|  3.35M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.35M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.35M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   62|  3.35M|           "offset past buffer (pos: %zu, size: %zu)",
   63|  3.35M|           pos,
   64|  3.35M|           this->size());
   65|  3.35M|  return BufferView(data() + pos, std::min(size, this->size() - pos));
   66|  3.35M|}
_ZNK2bt10ByteBuffer7subspanEmm:
   68|   365k|pw::span<const std::byte> ByteBuffer::subspan(size_t pos, size_t size) const {
   69|   365k|  PW_CHECK(pos <= this->size(),
  ------------------
  |  |   39|   365k|  do {                                                                         \
  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   70|   365k|           "offset past buffer (pos: %zu, size: %zu)",
   71|   365k|           pos,
   72|   365k|           this->size());
   73|   365k|  return pw::span(reinterpret_cast<const std::byte*>(data()) + pos,
   74|   365k|                  std::min(size, this->size() - pos));
   75|   365k|}
_ZNK2bt10ByteBuffer7CopyRawEPvmmm:
  110|  9.48M|                         size_t copy_size) const {
  111|  9.48M|  PW_CHECK(copy_size == 0 || dst_data != nullptr,
  ------------------
  |  |   39|  9.48M|  do {                                                                         \
  |  |   40|  18.6M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:11): [True: 332k, False: 9.15M]
  |  |  |  Branch (40:11): [True: 9.15M, False: 0]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  9.48M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  112|  9.48M|           "%zu byte write to pointer %p",
  113|  9.48M|           copy_size,
  114|  9.48M|           dst_data);
  115|  9.48M|  PW_CHECK(copy_size <= dst_capacity,
  ------------------
  |  |   39|  9.48M|  do {                                                                         \
  |  |   40|  9.48M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 9.48M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  9.48M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  116|  9.48M|           "destination not large enough (required: %zu, available: %zu)",
  117|  9.48M|           copy_size,
  118|  9.48M|           dst_capacity);
  119|  9.48M|  PW_CHECK(src_offset <= this->size(),
  ------------------
  |  |   39|  9.48M|  do {                                                                         \
  |  |   40|  9.48M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 9.48M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  9.48M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  120|  9.48M|           "offset exceeds source range (begin: %zu, copy_size: %zu)",
  121|  9.48M|           src_offset,
  122|  9.48M|           this->size());
  123|  9.48M|  PW_CHECK(
  ------------------
  |  |   39|  9.48M|  do {                                                                         \
  |  |   40|  9.48M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 9.48M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  9.48M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  124|  9.48M|      std::numeric_limits<size_t>::max() - copy_size >= src_offset,
  125|  9.48M|      "end of source range overflows size_t (src_offset: %zu, copy_size: %zu)",
  126|  9.48M|      src_offset,
  127|  9.48M|      copy_size);
  128|  9.48M|  PW_CHECK(src_offset + copy_size <= this->size(),
  ------------------
  |  |   39|  9.48M|  do {                                                                         \
  |  |   40|  9.48M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 9.48M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  9.48M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  129|  9.48M|           "end exceeds source range (end: %zu, copy_size: %zu)",
  130|  9.48M|           src_offset + copy_size,
  131|  9.48M|           this->size());
  132|       |
  133|       |  // Data pointers for zero-length buffers are nullptr, over which memcpy has
  134|       |  // undefined behavior, even for count = 0. Skip the memcpy invocation in that
  135|       |  // case.
  136|  9.48M|  if (copy_size == 0) {
  ------------------
  |  Branch (136:7): [True: 332k, False: 9.15M]
  ------------------
  137|   332k|    return;
  138|   332k|  }
  139|  9.15M|  std::memcpy(dst_data, data() + src_offset, copy_size);
  140|  9.15M|}
_ZN2bt17MutableByteBuffer5WriteEPKhmm:
  142|  1.54M|void MutableByteBuffer::Write(const uint8_t* data, size_t size, size_t pos) {
  143|  1.54M|  BufferView from(data, size);
  144|  1.54M|  MutableBufferView to = mutable_view(pos);
  145|  1.54M|  from.Copy(&to);
  146|  1.54M|}
_ZN2bt17MutableByteBuffer12mutable_viewEmm:
  148|  6.02M|MutableBufferView MutableByteBuffer::mutable_view(size_t pos, size_t size) {
  149|  6.02M|  PW_CHECK(pos <= this->size(),
  ------------------
  |  |   39|  6.02M|  do {                                                                         \
  |  |   40|  6.02M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 6.02M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  6.02M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  150|  6.02M|           "offset past buffer (pos: %zu, size: %zu)",
  151|  6.02M|           pos,
  152|  6.02M|           this->size());
  153|  6.02M|  return MutableBufferView(mutable_data() + pos,
  154|  6.02M|                           std::min(size, this->size() - pos));
  155|  6.02M|}
_ZN2bt17DynamicByteBufferC2Em:
  170|   540k|    : buffer_size_(buffer_size) {
  171|   540k|  if (buffer_size == 0) {
  ------------------
  |  Branch (171:7): [True: 1.90k, False: 538k]
  ------------------
  172|  1.90k|    return;
  173|  1.90k|  }
  174|       |
  175|       |  // make_unique value-initializes the buffer to 0.
  176|   538k|  buffer_ = std::make_unique<uint8_t[]>(buffer_size);
  177|       |
  178|       |  // TODO(armansito): For now this is dumb but we should properly handle the
  179|       |  // case when we're out of memory.
  180|   538k|  PW_CHECK(buffer_.get(), "failed to allocate buffer");
  ------------------
  |  |   39|   538k|  do {                                                                         \
  |  |   40|   538k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 538k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   538k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  181|   538k|}
_ZN2bt17DynamicByteBufferC2ERKNS_10ByteBufferE:
  184|  1.09M|    : buffer_size_(buffer.size()),
  185|  1.09M|      buffer_(buffer.size() ? std::make_unique<uint8_t[]>(buffer.size())
  ------------------
  |  Branch (185:15): [True: 852k, False: 238k]
  ------------------
  186|  1.09M|                            : nullptr) {
  187|  1.09M|  PW_CHECK(!buffer_size_ || buffer_.get(),
  ------------------
  |  |   39|  1.09M|  do {                                                                         \
  |  |   40|  1.94M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:11): [True: 238k, False: 852k]
  |  |  |  Branch (40:11): [True: 852k, False: 0]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  1.09M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  188|  1.09M|           "|buffer| cannot be nullptr when |buffer_size| is non-zero");
  189|  1.09M|  buffer.Copy(this);
  190|  1.09M|}
_ZN2bt17DynamicByteBufferC2ERKS0_:
  193|   170k|    : DynamicByteBuffer(static_cast<const ByteBuffer&>(buffer)) {}
_ZN2bt17DynamicByteBufferC2EOS0_:
  208|  1.28M|DynamicByteBuffer::DynamicByteBuffer(DynamicByteBuffer&& other) {
  209|  1.28M|  buffer_size_ = other.buffer_size_;
  210|  1.28M|  other.buffer_size_ = 0u;
  211|  1.28M|  buffer_ = std::move(other.buffer_);
  212|  1.28M|}
_ZNK2bt17DynamicByteBuffer4dataEv:
  221|  2.37M|const uint8_t* DynamicByteBuffer::data() const { return buffer_.get(); }
_ZN2bt17DynamicByteBuffer12mutable_dataEv:
  223|  3.04M|uint8_t* DynamicByteBuffer::mutable_data() { return buffer_.get(); }
_ZNK2bt17DynamicByteBuffer4sizeEv:
  225|  14.4M|size_t DynamicByteBuffer::size() const { return buffer_size_; }
_ZN2bt10BufferViewC2ERKNS_10ByteBufferEm:
  264|  78.7k|BufferView::BufferView(const ByteBuffer& buffer, size_t size) {
  265|  78.7k|  *this = buffer.view(0u, size);
  266|  78.7k|}
_ZN2bt10BufferViewC2EPKvm:
  280|  5.22M|    : size_(size), bytes_(static_cast<const uint8_t*>(bytes)) {
  281|       |  // If |size| non-zero then |bytes| cannot be nullptr.
  282|  5.22M|  PW_CHECK(!size_ || bytes_, "|bytes_| cannot be nullptr if |size_| > 0");
  ------------------
  |  |   39|  5.22M|  do {                                                                         \
  |  |   40|  10.2M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:11): [True: 201k, False: 5.02M]
  |  |  |  Branch (40:11): [True: 5.02M, False: 0]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  5.22M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  283|  5.22M|}
_ZN2bt10BufferViewC2Ev:
  285|   783k|BufferView::BufferView() = default;
_ZNK2bt10BufferView4dataEv:
  287|  6.10M|const uint8_t* BufferView::data() const { return bytes_; }
_ZNK2bt10BufferView4sizeEv:
  289|  18.1M|size_t BufferView::size() const { return size_; }
_ZN2bt17MutableBufferViewC2EPvm:
  302|  6.57M|    : size_(size), bytes_(static_cast<uint8_t*>(bytes)) {
  303|       |  // If |size| non-zero then |bytes| cannot be nullptr.
  304|  6.57M|  PW_CHECK(!size_ || bytes_, "|bytes_| cannot be nullptr if |size_| > 0");
  ------------------
  |  |   39|  6.57M|  do {                                                                         \
  |  |   40|  12.9M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:11): [True: 230k, False: 6.34M]
  |  |  |  Branch (40:11): [True: 6.34M, False: 0]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  6.57M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  305|  6.57M|}
_ZNK2bt17MutableBufferView4dataEv:
  309|  1.08M|const uint8_t* MutableBufferView::data() const { return bytes_; }
_ZNK2bt17MutableBufferView4sizeEv:
  311|  14.8M|size_t MutableBufferView::size() const { return size_; }
_ZN2bt17MutableBufferView12mutable_dataEv:
  319|  7.51M|uint8_t* MutableBufferView::mutable_data() { return bytes_; }

_ZN2bt13GetPwLogFlagsENS_11LogSeverityE:
   46|  2.59M|unsigned int GetPwLogFlags(LogSeverity level) {
   47|  2.59M|  if (g_printf_min_severity == -1) {
  ------------------
  |  Branch (47:7): [True: 2.59M, False: 0]
  ------------------
   48|  2.59M|    return 0;
   49|  2.59M|  }
   50|      0|  return IsPrintfLogLevelEnabled(level) ? PW_LOG_FLAG_USE_PRINTF
  ------------------
  |  |   26|      0|#define PW_LOG_FLAG_USE_PRINTF 0
  ------------------
  |  Branch (50:10): [True: 0, False: 0]
  ------------------
   51|      0|                                        : PW_LOG_FLAG_IGNORE;
  ------------------
  |  |   31|      0|#define PW_LOG_FLAG_IGNORE 0
  ------------------
   52|  2.59M|}

_ZN2bt20set_random_generatorEPN2pw6random15RandomGeneratorE:
   28|  6.11k|void set_random_generator(pw::random::RandomGenerator* generator) {
   29|  6.11k|  PW_CHECK(!generator || !g_random_generator);
  ------------------
  |  |   39|  6.11k|  do {                                                                         \
  |  |   40|  9.16k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:11): [True: 3.05k, False: 3.05k]
  |  |  |  Branch (40:11): [True: 3.05k, False: 0]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  6.11k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   30|  6.11k|  g_random_generator = generator;
   31|  6.11k|}

_ZN2bt9NewBufferEm:
   24|   407k|MutableByteBufferPtr NewBuffer(size_t size) {
   25|       |  // TODO(fxbug.dev/42058160): Use Pigweed's slab allocator
   26|   407k|  return std::make_unique<DynamicByteBuffer>(size);
   27|   407k|}

_ZN2bt5l2cap18A2dpOffloadManager22RequestStopA2dpOffloadEttN3fit13callback_implILm16ELb0EFvNS2_6resultINS_5ErrorIN2pw9bluetooth6emboss10StatusCodeEEEJEEEENSt3__19allocatorISt4byteEEEE:
  176|   142k|    hci::ResultCallback<> callback) {
  177|   142k|  PW_DCHECK(cmd_channel_.is_alive());
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   142k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  178|       |
  179|   142k|  switch (a2dp_offload_status_) {
  ------------------
  |  Branch (179:11): [True: 0, False: 142k]
  ------------------
  180|   142k|    case A2dpOffloadStatus::kStopped: {
  ------------------
  |  Branch (180:5): [True: 142k, False: 0]
  ------------------
  181|   142k|      bt_log(DEBUG,
  ------------------
  |  |  141|   142k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   142k|  do {                                                                     \
  |  |  |  |   74|   142k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   142k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   142k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   142k|  do {                                                    \
  |  |  |  |  |  |   56|   142k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   142k|           (flags),                                       \
  |  |  |  |  |  |   58|   142k|           module,                                        \
  |  |  |  |  |  |   59|   142k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   142k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   142k|           __func__,                                      \
  |  |  |  |  |  |   62|   142k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   142k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   142k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   142k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   142k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   142k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   142k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   142k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   142k|    }                                                                      \
  |  |  |  |   77|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   142k|         PW_LOG_LEVEL,                             \
  |  |  143|   142k|         tag,                                      \
  |  |  144|   142k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   142k|         __VA_ARGS__);                             \
  |  |  146|   142k|  ::bt::internal::CheckFormat(tag)
  ------------------
  182|   142k|             "l2cap",
  183|   142k|             "No channels are offloading A2DP (status: %hhu)",
  184|   142k|             static_cast<unsigned char>(a2dp_offload_status_));
  185|   142k|      callback(fit::success());
  186|   142k|      return;
  187|      0|    }
  188|      0|    case A2dpOffloadStatus::kStopping: {
  ------------------
  |  Branch (188:5): [True: 0, False: 142k]
  ------------------
  189|      0|      bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  190|      0|             "l2cap",
  191|      0|             "A2DP offload is currently stopping (status: %hhu)",
  192|      0|             static_cast<unsigned char>(a2dp_offload_status_));
  193|      0|      callback(ToResult(HostError::kInProgress));
  194|      0|      return;
  195|      0|    }
  196|      0|    case A2dpOffloadStatus::kStarting:
  ------------------
  |  Branch (196:5): [True: 0, False: 142k]
  ------------------
  197|      0|    case A2dpOffloadStatus::kStarted:
  ------------------
  |  Branch (197:5): [True: 0, False: 142k]
  ------------------
  198|      0|      break;
  199|   142k|  }
  200|       |
  201|      0|  if (!IsChannelOffloaded(local_id, link_handle)) {
  ------------------
  |  Branch (201:7): [True: 0, False: 0]
  ------------------
  202|      0|    callback(fit::success());
  203|      0|    return;
  204|      0|  }
  205|       |
  206|       |  // Wait until offloading status is |kStarted| before sending stop command
  207|      0|  if (a2dp_offload_status_ == A2dpOffloadStatus::kStarting) {
  ------------------
  |  Branch (207:7): [True: 0, False: 0]
  ------------------
  208|      0|    pending_stop_a2dp_offload_request_ = std::move(callback);
  209|      0|    return;
  210|      0|  }
  211|       |
  212|      0|  a2dp_offload_status_ = A2dpOffloadStatus::kStopping;
  213|       |
  214|      0|  auto packet =
  215|      0|      hci::CommandPacket::New<android_emb::StopA2dpOffloadCommandWriter>(
  216|      0|          android_hci::kA2dpOffloadCommand);
  217|      0|  auto packet_view = packet.view_t();
  218|       |
  219|      0|  packet_view.vendor_command().sub_opcode().Write(
  220|      0|      android_hci::kStopA2dpOffloadCommandSubopcode);
  221|       |
  222|      0|  cmd_channel_->SendCommand(
  223|      0|      std::move(packet),
  224|      0|      [cb = std::move(callback),
  225|      0|       self = weak_self_.GetWeakPtr(),
  226|      0|       id = local_id,
  227|      0|       handle = link_handle,
  228|      0|       this](auto /*transaction_id*/, const hci::EventPacket& event) mutable {
  229|      0|        if (!self.is_alive()) {
  230|      0|          return;
  231|      0|        }
  232|       |
  233|      0|        if (event.ToResult().is_error()) {
  234|      0|          bt_log(WARN,
  235|      0|                 "l2cap",
  236|      0|                 "Stop A2DP offload command failed (result: %s, handle: %#.4x, "
  237|      0|                 "local id: %#.4x)",
  238|      0|                 bt_str(event.ToResult()),
  239|      0|                 handle,
  240|      0|                 id);
  241|      0|        } else {
  242|      0|          bt_log(INFO,
  243|      0|                 "l2cap",
  244|      0|                 "A2DP offload stopped (handle: %#.4x, local id: %#.4x",
  245|      0|                 handle,
  246|      0|                 id);
  247|      0|        }
  248|      0|        cb(event.ToResult());
  249|       |
  250|      0|        a2dp_offload_status_ = A2dpOffloadStatus::kStopped;
  251|      0|      });
  252|      0|}

_ZN2bt5l2cap8internal17BasicModeRxEngine10ProcessPduENS0_3PDUE:
   21|  45.5k|ByteBufferPtr BasicModeRxEngine::ProcessPdu(PDU pdu) {
   22|  45.5k|  PW_CHECK(pdu.is_valid());
  ------------------
  |  |   39|  45.5k|  do {                                                                         \
  |  |   40|  45.5k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 45.5k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  45.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   23|  45.5k|  auto sdu = std::make_unique<DynamicByteBuffer>(pdu.length());
   24|  45.5k|  pdu.Copy(sdu.get());
   25|  45.5k|  return sdu;
   26|  45.5k|}

_ZN2bt5l2cap8internal17BasicModeTxEngine15NotifySduQueuedEv:
   23|   407k|void BasicModeTxEngine::NotifySduQueued() {
   24|   407k|  std::optional<ByteBufferPtr> sdu = channel().GetNextQueuedSdu();
   25|       |
   26|   407k|  PW_CHECK(sdu);
  ------------------
  |  |   39|   407k|  do {                                                                         \
  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   27|   407k|  PW_CHECK(*sdu);
  ------------------
  |  |   39|   407k|  do {                                                                         \
  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   28|       |
   29|   407k|  if ((*sdu)->size() > max_tx_sdu_size()) {
  ------------------
  |  Branch (29:7): [True: 0, False: 407k]
  ------------------
   30|      0|    bt_log(INFO,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
   31|      0|           "l2cap",
   32|      0|           "SDU size exceeds channel TxMTU (channel-id: %#.4x)",
   33|      0|           channel_id());
   34|      0|    return;
   35|      0|  }
   36|       |
   37|   407k|  channel().SendFrame(std::move(*sdu));
   38|   407k|}

_ZN2bt5l2cap8internal19BrEdrCommandHandler21ConfigurationResponse6DecodeERKNS_10ByteBufferE:
   44|  1.48k|    const ByteBuffer& payload_buf) {
   45|  1.48k|  PacketView<PayloadT> config_rsp(&payload_buf,
   46|  1.48k|                                  payload_buf.size() - sizeof(PayloadT));
   47|  1.48k|  local_cid_ = pw::bytes::ConvertOrderFrom(cpp20::endian::little,
   48|  1.48k|                                           config_rsp.header().src_cid);
   49|  1.48k|  flags_ = pw::bytes::ConvertOrderFrom(cpp20::endian::little,
   50|  1.48k|                                       config_rsp.header().flags);
   51|  1.48k|  result_ = static_cast<ConfigurationResult>(pw::bytes::ConvertOrderFrom(
   52|  1.48k|      cpp20::endian::little,
   53|  1.48k|      static_cast<uint16_t>(config_rsp.header().result)));
   54|       |
   55|  1.48k|  if (!config_.ReadOptions(config_rsp.payload_data())) {
  ------------------
  |  Branch (55:7): [True: 86, False: 1.40k]
  ------------------
   56|     86|    bt_log(WARN,
  ------------------
  |  |  141|     86|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     86|  do {                                                                     \
  |  |  |  |   74|     86|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     86|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     86|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     86|  do {                                                    \
  |  |  |  |  |  |   56|     86|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     86|           (flags),                                       \
  |  |  |  |  |  |   58|     86|           module,                                        \
  |  |  |  |  |  |   59|     86|           __FILE__,                                      \
  |  |  |  |  |  |   60|     86|           __LINE__,                                      \
  |  |  |  |  |  |   61|     86|           __func__,                                      \
  |  |  |  |  |  |   62|     86|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|     86|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     86|    }                                                                      \
  |  |  |  |   77|     86|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     86|         PW_LOG_LEVEL,                             \
  |  |  143|     86|         tag,                                      \
  |  |  144|     86|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     86|         __VA_ARGS__);                             \
  |  |  146|     86|  ::bt::internal::CheckFormat(tag)
  ------------------
   57|     86|           "l2cap",
   58|     86|           "could not decode channel configuration response option");
   59|     86|    return false;
   60|     86|  }
   61|  1.40k|  return true;
   62|  1.48k|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler19InformationResponse6DecodeERKNS_10ByteBufferE:
   65|  1.09k|    const ByteBuffer& payload_buf) {
   66|  1.09k|  PacketView<InformationResponsePayload> info_rsp(
   67|  1.09k|      &payload_buf, payload_buf.size() - sizeof(InformationResponsePayload));
   68|  1.09k|  type_ = InformationType{pw::bytes::ConvertOrderFrom(
   69|  1.09k|      cpp20::endian::little, static_cast<uint16_t>(info_rsp.header().type))};
   70|  1.09k|  result_ = InformationResult{pw::bytes::ConvertOrderFrom(
   71|  1.09k|      cpp20::endian::little, static_cast<uint16_t>(info_rsp.header().result))};
   72|  1.09k|  if (result_ != InformationResult::kSuccess) {
  ------------------
  |  Branch (72:7): [True: 310, False: 785]
  ------------------
   73|    310|    return true;
   74|    310|  }
   75|       |
   76|    785|  size_t expected_size = 0;
   77|    785|  switch (type_) {
   78|      4|    case InformationType::kConnectionlessMTU:
  ------------------
  |  Branch (78:5): [True: 4, False: 781]
  ------------------
   79|      4|      expected_size = sizeof(uint16_t);
   80|      4|      break;
   81|    252|    case InformationType::kExtendedFeaturesSupported:
  ------------------
  |  Branch (81:5): [True: 252, False: 533]
  ------------------
   82|    252|      expected_size = sizeof(ExtendedFeatures);
   83|    252|      break;
   84|    419|    case InformationType::kFixedChannelsSupported:
  ------------------
  |  Branch (84:5): [True: 419, False: 366]
  ------------------
   85|    419|      expected_size = sizeof(FixedChannelsSupported);
   86|    419|      break;
   87|    110|    default:
  ------------------
  |  Branch (87:5): [True: 110, False: 675]
  ------------------
   88|    110|      bt_log(DEBUG,
  ------------------
  |  |  141|    110|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    110|  do {                                                                     \
  |  |  |  |   74|    110|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    110|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    110|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    110|  do {                                                    \
  |  |  |  |  |  |   56|    110|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    110|           (flags),                                       \
  |  |  |  |  |  |   58|    110|           module,                                        \
  |  |  |  |  |  |   59|    110|           __FILE__,                                      \
  |  |  |  |  |  |   60|    110|           __LINE__,                                      \
  |  |  |  |  |  |   61|    110|           __func__,                                      \
  |  |  |  |  |  |   62|    110|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    110|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    110|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    110|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    110|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    110|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    110|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    110|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    110|    }                                                                      \
  |  |  |  |   77|    110|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    110|         PW_LOG_LEVEL,                             \
  |  |  143|    110|         tag,                                      \
  |  |  144|    110|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    110|         __VA_ARGS__);                             \
  |  |  146|    110|  ::bt::internal::CheckFormat(tag)
  ------------------
   89|    785|             "l2cap-bredr",
   90|    785|             "cmd: passing Information Response with unknown type %#.4hx with "
   91|    785|             "%zu data bytes",
   92|    785|             static_cast<unsigned short>(type_),
   93|    785|             info_rsp.payload_size());
   94|    785|  }
   95|    785|  if (info_rsp.payload_size() < expected_size) {
  ------------------
  |  Branch (95:7): [True: 35, False: 750]
  ------------------
   96|     35|    bt_log(DEBUG,
  ------------------
  |  |  141|     35|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     35|  do {                                                                     \
  |  |  |  |   74|     35|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     35|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     35|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|  do {                                                    \
  |  |  |  |  |  |   56|     35|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     35|           (flags),                                       \
  |  |  |  |  |  |   58|     35|           module,                                        \
  |  |  |  |  |  |   59|     35|           __FILE__,                                      \
  |  |  |  |  |  |   60|     35|           __LINE__,                                      \
  |  |  |  |  |  |   61|     35|           __func__,                                      \
  |  |  |  |  |  |   62|     35|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     35|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     35|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     35|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     35|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     35|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     35|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     35|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     35|    }                                                                      \
  |  |  |  |   77|     35|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     35|         PW_LOG_LEVEL,                             \
  |  |  143|     35|         tag,                                      \
  |  |  144|     35|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     35|         __VA_ARGS__);                             \
  |  |  146|     35|  ::bt::internal::CheckFormat(tag)
  ------------------
   97|     35|           "l2cap-bredr",
   98|     35|           "cmd: ignoring malformed Information Response, type %#.4hx with %zu "
   99|     35|           "data bytes",
  100|     35|           static_cast<unsigned short>(type_),
  101|     35|           info_rsp.payload_size());
  102|     35|    return false;
  103|     35|  }
  104|    750|  data_ = info_rsp.payload_data();
  105|    750|  return true;
  106|    785|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler19ConnectionResponderC2EPNS1_25SignalingChannelInterface9ResponderEt:
  110|  30.5k|    : Responder(sig_responder, kInvalidChannelId, remote_cid) {}
_ZN2bt5l2cap8internal19BrEdrCommandHandler19ConnectionResponder4SendEtNS0_16ConnectionResultENS0_16ConnectionStatusE:
  114|  30.5k|                                                    ConnectionStatus status) {
  115|  30.5k|  ConnectionResponsePayload conn_rsp = {
  116|  30.5k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, local_cid),
  117|  30.5k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, remote_cid()),
  118|  30.5k|      static_cast<ConnectionResult>(pw::bytes::ConvertOrderTo(
  119|  30.5k|          cpp20::endian::little, static_cast<uint16_t>(result))),
  120|  30.5k|      static_cast<ConnectionStatus>(pw::bytes::ConvertOrderTo(
  121|  30.5k|          cpp20::endian::little, static_cast<uint16_t>(status)))};
  122|  30.5k|  sig_responder_->Send(BufferView(&conn_rsp, sizeof(conn_rsp)));
  123|  30.5k|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler22ConfigurationResponderC2EPNS1_25SignalingChannelInterface9ResponderEt:
  127|  24.4k|    : Responder(sig_responder, local_cid) {}
_ZN2bt5l2cap8internal19BrEdrCommandHandler22ConfigurationResponder4SendEttNS0_19ConfigurationResultENSt3__16vectorINS5_10unique_ptrINS1_20ChannelConfiguration28ConfigurationOptionInterfaceENS5_14default_deleteIS9_EEEENS5_9allocatorISC_EEEE:
  133|  17.6k|    ChannelConfiguration::ConfigurationOptions options) {
  134|  17.6k|  size_t options_size = 0;
  135|  48.5k|  for (auto& option : options) {
  ------------------
  |  Branch (135:21): [True: 48.5k, False: 17.6k]
  ------------------
  136|  48.5k|    options_size += option->size();
  137|  48.5k|  }
  138|       |
  139|  17.6k|  DynamicByteBuffer config_rsp_buf(sizeof(ConfigurationResponsePayload) +
  140|  17.6k|                                   options_size);
  141|  17.6k|  MutablePacketView<ConfigurationResponsePayload> config_rsp(&config_rsp_buf,
  142|  17.6k|                                                             options_size);
  143|  17.6k|  config_rsp.mutable_header()->src_cid =
  144|  17.6k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, remote_cid);
  145|  17.6k|  config_rsp.mutable_header()->flags =
  146|  17.6k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, flags);
  147|  17.6k|  config_rsp.mutable_header()->result =
  148|  17.6k|      static_cast<ConfigurationResult>(pw::bytes::ConvertOrderTo(
  149|  17.6k|          cpp20::endian::little, static_cast<uint16_t>(result)));
  150|       |
  151|  17.6k|  auto payload_view = config_rsp.mutable_payload_data().mutable_view();
  152|  48.5k|  for (auto& option : options) {
  ------------------
  |  Branch (152:21): [True: 48.5k, False: 17.6k]
  ------------------
  153|  48.5k|    auto encoded = option->Encode();
  154|  48.5k|    payload_view.Write(encoded.data(), encoded.size());
  155|  48.5k|    payload_view = payload_view.mutable_view(encoded.size());
  156|  48.5k|  }
  157|       |
  158|  17.6k|  sig_responder_->Send(config_rsp.data());
  159|  17.6k|}
_ZN2bt5l2cap8internal14CommandHandler22DisconnectionResponderC2EPNS1_25SignalingChannelInterface9ResponderEtt:
  165|  4.74k|    : Responder(sig_responder, local_cid, remote_cid) {}
_ZN2bt5l2cap8internal14CommandHandler22DisconnectionResponder4SendEv:
  167|  2.13k|void BrEdrCommandHandler::DisconnectionResponder::Send() {
  168|  2.13k|  DisconnectionResponsePayload discon_rsp = {
  169|  2.13k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, local_cid()),
  170|  2.13k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, remote_cid())};
  171|  2.13k|  sig_responder_->Send(BufferView(&discon_rsp, sizeof(discon_rsp)));
  172|  2.13k|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler20InformationResponderC2EPNS1_25SignalingChannelInterface9ResponderENS0_15InformationTypeE:
  176|    788|    : Responder(sig_responder), type_(type) {}
_ZN2bt5l2cap8internal19BrEdrCommandHandler20InformationResponder16SendNotSupportedEv:
  178|    123|void BrEdrCommandHandler::InformationResponder::SendNotSupported() {
  179|    123|  Send(InformationResult::kNotSupported, BufferView());
  180|    123|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler20InformationResponder29SendExtendedFeaturesSupportedEj:
  189|    383|    ExtendedFeatures extended_features) {
  190|    383|  extended_features =
  191|    383|      pw::bytes::ConvertOrderTo(cpp20::endian::little, extended_features);
  192|    383|  Send(InformationResult::kSuccess,
  193|    383|       BufferView(&extended_features, sizeof(extended_features)));
  194|    383|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler20InformationResponder26SendFixedChannelsSupportedEm:
  197|     67|    FixedChannelsSupported channels_supported) {
  198|     67|  channels_supported =
  199|     67|      pw::bytes::ConvertOrderTo(cpp20::endian::little, channels_supported);
  200|     67|  Send(InformationResult::kSuccess,
  201|     67|       BufferView(&channels_supported, sizeof(channels_supported)));
  202|     67|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler20InformationResponder4SendENS0_17InformationResultERKNS_10ByteBufferE:
  205|    573|                                                     const ByteBuffer& data) {
  206|    573|  constexpr size_t kMaxPayloadLength =
  207|    573|      sizeof(InformationResponsePayload) + sizeof(uint64_t);
  208|    573|  StaticByteBuffer<kMaxPayloadLength> info_rsp_buf;
  209|    573|  MutablePacketView<InformationResponsePayload> info_rsp_view(&info_rsp_buf,
  210|    573|                                                              data.size());
  211|       |
  212|    573|  info_rsp_view.mutable_header()->type =
  213|    573|      static_cast<InformationType>(pw::bytes::ConvertOrderTo(
  214|    573|          cpp20::endian::little, static_cast<uint16_t>(type_)));
  215|    573|  info_rsp_view.mutable_header()->result =
  216|    573|      static_cast<InformationResult>(pw::bytes::ConvertOrderTo(
  217|    573|          cpp20::endian::little, static_cast<uint16_t>(result)));
  218|    573|  info_rsp_view.mutable_payload_data().Write(data);
  219|    573|  sig_responder_->Send(info_rsp_view.data());
  220|    573|}
_ZN2bt5l2cap8internal19BrEdrCommandHandlerC2EPNS1_25SignalingChannelInterfaceEN3fit13function_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEE:
  224|   439k|    : CommandHandler(sig, std::move(request_fail_callback)) {}
_ZN2bt5l2cap8internal19BrEdrCommandHandler24SendConfigurationRequestEttNSt3__16vectorINS3_10unique_ptrINS1_20ChannelConfiguration28ConfigurationOptionInterfaceENS3_14default_deleteIS7_EEEENS3_9allocatorISA_EEEEN3fit13function_implILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionERKNS2_21ConfigurationResponseEENSB_ISt4byteEEEE:
  243|  10.8k|    ConfigurationResponseCallback cb) {
  244|  10.8k|  auto on_config_rsp =
  245|  10.8k|      BuildResponseHandler<ConfigurationResponse>(std::move(cb));
  246|       |
  247|  10.8k|  size_t options_size = 0;
  248|  10.8k|  for (auto& option : options) {
  ------------------
  |  Branch (248:21): [True: 10.8k, False: 10.8k]
  ------------------
  249|  10.8k|    options_size += option->size();
  250|  10.8k|  }
  251|       |
  252|  10.8k|  DynamicByteBuffer config_req_buf(sizeof(ConfigurationRequestPayload) +
  253|  10.8k|                                   options_size);
  254|  10.8k|  MutablePacketView<ConfigurationRequestPayload> config_req(&config_req_buf,
  255|  10.8k|                                                            options_size);
  256|  10.8k|  config_req.mutable_header()->dst_cid =
  257|  10.8k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, remote_cid);
  258|  10.8k|  config_req.mutable_header()->flags =
  259|  10.8k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, flags);
  260|       |
  261|  10.8k|  auto payload_view = config_req.mutable_payload_data().mutable_view();
  262|  10.8k|  for (auto& option : options) {
  ------------------
  |  Branch (262:21): [True: 10.8k, False: 10.8k]
  ------------------
  263|  10.8k|    auto encoded = option->Encode();
  264|  10.8k|    payload_view.Write(encoded.data(), encoded.size());
  265|  10.8k|    payload_view = payload_view.mutable_view(encoded.size());
  266|  10.8k|  }
  267|       |
  268|  10.8k|  return sig()->SendRequest(
  269|  10.8k|      kConfigurationRequest, config_req_buf, std::move(on_config_rsp));
  270|  10.8k|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler22SendInformationRequestENS0_15InformationTypeEN3fit13function_implILm16ELb0EFvRKNS2_19InformationResponseEENSt3__19allocatorISt4byteEEEE:
  273|   285k|    InformationType type, InformationResponseCallback callback) {
  274|   285k|  auto on_info_rsp =
  275|   285k|      BuildResponseHandler<InformationResponse>(std::move(callback));
  276|       |
  277|   285k|  InformationRequestPayload payload = {
  278|   285k|      InformationType{pw::bytes::ConvertOrderTo(cpp20::endian::little,
  279|   285k|                                                static_cast<uint16_t>(type))}};
  280|   285k|  return sig()->SendRequest(kInformationRequest,
  281|   285k|                            BufferView(&payload, sizeof(payload)),
  282|   285k|                            std::move(on_info_rsp));
  283|   285k|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler22ServeConnectionRequestEN3fit13function_implILm16ELb0EFvttPNS2_19ConnectionResponderEENSt3__19allocatorISt4byteEEEE:
  286|   142k|    ConnectionRequestCallback callback) {
  287|   142k|  auto on_conn_req = [cb = std::move(callback)](
  288|   142k|                         const ByteBuffer& request_payload,
  289|   142k|                         SignalingChannel::Responder* sig_responder) {
  290|   142k|    if (request_payload.size() != sizeof(ConnectionRequestPayload)) {
  291|   142k|      bt_log(DEBUG,
  292|   142k|             "l2cap-bredr",
  293|   142k|             "cmd: rejecting malformed Connection Request, size %zu",
  294|   142k|             request_payload.size());
  295|   142k|      sig_responder->RejectNotUnderstood();
  296|   142k|      return;
  297|   142k|    }
  298|       |
  299|   142k|    const auto& conn_req = request_payload.To<ConnectionRequestPayload>();
  300|   142k|    const Psm psm =
  301|   142k|        pw::bytes::ConvertOrderFrom(cpp20::endian::little, conn_req.psm);
  302|   142k|    const ChannelId remote_cid =
  303|   142k|        pw::bytes::ConvertOrderFrom(cpp20::endian::little, conn_req.src_cid);
  304|       |
  305|   142k|    ConnectionResponder responder(sig_responder, remote_cid);
  306|       |
  307|       |    // v5.0 Vol 3, Part A, Sec 4.2: PSMs shall be odd and the least significant
  308|       |    // bit of the most significant byte shall be zero
  309|   142k|    if (((psm & 0x0001) != 0x0001) || ((psm & 0x0100) != 0x0000)) {
  310|   142k|      bt_log(DEBUG,
  311|   142k|             "l2cap-bredr",
  312|   142k|             "Rejecting connection for invalid PSM %#.4x from channel %#.4x",
  313|   142k|             psm,
  314|   142k|             remote_cid);
  315|   142k|      responder.Send(kInvalidChannelId,
  316|   142k|                     ConnectionResult::kPsmNotSupported,
  317|   142k|                     ConnectionStatus::kNoInfoAvailable);
  318|   142k|      return;
  319|   142k|    }
  320|       |
  321|       |    // Check that source channel ID is in range (v5.0 Vol 3, Part A, Sec 2.1)
  322|   142k|    if (remote_cid < kFirstDynamicChannelId) {
  323|   142k|      bt_log(DEBUG,
  324|   142k|             "l2cap-bredr",
  325|   142k|             "Rejecting connection for PSM %#.4x from invalid channel %#.4x",
  326|   142k|             psm,
  327|   142k|             remote_cid);
  328|   142k|      responder.Send(kInvalidChannelId,
  329|   142k|                     ConnectionResult::kInvalidSourceCID,
  330|   142k|                     ConnectionStatus::kNoInfoAvailable);
  331|   142k|      return;
  332|   142k|    }
  333|       |
  334|   142k|    cb(psm, remote_cid, &responder);
  335|   142k|  };
  336|       |
  337|   142k|  sig()->ServeRequest(kConnectionRequest, std::move(on_conn_req));
  338|   142k|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler25ServeConfigurationRequestEN3fit13function_implILm16ELb0EFvttNS1_20ChannelConfigurationEPNS2_22ConfigurationResponderEENSt3__19allocatorISt4byteEEEE:
  341|   142k|    ConfigurationRequestCallback callback) {
  342|   142k|  auto on_config_req = [cb = std::move(callback)](
  343|   142k|                           const ByteBuffer& request_payload,
  344|   142k|                           SignalingChannel::Responder* sig_responder) {
  345|   142k|    if (request_payload.size() < sizeof(ConfigurationRequestPayload)) {
  346|   142k|      bt_log(DEBUG,
  347|   142k|             "l2cap-bredr",
  348|   142k|             "cmd: rejecting malformed Configuration Request, size %zu",
  349|   142k|             request_payload.size());
  350|   142k|      sig_responder->RejectNotUnderstood();
  351|   142k|      return;
  352|   142k|    }
  353|       |
  354|   142k|    PacketView<ConfigurationRequestPayload> config_req(
  355|   142k|        &request_payload,
  356|   142k|        request_payload.size() - sizeof(ConfigurationRequestPayload));
  357|   142k|    const auto local_cid = static_cast<ChannelId>(pw::bytes::ConvertOrderFrom(
  358|   142k|        cpp20::endian::little, config_req.header().dst_cid));
  359|   142k|    const uint16_t flags = pw::bytes::ConvertOrderFrom(
  360|   142k|        cpp20::endian::little, config_req.header().flags);
  361|   142k|    ConfigurationResponder responder(sig_responder, local_cid);
  362|       |
  363|   142k|    ChannelConfiguration config;
  364|   142k|    if (!config.ReadOptions(config_req.payload_data())) {
  365|   142k|      bt_log(WARN,
  366|   142k|             "l2cap",
  367|   142k|             "could not decode configuration option in configuration request");
  368|   142k|    }
  369|       |
  370|   142k|    cb(local_cid, flags, std::move(config), &responder);
  371|   142k|  };
  372|       |
  373|   142k|  sig()->ServeRequest(kConfigurationRequest, std::move(on_config_req));
  374|   142k|}
_ZN2bt5l2cap8internal19BrEdrCommandHandler23ServeInformationRequestEN3fit13function_implILm16ELb0EFvNS0_15InformationTypeEPNS2_20InformationResponderEENSt3__19allocatorISt4byteEEEE:
  377|   142k|    InformationRequestCallback callback) {
  378|   142k|  auto on_info_req = [cb = std::move(callback)](
  379|   142k|                         const ByteBuffer& request_payload,
  380|   142k|                         SignalingChannel::Responder* sig_responder) {
  381|   142k|    if (request_payload.size() != sizeof(InformationRequestPayload)) {
  382|   142k|      bt_log(DEBUG,
  383|   142k|             "l2cap-bredr",
  384|   142k|             "cmd: rejecting malformed Information Request, size %zu",
  385|   142k|             request_payload.size());
  386|   142k|      sig_responder->RejectNotUnderstood();
  387|   142k|      return;
  388|   142k|    }
  389|       |
  390|   142k|    const auto& info_req = request_payload.To<InformationRequestPayload>();
  391|   142k|    const auto type = static_cast<InformationType>(pw::bytes::ConvertOrderFrom(
  392|   142k|        cpp20::endian::little, static_cast<uint16_t>(info_req.type)));
  393|   142k|    InformationResponder responder(sig_responder, type);
  394|   142k|    cb(type, &responder);
  395|   142k|  };
  396|       |
  397|   142k|  sig()->ServeRequest(kInformationRequest, std::move(on_info_req));
  398|   142k|}
bredr_command_handler.cc:_ZZN2bt5l2cap8internal19BrEdrCommandHandler22ServeConnectionRequestEN3fit13function_implILm16ELb0EFvttPNS2_19ConnectionResponderEENSt3__19allocatorISt4byteEEEEENK3$_0clERKNS_10ByteBufferEPNS1_25SignalingChannelInterface9ResponderE:
  289|  30.9k|                         SignalingChannel::Responder* sig_responder) {
  290|  30.9k|    if (request_payload.size() != sizeof(ConnectionRequestPayload)) {
  ------------------
  |  Branch (290:9): [True: 436, False: 30.5k]
  ------------------
  291|    436|      bt_log(DEBUG,
  ------------------
  |  |  141|    436|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    436|  do {                                                                     \
  |  |  |  |   74|    436|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    436|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    436|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    436|  do {                                                    \
  |  |  |  |  |  |   56|    436|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    436|           (flags),                                       \
  |  |  |  |  |  |   58|    436|           module,                                        \
  |  |  |  |  |  |   59|    436|           __FILE__,                                      \
  |  |  |  |  |  |   60|    436|           __LINE__,                                      \
  |  |  |  |  |  |   61|    436|           __func__,                                      \
  |  |  |  |  |  |   62|    436|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    436|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    436|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    436|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    436|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    436|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    436|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    436|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    436|    }                                                                      \
  |  |  |  |   77|    436|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    436|         PW_LOG_LEVEL,                             \
  |  |  143|    436|         tag,                                      \
  |  |  144|    436|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    436|         __VA_ARGS__);                             \
  |  |  146|    436|  ::bt::internal::CheckFormat(tag)
  ------------------
  292|    436|             "l2cap-bredr",
  293|    436|             "cmd: rejecting malformed Connection Request, size %zu",
  294|    436|             request_payload.size());
  295|    436|      sig_responder->RejectNotUnderstood();
  296|    436|      return;
  297|    436|    }
  298|       |
  299|  30.5k|    const auto& conn_req = request_payload.To<ConnectionRequestPayload>();
  300|  30.5k|    const Psm psm =
  301|  30.5k|        pw::bytes::ConvertOrderFrom(cpp20::endian::little, conn_req.psm);
  302|  30.5k|    const ChannelId remote_cid =
  303|  30.5k|        pw::bytes::ConvertOrderFrom(cpp20::endian::little, conn_req.src_cid);
  304|       |
  305|  30.5k|    ConnectionResponder responder(sig_responder, remote_cid);
  306|       |
  307|       |    // v5.0 Vol 3, Part A, Sec 4.2: PSMs shall be odd and the least significant
  308|       |    // bit of the most significant byte shall be zero
  309|  30.5k|    if (((psm & 0x0001) != 0x0001) || ((psm & 0x0100) != 0x0000)) {
  ------------------
  |  Branch (309:9): [True: 618, False: 29.9k]
  |  Branch (309:39): [True: 550, False: 29.3k]
  ------------------
  310|  1.16k|      bt_log(DEBUG,
  ------------------
  |  |  141|  1.16k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  1.16k|  do {                                                                     \
  |  |  |  |   74|  1.16k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.16k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  1.16k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.16k|  do {                                                    \
  |  |  |  |  |  |   56|  1.16k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  1.16k|           (flags),                                       \
  |  |  |  |  |  |   58|  1.16k|           module,                                        \
  |  |  |  |  |  |   59|  1.16k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  1.16k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  1.16k|           __func__,                                      \
  |  |  |  |  |  |   62|  1.16k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  1.16k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  1.16k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  1.16k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  1.16k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  1.16k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  1.16k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.16k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  1.16k|    }                                                                      \
  |  |  |  |   77|  1.16k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  1.16k|         PW_LOG_LEVEL,                             \
  |  |  143|  1.16k|         tag,                                      \
  |  |  144|  1.16k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  1.16k|         __VA_ARGS__);                             \
  |  |  146|  1.16k|  ::bt::internal::CheckFormat(tag)
  ------------------
  311|  1.16k|             "l2cap-bredr",
  312|  1.16k|             "Rejecting connection for invalid PSM %#.4x from channel %#.4x",
  313|  1.16k|             psm,
  314|  1.16k|             remote_cid);
  315|  1.16k|      responder.Send(kInvalidChannelId,
  316|  1.16k|                     ConnectionResult::kPsmNotSupported,
  317|  1.16k|                     ConnectionStatus::kNoInfoAvailable);
  318|  1.16k|      return;
  319|  1.16k|    }
  320|       |
  321|       |    // Check that source channel ID is in range (v5.0 Vol 3, Part A, Sec 2.1)
  322|  29.3k|    if (remote_cid < kFirstDynamicChannelId) {
  ------------------
  |  Branch (322:9): [True: 343, False: 29.0k]
  ------------------
  323|    343|      bt_log(DEBUG,
  ------------------
  |  |  141|    343|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    343|  do {                                                                     \
  |  |  |  |   74|    343|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    343|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    343|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    343|  do {                                                    \
  |  |  |  |  |  |   56|    343|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    343|           (flags),                                       \
  |  |  |  |  |  |   58|    343|           module,                                        \
  |  |  |  |  |  |   59|    343|           __FILE__,                                      \
  |  |  |  |  |  |   60|    343|           __LINE__,                                      \
  |  |  |  |  |  |   61|    343|           __func__,                                      \
  |  |  |  |  |  |   62|    343|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    343|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    343|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    343|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    343|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    343|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    343|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    343|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    343|    }                                                                      \
  |  |  |  |   77|    343|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    343|         PW_LOG_LEVEL,                             \
  |  |  143|    343|         tag,                                      \
  |  |  144|    343|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    343|         __VA_ARGS__);                             \
  |  |  146|    343|  ::bt::internal::CheckFormat(tag)
  ------------------
  324|    343|             "l2cap-bredr",
  325|    343|             "Rejecting connection for PSM %#.4x from invalid channel %#.4x",
  326|    343|             psm,
  327|    343|             remote_cid);
  328|    343|      responder.Send(kInvalidChannelId,
  329|    343|                     ConnectionResult::kInvalidSourceCID,
  330|    343|                     ConnectionStatus::kNoInfoAvailable);
  331|    343|      return;
  332|    343|    }
  333|       |
  334|  29.0k|    cb(psm, remote_cid, &responder);
  335|  29.0k|  };
bredr_command_handler.cc:_ZZN2bt5l2cap8internal19BrEdrCommandHandler25ServeConfigurationRequestEN3fit13function_implILm16ELb0EFvttNS1_20ChannelConfigurationEPNS2_22ConfigurationResponderEENSt3__19allocatorISt4byteEEEEENK3$_0clERKNS_10ByteBufferEPNS1_25SignalingChannelInterface9ResponderE:
  344|  24.9k|                           SignalingChannel::Responder* sig_responder) {
  345|  24.9k|    if (request_payload.size() < sizeof(ConfigurationRequestPayload)) {
  ------------------
  |  Branch (345:9): [True: 466, False: 24.4k]
  ------------------
  346|    466|      bt_log(DEBUG,
  ------------------
  |  |  141|    466|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    466|  do {                                                                     \
  |  |  |  |   74|    466|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    466|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    466|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    466|  do {                                                    \
  |  |  |  |  |  |   56|    466|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    466|           (flags),                                       \
  |  |  |  |  |  |   58|    466|           module,                                        \
  |  |  |  |  |  |   59|    466|           __FILE__,                                      \
  |  |  |  |  |  |   60|    466|           __LINE__,                                      \
  |  |  |  |  |  |   61|    466|           __func__,                                      \
  |  |  |  |  |  |   62|    466|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    466|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    466|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    466|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    466|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    466|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    466|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    466|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    466|    }                                                                      \
  |  |  |  |   77|    466|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    466|         PW_LOG_LEVEL,                             \
  |  |  143|    466|         tag,                                      \
  |  |  144|    466|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    466|         __VA_ARGS__);                             \
  |  |  146|    466|  ::bt::internal::CheckFormat(tag)
  ------------------
  347|    466|             "l2cap-bredr",
  348|    466|             "cmd: rejecting malformed Configuration Request, size %zu",
  349|    466|             request_payload.size());
  350|    466|      sig_responder->RejectNotUnderstood();
  351|    466|      return;
  352|    466|    }
  353|       |
  354|  24.4k|    PacketView<ConfigurationRequestPayload> config_req(
  355|  24.4k|        &request_payload,
  356|  24.4k|        request_payload.size() - sizeof(ConfigurationRequestPayload));
  357|  24.4k|    const auto local_cid = static_cast<ChannelId>(pw::bytes::ConvertOrderFrom(
  358|  24.4k|        cpp20::endian::little, config_req.header().dst_cid));
  359|  24.4k|    const uint16_t flags = pw::bytes::ConvertOrderFrom(
  360|  24.4k|        cpp20::endian::little, config_req.header().flags);
  361|  24.4k|    ConfigurationResponder responder(sig_responder, local_cid);
  362|       |
  363|  24.4k|    ChannelConfiguration config;
  364|  24.4k|    if (!config.ReadOptions(config_req.payload_data())) {
  ------------------
  |  Branch (364:9): [True: 12.0k, False: 12.3k]
  ------------------
  365|  12.0k|      bt_log(WARN,
  ------------------
  |  |  141|  12.0k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  12.0k|  do {                                                                     \
  |  |  |  |   74|  12.0k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  12.0k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  12.0k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  12.0k|  do {                                                    \
  |  |  |  |  |  |   56|  12.0k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  12.0k|           (flags),                                       \
  |  |  |  |  |  |   58|  12.0k|           module,                                        \
  |  |  |  |  |  |   59|  12.0k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  12.0k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  12.0k|           __func__,                                      \
  |  |  |  |  |  |   62|  12.0k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  12.0k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  12.0k|    }                                                                      \
  |  |  |  |   77|  12.0k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  12.0k|         PW_LOG_LEVEL,                             \
  |  |  143|  12.0k|         tag,                                      \
  |  |  144|  12.0k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  12.0k|         __VA_ARGS__);                             \
  |  |  146|  12.0k|  ::bt::internal::CheckFormat(tag)
  ------------------
  366|  12.0k|             "l2cap",
  367|  12.0k|             "could not decode configuration option in configuration request");
  368|  12.0k|    }
  369|       |
  370|  24.4k|    cb(local_cid, flags, std::move(config), &responder);
  371|  24.4k|  };
bredr_command_handler.cc:_ZZN2bt5l2cap8internal19BrEdrCommandHandler23ServeInformationRequestEN3fit13function_implILm16ELb0EFvNS0_15InformationTypeEPNS2_20InformationResponderEENSt3__19allocatorISt4byteEEEEENK3$_0clERKNS_10ByteBufferEPNS1_25SignalingChannelInterface9ResponderE:
  380|  1.08k|                         SignalingChannel::Responder* sig_responder) {
  381|  1.08k|    if (request_payload.size() != sizeof(InformationRequestPayload)) {
  ------------------
  |  Branch (381:9): [True: 293, False: 788]
  ------------------
  382|    293|      bt_log(DEBUG,
  ------------------
  |  |  141|    293|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    293|  do {                                                                     \
  |  |  |  |   74|    293|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    293|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    293|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    293|  do {                                                    \
  |  |  |  |  |  |   56|    293|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    293|           (flags),                                       \
  |  |  |  |  |  |   58|    293|           module,                                        \
  |  |  |  |  |  |   59|    293|           __FILE__,                                      \
  |  |  |  |  |  |   60|    293|           __LINE__,                                      \
  |  |  |  |  |  |   61|    293|           __func__,                                      \
  |  |  |  |  |  |   62|    293|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    293|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    293|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    293|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    293|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    293|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    293|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    293|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    293|    }                                                                      \
  |  |  |  |   77|    293|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    293|         PW_LOG_LEVEL,                             \
  |  |  143|    293|         tag,                                      \
  |  |  144|    293|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    293|         __VA_ARGS__);                             \
  |  |  146|    293|  ::bt::internal::CheckFormat(tag)
  ------------------
  383|    293|             "l2cap-bredr",
  384|    293|             "cmd: rejecting malformed Information Request, size %zu",
  385|    293|             request_payload.size());
  386|    293|      sig_responder->RejectNotUnderstood();
  387|    293|      return;
  388|    293|    }
  389|       |
  390|    788|    const auto& info_req = request_payload.To<InformationRequestPayload>();
  391|    788|    const auto type = static_cast<InformationType>(pw::bytes::ConvertOrderFrom(
  392|    788|        cpp20::endian::little, static_cast<uint16_t>(info_req.type)));
  393|    788|    InformationResponder responder(sig_responder, type);
  394|    788|    cb(type, &responder);
  395|    788|  };

_ZN2bt5l2cap8internal27BrEdrDynamicChannelRegistryC2EPNS1_25SignalingChannelInterfaceEN3fit13function_implILm16ELb0EFvPKNS1_14DynamicChannelEENSt3__19allocatorISt4byteEEEENS6_ILm16ELb0EFNSB_8optionalINS0_11ServiceInfoISF_EEEEtESE_EEb:
   46|   142k|    : DynamicChannelRegistry(kBrEdrDynamicChannelCount,
   47|   142k|                             std::move(close_cb),
   48|   142k|                             std::move(service_request_cb),
   49|   142k|                             random_channel_ids),
   50|   142k|      state_(0u),
   51|   142k|      sig_(sig) {
   52|   142k|  PW_DCHECK(sig_);
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   53|   142k|  BrEdrCommandHandler cmd_handler(sig_);
   54|   142k|  cmd_handler.ServeConnectionRequest(
   55|   142k|      fit::bind_member<&BrEdrDynamicChannelRegistry::OnRxConnReq>(this));
   56|   142k|  cmd_handler.ServeConfigurationRequest(
   57|   142k|      fit::bind_member<&BrEdrDynamicChannelRegistry::OnRxConfigReq>(this));
   58|   142k|  cmd_handler.ServeDisconnectionRequest(
   59|   142k|      fit::bind_member<&BrEdrDynamicChannelRegistry::OnRxDisconReq>(this));
   60|   142k|  cmd_handler.ServeInformationRequest(
   61|   142k|      fit::bind_member<&BrEdrDynamicChannelRegistry::OnRxInfoReq>(this));
   62|   142k|  SendInformationRequests();
   63|   142k|}
_ZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry11MakeInboundEtttNS0_17ChannelParametersE:
   75|  10.7k|    ChannelParameters params) {
   76|  10.7k|  return BrEdrDynamicChannel::MakeInbound(
   77|  10.7k|      this, sig_, psm, local_cid, remote_cid, params, PeerSupportsERTM());
   78|  10.7k|}
_ZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry11OnRxConnReqEttPNS1_19BrEdrCommandHandler19ConnectionResponderE:
   83|  29.0k|    BrEdrCommandHandler::ConnectionResponder* responder) {
   84|  29.0k|  bt_log(TRACE,
  ------------------
  |  |  141|  29.0k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  29.0k|  do {                                                                     \
  |  |  |  |   74|  29.0k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  29.0k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  29.0k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  29.0k|  do {                                                    \
  |  |  |  |  |  |   56|  29.0k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  29.0k|           (flags),                                       \
  |  |  |  |  |  |   58|  29.0k|           module,                                        \
  |  |  |  |  |  |   59|  29.0k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  29.0k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  29.0k|           __func__,                                      \
  |  |  |  |  |  |   62|  29.0k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  29.0k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  29.0k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  29.0k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  29.0k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  29.0k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  29.0k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  29.0k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  29.0k|    }                                                                      \
  |  |  |  |   77|  29.0k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  29.0k|         PW_LOG_LEVEL,                             \
  |  |  143|  29.0k|         tag,                                      \
  |  |  144|  29.0k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  29.0k|         __VA_ARGS__);                             \
  |  |  146|  29.0k|  ::bt::internal::CheckFormat(tag)
  ------------------
   85|  29.0k|         "l2cap-bredr",
   86|  29.0k|         "Got Connection Request for PSM %#.4x from channel %#.4x",
   87|  29.0k|         psm,
   88|  29.0k|         remote_cid);
   89|       |
   90|  29.0k|  if (remote_cid == kInvalidChannelId) {
  ------------------
  |  Branch (90:7): [True: 0, False: 29.0k]
  ------------------
   91|      0|    bt_log(DEBUG,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
   92|      0|           "l2cap-bredr",
   93|      0|           "Invalid source CID; rejecting connection for PSM %#.4x from "
   94|      0|           "channel %#.4x",
   95|      0|           psm,
   96|      0|           remote_cid);
   97|      0|    responder->Send(kInvalidChannelId,
   98|      0|                    ConnectionResult::kInvalidSourceCID,
   99|      0|                    ConnectionStatus::kNoInfoAvailable);
  100|      0|    return;
  101|      0|  }
  102|       |
  103|  29.0k|  if (FindChannelByRemoteId(remote_cid) != nullptr) {
  ------------------
  |  Branch (103:7): [True: 16.4k, False: 12.5k]
  ------------------
  104|  16.4k|    bt_log(DEBUG,
  ------------------
  |  |  141|  16.4k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  16.4k|  do {                                                                     \
  |  |  |  |   74|  16.4k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  16.4k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  16.4k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  16.4k|  do {                                                    \
  |  |  |  |  |  |   56|  16.4k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  16.4k|           (flags),                                       \
  |  |  |  |  |  |   58|  16.4k|           module,                                        \
  |  |  |  |  |  |   59|  16.4k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  16.4k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  16.4k|           __func__,                                      \
  |  |  |  |  |  |   62|  16.4k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  16.4k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  16.4k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  16.4k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  16.4k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  16.4k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  16.4k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  16.4k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  16.4k|    }                                                                      \
  |  |  |  |   77|  16.4k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  16.4k|         PW_LOG_LEVEL,                             \
  |  |  143|  16.4k|         tag,                                      \
  |  |  144|  16.4k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  16.4k|         __VA_ARGS__);                             \
  |  |  146|  16.4k|  ::bt::internal::CheckFormat(tag)
  ------------------
  105|  16.4k|           "l2cap-bredr",
  106|  16.4k|           "Remote CID already in use; rejecting connection for PSM %#.4x from "
  107|  16.4k|           "channel %#.4x",
  108|  16.4k|           psm,
  109|  16.4k|           remote_cid);
  110|  16.4k|    responder->Send(kInvalidChannelId,
  111|  16.4k|                    ConnectionResult::kSourceCIDAlreadyAllocated,
  112|  16.4k|                    ConnectionStatus::kNoInfoAvailable);
  113|  16.4k|    return;
  114|  16.4k|  }
  115|       |
  116|  12.5k|  ChannelId local_cid = FindAvailableChannelId();
  117|  12.5k|  if (local_cid == kInvalidChannelId) {
  ------------------
  |  Branch (117:7): [True: 0, False: 12.5k]
  ------------------
  118|      0|    bt_log(DEBUG,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  119|      0|           "l2cap-bredr",
  120|      0|           "Out of IDs; rejecting connection for PSM %#.4x from channel %#.4x",
  121|      0|           psm,
  122|      0|           remote_cid);
  123|      0|    responder->Send(kInvalidChannelId,
  124|      0|                    ConnectionResult::kNoResources,
  125|      0|                    ConnectionStatus::kNoInfoAvailable);
  126|      0|    return;
  127|      0|  }
  128|       |
  129|  12.5k|  auto dyn_chan = RequestService(psm, local_cid, remote_cid);
  130|  12.5k|  if (!dyn_chan) {
  ------------------
  |  Branch (130:7): [True: 1.79k, False: 10.7k]
  ------------------
  131|  1.79k|    bt_log(DEBUG,
  ------------------
  |  |  141|  1.79k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  1.79k|  do {                                                                     \
  |  |  |  |   74|  1.79k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.79k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  1.79k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.79k|  do {                                                    \
  |  |  |  |  |  |   56|  1.79k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  1.79k|           (flags),                                       \
  |  |  |  |  |  |   58|  1.79k|           module,                                        \
  |  |  |  |  |  |   59|  1.79k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  1.79k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  1.79k|           __func__,                                      \
  |  |  |  |  |  |   62|  1.79k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  1.79k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  1.79k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  1.79k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  1.79k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  1.79k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  1.79k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.79k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  1.79k|    }                                                                      \
  |  |  |  |   77|  1.79k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  1.79k|         PW_LOG_LEVEL,                             \
  |  |  143|  1.79k|         tag,                                      \
  |  |  144|  1.79k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  1.79k|         __VA_ARGS__);                             \
  |  |  146|  1.79k|  ::bt::internal::CheckFormat(tag)
  ------------------
  132|  1.79k|           "l2cap-bredr",
  133|  1.79k|           "Rejecting connection for unsupported PSM %#.4x from channel %#.4x",
  134|  1.79k|           psm,
  135|  1.79k|           remote_cid);
  136|  1.79k|    responder->Send(kInvalidChannelId,
  137|  1.79k|                    ConnectionResult::kPsmNotSupported,
  138|  1.79k|                    ConnectionStatus::kNoInfoAvailable);
  139|  1.79k|    return;
  140|  1.79k|  }
  141|       |
  142|  10.7k|  static_cast<BrEdrDynamicChannel*>(dyn_chan)->CompleteInboundConnection(
  143|  10.7k|      responder);
  144|  10.7k|}
_ZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry13OnRxConfigReqEttNS1_20ChannelConfigurationEPNS1_19BrEdrCommandHandler22ConfigurationResponderE:
  150|  24.4k|    BrEdrCommandHandler::ConfigurationResponder* responder) {
  151|  24.4k|  auto channel =
  152|  24.4k|      static_cast<BrEdrDynamicChannel*>(FindChannelByLocalId(local_cid));
  153|  24.4k|  if (channel == nullptr) {
  ------------------
  |  Branch (153:7): [True: 6.57k, False: 17.8k]
  ------------------
  154|  6.57k|    bt_log(WARN,
  ------------------
  |  |  141|  6.57k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  6.57k|  do {                                                                     \
  |  |  |  |   74|  6.57k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  6.57k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  6.57k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.57k|  do {                                                    \
  |  |  |  |  |  |   56|  6.57k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  6.57k|           (flags),                                       \
  |  |  |  |  |  |   58|  6.57k|           module,                                        \
  |  |  |  |  |  |   59|  6.57k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  6.57k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  6.57k|           __func__,                                      \
  |  |  |  |  |  |   62|  6.57k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  6.57k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  6.57k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  6.57k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  6.57k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  6.57k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  6.57k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  6.57k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  6.57k|    }                                                                      \
  |  |  |  |   77|  6.57k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  6.57k|         PW_LOG_LEVEL,                             \
  |  |  143|  6.57k|         tag,                                      \
  |  |  144|  6.57k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  6.57k|         __VA_ARGS__);                             \
  |  |  146|  6.57k|  ::bt::internal::CheckFormat(tag)
  ------------------
  155|  6.57k|           "l2cap-bredr",
  156|  6.57k|           "ID %#.4x not found for Configuration Request",
  157|  6.57k|           local_cid);
  158|  6.57k|    responder->RejectInvalidChannelId();
  159|  6.57k|    return;
  160|  6.57k|  }
  161|       |
  162|  17.8k|  channel->OnRxConfigReq(flags, std::move(config), responder);
  163|  17.8k|}
_ZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry13OnRxDisconReqEttPNS1_14CommandHandler22DisconnectionResponderE:
  168|  4.74k|    BrEdrCommandHandler::DisconnectionResponder* responder) {
  169|  4.74k|  auto channel =
  170|  4.74k|      static_cast<BrEdrDynamicChannel*>(FindChannelByLocalId(local_cid));
  171|  4.74k|  if (channel == nullptr || channel->remote_cid() != remote_cid) {
  ------------------
  |  Branch (171:7): [True: 2.32k, False: 2.41k]
  |  Branch (171:29): [True: 283, False: 2.13k]
  ------------------
  172|  2.61k|    bt_log(WARN,
  ------------------
  |  |  141|  2.61k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  2.61k|  do {                                                                     \
  |  |  |  |   74|  2.61k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  2.61k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  2.61k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.61k|  do {                                                    \
  |  |  |  |  |  |   56|  2.61k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  2.61k|           (flags),                                       \
  |  |  |  |  |  |   58|  2.61k|           module,                                        \
  |  |  |  |  |  |   59|  2.61k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  2.61k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  2.61k|           __func__,                                      \
  |  |  |  |  |  |   62|  2.61k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  2.61k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  2.61k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  2.61k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  2.61k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  2.61k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  2.61k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  2.61k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  2.61k|    }                                                                      \
  |  |  |  |   77|  2.61k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  2.61k|         PW_LOG_LEVEL,                             \
  |  |  143|  2.61k|         tag,                                      \
  |  |  144|  2.61k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  2.61k|         __VA_ARGS__);                             \
  |  |  146|  2.61k|  ::bt::internal::CheckFormat(tag)
  ------------------
  173|  2.61k|           "l2cap-bredr",
  174|  2.61k|           "ID %#.4x not found for Disconnection Request (remote ID %#.4x)",
  175|  2.61k|           local_cid,
  176|  2.61k|           remote_cid);
  177|  2.61k|    responder->RejectInvalidChannelId();
  178|  2.61k|    return;
  179|  2.61k|  }
  180|       |
  181|  2.13k|  channel->OnRxDisconReq(responder);
  182|  2.13k|}
_ZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry11OnRxInfoReqENS0_15InformationTypeEPNS1_19BrEdrCommandHandler20InformationResponderE:
  186|    788|    BrEdrCommandHandler::InformationResponder* responder) {
  187|    788|  bt_log(TRACE,
  ------------------
  |  |  141|    788|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    788|  do {                                                                     \
  |  |  |  |   74|    788|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    788|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    788|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    788|  do {                                                    \
  |  |  |  |  |  |   56|    788|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    788|           (flags),                                       \
  |  |  |  |  |  |   58|    788|           module,                                        \
  |  |  |  |  |  |   59|    788|           __FILE__,                                      \
  |  |  |  |  |  |   60|    788|           __LINE__,                                      \
  |  |  |  |  |  |   61|    788|           __func__,                                      \
  |  |  |  |  |  |   62|    788|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    788|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    788|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    788|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    788|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    788|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    788|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    788|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    788|    }                                                                      \
  |  |  |  |   77|    788|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    788|         PW_LOG_LEVEL,                             \
  |  |  143|    788|         tag,                                      \
  |  |  144|    788|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    788|         __VA_ARGS__);                             \
  |  |  146|    788|  ::bt::internal::CheckFormat(tag)
  ------------------
  188|    788|         "l2cap-bredr",
  189|    788|         "Got Information Request for type %#.4hx",
  190|    788|         static_cast<unsigned short>(type));
  191|       |
  192|       |  // TODO(fxbug.dev/42175069): The responses here will likely remain hardcoded
  193|       |  // magics, but maybe they should live elsewhere.
  194|    788|  switch (type) {
  195|    123|    case InformationType::kConnectionlessMTU: {
  ------------------
  |  Branch (195:5): [True: 123, False: 665]
  ------------------
  196|    123|      responder->SendNotSupported();
  197|    123|      break;
  198|      0|    }
  199|       |
  200|    383|    case InformationType::kExtendedFeaturesSupported: {
  ------------------
  |  Branch (200:5): [True: 383, False: 405]
  ------------------
  201|    383|      const ExtendedFeatures extended_features =
  202|    383|          kExtendedFeaturesBitFixedChannels | kExtendedFeaturesBitFCSOption |
  203|    383|          kExtendedFeaturesBitEnhancedRetransmission;
  204|       |
  205|       |      // Express support for the Fixed Channel Supported feature
  206|    383|      responder->SendExtendedFeaturesSupported(extended_features);
  207|    383|      break;
  208|      0|    }
  209|       |
  210|     67|    case InformationType::kFixedChannelsSupported: {
  ------------------
  |  Branch (210:5): [True: 67, False: 721]
  ------------------
  211|       |      // Express support for the ACL-U Signaling Channel (as required) and the
  212|       |      // SM channel (used for CTKD).
  213|     67|      const FixedChannelsSupported channels_supported =
  214|     67|          kFixedChannelsSupportedBitSignaling | kFixedChannelsSupportedBitSM;
  215|     67|      responder->SendFixedChannelsSupported(channels_supported);
  216|     67|      break;
  217|      0|    }
  218|       |
  219|    215|    default:
  ------------------
  |  Branch (219:5): [True: 215, False: 573]
  ------------------
  220|    215|      responder->RejectNotUnderstood();
  221|    215|      bt_log(DEBUG,
  ------------------
  |  |  141|    215|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    215|  do {                                                                     \
  |  |  |  |   74|    215|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    215|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    215|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    215|  do {                                                    \
  |  |  |  |  |  |   56|    215|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    215|           (flags),                                       \
  |  |  |  |  |  |   58|    215|           module,                                        \
  |  |  |  |  |  |   59|    215|           __FILE__,                                      \
  |  |  |  |  |  |   60|    215|           __LINE__,                                      \
  |  |  |  |  |  |   61|    215|           __func__,                                      \
  |  |  |  |  |  |   62|    215|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    215|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    215|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    215|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    215|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    215|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    215|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    215|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    215|    }                                                                      \
  |  |  |  |   77|    215|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    215|         PW_LOG_LEVEL,                             \
  |  |  143|    215|         tag,                                      \
  |  |  144|    215|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    215|         __VA_ARGS__);                             \
  |  |  146|    215|  ::bt::internal::CheckFormat(tag)
  ------------------
  222|    788|             "l2cap-bredr",
  223|    788|             "Rejecting Information Request type %#.4hx",
  224|    788|             static_cast<unsigned short>(type));
  225|    788|  }
  226|    788|}
_ZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry27OnRxExtendedFeaturesInfoRspERKNS1_19BrEdrCommandHandler19InformationResponseE:
  229|    644|    const BrEdrCommandHandler::InformationResponse& rsp) {
  230|    644|  if (rsp.status() == BrEdrCommandHandler::Status::kReject) {
  ------------------
  |  Branch (230:7): [True: 127, False: 517]
  ------------------
  231|    127|    bt_log(ERROR,
  ------------------
  |  |  141|    127|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    127|  do {                                                                     \
  |  |  |  |   74|    127|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    127|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    127|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    127|  do {                                                    \
  |  |  |  |  |  |   56|    127|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    127|           (flags),                                       \
  |  |  |  |  |  |   58|    127|           module,                                        \
  |  |  |  |  |  |   59|    127|           __FILE__,                                      \
  |  |  |  |  |  |   60|    127|           __LINE__,                                      \
  |  |  |  |  |  |   61|    127|           __func__,                                      \
  |  |  |  |  |  |   62|    127|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    127|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    127|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    127|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    127|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    127|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    127|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    127|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    127|    }                                                                      \
  |  |  |  |   77|    127|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    127|         PW_LOG_LEVEL,                             \
  |  |  143|    127|         tag,                                      \
  |  |  144|    127|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    127|         __VA_ARGS__);                             \
  |  |  146|    127|  ::bt::internal::CheckFormat(tag)
  ------------------
  232|    127|           "l2cap-bredr",
  233|    127|           "Extended Features Information Request rejected, reason %#.4hx, "
  234|    127|           "disconnecting",
  235|    127|           static_cast<unsigned short>(rsp.reject_reason()));
  236|    127|    return;
  237|    127|  }
  238|       |
  239|    517|  if (rsp.result() != InformationResult::kSuccess) {
  ------------------
  |  Branch (239:7): [True: 232, False: 285]
  ------------------
  240|    232|    bt_log(DEBUG,
  ------------------
  |  |  141|    232|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    232|  do {                                                                     \
  |  |  |  |   74|    232|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    232|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    232|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    232|  do {                                                    \
  |  |  |  |  |  |   56|    232|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    232|           (flags),                                       \
  |  |  |  |  |  |   58|    232|           module,                                        \
  |  |  |  |  |  |   59|    232|           __FILE__,                                      \
  |  |  |  |  |  |   60|    232|           __LINE__,                                      \
  |  |  |  |  |  |   61|    232|           __func__,                                      \
  |  |  |  |  |  |   62|    232|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    232|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    232|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    232|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    232|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    232|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    232|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    232|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    232|    }                                                                      \
  |  |  |  |   77|    232|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    232|         PW_LOG_LEVEL,                             \
  |  |  143|    232|         tag,                                      \
  |  |  144|    232|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    232|         __VA_ARGS__);                             \
  |  |  146|    232|  ::bt::internal::CheckFormat(tag)
  ------------------
  241|    232|           "l2cap-bredr",
  242|    232|           "Extended Features Information Response failure result (result: "
  243|    232|           "%#.4hx)",
  244|    232|           static_cast<uint16_t>(rsp.result()));
  245|       |    // Treat failure result as if feature mask indicated no ERTM support so that
  246|       |    // configuration can fall back to basic mode.
  247|    232|    ForEach([](DynamicChannel* chan) {
  248|    232|      std::ignore = static_cast<BrEdrDynamicChannel*>(chan)
  249|    232|                        ->SetEnhancedRetransmissionSupport(false);
  250|    232|    });
  251|    232|    return;
  252|    232|  }
  253|       |
  254|    285|  if (rsp.type() != InformationType::kExtendedFeaturesSupported) {
  ------------------
  |  Branch (254:7): [True: 65, False: 220]
  ------------------
  255|     65|    bt_log(
  ------------------
  |  |  141|     65|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     65|  do {                                                                     \
  |  |  |  |   74|     65|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     65|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     65|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     65|  do {                                                    \
  |  |  |  |  |  |   56|     65|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     65|           (flags),                                       \
  |  |  |  |  |  |   58|     65|           module,                                        \
  |  |  |  |  |  |   59|     65|           __FILE__,                                      \
  |  |  |  |  |  |   60|     65|           __LINE__,                                      \
  |  |  |  |  |  |   61|     65|           __func__,                                      \
  |  |  |  |  |  |   62|     65|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     65|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     65|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     65|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     65|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     65|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     65|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     65|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     65|    }                                                                      \
  |  |  |  |   77|     65|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     65|         PW_LOG_LEVEL,                             \
  |  |  143|     65|         tag,                                      \
  |  |  144|     65|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     65|         __VA_ARGS__);                             \
  |  |  146|     65|  ::bt::internal::CheckFormat(tag)
  ------------------
  256|     65|        ERROR,
  257|     65|        "l2cap-bredr",
  258|     65|        "Incorrect extended features information response type (type: %#.4hx)",
  259|     65|        static_cast<unsigned short>(rsp.type()));
  260|     65|    return;
  261|     65|  }
  262|       |
  263|    220|  if ((state_ & kExtendedFeaturesReceived) ||
  ------------------
  |  Branch (263:7): [True: 0, False: 220]
  ------------------
  264|    220|      !(state_ & kExtendedFeaturesSent)) {
  ------------------
  |  Branch (264:7): [True: 0, False: 220]
  ------------------
  265|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  266|      0|           "l2cap-bredr",
  267|      0|           "Unexpected extended features information response (state: %#x)",
  268|      0|           state_);
  269|      0|    return;
  270|      0|  }
  271|       |
  272|    220|  bt_log(
  ------------------
  |  |  141|    220|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    220|  do {                                                                     \
  |  |  |  |   74|    220|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    220|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    220|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    220|  do {                                                    \
  |  |  |  |  |  |   56|    220|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    220|           (flags),                                       \
  |  |  |  |  |  |   58|    220|           module,                                        \
  |  |  |  |  |  |   59|    220|           __FILE__,                                      \
  |  |  |  |  |  |   60|    220|           __LINE__,                                      \
  |  |  |  |  |  |   61|    220|           __func__,                                      \
  |  |  |  |  |  |   62|    220|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    220|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    220|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    220|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    220|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    220|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    220|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    220|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    220|    }                                                                      \
  |  |  |  |   77|    220|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    220|         PW_LOG_LEVEL,                             \
  |  |  143|    220|         tag,                                      \
  |  |  144|    220|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    220|         __VA_ARGS__);                             \
  |  |  146|    220|  ::bt::internal::CheckFormat(tag)
  ------------------
  273|    220|      TRACE,
  274|    220|      "l2cap-bredr",
  275|    220|      "Received Extended Features Information Response (feature mask: %#.4x)",
  276|    220|      rsp.extended_features());
  277|       |
  278|    220|  state_ |= kExtendedFeaturesReceived;
  279|       |
  280|    220|  extended_features_ = rsp.extended_features();
  281|       |
  282|       |  // Notify all channels created before extended features received.
  283|    220|  bool ertm_support =
  284|    220|      *extended_features_ & kExtendedFeaturesBitEnhancedRetransmission;
  285|    220|  ForEach([ertm_support](DynamicChannel* chan) {
  286|    220|    std::ignore = static_cast<BrEdrDynamicChannel*>(chan)
  287|    220|                      ->SetEnhancedRetransmissionSupport(ertm_support);
  288|    220|  });
  289|    220|}
_ZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry23SendInformationRequestsEv:
  291|   142k|void BrEdrDynamicChannelRegistry::SendInformationRequests() {
  292|   142k|  if (state_ & kExtendedFeaturesSent) {
  ------------------
  |  Branch (292:7): [True: 0, False: 142k]
  ------------------
  293|      0|    bt_log(
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  294|      0|        DEBUG, "l2cap-bredr", "Skipping sending info requests, already sent");
  295|      0|    return;
  296|      0|  }
  297|   142k|  BrEdrCommandHandler cmd_handler(sig_);
  298|   142k|  auto on_rx_info_rsp = [self = GetWeakPtr(), this](auto& rsp) {
  299|   142k|    if (self.is_alive()) {
  300|   142k|      OnRxExtendedFeaturesInfoRsp(rsp);
  301|   142k|    }
  302|   142k|  };
  303|   142k|  if (!cmd_handler.SendInformationRequest(
  ------------------
  |  Branch (303:7): [True: 0, False: 142k]
  ------------------
  304|   142k|          InformationType::kExtendedFeaturesSupported,
  305|   142k|          std::move(on_rx_info_rsp))) {
  306|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  307|      0|           "l2cap-bredr",
  308|      0|           "Failed to send Extended Features Information Request");
  309|      0|    return;
  310|      0|  }
  311|       |
  312|   142k|  state_ |= kExtendedFeaturesSent;
  313|   142k|}
_ZNK2bt5l2cap8internal27BrEdrDynamicChannelRegistry16PeerSupportsERTMEv:
  315|  10.7k|std::optional<bool> BrEdrDynamicChannelRegistry::PeerSupportsERTM() const {
  316|  10.7k|  if (!extended_features_) {
  ------------------
  |  Branch (316:7): [True: 10.6k, False: 105]
  ------------------
  317|  10.6k|    return std::nullopt;
  318|  10.6k|  }
  319|    105|  return *extended_features_ & kExtendedFeaturesBitEnhancedRetransmission;
  320|  10.7k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel11MakeInboundEPNS1_22DynamicChannelRegistryEPNS1_25SignalingChannelInterfaceEtttNS0_17ChannelParametersENSt3__18optionalIbEE:
  346|  10.7k|    std::optional<bool> peer_supports_ertm) {
  347|  10.7k|  auto channel = std::unique_ptr<BrEdrDynamicChannel>(
  348|  10.7k|      new BrEdrDynamicChannel(registry,
  349|  10.7k|                              signaling_channel,
  350|  10.7k|                              psm,
  351|  10.7k|                              local_cid,
  352|  10.7k|                              remote_cid,
  353|  10.7k|                              params,
  354|  10.7k|                              peer_supports_ertm));
  355|  10.7k|  channel->state_ |= kConnRequested;
  356|  10.7k|  return channel;
  357|  10.7k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel4OpenEN3fit13function_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEE:
  359|  10.7k|void BrEdrDynamicChannel::Open(fit::closure open_result_cb) {
  360|  10.7k|  open_result_cb_ = std::move(open_result_cb);
  361|       |
  362|  10.7k|  if (state_ & kConnRequested) {
  ------------------
  |  Branch (362:7): [True: 10.7k, False: 0]
  ------------------
  363|  10.7k|    return;
  364|  10.7k|  }
  365|       |
  366|      0|  auto on_conn_rsp = [self = weak_self_.GetWeakPtr()](
  367|      0|                         const BrEdrCommandHandler::ConnectionResponse& rsp) {
  368|      0|    if (self.is_alive()) {
  369|      0|      return self->OnRxConnRsp(rsp);
  370|      0|    }
  371|      0|    return BrEdrCommandHandler::ResponseHandlerAction::
  372|      0|        kCompleteOutboundTransaction;
  373|      0|  };
  374|       |
  375|      0|  auto on_conn_rsp_timeout = [this, self = weak_self_.GetWeakPtr()] {
  376|      0|    if (self.is_alive()) {
  377|      0|      bt_log(WARN,
  378|      0|             "l2cap-bredr",
  379|      0|             "Channel %#.4x: Timed out waiting for Connection Response",
  380|      0|             local_cid());
  381|      0|      PassOpenError();
  382|      0|    }
  383|      0|  };
  384|       |
  385|      0|  BrEdrCommandHandler cmd_handler(signaling_channel_,
  386|      0|                                  std::move(on_conn_rsp_timeout));
  387|      0|  if (!cmd_handler.SendConnectionRequest(
  ------------------
  |  Branch (387:7): [True: 0, False: 0]
  ------------------
  388|      0|          psm(), local_cid(), std::move(on_conn_rsp))) {
  389|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  390|      0|           "l2cap-bredr",
  391|      0|           "Channel %#.4x: Failed to send Connection Request",
  392|      0|           local_cid());
  393|      0|    PassOpenError();
  394|      0|    return;
  395|      0|  }
  396|       |
  397|      0|  bt_log(TRACE,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  398|      0|         "l2cap-bredr",
  399|      0|         "Channel %#.4x: Sent Connection Request",
  400|      0|         local_cid());
  401|       |
  402|      0|  state_ |= kConnRequested;
  403|      0|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel10DisconnectEN3fit13callback_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEE:
  405|  3.28k|void BrEdrDynamicChannel::Disconnect(DisconnectDoneCallback done_cb) {
  406|  3.28k|  PW_CHECK(done_cb);
  ------------------
  |  |   39|  3.28k|  do {                                                                         \
  |  |   40|  3.28k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.28k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.28k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  407|  3.28k|  if (!IsConnected()) {
  ------------------
  |  Branch (407:7): [True: 2.02k, False: 1.25k]
  ------------------
  408|  2.02k|    done_cb();
  409|  2.02k|    return;
  410|  2.02k|  }
  411|       |
  412|  1.25k|  state_ |= kDisconnected;
  413|       |
  414|       |  // Don't send disconnect request if the peer never responded (also can't,
  415|       |  // because we don't have their end's ID).
  416|  1.25k|  if (remote_cid() == kInvalidChannelId) {
  ------------------
  |  Branch (416:7): [True: 0, False: 1.25k]
  ------------------
  417|      0|    done_cb();
  418|      0|    return;
  419|      0|  }
  420|       |
  421|  1.25k|  auto on_discon_rsp =
  422|  1.25k|      [local_cid = local_cid(),
  423|  1.25k|       remote_cid = remote_cid(),
  424|  1.25k|       self = weak_self_.GetWeakPtr(),
  425|  1.25k|       done_cb_shared = done_cb.share()](
  426|  1.25k|          const BrEdrCommandHandler::DisconnectionResponse& rsp) mutable {
  427|  1.25k|        if (rsp.local_cid() != local_cid || rsp.remote_cid() != remote_cid) {
  428|  1.25k|          bt_log(WARN,
  429|  1.25k|                 "l2cap-bredr",
  430|  1.25k|                 "Channel %#.4x: Got Disconnection Response with ID %#.4x/"
  431|  1.25k|                 "remote ID %#.4x on channel with remote ID %#.4x",
  432|  1.25k|                 local_cid,
  433|  1.25k|                 rsp.local_cid(),
  434|  1.25k|                 rsp.remote_cid(),
  435|  1.25k|                 remote_cid);
  436|  1.25k|        } else {
  437|  1.25k|          bt_log(TRACE,
  438|  1.25k|                 "l2cap-bredr",
  439|  1.25k|                 "Channel %#.4x: Got Disconnection Response",
  440|  1.25k|                 local_cid);
  441|  1.25k|        }
  442|       |
  443|  1.25k|        if (self.is_alive()) {
  444|  1.25k|          done_cb_shared();
  445|  1.25k|        }
  446|  1.25k|      };
  447|       |
  448|  1.25k|  auto on_discon_rsp_timeout = [local_cid = local_cid(),
  449|  1.25k|                                self = weak_self_.GetWeakPtr(),
  450|  1.25k|                                done_cb_shared = done_cb.share()]() mutable {
  451|  1.25k|    bt_log(WARN,
  452|  1.25k|           "l2cap-bredr",
  453|  1.25k|           "Channel %#.4x: Timed out waiting for Disconnection Response; "
  454|  1.25k|           "completing disconnection",
  455|  1.25k|           local_cid);
  456|  1.25k|    if (self.is_alive()) {
  457|  1.25k|      done_cb_shared();
  458|  1.25k|    }
  459|  1.25k|  };
  460|       |
  461|  1.25k|  BrEdrCommandHandler cmd_handler(signaling_channel_,
  462|  1.25k|                                  std::move(on_discon_rsp_timeout));
  463|  1.25k|  if (!cmd_handler.SendDisconnectionRequest(
  ------------------
  |  Branch (463:7): [True: 0, False: 1.25k]
  ------------------
  464|  1.25k|          remote_cid(), local_cid(), std::move(on_discon_rsp))) {
  465|      0|    bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  466|      0|           "l2cap-bredr",
  467|      0|           "Channel %#.4x: Failed to send Disconnection Request",
  468|      0|           local_cid());
  469|      0|    done_cb();
  470|      0|    return;
  471|      0|  }
  472|       |
  473|  1.25k|  bt_log(TRACE,
  ------------------
  |  |  141|  1.25k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  1.25k|  do {                                                                     \
  |  |  |  |   74|  1.25k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.25k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  1.25k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.25k|  do {                                                    \
  |  |  |  |  |  |   56|  1.25k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  1.25k|           (flags),                                       \
  |  |  |  |  |  |   58|  1.25k|           module,                                        \
  |  |  |  |  |  |   59|  1.25k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  1.25k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  1.25k|           __func__,                                      \
  |  |  |  |  |  |   62|  1.25k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  1.25k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  1.25k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  1.25k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  1.25k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  1.25k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  1.25k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.25k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  1.25k|    }                                                                      \
  |  |  |  |   77|  1.25k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  1.25k|         PW_LOG_LEVEL,                             \
  |  |  143|  1.25k|         tag,                                      \
  |  |  144|  1.25k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  1.25k|         __VA_ARGS__);                             \
  |  |  146|  1.25k|  ::bt::internal::CheckFormat(tag)
  ------------------
  474|  1.25k|         "l2cap-bredr",
  475|  1.25k|         "Channel %#.4x: Sent Disconnection Request",
  476|  1.25k|         local_cid());
  477|  1.25k|}
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel11IsConnectedEv:
  479|  51.3k|bool BrEdrDynamicChannel::IsConnected() const {
  480|       |  // Remote-initiated channels have remote_cid_ already set.
  481|  51.3k|  return (state_ & kConnRequested) && (state_ & kConnResponded) &&
  ------------------
  |  Branch (481:10): [True: 51.3k, False: 0]
  |  Branch (481:39): [True: 51.3k, False: 0]
  ------------------
  482|  51.3k|         (remote_cid() != kInvalidChannelId) && !(state_ & kDisconnected);
  ------------------
  |  Branch (482:10): [True: 51.3k, False: 0]
  |  Branch (482:49): [True: 42.5k, False: 8.79k]
  ------------------
  483|  51.3k|}
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel6IsOpenEv:
  485|  25.7k|bool BrEdrDynamicChannel::IsOpen() const {
  486|  25.7k|  return IsConnected() && BothConfigsAccepted() &&
  ------------------
  |  Branch (486:10): [True: 21.6k, False: 4.14k]
  |  Branch (486:27): [True: 631, False: 21.0k]
  ------------------
  487|  25.7k|         AcceptedChannelModesAreConsistent();
  ------------------
  |  Branch (487:10): [True: 631, False: 0]
  ------------------
  488|  25.7k|}
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel4infoEv:
  490|    360|ChannelInfo BrEdrDynamicChannel::info() const {
  491|    360|  PW_CHECK(local_config().retransmission_flow_control_option().has_value());
  ------------------
  |  |   39|    360|  do {                                                                         \
  |  |   40|    360|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 360]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    360|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  492|    360|  PW_CHECK(local_config().mtu_option().has_value());
  ------------------
  |  |   39|    360|  do {                                                                         \
  |  |   40|    360|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 360]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    360|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  493|       |
  494|    360|  const auto max_rx_sdu_size = local_config().mtu_option()->mtu();
  495|    360|  const auto peer_mtu = remote_config().mtu_option()->mtu();
  496|    360|  const auto flush_timeout = parameters_.flush_timeout;
  497|    360|  if (local_config().retransmission_flow_control_option()->mode() ==
  ------------------
  |  Branch (497:7): [True: 360, False: 0]
  ------------------
  498|    360|      RetransmissionAndFlowControlMode::kBasic) {
  499|    360|    const auto max_tx_sdu_size = peer_mtu;
  500|    360|    return ChannelInfo::MakeBasicMode(
  501|    360|        max_rx_sdu_size, max_tx_sdu_size, psm(), flush_timeout);
  502|    360|  }
  503|      0|  const auto n_frames_in_tx_window =
  504|      0|      remote_config().retransmission_flow_control_option()->tx_window_size();
  505|      0|  const auto max_transmissions =
  506|      0|      remote_config().retransmission_flow_control_option()->max_transmit();
  507|      0|  const auto max_tx_pdu_payload_size =
  508|      0|      remote_config().retransmission_flow_control_option()->mps();
  509|      0|  const auto max_tx_sdu_size = std::min(peer_mtu, max_tx_pdu_payload_size);
  510|      0|  if (max_tx_pdu_payload_size < peer_mtu) {
  ------------------
  |  Branch (510:7): [True: 0, False: 0]
  ------------------
  511|      0|    bt_log(DEBUG,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  512|      0|           "l2cap-bredr",
  513|      0|           "Channel %#.4x: reporting MPS of %hu to service to avoid segmenting "
  514|      0|           "outbound SDUs, "
  515|      0|           "which would otherwise be %hu according to MTU",
  516|      0|           local_cid(),
  517|      0|           max_tx_sdu_size,
  518|      0|           peer_mtu);
  519|      0|  }
  520|      0|  auto info =
  521|      0|      ChannelInfo::MakeEnhancedRetransmissionMode(max_rx_sdu_size,
  522|      0|                                                  max_tx_sdu_size,
  523|      0|                                                  n_frames_in_tx_window,
  524|      0|                                                  max_transmissions,
  525|      0|                                                  max_tx_pdu_payload_size,
  526|      0|                                                  psm(),
  527|      0|                                                  flush_timeout);
  528|      0|  return info;
  529|    360|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel13OnRxConfigReqEtNS1_20ChannelConfigurationEPNS1_19BrEdrCommandHandler22ConfigurationResponderE:
  534|  17.8k|    BrEdrCommandHandler::ConfigurationResponder* responder) {
  535|  17.8k|  bool continuation = flags & kConfigurationContinuation;
  536|  17.8k|  bt_log(TRACE,
  ------------------
  |  |  141|  17.8k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  17.8k|  do {                                                                     \
  |  |  |  |   74|  17.8k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  17.8k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  17.8k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  17.8k|  do {                                                    \
  |  |  |  |  |  |   56|  17.8k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  17.8k|           (flags),                                       \
  |  |  |  |  |  |   58|  17.8k|           module,                                        \
  |  |  |  |  |  |   59|  17.8k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  17.8k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  17.8k|           __func__,                                      \
  |  |  |  |  |  |   62|  17.8k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  17.8k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  17.8k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  17.8k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  17.8k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  17.8k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  17.8k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  17.8k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  17.8k|    }                                                                      \
  |  |  |  |   77|  17.8k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  17.8k|         PW_LOG_LEVEL,                             \
  |  |  143|  17.8k|         tag,                                      \
  |  |  144|  17.8k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  17.8k|         __VA_ARGS__);                             \
  |  |  146|  17.8k|  ::bt::internal::CheckFormat(tag)
  ------------------
  537|  17.8k|         "l2cap-bredr",
  538|  17.8k|         "Channel %#.4x: Got Configuration Request (C: %d, options: %s)",
  539|  17.8k|         local_cid(),
  540|  17.8k|         continuation,
  541|  17.8k|         bt_str(config));
  542|       |
  543|  17.8k|  if (!IsConnected()) {
  ------------------
  |  Branch (543:7): [True: 239, False: 17.6k]
  ------------------
  544|    239|    bt_log(WARN,
  ------------------
  |  |  141|    239|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    239|  do {                                                                     \
  |  |  |  |   74|    239|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    239|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    239|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    239|  do {                                                    \
  |  |  |  |  |  |   56|    239|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    239|           (flags),                                       \
  |  |  |  |  |  |   58|    239|           module,                                        \
  |  |  |  |  |  |   59|    239|           __FILE__,                                      \
  |  |  |  |  |  |   60|    239|           __LINE__,                                      \
  |  |  |  |  |  |   61|    239|           __func__,                                      \
  |  |  |  |  |  |   62|    239|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    239|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    239|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    239|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    239|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    239|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    239|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    239|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    239|    }                                                                      \
  |  |  |  |   77|    239|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    239|         PW_LOG_LEVEL,                             \
  |  |  143|    239|         tag,                                      \
  |  |  144|    239|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    239|         __VA_ARGS__);                             \
  |  |  146|    239|  ::bt::internal::CheckFormat(tag)
  ------------------
  545|    239|           "l2cap-bredr",
  546|    239|           "Channel %#.4x: Unexpected Configuration Request, state %x",
  547|    239|           local_cid(),
  548|    239|           state_);
  549|    239|    return;
  550|    239|  }
  551|       |
  552|       |  // Reject configuration requests after channel is open because we don't
  553|       |  // support re-negotiation.
  554|  17.6k|  if (IsOpen()) {
  ------------------
  |  Branch (554:7): [True: 271, False: 17.3k]
  ------------------
  555|    271|    bt_log(WARN,
  ------------------
  |  |  141|    271|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    271|  do {                                                                     \
  |  |  |  |   74|    271|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    271|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    271|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    271|  do {                                                    \
  |  |  |  |  |  |   56|    271|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    271|           (flags),                                       \
  |  |  |  |  |  |   58|    271|           module,                                        \
  |  |  |  |  |  |   59|    271|           __FILE__,                                      \
  |  |  |  |  |  |   60|    271|           __LINE__,                                      \
  |  |  |  |  |  |   61|    271|           __func__,                                      \
  |  |  |  |  |  |   62|    271|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    271|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    271|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    271|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    271|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    271|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    271|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    271|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    271|    }                                                                      \
  |  |  |  |   77|    271|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    271|         PW_LOG_LEVEL,                             \
  |  |  143|    271|         tag,                                      \
  |  |  144|    271|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    271|         __VA_ARGS__);                             \
  |  |  146|    271|  ::bt::internal::CheckFormat(tag)
  ------------------
  556|    271|           "l2cap-bredr",
  557|    271|           "Channel %#.4x: Rejecting Configuration Request after channel open",
  558|    271|           local_cid());
  559|    271|    responder->Send(remote_cid(),
  560|    271|                    /*flags=*/0x0000,
  561|    271|                    ConfigurationResult::kRejected,
  562|    271|                    ChannelConfiguration::ConfigurationOptions());
  563|    271|    return;
  564|    271|  }
  565|       |
  566|       |  // Always add options to accumulator, even if C = 0, for later code
  567|       |  // simplicity.
  568|  17.3k|  if (remote_config_accum_.has_value()) {
  ------------------
  |  Branch (568:7): [True: 14.0k, False: 3.32k]
  ------------------
  569|  14.0k|    remote_config_accum_->Merge(std::move(config));
  570|  14.0k|  } else {
  571|       |    // TODO(fxbug.dev/42115983): if channel is being re-configured, merge with
  572|       |    // existing configuration
  573|  3.32k|    remote_config_accum_ = std::move(config);
  574|  3.32k|  }
  575|       |
  576|  17.3k|  if (continuation) {
  ------------------
  |  Branch (576:7): [True: 14.3k, False: 3.04k]
  ------------------
  577|       |    // keep responding with success until all options have been received (C flag
  578|       |    // is 0)
  579|  14.3k|    responder->Send(remote_cid(),
  580|  14.3k|                    /*flags=*/kConfigurationContinuation,
  581|  14.3k|                    ConfigurationResult::kSuccess,
  582|  14.3k|                    ChannelConfiguration::ConfigurationOptions());
  583|  14.3k|    bt_log(TRACE,
  ------------------
  |  |  141|  14.3k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  14.3k|  do {                                                                     \
  |  |  |  |   74|  14.3k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  14.3k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  14.3k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  14.3k|  do {                                                    \
  |  |  |  |  |  |   56|  14.3k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  14.3k|           (flags),                                       \
  |  |  |  |  |  |   58|  14.3k|           module,                                        \
  |  |  |  |  |  |   59|  14.3k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  14.3k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  14.3k|           __func__,                                      \
  |  |  |  |  |  |   62|  14.3k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  14.3k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  14.3k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  14.3k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  14.3k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  14.3k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  14.3k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  14.3k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  14.3k|    }                                                                      \
  |  |  |  |   77|  14.3k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  14.3k|         PW_LOG_LEVEL,                             \
  |  |  143|  14.3k|         tag,                                      \
  |  |  144|  14.3k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  14.3k|         __VA_ARGS__);                             \
  |  |  146|  14.3k|  ::bt::internal::CheckFormat(tag)
  ------------------
  584|  14.3k|           "l2cap-bredr",
  585|  14.3k|           "Channel %#.4x: Sent Configuration Response (C: 1)",
  586|  14.3k|           local_cid());
  587|  14.3k|    return;
  588|  14.3k|  }
  589|       |
  590|  3.04k|  auto req_config = std::exchange(remote_config_accum_, std::nullopt).value();
  591|       |
  592|  3.04k|  const auto req_mode =
  593|  3.04k|      req_config.retransmission_flow_control_option()
  ------------------
  |  Branch (593:7): [True: 189, False: 2.85k]
  ------------------
  594|  3.04k|          ? req_config.retransmission_flow_control_option()->mode()
  595|  3.04k|          : RetransmissionAndFlowControlMode::kBasic;
  596|       |
  597|       |  // Record peer support for ERTM even if they haven't sent a Extended Features
  598|       |  // Mask.
  599|  3.04k|  if (req_mode == RetransmissionAndFlowControlMode::kEnhancedRetransmission) {
  ------------------
  |  Branch (599:7): [True: 87, False: 2.95k]
  ------------------
  600|       |    // This can send a config request, which can fail and cause the channel to
  601|       |    // be destroyed, in which case we should not proceed.
  602|     87|    if (!SetEnhancedRetransmissionSupport(true)) {
  ------------------
  |  Branch (602:9): [True: 0, False: 87]
  ------------------
  603|      0|      return;
  604|      0|    }
  605|     87|  }
  606|       |
  607|       |  // Set default config options if not already in request.
  608|  3.04k|  if (!req_config.mtu_option()) {
  ------------------
  |  Branch (608:7): [True: 2.83k, False: 212]
  ------------------
  609|  2.83k|    req_config.set_mtu_option(ChannelConfiguration::MtuOption(kDefaultMTU));
  610|  2.83k|  }
  611|       |
  612|  3.04k|  if (state_ & kRemoteConfigReceived) {
  ------------------
  |  Branch (612:7): [True: 2.11k, False: 925]
  ------------------
  613|       |    // Disconnect if second configuration request does not contain desired mode.
  614|  2.11k|    const auto local_mode =
  615|  2.11k|        local_config_.retransmission_flow_control_option()->mode();
  616|  2.11k|    if (req_mode != local_mode) {
  ------------------
  |  Branch (616:9): [True: 49, False: 2.06k]
  ------------------
  617|     49|      bt_log(WARN,
  ------------------
  |  |  141|     49|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     49|  do {                                                                     \
  |  |  |  |   74|     49|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     49|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     49|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     49|  do {                                                    \
  |  |  |  |  |  |   56|     49|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     49|           (flags),                                       \
  |  |  |  |  |  |   58|     49|           module,                                        \
  |  |  |  |  |  |   59|     49|           __FILE__,                                      \
  |  |  |  |  |  |   60|     49|           __LINE__,                                      \
  |  |  |  |  |  |   61|     49|           __func__,                                      \
  |  |  |  |  |  |   62|     49|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     49|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     49|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     49|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     49|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     49|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     49|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     49|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     49|    }                                                                      \
  |  |  |  |   77|     49|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     49|         PW_LOG_LEVEL,                             \
  |  |  143|     49|         tag,                                      \
  |  |  144|     49|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     49|         __VA_ARGS__);                             \
  |  |  146|     49|  ::bt::internal::CheckFormat(tag)
  ------------------
  618|     49|             "l2cap-bredr",
  619|     49|             "Channel %#.4x: second configuration request doesn't have desired "
  620|     49|             "mode, sending unacceptable parameters response and disconnecting "
  621|     49|             "(req mode: %#.2x, desired: %#.2x)",
  622|     49|             local_cid(),
  623|     49|             static_cast<uint8_t>(req_mode),
  624|     49|             static_cast<uint8_t>(local_mode));
  625|     49|      ChannelConfiguration::ConfigurationOptions options;
  626|     49|      options.push_back(
  627|     49|          std::make_unique<
  628|     49|              ChannelConfiguration::RetransmissionAndFlowControlOption>(
  629|     49|              *local_config().retransmission_flow_control_option()));
  630|     49|      responder->Send(remote_cid(),
  631|     49|                      0x0000,
  632|     49|                      ConfigurationResult::kUnacceptableParameters,
  633|     49|                      std::move(options));
  634|     49|      PassOpenError();
  635|     49|      return;
  636|     49|    }
  637|       |
  638|  2.11k|    bt_log(DEBUG,
  ------------------
  |  |  141|  2.06k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  2.06k|  do {                                                                     \
  |  |  |  |   74|  2.06k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  2.06k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  2.06k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.06k|  do {                                                    \
  |  |  |  |  |  |   56|  2.06k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  2.06k|           (flags),                                       \
  |  |  |  |  |  |   58|  2.06k|           module,                                        \
  |  |  |  |  |  |   59|  2.06k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  2.06k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  2.06k|           __func__,                                      \
  |  |  |  |  |  |   62|  2.06k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  2.06k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  2.06k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  2.06k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  2.06k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  2.06k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  2.06k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  2.06k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  2.06k|    }                                                                      \
  |  |  |  |   77|  2.06k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  2.06k|         PW_LOG_LEVEL,                             \
  |  |  143|  2.06k|         tag,                                      \
  |  |  144|  2.06k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  2.06k|         __VA_ARGS__);                             \
  |  |  146|  2.06k|  ::bt::internal::CheckFormat(tag)
  ------------------
  639|  2.06k|           "l2cap-bredr",
  640|  2.06k|           "Channel %#.4x: Reconfiguring, state %x",
  641|  2.06k|           local_cid(),
  642|  2.06k|           state_);
  643|  2.06k|  }
  644|       |
  645|  2.99k|  state_ |= kRemoteConfigReceived;
  646|       |
  647|       |  // Reject request if it contains unknown options.
  648|       |  // See Core Spec v5.1, Volume 3, Section 4.5: Configuration Options
  649|  2.99k|  if (!req_config.unknown_options().empty()) {
  ------------------
  |  Branch (649:7): [True: 1.79k, False: 1.19k]
  ------------------
  650|  1.79k|    ChannelConfiguration::ConfigurationOptions unknown_options;
  651|  1.79k|    std::string unknown_string;
  652|  47.1k|    for (auto& option : req_config.unknown_options()) {
  ------------------
  |  Branch (652:23): [True: 47.1k, False: 1.79k]
  ------------------
  653|  47.1k|      unknown_options.push_back(
  654|  47.1k|          std::make_unique<ChannelConfiguration::UnknownOption>(option));
  655|  47.1k|      unknown_string += std::string(" ") + option.ToString();
  656|  47.1k|    }
  657|       |
  658|  1.79k|    bt_log(DEBUG,
  ------------------
  |  |  141|  1.79k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  1.79k|  do {                                                                     \
  |  |  |  |   74|  1.79k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.79k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  1.79k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.79k|  do {                                                    \
  |  |  |  |  |  |   56|  1.79k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  1.79k|           (flags),                                       \
  |  |  |  |  |  |   58|  1.79k|           module,                                        \
  |  |  |  |  |  |   59|  1.79k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  1.79k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  1.79k|           __func__,                                      \
  |  |  |  |  |  |   62|  1.79k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  1.79k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  1.79k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  1.79k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  1.79k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  1.79k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  1.79k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.79k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  1.79k|    }                                                                      \
  |  |  |  |   77|  1.79k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  1.79k|         PW_LOG_LEVEL,                             \
  |  |  143|  1.79k|         tag,                                      \
  |  |  144|  1.79k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  1.79k|         __VA_ARGS__);                             \
  |  |  146|  1.79k|  ::bt::internal::CheckFormat(tag)
  ------------------
  659|  1.79k|           "l2cap-bredr",
  660|  1.79k|           "Channel %#.4x: config request contained unknown options (options: "
  661|  1.79k|           "%s)\n",
  662|  1.79k|           local_cid(),
  663|  1.79k|           unknown_string.c_str());
  664|       |
  665|  1.79k|    responder->Send(remote_cid(),
  666|  1.79k|                    /*flags=*/0x0000,
  667|  1.79k|                    ConfigurationResult::kUnknownOptions,
  668|  1.79k|                    std::move(unknown_options));
  669|  1.79k|    return;
  670|  1.79k|  }
  671|       |
  672|  1.19k|  auto unacceptable_config = CheckForUnacceptableConfigReqOptions(req_config);
  673|  1.19k|  auto unacceptable_options = unacceptable_config.Options();
  674|  1.19k|  if (!unacceptable_options.empty()) {
  ------------------
  |  Branch (674:7): [True: 128, False: 1.06k]
  ------------------
  675|    128|    responder->Send(remote_cid(),
  676|    128|                    /*flags=*/0x0000,
  677|    128|                    ConfigurationResult::kUnacceptableParameters,
  678|    128|                    std::move(unacceptable_options));
  679|    128|    bt_log(TRACE,
  ------------------
  |  |  141|    128|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    128|  do {                                                                     \
  |  |  |  |   74|    128|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    128|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    128|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    128|  do {                                                    \
  |  |  |  |  |  |   56|    128|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    128|           (flags),                                       \
  |  |  |  |  |  |   58|    128|           module,                                        \
  |  |  |  |  |  |   59|    128|           __FILE__,                                      \
  |  |  |  |  |  |   60|    128|           __LINE__,                                      \
  |  |  |  |  |  |   61|    128|           __func__,                                      \
  |  |  |  |  |  |   62|    128|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    128|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    128|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    128|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    128|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    128|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    128|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    128|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    128|    }                                                                      \
  |  |  |  |   77|    128|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    128|         PW_LOG_LEVEL,                             \
  |  |  143|    128|         tag,                                      \
  |  |  144|    128|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    128|         __VA_ARGS__);                             \
  |  |  146|    128|  ::bt::internal::CheckFormat(tag)
  ------------------
  680|    128|           "l2cap-bredr",
  681|    128|           "Channel %#.4x: Sent unacceptable parameters configuration response "
  682|    128|           "(options: %s)",
  683|    128|           local_cid(),
  684|    128|           bt_str(unacceptable_config));
  685|    128|    return;
  686|    128|  }
  687|       |
  688|       |  // TODO(fxbug.dev/42057179): Defer accepting config req using a Pending
  689|       |  // response
  690|  1.06k|  state_ |= kRemoteConfigAccepted;
  691|       |
  692|  1.06k|  ChannelConfiguration response_config;
  693|       |
  694|       |  // Successful response should include actual MTU local device will use. This
  695|       |  // must be min(received MTU, local outgoing MTU capability). Currently, we
  696|       |  // accept any MTU.
  697|       |  // TODO(fxbug.dev/42117452): determine the upper bound of what we are actually
  698|       |  // capable of sending
  699|  1.06k|  uint16_t actual_mtu = req_config.mtu_option()->mtu();
  700|  1.06k|  response_config.set_mtu_option(ChannelConfiguration::MtuOption(actual_mtu));
  701|  1.06k|  req_config.set_mtu_option(response_config.mtu_option());
  702|       |
  703|  1.06k|  if (req_mode == RetransmissionAndFlowControlMode::kEnhancedRetransmission) {
  ------------------
  |  Branch (703:7): [True: 0, False: 1.06k]
  ------------------
  704|      0|    auto outbound_rfc_option = WriteRfcOutboundTimeouts(
  705|      0|        req_config.retransmission_flow_control_option().value());
  706|      0|    response_config.set_retransmission_flow_control_option(
  707|      0|        std::move(outbound_rfc_option));
  708|  1.06k|  } else {
  709|  1.06k|    response_config.set_retransmission_flow_control_option(
  710|  1.06k|        req_config.retransmission_flow_control_option());
  711|  1.06k|  }
  712|       |
  713|  1.06k|  responder->Send(remote_cid(),
  714|  1.06k|                  /*flags=*/0x0000,
  715|  1.06k|                  ConfigurationResult::kSuccess,
  716|  1.06k|                  response_config.Options());
  717|       |
  718|  1.06k|  bt_log(TRACE,
  ------------------
  |  |  141|  1.06k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  1.06k|  do {                                                                     \
  |  |  |  |   74|  1.06k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.06k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  1.06k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.06k|  do {                                                    \
  |  |  |  |  |  |   56|  1.06k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  1.06k|           (flags),                                       \
  |  |  |  |  |  |   58|  1.06k|           module,                                        \
  |  |  |  |  |  |   59|  1.06k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  1.06k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  1.06k|           __func__,                                      \
  |  |  |  |  |  |   62|  1.06k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  1.06k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  1.06k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  1.06k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  1.06k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  1.06k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  1.06k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.06k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  1.06k|    }                                                                      \
  |  |  |  |   77|  1.06k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  1.06k|         PW_LOG_LEVEL,                             \
  |  |  143|  1.06k|         tag,                                      \
  |  |  144|  1.06k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  1.06k|         __VA_ARGS__);                             \
  |  |  146|  1.06k|  ::bt::internal::CheckFormat(tag)
  ------------------
  719|  1.06k|         "l2cap-bredr",
  720|  1.06k|         "Channel %#.4x: Sent Configuration Response (options: %s)",
  721|  1.06k|         local_cid(),
  722|  1.06k|         bt_str(response_config));
  723|       |
  724|       |  // Save accepted options.
  725|  1.06k|  remote_config_.Merge(std::move(req_config));
  726|       |
  727|  1.06k|  if (!remote_config_.retransmission_flow_control_option()) {
  ------------------
  |  Branch (727:7): [True: 551, False: 518]
  ------------------
  728|    551|    remote_config_.set_retransmission_flow_control_option(
  729|    551|        ChannelConfiguration::RetransmissionAndFlowControlOption::
  730|    551|            MakeBasicMode());
  731|    551|  }
  732|       |
  733|  1.06k|  if (BothConfigsAccepted() && !AcceptedChannelModesAreConsistent()) {
  ------------------
  |  Branch (733:7): [True: 151, False: 918]
  |  Branch (733:32): [True: 0, False: 151]
  ------------------
  734|      0|    bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  735|      0|           "l2cap-bredr",
  736|      0|           "Channel %#.4x: inconsistent channel mode negotiation (local mode: "
  737|      0|           "%#.2x, remote "
  738|      0|           "mode: %#.2x); falling back to Basic Mode",
  739|      0|           local_cid(),
  740|      0|           static_cast<uint8_t>(
  741|      0|               local_config().retransmission_flow_control_option()->mode()),
  742|      0|           static_cast<uint8_t>(
  743|      0|               remote_config().retransmission_flow_control_option()->mode()));
  744|       |
  745|       |    // The most applicable guidance for the case where the peer send conflicting
  746|       |    // modes is in Core Spec v5.0 Vol 3, Part A, Sec 5.4: "If the mode proposed
  747|       |    // by the remote device has a higher precedence (according to the state 1
  748|       |    // precedence) then the algorithm will operate such that creation of a
  749|       |    // channel using the remote device's mode has higher priority than
  750|       |    // disconnecting the channel."
  751|       |    //
  752|       |    // Note also that, "In state 1, Basic L2CAP mode has the highest precedence
  753|       |    // and shall take precedence over Enhanced Retransmission mode..."
  754|       |    //
  755|       |    // So, if we are to continue the connection, it makes the most sense to use
  756|       |    // Basic Mode.
  757|      0|    local_config_.set_retransmission_flow_control_option(
  758|      0|        ChannelConfiguration::RetransmissionAndFlowControlOption::
  759|      0|            MakeBasicMode());
  760|      0|    remote_config_.set_retransmission_flow_control_option(
  761|      0|        ChannelConfiguration::RetransmissionAndFlowControlOption::
  762|      0|            MakeBasicMode());
  763|      0|    PassOpenResult();
  764|      0|    return;
  765|      0|  }
  766|       |
  767|  1.06k|  if (IsOpen()) {
  ------------------
  |  Branch (767:7): [True: 151, False: 918]
  ------------------
  768|    151|    set_opened();
  769|    151|    PassOpenResult();
  770|    151|  }
  771|  1.06k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel13OnRxDisconReqEPNS1_14CommandHandler22DisconnectionResponderE:
  774|  2.13k|    BrEdrCommandHandler::DisconnectionResponder* responder) {
  775|  2.13k|  bt_log(TRACE,
  ------------------
  |  |  141|  2.13k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  2.13k|  do {                                                                     \
  |  |  |  |   74|  2.13k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  2.13k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  2.13k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.13k|  do {                                                    \
  |  |  |  |  |  |   56|  2.13k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  2.13k|           (flags),                                       \
  |  |  |  |  |  |   58|  2.13k|           module,                                        \
  |  |  |  |  |  |   59|  2.13k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  2.13k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  2.13k|           __func__,                                      \
  |  |  |  |  |  |   62|  2.13k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  2.13k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  2.13k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  2.13k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  2.13k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  2.13k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  2.13k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  2.13k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  2.13k|    }                                                                      \
  |  |  |  |   77|  2.13k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  2.13k|         PW_LOG_LEVEL,                             \
  |  |  143|  2.13k|         tag,                                      \
  |  |  144|  2.13k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  2.13k|         __VA_ARGS__);                             \
  |  |  146|  2.13k|  ::bt::internal::CheckFormat(tag)
  ------------------
  776|  2.13k|         "l2cap-bredr",
  777|  2.13k|         "Channel %#.4x: Got Disconnection Request",
  778|  2.13k|         local_cid());
  779|       |
  780|       |  // Unconnected channels only exist if they are waiting for a Connection
  781|       |  // Response from the peer or are disconnected yet undestroyed for some reason.
  782|       |  // Getting a Disconnection Request implies some error condition or misbehavior
  783|       |  // but the reaction should still be to terminate this channel.
  784|  2.13k|  if (!IsConnected()) {
  ------------------
  |  Branch (784:7): [True: 88, False: 2.04k]
  ------------------
  785|     88|    bt_log(WARN,
  ------------------
  |  |  141|     88|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     88|  do {                                                                     \
  |  |  |  |   74|     88|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     88|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     88|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     88|  do {                                                    \
  |  |  |  |  |  |   56|     88|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     88|           (flags),                                       \
  |  |  |  |  |  |   58|     88|           module,                                        \
  |  |  |  |  |  |   59|     88|           __FILE__,                                      \
  |  |  |  |  |  |   60|     88|           __LINE__,                                      \
  |  |  |  |  |  |   61|     88|           __func__,                                      \
  |  |  |  |  |  |   62|     88|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     88|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     88|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     88|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     88|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     88|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     88|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     88|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     88|    }                                                                      \
  |  |  |  |   77|     88|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     88|         PW_LOG_LEVEL,                             \
  |  |  143|     88|         tag,                                      \
  |  |  144|     88|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     88|         __VA_ARGS__);                             \
  |  |  146|     88|  ::bt::internal::CheckFormat(tag)
  ------------------
  786|     88|           "l2cap-bredr",
  787|     88|           "Channel %#.4x: Unexpected Disconnection Request",
  788|     88|           local_cid());
  789|     88|  }
  790|       |
  791|  2.13k|  state_ |= kDisconnected;
  792|  2.13k|  responder->Send();
  793|  2.13k|  if (opened()) {
  ------------------
  |  Branch (793:7): [True: 18, False: 2.11k]
  ------------------
  794|     18|    OnDisconnected();
  795|  2.11k|  } else {
  796|  2.11k|    PassOpenError();
  797|  2.11k|  }
  798|  2.13k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel25CompleteInboundConnectionEPNS1_19BrEdrCommandHandler19ConnectionResponderE:
  801|  10.7k|    BrEdrCommandHandler::ConnectionResponder* responder) {
  802|  10.7k|  bt_log(DEBUG,
  ------------------
  |  |  141|  10.7k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  10.7k|  do {                                                                     \
  |  |  |  |   74|  10.7k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  10.7k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  10.7k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.7k|  do {                                                    \
  |  |  |  |  |  |   56|  10.7k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  10.7k|           (flags),                                       \
  |  |  |  |  |  |   58|  10.7k|           module,                                        \
  |  |  |  |  |  |   59|  10.7k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  10.7k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  10.7k|           __func__,                                      \
  |  |  |  |  |  |   62|  10.7k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  10.7k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  10.7k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  10.7k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  10.7k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  10.7k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  10.7k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  10.7k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  10.7k|    }                                                                      \
  |  |  |  |   77|  10.7k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  10.7k|         PW_LOG_LEVEL,                             \
  |  |  143|  10.7k|         tag,                                      \
  |  |  144|  10.7k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  10.7k|         __VA_ARGS__);                             \
  |  |  146|  10.7k|  ::bt::internal::CheckFormat(tag)
  ------------------
  803|  10.7k|         "l2cap-bredr",
  804|  10.7k|         "Channel %#.4x: connected for PSM %#.4x from remote channel %#.4x",
  805|  10.7k|         local_cid(),
  806|  10.7k|         psm(),
  807|  10.7k|         remote_cid());
  808|       |
  809|  10.7k|  responder->Send(local_cid(),
  810|  10.7k|                  ConnectionResult::kSuccess,
  811|  10.7k|                  ConnectionStatus::kNoInfoAvailable);
  812|  10.7k|  bt_log(TRACE,
  ------------------
  |  |  141|  10.7k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  10.7k|  do {                                                                     \
  |  |  |  |   74|  10.7k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  10.7k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  10.7k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.7k|  do {                                                    \
  |  |  |  |  |  |   56|  10.7k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  10.7k|           (flags),                                       \
  |  |  |  |  |  |   58|  10.7k|           module,                                        \
  |  |  |  |  |  |   59|  10.7k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  10.7k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  10.7k|           __func__,                                      \
  |  |  |  |  |  |   62|  10.7k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  10.7k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  10.7k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  10.7k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  10.7k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  10.7k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  10.7k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  10.7k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  10.7k|    }                                                                      \
  |  |  |  |   77|  10.7k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  10.7k|         PW_LOG_LEVEL,                             \
  |  |  143|  10.7k|         tag,                                      \
  |  |  144|  10.7k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  10.7k|         __VA_ARGS__);                             \
  |  |  146|  10.7k|  ::bt::internal::CheckFormat(tag)
  ------------------
  813|  10.7k|         "l2cap-bredr",
  814|  10.7k|         "Channel %#.4x: Sent Connection Response",
  815|  10.7k|         local_cid());
  816|  10.7k|  state_ |= kConnResponded;
  817|       |
  818|  10.7k|  UpdateLocalConfigForErtm();
  819|  10.7k|  if (!IsWaitingForPeerErtmSupport()) {
  ------------------
  |  Branch (819:7): [True: 10.7k, False: 0]
  ------------------
  820|  10.7k|    std::ignore = TrySendLocalConfig();
  821|  10.7k|  }
  822|  10.7k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannelC2EPNS1_22DynamicChannelRegistryEPNS1_25SignalingChannelInterfaceEtttNS0_17ChannelParametersENSt3__18optionalIbEE:
  832|  10.7k|    : DynamicChannel(registry, psm, local_cid, remote_cid),
  833|  10.7k|      signaling_channel_(signaling_channel),
  834|  10.7k|      parameters_(params),
  835|  10.7k|      state_(0u),
  836|  10.7k|      peer_supports_ertm_(peer_supports_ertm),
  837|  10.7k|      weak_self_(this) {
  838|  10.7k|  PW_DCHECK(signaling_channel_);
  ------------------
  |  |   51|  10.7k|  do {                            \
  |  |   52|  10.7k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  10.7k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  10.7k|  do {                                                                         \
  |  |  |  |   40|  10.7k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 10.7k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  10.7k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  10.7k|    }                             \
  |  |   55|  10.7k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  839|  10.7k|  PW_DCHECK(local_cid != kInvalidChannelId);
  ------------------
  |  |   51|  10.7k|  do {                            \
  |  |   52|  10.7k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  10.7k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  10.7k|  do {                                                                         \
  |  |  |  |   40|  10.7k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 10.7k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  10.7k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  10.7k|    }                             \
  |  |   55|  10.7k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  840|       |
  841|  10.7k|  UpdateLocalConfigForErtm();
  842|  10.7k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel14PassOpenResultEv:
  844|  3.54k|void BrEdrDynamicChannel::PassOpenResult() {
  845|  3.54k|  if (open_result_cb_) {
  ------------------
  |  Branch (845:7): [True: 3.46k, False: 88]
  ------------------
  846|       |    // Guard against use-after-free if this object's owner destroys it while
  847|       |    // running |open_result_cb_|.
  848|  3.46k|    auto cb = std::move(open_result_cb_);
  849|  3.46k|    cb();
  850|  3.46k|  }
  851|  3.54k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel13PassOpenErrorEv:
  856|  3.36k|void BrEdrDynamicChannel::PassOpenError() {
  857|  3.36k|  PW_CHECK(!IsOpen());
  ------------------
  |  |   39|  3.36k|  do {                                                                         \
  |  |   40|  3.36k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.36k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.36k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  858|  3.36k|  PassOpenResult();
  859|  3.36k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel24UpdateLocalConfigForErtmEv:
  861|  22.1k|void BrEdrDynamicChannel::UpdateLocalConfigForErtm() {
  862|  22.1k|  local_config_.set_mtu_option(
  863|  22.1k|      ChannelConfiguration::MtuOption(CalculateLocalMtu()));
  864|       |
  865|  22.1k|  if (ShouldRequestEnhancedRetransmission()) {
  ------------------
  |  Branch (865:7): [True: 0, False: 22.1k]
  ------------------
  866|       |    // Core Spec v5.0 Vol 3, Part A, Sec 8.6.2.1 "When configuring a channel
  867|       |    // over an ACL-U logical link the values sent in a Configuration Request
  868|       |    // packet for Retransmission timeout and Monitor timeout shall be 0."
  869|      0|    auto option = ChannelConfiguration::RetransmissionAndFlowControlOption::
  870|      0|        MakeEnhancedRetransmissionMode(
  871|      0|            /*tx_window_size=*/kErtmMaxUnackedInboundFrames,
  872|      0|            /*max_transmit=*/kErtmMaxInboundRetransmissions,
  873|      0|            /*rtx_timeout=*/0,
  874|      0|            /*monitor_timeout=*/0,
  875|      0|            /*mps=*/kMaxInboundPduPayloadSize);
  876|      0|    local_config_.set_retransmission_flow_control_option(option);
  877|  22.1k|  } else {
  878|  22.1k|    local_config_.set_retransmission_flow_control_option(
  879|  22.1k|        ChannelConfiguration::RetransmissionAndFlowControlOption::
  880|  22.1k|            MakeBasicMode());
  881|  22.1k|  }
  882|  22.1k|}
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel17CalculateLocalMtuEv:
  884|  22.1k|uint16_t BrEdrDynamicChannel::CalculateLocalMtu() const {
  885|  22.1k|  const bool request_ertm = ShouldRequestEnhancedRetransmission();
  886|  22.1k|  const auto kDefaultPreferredMtu =
  887|  22.1k|      request_ertm ? kMaxInboundPduPayloadSize : kMaxMTU;
  ------------------
  |  Branch (887:7): [True: 0, False: 22.1k]
  ------------------
  888|  22.1k|  uint16_t mtu = parameters_.max_rx_sdu_size.value_or(kDefaultPreferredMtu);
  889|  22.1k|  if (mtu < kMinACLMTU) {
  ------------------
  |  Branch (889:7): [True: 0, False: 22.1k]
  ------------------
  890|      0|    bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  891|      0|           "l2cap-bredr",
  892|      0|           "Channel %#.4x: preferred MTU channel parameter below minimum "
  893|      0|           "allowed, using minimum "
  894|      0|           "instead (mtu param: %#x, min mtu: %#x)",
  895|      0|           local_cid(),
  896|      0|           mtu,
  897|      0|           kMinACLMTU);
  898|      0|    mtu = kMinACLMTU;
  899|      0|  }
  900|  22.1k|  if (request_ertm && mtu > kMaxInboundPduPayloadSize) {
  ------------------
  |  Branch (900:7): [True: 0, False: 22.1k]
  |  Branch (900:23): [True: 0, False: 0]
  ------------------
  901|      0|    bt_log(DEBUG,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  902|      0|           "l2cap-bredr",
  903|      0|           "Channel %#.4x: preferred MTU channel parameter above MPS; using "
  904|      0|           "MPS instead to avoid "
  905|      0|           "segmentation (mtu param: %#x, max pdu: %#x)",
  906|      0|           local_cid(),
  907|      0|           mtu,
  908|      0|           kMaxInboundPduPayloadSize);
  909|      0|    mtu = kMaxInboundPduPayloadSize;
  910|      0|  }
  911|  22.1k|  return mtu;
  912|  22.1k|}
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel35ShouldRequestEnhancedRetransmissionEv:
  914|  44.2k|bool BrEdrDynamicChannel::ShouldRequestEnhancedRetransmission() const {
  915|  44.2k|  return parameters_.mode &&
  ------------------
  |  Branch (915:10): [True: 0, False: 44.2k]
  ------------------
  916|  44.2k|         *parameters_.mode ==
  ------------------
  |  Branch (916:10): [True: 0, False: 0]
  ------------------
  917|      0|             RetransmissionAndFlowControlMode::kEnhancedRetransmission &&
  918|  44.2k|         peer_supports_ertm_.value_or(false);
  ------------------
  |  Branch (918:10): [True: 0, False: 0]
  ------------------
  919|  44.2k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel27IsWaitingForPeerErtmSupportEv:
  921|  21.5k|bool BrEdrDynamicChannel::IsWaitingForPeerErtmSupport() {
  922|  21.5k|  const auto local_mode =
  923|  21.5k|      parameters_.mode.value_or(RetransmissionAndFlowControlMode::kBasic);
  924|  21.5k|  return !peer_supports_ertm_.has_value() &&
  ------------------
  |  Branch (924:10): [True: 21.3k, False: 210]
  ------------------
  925|  21.5k|         (local_mode != RetransmissionAndFlowControlMode::kBasic);
  ------------------
  |  Branch (925:10): [True: 0, False: 21.3k]
  ------------------
  926|  21.5k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel18TrySendLocalConfigEv:
  928|  11.2k|bool BrEdrDynamicChannel::TrySendLocalConfig() {
  929|  11.2k|  if (state_ & kLocalConfigSent) {
  ------------------
  |  Branch (929:7): [True: 515, False: 10.7k]
  ------------------
  930|    515|    return true;
  931|    515|  }
  932|       |
  933|  10.7k|  PW_CHECK(!IsWaitingForPeerErtmSupport());
  ------------------
  |  |   39|  10.7k|  do {                                                                         \
  |  |   40|  10.7k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 10.7k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  10.7k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  934|       |
  935|  10.7k|  return SendLocalConfig();
  936|  10.7k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel15SendLocalConfigEv:
  938|  10.8k|bool BrEdrDynamicChannel::SendLocalConfig() {
  939|  10.8k|  auto on_config_rsp_timeout = [this, self = weak_self_.GetWeakPtr()] {
  940|  10.8k|    if (self.is_alive()) {
  941|  10.8k|      bt_log(WARN,
  942|  10.8k|             "l2cap-bredr",
  943|  10.8k|             "Channel %#.4x: Timed out waiting for Configuration Response",
  944|  10.8k|             local_cid());
  945|  10.8k|      PassOpenError();
  946|  10.8k|    }
  947|  10.8k|  };
  948|       |
  949|  10.8k|  BrEdrCommandHandler cmd_handler(signaling_channel_,
  950|  10.8k|                                  std::move(on_config_rsp_timeout));
  951|       |
  952|  10.8k|  auto request_config = local_config_;
  953|       |
  954|       |  // Don't send Retransmission & Flow Control option for basic mode
  955|  10.8k|  if (request_config.retransmission_flow_control_option()->mode() ==
  ------------------
  |  Branch (955:7): [True: 10.8k, False: 0]
  ------------------
  956|  10.8k|      RetransmissionAndFlowControlMode::kBasic) {
  957|  10.8k|    request_config.set_retransmission_flow_control_option(std::nullopt);
  958|  10.8k|  }
  959|       |
  960|  10.8k|  if (!request_config.retransmission_flow_control_option()) {
  ------------------
  |  Branch (960:7): [True: 10.8k, False: 0]
  ------------------
  961|  10.8k|    num_basic_config_requests_++;
  962|  10.8k|  }
  963|       |
  964|  10.8k|  if (!cmd_handler.SendConfigurationRequest(
  ------------------
  |  Branch (964:7): [True: 0, False: 10.8k]
  ------------------
  965|  10.8k|          remote_cid(),
  966|  10.8k|          0,
  967|  10.8k|          request_config.Options(),
  968|  10.8k|          [self = weak_self_.GetWeakPtr()](auto& rsp) {
  969|  10.8k|            if (self.is_alive()) {
  970|  10.8k|              return self->OnRxConfigRsp(rsp);
  971|  10.8k|            }
  972|  10.8k|            return ResponseHandlerAction::kCompleteOutboundTransaction;
  973|  10.8k|          })) {
  974|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  975|      0|           "l2cap-bredr",
  976|      0|           "Channel %#.4x: Failed to send Configuration Request",
  977|      0|           local_cid());
  978|      0|    PassOpenError();
  979|      0|    return false;
  980|      0|  }
  981|       |
  982|  10.8k|  bt_log(TRACE,
  ------------------
  |  |  141|  10.8k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  10.8k|  do {                                                                     \
  |  |  |  |   74|  10.8k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  10.8k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  10.8k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  10.8k|  do {                                                    \
  |  |  |  |  |  |   56|  10.8k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  10.8k|           (flags),                                       \
  |  |  |  |  |  |   58|  10.8k|           module,                                        \
  |  |  |  |  |  |   59|  10.8k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  10.8k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  10.8k|           __func__,                                      \
  |  |  |  |  |  |   62|  10.8k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  10.8k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  10.8k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  10.8k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  10.8k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  10.8k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  10.8k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  10.8k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  10.8k|    }                                                                      \
  |  |  |  |   77|  10.8k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  10.8k|         PW_LOG_LEVEL,                             \
  |  |  143|  10.8k|         tag,                                      \
  |  |  144|  10.8k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  10.8k|         __VA_ARGS__);                             \
  |  |  146|  10.8k|  ::bt::internal::CheckFormat(tag)
  ------------------
  983|  10.8k|         "l2cap-bredr",
  984|  10.8k|         "Channel %#.4x: Sent Configuration Request (options: %s)",
  985|  10.8k|         local_cid(),
  986|  10.8k|         bt_str(request_config));
  987|       |
  988|  10.8k|  state_ |= kLocalConfigSent;
  989|  10.8k|  return true;
  990|  10.8k|}
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel19BothConfigsAcceptedEv:
  992|  23.7k|bool BrEdrDynamicChannel::BothConfigsAccepted() const {
  993|  23.7k|  return (state_ & kLocalConfigAccepted) && (state_ & kRemoteConfigAccepted);
  ------------------
  |  Branch (993:10): [True: 2.27k, False: 21.4k]
  |  Branch (993:45): [True: 1.62k, False: 644]
  ------------------
  994|  23.7k|}
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel33AcceptedChannelModesAreConsistentEv:
  996|    814|bool BrEdrDynamicChannel::AcceptedChannelModesAreConsistent() const {
  997|    814|  PW_CHECK(BothConfigsAccepted());
  ------------------
  |  |   39|    814|  do {                                                                         \
  |  |   40|    814|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 814]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    814|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  998|    814|  auto local_mode = local_config_.retransmission_flow_control_option()->mode();
  999|    814|  auto remote_mode =
 1000|    814|      remote_config_.retransmission_flow_control_option()->mode();
 1001|    814|  return local_mode == remote_mode;
 1002|    814|}
_ZNK2bt5l2cap8internal19BrEdrDynamicChannel36CheckForUnacceptableConfigReqOptionsERKNS1_20ChannelConfigurationE:
 1005|  1.19k|    const ChannelConfiguration& config) const {
 1006|       |  // TODO(fxbug.dev/42115983): reject reconfiguring MTU if mode is Enhanced
 1007|       |  // Retransmission or Streaming mode.
 1008|  1.19k|  ChannelConfiguration unacceptable;
 1009|       |
 1010|       |  // Reject MTUs below minimum size
 1011|  1.19k|  if (config.mtu_option()->mtu() < kMinACLMTU) {
  ------------------
  |  Branch (1011:7): [True: 72, False: 1.12k]
  ------------------
 1012|     72|    bt_log(DEBUG,
  ------------------
  |  |  141|     72|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     72|  do {                                                                     \
  |  |  |  |   74|     72|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     72|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     72|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     72|  do {                                                    \
  |  |  |  |  |  |   56|     72|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     72|           (flags),                                       \
  |  |  |  |  |  |   58|     72|           module,                                        \
  |  |  |  |  |  |   59|     72|           __FILE__,                                      \
  |  |  |  |  |  |   60|     72|           __LINE__,                                      \
  |  |  |  |  |  |   61|     72|           __func__,                                      \
  |  |  |  |  |  |   62|     72|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     72|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     72|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     72|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     72|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     72|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     72|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     72|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     72|    }                                                                      \
  |  |  |  |   77|     72|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     72|         PW_LOG_LEVEL,                             \
  |  |  143|     72|         tag,                                      \
  |  |  144|     72|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     72|         __VA_ARGS__);                             \
  |  |  146|     72|  ::bt::internal::CheckFormat(tag)
  ------------------
 1013|     72|           "l2cap",
 1014|     72|           "Channel %#.4x: config request contains MTU below minimum (mtu: "
 1015|     72|           "%hu, min: %hu)",
 1016|     72|           local_cid(),
 1017|     72|           config.mtu_option()->mtu(),
 1018|     72|           kMinACLMTU);
 1019|       |    // Respond back with a proposed MTU value of the required minimum (Core Spec
 1020|       |    // v5.1, Vol 3, Part A, Section 5.1: "It is implementation specific whether
 1021|       |    // the local device continues the configuration process or disconnects the
 1022|       |    // channel.")
 1023|     72|    unacceptable.set_mtu_option(ChannelConfiguration::MtuOption(kMinACLMTU));
 1024|     72|  }
 1025|       |
 1026|  1.19k|  const auto req_mode =
 1027|  1.19k|      config.retransmission_flow_control_option()
  ------------------
  |  Branch (1027:7): [True: 133, False: 1.06k]
  ------------------
 1028|  1.19k|          ? config.retransmission_flow_control_option()->mode()
 1029|  1.19k|          : RetransmissionAndFlowControlMode::kBasic;
 1030|  1.19k|  const auto local_mode =
 1031|  1.19k|      local_config().retransmission_flow_control_option()->mode();
 1032|       |
 1033|  1.19k|  PW_MODIFY_DIAGNOSTICS_PUSH();
 1034|  1.19k|  PW_MODIFY_DIAGNOSTIC(ignored, "-Wswitch-enum");
 1035|  1.19k|  switch (req_mode) {
 1036|  1.14k|    case RetransmissionAndFlowControlMode::kBasic:
  ------------------
  |  Branch (1036:5): [True: 1.14k, False: 56]
  ------------------
 1037|       |      // Local device must accept, as basic mode has highest precedence.
 1038|  1.14k|      if (local_mode ==
  ------------------
  |  Branch (1038:11): [True: 0, False: 1.14k]
  ------------------
 1039|  1.14k|          RetransmissionAndFlowControlMode::kEnhancedRetransmission) {
 1040|      0|        bt_log(DEBUG,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
 1041|      0|               "l2cap-bredr",
 1042|      0|               "Channel %#.4x: accepting peer basic mode configuration option "
 1043|      0|               "when preferred mode "
 1044|      0|               "was ERTM",
 1045|      0|               local_cid());
 1046|      0|      }
 1047|  1.14k|      break;
 1048|     51|    case RetransmissionAndFlowControlMode::kEnhancedRetransmission:
  ------------------
  |  Branch (1048:5): [True: 51, False: 1.14k]
  ------------------
 1049|       |      // Basic mode has highest precedence, so if local mode is basic, reject
 1050|       |      // ERTM and send local mode.
 1051|     51|      if (local_mode == RetransmissionAndFlowControlMode::kBasic) {
  ------------------
  |  Branch (1051:11): [True: 51, False: 0]
  ------------------
 1052|     51|        bt_log(DEBUG,
  ------------------
  |  |  141|     51|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     51|  do {                                                                     \
  |  |  |  |   74|     51|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     51|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     51|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     51|  do {                                                    \
  |  |  |  |  |  |   56|     51|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     51|           (flags),                                       \
  |  |  |  |  |  |   58|     51|           module,                                        \
  |  |  |  |  |  |   59|     51|           __FILE__,                                      \
  |  |  |  |  |  |   60|     51|           __LINE__,                                      \
  |  |  |  |  |  |   61|     51|           __func__,                                      \
  |  |  |  |  |  |   62|     51|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     51|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     51|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     51|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     51|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     51|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     51|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     51|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     51|    }                                                                      \
  |  |  |  |   77|     51|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     51|         PW_LOG_LEVEL,                             \
  |  |  143|     51|         tag,                                      \
  |  |  144|     51|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     51|         __VA_ARGS__);                             \
  |  |  146|     51|  ::bt::internal::CheckFormat(tag)
  ------------------
 1053|     51|               "l2cap-bredr",
 1054|     51|               "Channel %#.4x: rejecting peer ERTM mode configuration option "
 1055|     51|               "because preferred "
 1056|     51|               "mode is basic",
 1057|     51|               local_cid());
 1058|     51|        unacceptable.set_retransmission_flow_control_option(
 1059|     51|            ChannelConfiguration::RetransmissionAndFlowControlOption::
 1060|     51|                MakeBasicMode());
 1061|     51|        break;
 1062|     51|      }
 1063|      0|      unacceptable.set_retransmission_flow_control_option(
 1064|      0|          CheckForUnacceptableErtmOptions(config));
 1065|      0|      break;
 1066|      5|    default:
  ------------------
  |  Branch (1066:5): [True: 5, False: 1.19k]
  ------------------
 1067|      5|      bt_log(DEBUG,
  ------------------
  |  |  141|      5|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      5|  do {                                                                     \
  |  |  |  |   74|      5|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      5|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      5|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      5|  do {                                                    \
  |  |  |  |  |  |   56|      5|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      5|           (flags),                                       \
  |  |  |  |  |  |   58|      5|           module,                                        \
  |  |  |  |  |  |   59|      5|           __FILE__,                                      \
  |  |  |  |  |  |   60|      5|           __LINE__,                                      \
  |  |  |  |  |  |   61|      5|           __func__,                                      \
  |  |  |  |  |  |   62|      5|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      5|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      5|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      5|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      5|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      5|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      5|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      5|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      5|    }                                                                      \
  |  |  |  |   77|      5|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      5|         PW_LOG_LEVEL,                             \
  |  |  143|      5|         tag,                                      \
  |  |  144|      5|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      5|         __VA_ARGS__);                             \
  |  |  146|      5|  ::bt::internal::CheckFormat(tag)
  ------------------
 1068|      5|             "l2cap-bredr",
 1069|      5|             "Channel %#.4x: rejecting unsupported retransmission and flow "
 1070|      5|             "control configuration "
 1071|      5|             "option (mode: %#.2x)",
 1072|      5|             local_cid(),
 1073|      5|             static_cast<uint8_t>(req_mode));
 1074|       |
 1075|       |      // All other modes are lower precedence than what local device supports,
 1076|       |      // so send local mode.
 1077|      5|      if (local_mode ==
  ------------------
  |  Branch (1077:11): [True: 0, False: 5]
  ------------------
 1078|      5|          RetransmissionAndFlowControlMode::kEnhancedRetransmission) {
 1079|       |        // Retransmission & Flow Control fields for ERTM are not negotiable, so
 1080|       |        // do not propose acceptable values per Core Spec v5.0, Vol 3, Part A,
 1081|       |        // Sec 7.1.4.
 1082|      0|        unacceptable.set_retransmission_flow_control_option(
 1083|      0|            ChannelConfiguration::RetransmissionAndFlowControlOption::
 1084|      0|                MakeEnhancedRetransmissionMode(
 1085|      0|                    /*tx_window_size=*/0,
 1086|      0|                    /*max_transmit=*/0,
 1087|      0|                    /*rtx_timeout=*/0,
 1088|      0|                    /*monitor_timeout=*/0,
 1089|      0|                    /*mps=*/0));
 1090|      5|      } else {
 1091|      5|        unacceptable.set_retransmission_flow_control_option(
 1092|      5|            local_config().retransmission_flow_control_option());
 1093|      5|      }
 1094|  1.19k|  }
 1095|  1.19k|  PW_MODIFY_DIAGNOSTICS_POP();
 1096|       |
 1097|  1.19k|  return unacceptable;
 1098|  1.19k|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel45TryRecoverFromUnacceptableParametersConfigRspERKNS1_20ChannelConfigurationE:
 1149|     81|    const ChannelConfiguration& rsp_config) {
 1150|       |  // Check if channel mode was unacceptable.
 1151|     81|  if (rsp_config.retransmission_flow_control_option()) {
  ------------------
  |  Branch (1151:7): [True: 37, False: 44]
  ------------------
 1152|       |    // Check if peer rejected basic mode. Do not disconnect, in case peer will
 1153|       |    // accept resending basic mode (as is the case with PTS test
 1154|       |    // L2CAP/COS/CFD/BV-02-C).
 1155|     37|    if (local_config().retransmission_flow_control_option()->mode() ==
  ------------------
  |  Branch (1155:9): [True: 37, False: 0]
  ------------------
 1156|     37|        RetransmissionAndFlowControlMode::kBasic) {
 1157|     37|      bt_log(WARN,
  ------------------
  |  |  141|     37|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     37|  do {                                                                     \
  |  |  |  |   74|     37|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     37|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     37|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|  do {                                                    \
  |  |  |  |  |  |   56|     37|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     37|           (flags),                                       \
  |  |  |  |  |  |   58|     37|           module,                                        \
  |  |  |  |  |  |   59|     37|           __FILE__,                                      \
  |  |  |  |  |  |   60|     37|           __LINE__,                                      \
  |  |  |  |  |  |   61|     37|           __func__,                                      \
  |  |  |  |  |  |   62|     37|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     37|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     37|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     37|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     37|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     37|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     37|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     37|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     37|    }                                                                      \
  |  |  |  |   77|     37|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     37|         PW_LOG_LEVEL,                             \
  |  |  143|     37|         tag,                                      \
  |  |  144|     37|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     37|         __VA_ARGS__);                             \
  |  |  146|     37|  ::bt::internal::CheckFormat(tag)
  ------------------
 1158|     37|             "l2cap-bredr",
 1159|     37|             "Channel %#.4x: Peer rejected basic mode with unacceptable "
 1160|     37|             "parameters result (rsp mode: %#.2x)",
 1161|     37|             local_cid(),
 1162|     37|             static_cast<uint8_t>(
 1163|     37|                 rsp_config.retransmission_flow_control_option()->mode()));
 1164|     37|    }
 1165|       |
 1166|       |    // Core Spec v5.1, Vol 3, Part A, Sec 5.4:
 1167|       |    // If the mode in the remote device's negative Configuration Response does
 1168|       |    // not match the mode in the remote device's Configuration Request then the
 1169|       |    // local device shall disconnect the channel.
 1170|     37|    if (state_ & kRemoteConfigAccepted) {
  ------------------
  |  Branch (1170:9): [True: 27, False: 10]
  ------------------
 1171|     27|      const auto rsp_mode =
 1172|     27|          rsp_config.retransmission_flow_control_option()->mode();
 1173|     27|      const auto remote_mode =
 1174|     27|          remote_config_.retransmission_flow_control_option()->mode();
 1175|     27|      if (rsp_mode != remote_mode) {
  ------------------
  |  Branch (1175:11): [True: 17, False: 10]
  ------------------
 1176|     17|        bt_log(ERROR,
  ------------------
  |  |  141|     17|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     17|  do {                                                                     \
  |  |  |  |   74|     17|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     17|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     17|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     17|  do {                                                    \
  |  |  |  |  |  |   56|     17|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     17|           (flags),                                       \
  |  |  |  |  |  |   58|     17|           module,                                        \
  |  |  |  |  |  |   59|     17|           __FILE__,                                      \
  |  |  |  |  |  |   60|     17|           __LINE__,                                      \
  |  |  |  |  |  |   61|     17|           __func__,                                      \
  |  |  |  |  |  |   62|     17|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     17|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     17|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     17|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     17|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     17|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     17|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     17|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     17|    }                                                                      \
  |  |  |  |   77|     17|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     17|         PW_LOG_LEVEL,                             \
  |  |  143|     17|         tag,                                      \
  |  |  144|     17|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     17|         __VA_ARGS__);                             \
  |  |  146|     17|  ::bt::internal::CheckFormat(tag)
  ------------------
 1177|     17|               "l2cap-bredr",
 1178|     17|               "Channel %#.4x: Unsuccessful config: mode in unacceptable "
 1179|     17|               "parameters config "
 1180|     17|               "response does not match mode in remote config request (rsp "
 1181|     17|               "mode: %#.2x, req mode: "
 1182|     17|               "%#.2x)",
 1183|     17|               local_cid(),
 1184|     17|               static_cast<uint8_t>(rsp_mode),
 1185|     17|               static_cast<uint8_t>(remote_mode));
 1186|     17|        PassOpenError();
 1187|     17|        return;
 1188|     17|      }
 1189|     27|    }
 1190|       |
 1191|     37|    bt_log(TRACE,
  ------------------
  |  |  141|     20|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     20|  do {                                                                     \
  |  |  |  |   74|     20|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     20|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     20|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     20|  do {                                                    \
  |  |  |  |  |  |   56|     20|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     20|           (flags),                                       \
  |  |  |  |  |  |   58|     20|           module,                                        \
  |  |  |  |  |  |   59|     20|           __FILE__,                                      \
  |  |  |  |  |  |   60|     20|           __LINE__,                                      \
  |  |  |  |  |  |   61|     20|           __func__,                                      \
  |  |  |  |  |  |   62|     20|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     20|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     20|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     20|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     20|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     20|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     20|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     20|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     20|    }                                                                      \
  |  |  |  |   77|     20|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     20|         PW_LOG_LEVEL,                             \
  |  |  143|     20|         tag,                                      \
  |  |  144|     20|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     20|         __VA_ARGS__);                             \
  |  |  146|     20|  ::bt::internal::CheckFormat(tag)
  ------------------
 1192|     20|           "l2cap-bredr",
 1193|     20|           "Channel %#.4x: Attempting to recover from unacceptable parameters "
 1194|     20|           "config response by falling back to basic mode and resending config "
 1195|     20|           "request",
 1196|     20|           local_cid());
 1197|       |
 1198|       |    // Fall back to basic mode and try sending config again up to
 1199|       |    // kMaxNumBasicConfigRequests times
 1200|     20|    peer_supports_ertm_ = false;
 1201|     20|    if (num_basic_config_requests_ == kMaxNumBasicConfigRequests) {
  ------------------
  |  Branch (1201:9): [True: 0, False: 20]
  ------------------
 1202|      0|      bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
 1203|      0|             "l2cap-bredr",
 1204|      0|             "Channel %#.4x: Peer rejected config request. Channel's limit of "
 1205|      0|             "%#.2x basic mode config request attempts has been met",
 1206|      0|             local_cid(),
 1207|      0|             kMaxNumBasicConfigRequests);
 1208|      0|      PassOpenError();
 1209|      0|      return;
 1210|      0|    }
 1211|     20|    UpdateLocalConfigForErtm();
 1212|     20|    std::ignore = SendLocalConfig();
 1213|     20|    return;
 1214|     20|  }
 1215|       |
 1216|       |  // Other unacceptable parameters cannot be recovered from.
 1217|     81|  bt_log(WARN,
  ------------------
  |  |  141|     44|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     44|  do {                                                                     \
  |  |  |  |   74|     44|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     44|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     44|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     44|  do {                                                    \
  |  |  |  |  |  |   56|     44|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     44|           (flags),                                       \
  |  |  |  |  |  |   58|     44|           module,                                        \
  |  |  |  |  |  |   59|     44|           __FILE__,                                      \
  |  |  |  |  |  |   60|     44|           __LINE__,                                      \
  |  |  |  |  |  |   61|     44|           __func__,                                      \
  |  |  |  |  |  |   62|     44|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     44|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     44|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     44|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     44|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     44|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     44|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     44|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     44|    }                                                                      \
  |  |  |  |   77|     44|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     44|         PW_LOG_LEVEL,                             \
  |  |  143|     44|         tag,                                      \
  |  |  144|     44|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     44|         __VA_ARGS__);                             \
  |  |  146|     44|  ::bt::internal::CheckFormat(tag)
  ------------------
 1218|     44|         "l2cap-bredr",
 1219|     44|         "Channel %#.4x: Unsuccessful config: could not recover from "
 1220|     44|         "unacceptable parameters config "
 1221|     44|         "response",
 1222|     44|         local_cid());
 1223|     44|  PassOpenError();
 1224|     44|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel13OnRxConfigRspERKNS1_19BrEdrCommandHandler21ConfigurationResponseE:
 1355|  2.18k|    const BrEdrCommandHandler::ConfigurationResponse& rsp) {
 1356|  2.18k|  if (rsp.status() == BrEdrCommandHandler::Status::kReject) {
  ------------------
  |  Branch (1356:7): [True: 782, False: 1.40k]
  ------------------
 1357|    782|    bt_log(ERROR,
  ------------------
  |  |  141|    782|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    782|  do {                                                                     \
  |  |  |  |   74|    782|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    782|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    782|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    782|  do {                                                    \
  |  |  |  |  |  |   56|    782|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    782|           (flags),                                       \
  |  |  |  |  |  |   58|    782|           module,                                        \
  |  |  |  |  |  |   59|    782|           __FILE__,                                      \
  |  |  |  |  |  |   60|    782|           __LINE__,                                      \
  |  |  |  |  |  |   61|    782|           __func__,                                      \
  |  |  |  |  |  |   62|    782|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    782|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    782|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    782|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    782|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    782|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    782|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    782|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    782|    }                                                                      \
  |  |  |  |   77|    782|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    782|         PW_LOG_LEVEL,                             \
  |  |  143|    782|         tag,                                      \
  |  |  144|    782|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    782|         __VA_ARGS__);                             \
  |  |  146|    782|  ::bt::internal::CheckFormat(tag)
  ------------------
 1358|    782|           "l2cap-bredr",
 1359|    782|           "Channel %#.4x: Configuration Request rejected, reason %#.4hx, "
 1360|    782|           "disconnecting",
 1361|    782|           local_cid(),
 1362|    782|           static_cast<unsigned short>(rsp.reject_reason()));
 1363|       |
 1364|       |    // Configuration Request being rejected is fatal because the remote is not
 1365|       |    // trying to negotiate parameters (any more).
 1366|    782|    PassOpenError();
 1367|    782|    return ResponseHandlerAction::kCompleteOutboundTransaction;
 1368|    782|  }
 1369|       |
 1370|       |  // Pending responses may contain return values and adjustments to
 1371|       |  // non-negotiated values.
 1372|  1.40k|  if (rsp.result() == ConfigurationResult::kPending) {
  ------------------
  |  Branch (1372:7): [True: 721, False: 679]
  ------------------
 1373|    721|    bt_log(TRACE,
  ------------------
  |  |  141|    721|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    721|  do {                                                                     \
  |  |  |  |   74|    721|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    721|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    721|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    721|  do {                                                    \
  |  |  |  |  |  |   56|    721|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    721|           (flags),                                       \
  |  |  |  |  |  |   58|    721|           module,                                        \
  |  |  |  |  |  |   59|    721|           __FILE__,                                      \
  |  |  |  |  |  |   60|    721|           __LINE__,                                      \
  |  |  |  |  |  |   61|    721|           __func__,                                      \
  |  |  |  |  |  |   62|    721|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    721|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    721|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    721|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    721|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    721|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    721|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    721|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    721|    }                                                                      \
  |  |  |  |   77|    721|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    721|         PW_LOG_LEVEL,                             \
  |  |  143|    721|         tag,                                      \
  |  |  144|    721|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    721|         __VA_ARGS__);                             \
  |  |  146|    721|  ::bt::internal::CheckFormat(tag)
  ------------------
 1374|    721|           "l2cap-bredr",
 1375|    721|           "Channel %#.4x: remote pending config (options: %s)",
 1376|    721|           local_cid(),
 1377|    721|           bt_str(rsp.config()));
 1378|       |
 1379|    721|    if (rsp.config().mtu_option()) {
  ------------------
  |  Branch (1379:9): [True: 19, False: 702]
  ------------------
 1380|     19|      local_config_.set_mtu_option(rsp.config().mtu_option());
 1381|     19|    }
 1382|       |
 1383|    721|    return ResponseHandlerAction::kExpectAdditionalResponse;
 1384|    721|  }
 1385|       |
 1386|    679|  if (rsp.result() == ConfigurationResult::kUnacceptableParameters) {
  ------------------
  |  Branch (1386:7): [True: 81, False: 598]
  ------------------
 1387|     81|    bt_log(DEBUG,
  ------------------
  |  |  141|     81|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     81|  do {                                                                     \
  |  |  |  |   74|     81|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     81|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     81|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     81|  do {                                                    \
  |  |  |  |  |  |   56|     81|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     81|           (flags),                                       \
  |  |  |  |  |  |   58|     81|           module,                                        \
  |  |  |  |  |  |   59|     81|           __FILE__,                                      \
  |  |  |  |  |  |   60|     81|           __LINE__,                                      \
  |  |  |  |  |  |   61|     81|           __func__,                                      \
  |  |  |  |  |  |   62|     81|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     81|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     81|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     81|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     81|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     81|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     81|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     81|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     81|    }                                                                      \
  |  |  |  |   77|     81|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     81|         PW_LOG_LEVEL,                             \
  |  |  143|     81|         tag,                                      \
  |  |  144|     81|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     81|         __VA_ARGS__);                             \
  |  |  146|     81|  ::bt::internal::CheckFormat(tag)
  ------------------
 1388|     81|           "l2cap-bredr",
 1389|     81|           "Channel %#.4x: Received unacceptable parameters config response "
 1390|     81|           "(options: %s)",
 1391|     81|           local_cid(),
 1392|     81|           bt_str(rsp.config()));
 1393|     81|    TryRecoverFromUnacceptableParametersConfigRsp(rsp.config());
 1394|     81|    return ResponseHandlerAction::kCompleteOutboundTransaction;
 1395|     81|  }
 1396|       |
 1397|    598|  if (rsp.result() != ConfigurationResult::kSuccess) {
  ------------------
  |  Branch (1397:7): [True: 162, False: 436]
  ------------------
 1398|    162|    bt_log(ERROR,
  ------------------
  |  |  141|    162|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    162|  do {                                                                     \
  |  |  |  |   74|    162|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    162|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    162|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    162|  do {                                                    \
  |  |  |  |  |  |   56|    162|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    162|           (flags),                                       \
  |  |  |  |  |  |   58|    162|           module,                                        \
  |  |  |  |  |  |   59|    162|           __FILE__,                                      \
  |  |  |  |  |  |   60|    162|           __LINE__,                                      \
  |  |  |  |  |  |   61|    162|           __func__,                                      \
  |  |  |  |  |  |   62|    162|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    162|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    162|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    162|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    162|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    162|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    162|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    162|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    162|    }                                                                      \
  |  |  |  |   77|    162|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    162|         PW_LOG_LEVEL,                             \
  |  |  143|    162|         tag,                                      \
  |  |  144|    162|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    162|         __VA_ARGS__);                             \
  |  |  146|    162|  ::bt::internal::CheckFormat(tag)
  ------------------
 1399|    162|           "l2cap-bredr",
 1400|    162|           "Channel %#.4x: unsuccessful config (result: %#.4hx, options: %s)",
 1401|    162|           local_cid(),
 1402|    162|           static_cast<unsigned short>(rsp.result()),
 1403|    162|           bt_str(rsp.config()));
 1404|    162|    PassOpenError();
 1405|    162|    return ResponseHandlerAction::kCompleteOutboundTransaction;
 1406|    162|  }
 1407|       |
 1408|    436|  if (rsp.local_cid() != local_cid()) {
  ------------------
  |  Branch (1408:7): [True: 197, False: 239]
  ------------------
 1409|    197|    bt_log(ERROR,
  ------------------
  |  |  141|    197|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    197|  do {                                                                     \
  |  |  |  |   74|    197|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    197|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    197|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    197|  do {                                                    \
  |  |  |  |  |  |   56|    197|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    197|           (flags),                                       \
  |  |  |  |  |  |   58|    197|           module,                                        \
  |  |  |  |  |  |   59|    197|           __FILE__,                                      \
  |  |  |  |  |  |   60|    197|           __LINE__,                                      \
  |  |  |  |  |  |   61|    197|           __func__,                                      \
  |  |  |  |  |  |   62|    197|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    197|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    197|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    197|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    197|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    197|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    197|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    197|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    197|    }                                                                      \
  |  |  |  |   77|    197|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    197|         PW_LOG_LEVEL,                             \
  |  |  143|    197|         tag,                                      \
  |  |  144|    197|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    197|         __VA_ARGS__);                             \
  |  |  146|    197|  ::bt::internal::CheckFormat(tag)
  ------------------
 1410|    197|           "l2cap-bredr",
 1411|    197|           "Channel %#.4x: dropping Configuration Response for %#.4x",
 1412|    197|           local_cid(),
 1413|    197|           rsp.local_cid());
 1414|    197|    PassOpenError();
 1415|    197|    return ResponseHandlerAction::kCompleteOutboundTransaction;
 1416|    197|  }
 1417|       |
 1418|    239|  state_ |= kLocalConfigAccepted;
 1419|       |
 1420|    239|  bt_log(TRACE,
  ------------------
  |  |  141|    239|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    239|  do {                                                                     \
  |  |  |  |   74|    239|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    239|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    239|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    239|  do {                                                    \
  |  |  |  |  |  |   56|    239|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    239|           (flags),                                       \
  |  |  |  |  |  |   58|    239|           module,                                        \
  |  |  |  |  |  |   59|    239|           __FILE__,                                      \
  |  |  |  |  |  |   60|    239|           __LINE__,                                      \
  |  |  |  |  |  |   61|    239|           __func__,                                      \
  |  |  |  |  |  |   62|    239|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    239|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    239|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    239|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    239|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    239|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    239|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    239|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    239|    }                                                                      \
  |  |  |  |   77|    239|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    239|         PW_LOG_LEVEL,                             \
  |  |  143|    239|         tag,                                      \
  |  |  144|    239|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    239|         __VA_ARGS__);                             \
  |  |  146|    239|  ::bt::internal::CheckFormat(tag)
  ------------------
 1421|    239|         "l2cap-bredr",
 1422|    239|         "Channel %#.4x: Got Configuration Response (options: %s)",
 1423|    239|         local_cid(),
 1424|    239|         bt_str(rsp.config()));
 1425|       |
 1426|    239|  if (rsp.config().mtu_option()) {
  ------------------
  |  Branch (1426:7): [True: 53, False: 186]
  ------------------
 1427|     53|    local_config_.set_mtu_option(rsp.config().mtu_option());
 1428|     53|  }
 1429|       |
 1430|    239|  if (BothConfigsAccepted() && !AcceptedChannelModesAreConsistent()) {
  ------------------
  |  Branch (1430:7): [True: 32, False: 207]
  |  Branch (1430:32): [True: 0, False: 32]
  ------------------
 1431|      0|    bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
 1432|      0|           "l2cap-bredr",
 1433|      0|           "Channel %#.4x: inconsistent channel mode negotiation (local mode: "
 1434|      0|           "%#.2x, remote "
 1435|      0|           "mode: %#.2x); falling back to Basic Mode",
 1436|      0|           local_cid(),
 1437|      0|           static_cast<uint8_t>(
 1438|      0|               local_config().retransmission_flow_control_option()->mode()),
 1439|      0|           static_cast<uint8_t>(
 1440|      0|               remote_config().retransmission_flow_control_option()->mode()));
 1441|       |
 1442|       |    // See spec justification in OnRxConfigReq.
 1443|      0|    local_config_.set_retransmission_flow_control_option(
 1444|      0|        ChannelConfiguration::RetransmissionAndFlowControlOption::
 1445|      0|            MakeBasicMode());
 1446|      0|    remote_config_.set_retransmission_flow_control_option(
 1447|      0|        ChannelConfiguration::RetransmissionAndFlowControlOption::
 1448|      0|            MakeBasicMode());
 1449|      0|    PassOpenResult();
 1450|      0|    return ResponseHandlerAction::kCompleteOutboundTransaction;
 1451|      0|  }
 1452|       |
 1453|    239|  if (IsOpen()) {
  ------------------
  |  Branch (1453:7): [True: 29, False: 210]
  ------------------
 1454|     29|    set_opened();
 1455|     29|    PassOpenResult();
 1456|     29|  }
 1457|       |
 1458|    239|  return ResponseHandlerAction::kCompleteOutboundTransaction;
 1459|    239|}
_ZN2bt5l2cap8internal19BrEdrDynamicChannel32SetEnhancedRetransmissionSupportEb:
 1461|    515|bool BrEdrDynamicChannel::SetEnhancedRetransmissionSupport(bool supported) {
 1462|    515|  peer_supports_ertm_ = supported;
 1463|       |
 1464|    515|  UpdateLocalConfigForErtm();
 1465|       |
 1466|       |  // Don't send local config before connection response.
 1467|    515|  if (state_ & kConnResponded) {
  ------------------
  |  Branch (1467:7): [True: 515, False: 0]
  ------------------
 1468|    515|    return TrySendLocalConfig();
 1469|    515|  }
 1470|      0|  return true;
 1471|    515|}
bredr_dynamic_channel.cc:_ZZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry27OnRxExtendedFeaturesInfoRspERKNS1_19BrEdrCommandHandler19InformationResponseEENK3$_0clEPNS1_14DynamicChannelE:
  247|    169|    ForEach([](DynamicChannel* chan) {
  248|    169|      std::ignore = static_cast<BrEdrDynamicChannel*>(chan)
  249|    169|                        ->SetEnhancedRetransmissionSupport(false);
  250|    169|    });
bredr_dynamic_channel.cc:_ZZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry27OnRxExtendedFeaturesInfoRspERKNS1_19BrEdrCommandHandler19InformationResponseEENK3$_1clEPNS1_14DynamicChannelE:
  285|    259|  ForEach([ertm_support](DynamicChannel* chan) {
  286|    259|    std::ignore = static_cast<BrEdrDynamicChannel*>(chan)
  287|    259|                      ->SetEnhancedRetransmissionSupport(ertm_support);
  288|    259|  });
bredr_dynamic_channel.cc:_ZZN2bt5l2cap8internal27BrEdrDynamicChannelRegistry23SendInformationRequestsEvENK3$_0clIKNS1_19BrEdrCommandHandler19InformationResponseEEEDaRT_:
  298|    644|  auto on_rx_info_rsp = [self = GetWeakPtr(), this](auto& rsp) {
  299|    644|    if (self.is_alive()) {
  ------------------
  |  Branch (299:9): [True: 644, False: 0]
  ------------------
  300|    644|      OnRxExtendedFeaturesInfoRsp(rsp);
  301|    644|    }
  302|    644|  };
bredr_dynamic_channel.cc:_ZZN2bt5l2cap8internal19BrEdrDynamicChannel10DisconnectEN3fit13callback_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEEEN3$_1clERKNS1_14CommandHandler21DisconnectionResponseE:
  426|    243|          const BrEdrCommandHandler::DisconnectionResponse& rsp) mutable {
  427|    243|        if (rsp.local_cid() != local_cid || rsp.remote_cid() != remote_cid) {
  ------------------
  |  Branch (427:13): [True: 188, False: 55]
  |  Branch (427:45): [True: 54, False: 1]
  ------------------
  428|    242|          bt_log(WARN,
  ------------------
  |  |  141|    242|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    242|  do {                                                                     \
  |  |  |  |   74|    242|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    242|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    242|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    242|  do {                                                    \
  |  |  |  |  |  |   56|    242|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    242|           (flags),                                       \
  |  |  |  |  |  |   58|    242|           module,                                        \
  |  |  |  |  |  |   59|    242|           __FILE__,                                      \
  |  |  |  |  |  |   60|    242|           __LINE__,                                      \
  |  |  |  |  |  |   61|    242|           __func__,                                      \
  |  |  |  |  |  |   62|    242|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    242|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    242|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    242|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    242|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    242|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    242|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    242|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    242|    }                                                                      \
  |  |  |  |   77|    242|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    242|         PW_LOG_LEVEL,                             \
  |  |  143|    242|         tag,                                      \
  |  |  144|    242|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    242|         __VA_ARGS__);                             \
  |  |  146|    242|  ::bt::internal::CheckFormat(tag)
  ------------------
  429|    242|                 "l2cap-bredr",
  430|    242|                 "Channel %#.4x: Got Disconnection Response with ID %#.4x/"
  431|    242|                 "remote ID %#.4x on channel with remote ID %#.4x",
  432|    242|                 local_cid,
  433|    242|                 rsp.local_cid(),
  434|    242|                 rsp.remote_cid(),
  435|    242|                 remote_cid);
  436|    242|        } else {
  437|      1|          bt_log(TRACE,
  ------------------
  |  |  141|      1|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      1|  do {                                                                     \
  |  |  |  |   74|      1|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      1|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      1|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      1|  do {                                                    \
  |  |  |  |  |  |   56|      1|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      1|           (flags),                                       \
  |  |  |  |  |  |   58|      1|           module,                                        \
  |  |  |  |  |  |   59|      1|           __FILE__,                                      \
  |  |  |  |  |  |   60|      1|           __LINE__,                                      \
  |  |  |  |  |  |   61|      1|           __func__,                                      \
  |  |  |  |  |  |   62|      1|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      1|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      1|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      1|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      1|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      1|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      1|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      1|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      1|    }                                                                      \
  |  |  |  |   77|      1|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      1|         PW_LOG_LEVEL,                             \
  |  |  143|      1|         tag,                                      \
  |  |  144|      1|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      1|         __VA_ARGS__);                             \
  |  |  146|      1|  ::bt::internal::CheckFormat(tag)
  ------------------
  438|      1|                 "l2cap-bredr",
  439|      1|                 "Channel %#.4x: Got Disconnection Response",
  440|      1|                 local_cid);
  441|      1|        }
  442|       |
  443|    243|        if (self.is_alive()) {
  ------------------
  |  Branch (443:13): [True: 243, False: 0]
  ------------------
  444|    243|          done_cb_shared();
  445|    243|        }
  446|    243|      };
bredr_dynamic_channel.cc:_ZZN2bt5l2cap8internal19BrEdrDynamicChannel15SendLocalConfigEvENK3$_1clIKNS1_19BrEdrCommandHandler21ConfigurationResponseEEEDaRT_:
  968|  2.20k|          [self = weak_self_.GetWeakPtr()](auto& rsp) {
  969|  2.20k|            if (self.is_alive()) {
  ------------------
  |  Branch (969:17): [True: 2.18k, False: 22]
  ------------------
  970|  2.18k|              return self->OnRxConfigRsp(rsp);
  971|  2.18k|            }
  972|     22|            return ResponseHandlerAction::kCompleteOutboundTransaction;
  973|  2.20k|          })) {

_ZN2bt5l2cap8internal21BrEdrSignalingChannelC2E7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS4_EEN2pw9bluetooth6emboss14ConnectionRoleERNS8_5async10DispatcherERNS8_18bluetooth_sapphire13LeaseProviderE:
   29|   142k|    : SignalingChannel(std::move(chan), role, dispatcher, wake_lease_provider) {
   30|   142k|  set_mtu(kDefaultMTU);
   31|       |
   32|       |  // Add default handler for incoming Echo Request commands.
   33|   142k|  ServeRequest(kEchoRequest,
   34|   142k|               [](const ByteBuffer& req_payload, Responder* responder) {
   35|   142k|                 responder->Send(req_payload);
   36|   142k|               });
   37|   142k|}
_ZN2bt5l2cap8internal21BrEdrSignalingChannel12DecodeRxUnitENSt3__110unique_ptrINS_10ByteBufferENS3_14default_deleteIS5_EEEERKN3fit13function_implILm16ELb0EFvRKNS_10PacketViewINS0_13CommandHeaderEEEENS3_9allocatorISt4byteEEEE:
   55|  44.3k|                                         const SignalingPacketHandler& cb) {
   56|       |  // "Multiple commands may be sent in a single C-frame over Fixed Channel CID
   57|       |  // 0x0001 (ACL-U) (v5.0, Vol 3, Part A, Section 4)"
   58|  44.3k|  PW_DCHECK(sdu);
  ------------------
  |  |   51|  44.3k|  do {                            \
  |  |   52|  44.3k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  44.3k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  44.3k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  44.3k|  do {                                                                         \
  |  |  |  |   40|  44.3k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 44.3k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  44.3k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  44.3k|    }                             \
  |  |   55|  44.3k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   59|  44.3k|  if (sdu->size() < sizeof(CommandHeader)) {
  ------------------
  |  Branch (59:7): [True: 798, False: 43.5k]
  ------------------
   60|    798|    bt_log(DEBUG, "l2cap-bredr", "sig: dropped malformed ACL signaling packet");
  ------------------
  |  |  141|    798|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    798|  do {                                                                     \
  |  |  |  |   74|    798|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    798|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    798|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    798|  do {                                                    \
  |  |  |  |  |  |   56|    798|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    798|           (flags),                                       \
  |  |  |  |  |  |   58|    798|           module,                                        \
  |  |  |  |  |  |   59|    798|           __FILE__,                                      \
  |  |  |  |  |  |   60|    798|           __LINE__,                                      \
  |  |  |  |  |  |   61|    798|           __func__,                                      \
  |  |  |  |  |  |   62|    798|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|    798|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    798|    }                                                                      \
  |  |  |  |   77|    798|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    798|         PW_LOG_LEVEL,                             \
  |  |  143|    798|         tag,                                      \
  |  |  144|    798|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    798|         __VA_ARGS__);                             \
  |  |  146|    798|  ::bt::internal::CheckFormat(tag)
  ------------------
   61|    798|    return;
   62|    798|  }
   63|       |
   64|  43.5k|  size_t sdu_offset = 0;
   65|   142k|  while (sdu_offset + sizeof(CommandHeader) <= sdu->size()) {
  ------------------
  |  Branch (65:10): [True: 117k, False: 25.1k]
  ------------------
   66|   117k|    const auto header_data = sdu->view(sdu_offset, sizeof(CommandHeader));
   67|   117k|    SignalingPacket packet(&header_data);
   68|       |
   69|   117k|    uint16_t expected_payload_length = pw::bytes::ConvertOrderFrom(
   70|   117k|        cpp20::endian::little, packet.header().length);
   71|   117k|    size_t remaining_sdu_length =
   72|   117k|        sdu->size() - sdu_offset - sizeof(CommandHeader);
   73|   117k|    if (remaining_sdu_length < expected_payload_length) {
  ------------------
  |  Branch (73:9): [True: 18.4k, False: 99.0k]
  ------------------
   74|  18.4k|      bt_log(DEBUG,
  ------------------
  |  |  141|  18.4k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  18.4k|  do {                                                                     \
  |  |  |  |   74|  18.4k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  18.4k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  18.4k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  18.4k|  do {                                                    \
  |  |  |  |  |  |   56|  18.4k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  18.4k|           (flags),                                       \
  |  |  |  |  |  |   58|  18.4k|           module,                                        \
  |  |  |  |  |  |   59|  18.4k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  18.4k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  18.4k|           __func__,                                      \
  |  |  |  |  |  |   62|  18.4k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  18.4k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  18.4k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  18.4k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  18.4k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  18.4k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  18.4k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  18.4k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  18.4k|    }                                                                      \
  |  |  |  |   77|  18.4k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  18.4k|         PW_LOG_LEVEL,                             \
  |  |  143|  18.4k|         tag,                                      \
  |  |  144|  18.4k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  18.4k|         __VA_ARGS__);                             \
  |  |  146|  18.4k|  ::bt::internal::CheckFormat(tag)
  ------------------
   75|  18.4k|             "l2cap-bredr",
   76|  18.4k|             "sig: expected more bytes (%zu < %u); drop",
   77|  18.4k|             remaining_sdu_length,
   78|  18.4k|             expected_payload_length);
   79|  18.4k|      SendCommandReject(
   80|  18.4k|          packet.header().id, RejectReason::kNotUnderstood, BufferView());
   81|  18.4k|      return;
   82|  18.4k|    }
   83|       |
   84|  99.0k|    const auto packet_data =
   85|  99.0k|        sdu->view(sdu_offset, sizeof(CommandHeader) + expected_payload_length);
   86|  99.0k|    cb(SignalingPacket(&packet_data, expected_payload_length));
   87|       |
   88|  99.0k|    sdu_offset += packet_data.size();
   89|  99.0k|  }
   90|       |
   91|  25.1k|  if (sdu_offset != sdu->size()) {
  ------------------
  |  Branch (91:7): [True: 5.51k, False: 19.5k]
  ------------------
   92|  5.51k|    bt_log(DEBUG,
  ------------------
  |  |  141|  5.51k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  5.51k|  do {                                                                     \
  |  |  |  |   74|  5.51k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  5.51k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  5.51k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  5.51k|  do {                                                    \
  |  |  |  |  |  |   56|  5.51k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  5.51k|           (flags),                                       \
  |  |  |  |  |  |   58|  5.51k|           module,                                        \
  |  |  |  |  |  |   59|  5.51k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  5.51k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  5.51k|           __func__,                                      \
  |  |  |  |  |  |   62|  5.51k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  5.51k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  5.51k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  5.51k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  5.51k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  5.51k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  5.51k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  5.51k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  5.51k|    }                                                                      \
  |  |  |  |   77|  5.51k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  5.51k|         PW_LOG_LEVEL,                             \
  |  |  143|  5.51k|         tag,                                      \
  |  |  144|  5.51k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  5.51k|         __VA_ARGS__);                             \
  |  |  146|  5.51k|  ::bt::internal::CheckFormat(tag)
  ------------------
   93|  5.51k|           "l2cap-bredr",
   94|  5.51k|           "sig: incomplete packet header "
   95|  5.51k|           "(expected: %zu, left: %zu)",
   96|  5.51k|           sizeof(CommandHeader),
   97|  5.51k|           sdu->size() - sdu_offset);
   98|  5.51k|  }
   99|  25.1k|}
_ZNK2bt5l2cap8internal21BrEdrSignalingChannel19IsSupportedResponseEh:
  101|  1.10M|bool BrEdrSignalingChannel::IsSupportedResponse(CommandCode code) const {
  102|  1.10M|  switch (code) {
  ------------------
  |  Branch (102:11): [True: 796k, False: 304k]
  ------------------
  103|  2.34k|    case kCommandRejectCode:
  ------------------
  |  Branch (103:5): [True: 2.34k, False: 1.09M]
  ------------------
  104|  2.42k|    case kConnectionResponse:
  ------------------
  |  Branch (104:5): [True: 76, False: 1.10M]
  ------------------
  105|  16.1k|    case kConfigurationResponse:
  ------------------
  |  Branch (105:5): [True: 13.6k, False: 1.08M]
  ------------------
  106|  17.4k|    case kDisconnectionResponse:
  ------------------
  |  Branch (106:5): [True: 1.33k, False: 1.10M]
  ------------------
  107|  17.4k|    case kEchoResponse:
  ------------------
  |  Branch (107:5): [True: 37, False: 1.10M]
  ------------------
  108|   304k|    case kInformationResponse:
  ------------------
  |  Branch (108:5): [True: 287k, False: 814k]
  ------------------
  109|   304k|      return true;
  110|  1.10M|  }
  111|       |
  112|       |  // Other response-type commands are for AMP/LE and are not supported.
  113|   796k|  return false;
  114|  1.10M|}
bredr_signaling_channel.cc:_ZZN2bt5l2cap8internal21BrEdrSignalingChannelC1E7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS4_EEN2pw9bluetooth6emboss14ConnectionRoleERNS8_5async10DispatcherERNS8_18bluetooth_sapphire13LeaseProviderEENK3$_0clERKNS_10ByteBufferEPNS1_25SignalingChannelInterface9ResponderE:
   34|    259|               [](const ByteBuffer& req_payload, Responder* responder) {
   35|    259|                 responder->Send(req_payload);
   36|    259|               });

_ZN2bt5l2cap7ChannelC2EttNS_8LinkTypeEtNS0_11ChannelInfoEt:
   47|   143k|    : WeakSelf(this),
   48|   143k|      id_(id),
   49|   143k|      remote_id_(remote_id),
   50|   143k|      link_type_(link_type),
   51|   143k|      link_handle_(link_handle),
   52|   143k|      info_(info),
   53|   143k|      max_tx_queued_(max_tx_queued),
   54|   143k|      requested_acl_priority_(AclPriority::kNormal) {
   55|   143k|  PW_DCHECK(id_);
  ------------------
  |  |   51|   143k|  do {                            \
  |  |   52|   143k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   143k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   143k|  do {                                                                         \
  |  |  |  |   40|   143k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 143k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   143k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   143k|    }                             \
  |  |   55|   143k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   56|   143k|  PW_DCHECK(link_type_ == bt::LinkType::kLE ||
  ------------------
  |  |   51|   143k|  do {                            \
  |  |   52|   143k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   143k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   143k|  do {                                                                         \
  |  |  |  |   40|   286k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [True: 0, False: 143k]
  |  |  |  |  |  Branch (40:11): [True: 143k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   143k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   143k|    }                             \
  |  |   55|   143k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   57|   143k|            link_type_ == bt::LinkType::kACL);
   58|   143k|}
_ZN2bt5l2cap8internal11ChannelImpl18CreateFixedChannelERN2pw5async10DispatcherEt7WeakPtrINS1_11LogicalLinkE18DynamicWeakManagerIS8_EES7_INS_3hci14CommandChannelES9_ISD_EEtRNS0_18A2dpOffloadManagerERNS3_18bluetooth_sapphire13LeaseProviderEt:
   79|   142k|    uint16_t max_tx_queued) {
   80|       |  // A fixed channel's endpoints have the same local and remote identifiers.
   81|       |  // Setting the ChannelInfo MTU to kMaxMTU effectively cancels any L2CAP-level
   82|       |  // MTU enforcement for services which operate over fixed channels. Such
   83|       |  // services often define minimum MTU values in their specification, so they
   84|       |  // are required to respect these MTUs internally by:
   85|       |  //   1.) never sending packets larger than their spec-defined MTU.
   86|       |  //   2.) handling inbound PDUs which are larger than their spec-defined MTU
   87|       |  //   appropriately.
   88|   142k|  return std::unique_ptr<ChannelImpl>(
   89|   142k|      new ChannelImpl(dispatcher,
   90|   142k|                      id,
   91|   142k|                      id,
   92|   142k|                      link,
   93|   142k|                      ChannelInfo::MakeBasicMode(kMaxMTU, kMaxMTU),
   94|   142k|                      std::move(cmd_channel),
   95|   142k|                      max_acl_payload_size,
   96|   142k|                      a2dp_offload_manager,
   97|   142k|                      wake_lease_provider,
   98|   142k|                      max_tx_queued));
   99|   142k|}
_ZN2bt5l2cap8internal11ChannelImpl20CreateDynamicChannelERN2pw5async10DispatcherEtt7WeakPtrINS1_11LogicalLinkE18DynamicWeakManagerIS8_EENS0_11ChannelInfoES7_INS_3hci14CommandChannelES9_ISE_EEtRNS0_18A2dpOffloadManagerERNS3_18bluetooth_sapphire13LeaseProviderEt:
  111|    180|    uint16_t max_tx_queued) {
  112|    180|  return std::unique_ptr<ChannelImpl>(new ChannelImpl(dispatcher,
  113|    180|                                                      id,
  114|    180|                                                      peer_id,
  115|    180|                                                      link,
  116|    180|                                                      info,
  117|    180|                                                      std::move(cmd_channel),
  118|    180|                                                      max_acl_payload_size,
  119|    180|                                                      a2dp_offload_manager,
  120|    180|                                                      wake_lease_provider,
  121|    180|                                                      max_tx_queued));
  122|    180|}
_ZN2bt5l2cap8internal11ChannelImplC2ERN2pw5async10DispatcherEtt7WeakPtrINS1_11LogicalLinkE18DynamicWeakManagerIS8_EENS0_11ChannelInfoES7_INS_3hci14CommandChannelES9_ISE_EEtRNS0_18A2dpOffloadManagerERNS3_18bluetooth_sapphire13LeaseProviderEt:
  135|   143k|    : Channel(id, remote_id, link->type(), link->handle(), info, max_tx_queued),
  136|   143k|      pw_dispatcher_(dispatcher),
  137|   143k|      active_(false),
  138|   143k|      link_(link),
  139|   143k|      cmd_channel_(std::move(cmd_channel)),
  140|   143k|      fragmenter_(link->handle(), max_acl_payload_size),
  141|   143k|      wake_lease_provider_(wake_lease_provider),
  142|   143k|      a2dp_offload_manager_(a2dp_offload_manager),
  143|   143k|      weak_self_(this) {
  144|   143k|  PW_CHECK(link_.is_alive());
  ------------------
  |  |   39|   143k|  do {                                                                         \
  |  |   40|   143k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 143k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   143k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  145|   143k|  PW_CHECK(
  ------------------
  |  |   39|   143k|  do {                                                                         \
  |  |   40|   286k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:11): [True: 143k, False: 0]
  |  |  |  Branch (40:11): [True: 0, False: 0]
  |  |  |  Branch (40:11): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   143k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  146|   143k|      info_.mode == RetransmissionAndFlowControlMode::kBasic ||
  147|   143k|          info_.mode ==
  148|   143k|              RetransmissionAndFlowControlMode::kEnhancedRetransmission ||
  149|   143k|          info.mode == CreditBasedFlowControlMode::kLeCreditBasedFlowControl,
  150|   143k|      "Channel constructed with unsupported mode: %s\n",
  151|   143k|      AnyChannelModeToString(info_.mode).c_str());
  152|       |
  153|   143k|  auto connection_failure_cb = [link] {
  154|   143k|    if (link.is_alive()) {
  155|       |      // |link| is expected to ignore this call if it has been closed.
  156|   143k|      link->SignalError();
  157|   143k|    }
  158|   143k|  };
  159|       |
  160|   143k|  if (info_.mode == RetransmissionAndFlowControlMode::kBasic) {
  ------------------
  |  Branch (160:7): [True: 143k, False: 0]
  ------------------
  161|   143k|    rx_engine_ = std::make_unique<BasicModeRxEngine>();
  162|   143k|    tx_engine_ =
  163|   143k|        std::make_unique<BasicModeTxEngine>(id, max_tx_sdu_size(), *this);
  164|   143k|  } else if (std::holds_alternative<CreditBasedFlowControlMode>(info_.mode)) {
  ------------------
  |  Branch (164:14): [True: 0, False: 0]
  ------------------
  165|      0|    PW_CHECK(info_.remote_initial_credits.has_value());
  ------------------
  |  |   39|      0|  do {                                                                         \
  |  |   40|      0|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  166|       |
  167|      0|    auto return_credits_cb = [this](uint16_t credits) {
  168|      0|      if (link_.is_alive()) {
  169|       |        // |link| is expected to ignore this call if it has been closed.
  170|      0|        link_->SignalCreditsAvailable(id_, credits);
  171|      0|      }
  172|      0|    };
  173|       |
  174|      0|    auto mode = std::get<CreditBasedFlowControlMode>(info_.mode);
  175|      0|    rx_engine_ = std::make_unique<CreditBasedFlowControlRxEngine>(
  176|      0|        std::move(connection_failure_cb), std::move(return_credits_cb));
  177|      0|    tx_engine_ = std::make_unique<CreditBasedFlowControlTxEngine>(
  178|      0|        id,
  179|      0|        max_tx_sdu_size(),
  180|      0|        *this,
  181|      0|        mode,
  182|      0|        info_.max_tx_pdu_payload_size,
  183|      0|        *info_.remote_initial_credits);
  184|      0|  } else {
  185|      0|    std::tie(rx_engine_, tx_engine_) =
  186|      0|        MakeLinkedEnhancedRetransmissionModeEngines(
  187|      0|            id,
  188|      0|            max_tx_sdu_size(),
  189|      0|            info_.max_transmissions,
  190|      0|            info_.n_frames_in_tx_window,
  191|      0|            *this,
  192|      0|            std::move(connection_failure_cb),
  193|      0|            pw_dispatcher_);
  194|      0|  }
  195|   143k|}
_ZN2bt5l2cap8internal11ChannelImplD2Ev:
  197|   143k|ChannelImpl::~ChannelImpl() {
  198|   143k|  size_t removed_count = this->pending_tx_sdus_.size();
  199|   143k|  if (removed_count > 0) {
  ------------------
  |  Branch (199:7): [True: 0, False: 143k]
  ------------------
  200|      0|    bt_log(TRACE,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  201|      0|           "hci",
  202|      0|           "packets dropped (count: %zu) due to channel destruction (link: "
  203|      0|           "%#.4x, id: %#.4x)",
  204|      0|           removed_count,
  205|      0|           link_handle(),
  206|      0|           id());
  207|      0|  }
  208|   143k|}
_ZN2bt5l2cap8internal11ChannelImpl8ActivateEN3fit13function_implILm16ELb0EFvNSt3__110unique_ptrINS_10ByteBufferENS5_14default_deleteIS7_EEEEENS5_9allocatorISt4byteEEEENS4_ILm16ELb0EFvvESE_EE:
  224|   142k|                           ClosedCallback closed_callback) {
  225|   142k|  PW_CHECK(rx_callback);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  226|   142k|  PW_CHECK(closed_callback);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  227|       |
  228|       |  // Activating on a closed link has no effect. We also clear this on
  229|       |  // deactivation to prevent a channel from being activated more than once.
  230|   142k|  if (!link_.is_alive())
  ------------------
  |  Branch (230:7): [True: 0, False: 142k]
  ------------------
  231|      0|    return false;
  232|       |
  233|   142k|  PW_CHECK(!active_);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  234|   142k|  active_ = true;
  235|   142k|  rx_cb_ = std::move(rx_callback);
  236|   142k|  closed_cb_ = std::move(closed_callback);
  237|       |
  238|       |  // Route the buffered packets.
  239|   142k|  if (!pending_rx_sdus_.empty()) {
  ------------------
  |  Branch (239:7): [True: 0, False: 142k]
  ------------------
  240|      0|    TRACE_DURATION("bluetooth", "ChannelImpl::Activate pending drain");
  241|       |    // Channel may be destroyed in rx_cb_, so we need to check self after
  242|       |    // calling rx_cb_.
  243|      0|    auto self = GetWeakPtr();
  244|      0|    std::queue<ByteBufferPtr, std::list<ByteBufferPtr>> pending;
  245|      0|    std::swap(pending_rx_sdus_, pending);
  246|      0|    while (self.is_alive() && !pending.empty()) {
  ------------------
  |  Branch (246:12): [True: 0, False: 0]
  |  Branch (246:31): [True: 0, False: 0]
  ------------------
  247|      0|      TRACE_FLOW_END(
  248|      0|          "bluetooth", "ChannelImpl::HandleRxPdu queued", pending.size());
  249|      0|      rx_cb_(std::move(pending.front()));
  250|      0|      pending.pop();
  251|      0|    }
  252|      0|    if (self.is_alive() && AreQueuesEmpty()) {
  ------------------
  |  Branch (252:9): [True: 0, False: 0]
  |  Branch (252:28): [True: 0, False: 0]
  ------------------
  253|      0|      wake_lease_.reset();
  254|      0|    }
  255|      0|  }
  256|       |
  257|   142k|  return true;
  258|   142k|}
_ZN2bt5l2cap8internal11ChannelImpl4SendENSt3__110unique_ptrINS_10ByteBufferENS3_14default_deleteIS5_EEEE:
  290|   407k|bool ChannelImpl::Send(ByteBufferPtr sdu) {
  291|   407k|  PW_DCHECK(sdu);
  ------------------
  |  |   51|   407k|  do {                            \
  |  |   52|   407k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   407k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   407k|  do {                                                                         \
  |  |  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   407k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   407k|    }                             \
  |  |   55|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  292|       |
  293|   407k|  TRACE_DURATION(
  294|   407k|      "bluetooth", "l2cap:send", "handle", link_->handle(), "id", id());
  295|       |
  296|   407k|  if (!link_.is_alive()) {
  ------------------
  |  Branch (296:7): [True: 0, False: 407k]
  ------------------
  297|      0|    bt_log(ERROR, "l2cap", "cannot send SDU on a closed link");
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  298|      0|    return false;
  299|      0|  }
  300|       |
  301|   407k|  if (!active_) {
  ------------------
  |  Branch (301:7): [True: 0, False: 407k]
  ------------------
  302|      0|    bt_log(INFO, "l2cap", "not sending SDU on an inactive channel");
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  303|      0|    return false;
  304|      0|  }
  305|       |
  306|       |  // Cap the Tx SDU queue to |max_tx_queued|.
  307|   407k|  if (pending_tx_sdus_.size() > max_tx_queued()) {
  ------------------
  |  Branch (307:7): [True: 0, False: 407k]
  ------------------
  308|      0|    return false;
  309|      0|  }
  310|       |
  311|   407k|  if (!wake_lease_) {
  ------------------
  |  Branch (311:7): [True: 378k, False: 28.5k]
  ------------------
  312|   378k|    TryAcquireWakeLease();
  313|   378k|  }
  314|       |
  315|   407k|  pending_tx_sdus_.push(std::move(sdu));
  316|   407k|  tx_engine_->NotifySduQueued();
  317|   407k|  return true;
  318|   407k|}
_ZN2bt5l2cap8internal11ChannelImpl21GetNextOutboundPacketEv:
  320|   365k|std::unique_ptr<hci::ACLDataPacket> ChannelImpl::GetNextOutboundPacket() {
  321|       |  // Channel's next packet is a starting fragment
  322|   365k|  if (!HasFragments() && HasPDUs()) {
  ------------------
  |  Branch (322:7): [True: 364k, False: 912]
  |  Branch (322:26): [True: 364k, False: 0]
  ------------------
  323|       |    // B-frames for Basic Mode contain only an "Information payload" (v5.0 Vol
  324|       |    // 3, Part A, Sec 3.1)
  325|   364k|    FrameCheckSequenceOption fcs_option =
  326|   364k|        info().mode == RetransmissionAndFlowControlMode::kEnhancedRetransmission
  ------------------
  |  Branch (326:9): [True: 0, False: 364k]
  ------------------
  327|   364k|            ? FrameCheckSequenceOption::kIncludeFcs
  328|   364k|            : FrameCheckSequenceOption::kNoFcs;
  329|       |    // Get new PDU and release fragments
  330|   364k|    auto pdu =
  331|   364k|        fragmenter_.BuildFrame(remote_id(),
  332|   364k|                               *pending_tx_pdus_.front(),
  333|   364k|                               fcs_option,
  334|   364k|                               /*flushable=*/info().flush_timeout.has_value());
  335|   364k|    pending_tx_fragments_ = pdu.ReleaseFragments();
  336|   364k|    pending_tx_pdus_.pop();
  337|   364k|  }
  338|       |
  339|       |  // Send next packet if it exists
  340|   365k|  std::unique_ptr<hci::ACLDataPacket> fragment = nullptr;
  341|   365k|  if (HasFragments()) {
  ------------------
  |  Branch (341:7): [True: 365k, False: 0]
  ------------------
  342|   365k|    fragment = std::move(pending_tx_fragments_.front());
  343|   365k|    pending_tx_fragments_.pop_front();
  344|   365k|  }
  345|       |
  346|   365k|  if (AreQueuesEmpty()) {
  ------------------
  |  Branch (346:7): [True: 364k, False: 930]
  ------------------
  347|   364k|    wake_lease_.reset();
  348|   364k|  }
  349|       |
  350|   365k|  return fragment;
  351|   365k|}
_ZN2bt5l2cap8internal11ChannelImpl18RequestAclPriorityEN2pw9bluetooth11AclPriorityEN3fit13callback_implILm16ELb0EFvNS6_6resultINS6_6failedEJEEEENSt3__19allocatorISt4byteEEEE:
  367|   142k|    fit::callback<void(fit::result<fit::failed>)> callback) {
  368|   142k|  if (!link_.is_alive() || !active_) {
  ------------------
  |  Branch (368:7): [True: 0, False: 142k]
  |  Branch (368:28): [True: 0, False: 142k]
  ------------------
  369|      0|    bt_log(DEBUG, "l2cap", "Ignoring ACL priority request on inactive channel");
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  370|      0|    callback(fit::failed());
  371|      0|    return;
  372|      0|  }
  373|       |
  374|       |  // Callback is only called after checking that the weak pointer passed is
  375|       |  // alive, so using this in lambda is safe.
  376|   142k|  link_->RequestAclPriority(
  377|   142k|      GetWeakPtr(),
  378|   142k|      priority,
  379|   142k|      [self = GetWeakPtr(), this, priority, cb = std::move(callback)](
  380|   142k|          auto result) mutable {
  381|   142k|        if (self.is_alive() && result.is_ok()) {
  382|   142k|          requested_acl_priority_ = priority;
  383|   142k|        }
  384|   142k|        cb(result);
  385|   142k|      });
  386|   142k|}
_ZN2bt5l2cap8internal11ChannelImpl8OnClosedEv:
  454|   143k|void ChannelImpl::OnClosed() {
  455|   143k|  bt_log(TRACE,
  ------------------
  |  |  141|   143k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   143k|  do {                                                                     \
  |  |  |  |   74|   143k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   143k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   143k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   143k|  do {                                                    \
  |  |  |  |  |  |   56|   143k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   143k|           (flags),                                       \
  |  |  |  |  |  |   58|   143k|           module,                                        \
  |  |  |  |  |  |   59|   143k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   143k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   143k|           __func__,                                      \
  |  |  |  |  |  |   62|   143k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   143k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   143k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   143k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   143k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   143k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   143k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   143k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   143k|    }                                                                      \
  |  |  |  |   77|   143k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   143k|         PW_LOG_LEVEL,                             \
  |  |  143|   143k|         tag,                                      \
  |  |  144|   143k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   143k|         __VA_ARGS__);                             \
  |  |  146|   143k|  ::bt::internal::CheckFormat(tag)
  ------------------
  456|   143k|         "l2cap",
  457|   143k|         "channel closed (link: %#.4x, id: %#.4x)",
  458|   143k|         link_handle(),
  459|   143k|         id());
  460|       |
  461|   143k|  if (!link_.is_alive() || !active_) {
  ------------------
  |  Branch (461:7): [True: 0, False: 143k]
  |  Branch (461:28): [True: 269, False: 142k]
  ------------------
  462|    269|    link_ = internal::LogicalLinkWeakPtr();
  463|    269|    return;
  464|    269|  }
  465|       |
  466|   142k|  PW_CHECK(closed_cb_);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  467|   142k|  auto closed_cb = std::move(closed_cb_);
  468|       |
  469|   142k|  CleanUp();
  470|       |
  471|   142k|  closed_cb();
  472|   142k|}
_ZN2bt5l2cap8internal11ChannelImpl11HandleRxPduEONS0_3PDUE:
  474|  45.5k|void ChannelImpl::HandleRxPdu(PDU&& pdu) {
  475|  45.5k|  TRACE_DURATION("bluetooth",
  476|  45.5k|                 "ChannelImpl::HandleRxPdu",
  477|  45.5k|                 "handle",
  478|  45.5k|                 link_->handle(),
  479|  45.5k|                 "channel_id",
  480|  45.5k|                 id_);
  481|       |
  482|       |  // link_ may be nullptr if a pdu is received after the channel has been
  483|       |  // deactivated but before LogicalLink::RemoveChannel has been dispatched
  484|  45.5k|  if (!link_.is_alive()) {
  ------------------
  |  Branch (484:7): [True: 0, False: 45.5k]
  ------------------
  485|      0|    bt_log(TRACE, "l2cap", "ignoring pdu on deactivated channel");
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  486|      0|    return;
  487|      0|  }
  488|       |
  489|  45.5k|  PW_CHECK(rx_engine_);
  ------------------
  |  |   39|  45.5k|  do {                                                                         \
  |  |   40|  45.5k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 45.5k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  45.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  490|       |
  491|  45.5k|  ByteBufferPtr sdu = rx_engine_->ProcessPdu(std::move(pdu));
  492|  45.5k|  if (!sdu) {
  ------------------
  |  Branch (492:7): [True: 0, False: 45.5k]
  ------------------
  493|       |    // The PDU may have been invalid, out-of-sequence, part of a segmented
  494|       |    // SDU, or a signaling PDU.
  495|       |    // * If invalid, we drop the PDU (per Core Spec Ver 5, Vol 3, Part A,
  496|       |    //   Secs. 3.3.6 and/or 3.3.7).
  497|       |    // * If out-of-sequence or part of a segmented SDU, we expect that some
  498|       |    //   later call to ProcessPdu() will return us an SDU containing this
  499|       |    //   PDU's data.
  500|       |    // * If a signaling PDU, packet queue state may have changed and we might be
  501|       |    //   able to release the wake lease.
  502|      0|    if (AreQueuesEmpty()) {
  ------------------
  |  Branch (502:9): [True: 0, False: 0]
  ------------------
  503|      0|      wake_lease_.reset();
  504|      0|    } else if (!wake_lease_) {
  ------------------
  |  Branch (504:16): [True: 0, False: 0]
  ------------------
  505|      0|      TryAcquireWakeLease();
  506|      0|    }
  507|      0|    return;
  508|      0|  }
  509|       |
  510|       |  // Buffer the packets if the channel hasn't been activated.
  511|  45.5k|  if (!active_) {
  ------------------
  |  Branch (511:7): [True: 1.12k, False: 44.4k]
  ------------------
  512|  1.12k|    pending_rx_sdus_.emplace(std::move(sdu));
  513|       |    // Tracing: we assume pending_rx_sdus_ is only filled once and use the
  514|       |    // length of queue for trace ids.
  515|  1.12k|    TRACE_FLOW_BEGIN("bluetooth",
  516|  1.12k|                     "ChannelImpl::HandleRxPdu queued",
  517|  1.12k|                     pending_rx_sdus_.size());
  518|       |
  519|  1.12k|    if (!wake_lease_) {
  ------------------
  |  Branch (519:9): [True: 60, False: 1.06k]
  ------------------
  520|     60|      TryAcquireWakeLease();
  521|     60|    }
  522|  1.12k|    return;
  523|  1.12k|  }
  524|       |
  525|       |  // The PDU may have been the last segment of an SDU, in which case an RxEngine
  526|       |  // queue may have been emptied.
  527|  44.4k|  if (AreQueuesEmpty()) {
  ------------------
  |  Branch (527:7): [True: 40.4k, False: 3.98k]
  ------------------
  528|  40.4k|    wake_lease_.reset();
  529|  40.4k|  }
  530|       |
  531|  44.4k|  PW_CHECK(rx_cb_);
  ------------------
  |  |   39|  44.4k|  do {                                                                         \
  |  |   40|  44.4k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 44.4k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  44.4k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  532|  44.4k|  {
  533|  44.4k|    TRACE_DURATION("bluetooth", "ChannelImpl::HandleRxPdu callback");
  534|  44.4k|    rx_cb_(std::move(sdu));
  535|  44.4k|  }
  536|  44.4k|}
_ZN2bt5l2cap8internal11ChannelImpl7CleanUpEv:
  538|   142k|void ChannelImpl::CleanUp() {
  539|   142k|  RequestAclPriority(AclPriority::kNormal, [](auto result) {
  540|   142k|    if (result.is_error()) {
  541|   142k|      bt_log(WARN, "l2cap", "Resetting ACL priority on channel closed failed");
  542|   142k|    }
  543|   142k|  });
  544|       |
  545|   142k|  a2dp_offload_manager_.RequestStopA2dpOffload(
  546|   142k|      id(), link_handle(), [](auto result) {
  547|   142k|        if (result.is_error()) {
  548|   142k|          bt_log(WARN,
  549|   142k|                 "l2cap",
  550|   142k|                 "Stopping A2DP offloading on channel closed failed: %s",
  551|   142k|                 bt_str(result));
  552|   142k|        }
  553|   142k|      });
  554|       |
  555|   142k|  active_ = false;
  556|   142k|  link_ = internal::LogicalLinkWeakPtr();
  557|   142k|  rx_cb_ = nullptr;
  558|   142k|  closed_cb_ = nullptr;
  559|   142k|  rx_engine_ = nullptr;
  560|   142k|  tx_engine_ = nullptr;
  561|   142k|  wake_lease_.reset();
  562|   142k|}
_ZN2bt5l2cap8internal11ChannelImpl9SendFrameENSt3__110unique_ptrINS_10ByteBufferENS3_14default_deleteIS5_EEEE:
  564|   407k|void ChannelImpl::SendFrame(ByteBufferPtr pdu) {
  565|   407k|  if (!link_.is_alive() || !active_) {
  ------------------
  |  Branch (565:7): [True: 0, False: 407k]
  |  Branch (565:28): [True: 0, False: 407k]
  ------------------
  566|      0|    bt_log(DEBUG,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  567|      0|           "l2cap",
  568|      0|           "dropping ACL packet for inactive connection (handle: %#.4x)",
  569|      0|           link_->handle());
  570|      0|    return;
  571|      0|  }
  572|       |
  573|   407k|  pending_tx_pdus_.emplace(std::move(pdu));
  574|       |
  575|       |  // Ensure that |pending_tx_pdus_| does not exceed its maximum queue size
  576|   407k|  if (pending_tx_pdus_.size() > max_tx_queued()) {
  ------------------
  |  Branch (576:7): [True: 1.68k, False: 405k]
  ------------------
  577|  1.68k|    if (dropped_packets % 100 == 0) {
  ------------------
  |  Branch (577:9): [True: 35, False: 1.64k]
  ------------------
  578|     35|      bt_log(DEBUG,
  ------------------
  |  |  141|     35|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     35|  do {                                                                     \
  |  |  |  |   74|     35|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     35|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     35|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     35|  do {                                                    \
  |  |  |  |  |  |   56|     35|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     35|           (flags),                                       \
  |  |  |  |  |  |   58|     35|           module,                                        \
  |  |  |  |  |  |   59|     35|           __FILE__,                                      \
  |  |  |  |  |  |   60|     35|           __LINE__,                                      \
  |  |  |  |  |  |   61|     35|           __func__,                                      \
  |  |  |  |  |  |   62|     35|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     35|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     35|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     35|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     35|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     35|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     35|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     35|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     35|    }                                                                      \
  |  |  |  |   77|     35|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     35|         PW_LOG_LEVEL,                             \
  |  |  143|     35|         tag,                                      \
  |  |  144|     35|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     35|         __VA_ARGS__);                             \
  |  |  146|     35|  ::bt::internal::CheckFormat(tag)
  ------------------
  579|     35|             "l2cap",
  580|     35|             "Queued packets (%zu) exceeds maximum (%u). "
  581|     35|             "Dropping oldest ACL packet (handle: %#.4x)",
  582|     35|             pending_tx_pdus_.size(),
  583|     35|             max_tx_queued(),
  584|     35|             link_->handle());
  585|       |
  586|     35|      inspect_.dropped_packets.Set(dropped_packets);
  587|     35|    }
  588|  1.68k|    dropped_packets += 1;
  589|       |
  590|  1.68k|    pending_tx_pdus_.pop();  // Remove the oldest (aka first) element
  591|  1.68k|  }
  592|       |
  593|       |  // Notify LogicalLink that a packet is available. This is only necessary for
  594|       |  // the first packet of an empty queue (flow control will poll this connection
  595|       |  // otherwise).
  596|   407k|  if (pending_tx_pdus_.size() == 1u) {
  ------------------
  |  Branch (596:7): [True: 378k, False: 28.5k]
  ------------------
  597|   378k|    link_->OnOutboundPacketAvailable();
  598|   378k|  }
  599|       |
  600|   407k|  if (!wake_lease_ && !AreQueuesEmpty()) {
  ------------------
  |  Branch (600:7): [True: 364k, False: 42.5k]
  |  Branch (600:23): [True: 0, False: 364k]
  ------------------
  601|      0|    TryAcquireWakeLease();
  602|      0|  }
  603|   407k|}
_ZN2bt5l2cap8internal11ChannelImpl16GetNextQueuedSduEv:
  605|   407k|std::optional<ByteBufferPtr> ChannelImpl::GetNextQueuedSdu() {
  606|   407k|  if (pending_tx_sdus_.empty())
  ------------------
  |  Branch (606:7): [True: 0, False: 407k]
  ------------------
  607|      0|    return std::nullopt;
  608|   407k|  ByteBufferPtr next_sdu = std::move(pending_tx_sdus_.front());
  609|   407k|  pending_tx_sdus_.pop();
  610|   407k|  return next_sdu;
  611|   407k|}
_ZN2bt5l2cap8internal11ChannelImpl14AreQueuesEmptyEv:
  613|   775k|bool ChannelImpl::AreQueuesEmpty() {
  614|   775k|  return pending_rx_sdus_.empty() && pending_tx_sdus_.empty() &&
  ------------------
  |  Branch (614:10): [True: 775k, False: 0]
  |  Branch (614:38): [True: 775k, False: 0]
  ------------------
  615|   775k|         pending_tx_pdus_.empty() && pending_tx_fragments_.empty() &&
  ------------------
  |  Branch (615:10): [True: 771k, False: 3.90k]
  |  Branch (615:38): [True: 770k, False: 1.01k]
  ------------------
  616|   775k|         (!tx_engine_ || tx_engine_->IsQueueEmpty()) &&
  ------------------
  |  Branch (616:11): [True: 0, False: 770k]
  |  Branch (616:26): [True: 770k, False: 0]
  ------------------
  617|   775k|         (!rx_engine_ || rx_engine_->IsQueueEmpty());
  ------------------
  |  Branch (617:11): [True: 0, False: 770k]
  |  Branch (617:26): [True: 770k, False: 0]
  ------------------
  618|   775k|}
_ZN2bt5l2cap8internal11ChannelImpl19TryAcquireWakeLeaseEv:
  620|   378k|void ChannelImpl::TryAcquireWakeLease() {
  621|   378k|  pw::Result<pw::bluetooth_sapphire::Lease> lease =
  622|   378k|      PW_SAPPHIRE_ACQUIRE_LEASE(wake_lease_provider_, "l2cap::ChannelImpl");
  ------------------
  |  |   25|   378k|  lease_provider.Acquire(PW_SAPPHIRE_LEASE_TOKEN_EXPR(name))
  |  |  ------------------
  |  |  |  |   37|   378k|#define PW_SAPPHIRE_LEASE_TOKEN_EXPR(name) name
  |  |  ------------------
  ------------------
  623|   378k|  if (lease.ok()) {
  ------------------
  |  Branch (623:7): [True: 378k, False: 0]
  ------------------
  624|   378k|    wake_lease_ = std::move(lease.value());
  625|   378k|  }
  626|   378k|}
channel.cc:_ZZN2bt5l2cap8internal11ChannelImpl18RequestAclPriorityEN2pw9bluetooth11AclPriorityEN3fit13callback_implILm16ELb0EFvNS6_6resultINS6_6failedEJEEEENSt3__19allocatorISt4byteEEEEEN3$_0clISA_EEDaT_:
  380|     18|          auto result) mutable {
  381|     18|        if (self.is_alive() && result.is_ok()) {
  ------------------
  |  Branch (381:13): [True: 18, False: 0]
  |  Branch (381:32): [True: 18, False: 0]
  ------------------
  382|     18|          requested_acl_priority_ = priority;
  383|     18|        }
  384|     18|        cb(result);
  385|     18|      });
channel.cc:_ZZN2bt5l2cap8internal11ChannelImpl7CleanUpEvENK3$_0clIN3fit6resultINS5_6failedEJEEEEEDaT_:
  539|     18|  RequestAclPriority(AclPriority::kNormal, [](auto result) {
  540|     18|    if (result.is_error()) {
  ------------------
  |  Branch (540:9): [True: 0, False: 18]
  ------------------
  541|      0|      bt_log(WARN, "l2cap", "Resetting ACL priority on channel closed failed");
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  542|      0|    }
  543|     18|  });
channel.cc:_ZZN2bt5l2cap8internal11ChannelImpl7CleanUpEvENK3$_1clIN3fit6resultINS_5ErrorIN2pw9bluetooth6emboss10StatusCodeEEEJEEEEEDaT_:
  546|   142k|      id(), link_handle(), [](auto result) {
  547|   142k|        if (result.is_error()) {
  ------------------
  |  Branch (547:13): [True: 0, False: 142k]
  ------------------
  548|      0|          bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  549|      0|                 "l2cap",
  550|      0|                 "Stopping A2DP offloading on channel closed failed: %s",
  551|      0|                 bt_str(result));
  552|      0|        }
  553|   142k|      });

_ZN2bt5l2cap8internal20ChannelConfiguration11ReadOptionsERKNS_10ByteBufferE:
   62|  25.9k|bool ChannelConfiguration::ReadOptions(const ByteBuffer& options_payload) {
   63|  25.9k|  auto remaining_view = options_payload.view();
   64|   106k|  while (remaining_view.size() != 0) {
  ------------------
  |  Branch (64:10): [True: 93.1k, False: 13.7k]
  ------------------
   65|  93.1k|    size_t bytes_read = ReadNextOption(remaining_view);
   66|       |
   67|       |    // Check for read failure
   68|  93.1k|    if (bytes_read == 0) {
  ------------------
  |  Branch (68:9): [True: 12.1k, False: 80.9k]
  ------------------
   69|  12.1k|      return false;
   70|  12.1k|    }
   71|       |
   72|  80.9k|    remaining_view = remaining_view.view(bytes_read);
   73|  80.9k|  }
   74|  13.7k|  return true;
   75|  25.9k|}
_ZN2bt5l2cap8internal20ChannelConfiguration14ReadNextOptionERKNS_10ByteBufferE:
   77|  93.1k|size_t ChannelConfiguration::ReadNextOption(const ByteBuffer& options) {
   78|  93.1k|  if (options.size() < sizeof(ConfigurationOption)) {
  ------------------
  |  Branch (78:7): [True: 1.84k, False: 91.2k]
  ------------------
   79|  1.84k|    bt_log(WARN,
  ------------------
  |  |  141|  1.84k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  1.84k|  do {                                                                     \
  |  |  |  |   74|  1.84k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.84k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  1.84k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.84k|  do {                                                    \
  |  |  |  |  |  |   56|  1.84k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  1.84k|           (flags),                                       \
  |  |  |  |  |  |   58|  1.84k|           module,                                        \
  |  |  |  |  |  |   59|  1.84k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  1.84k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  1.84k|           __func__,                                      \
  |  |  |  |  |  |   62|  1.84k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  1.84k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  1.84k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  1.84k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  1.84k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  1.84k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  1.84k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.84k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  1.84k|    }                                                                      \
  |  |  |  |   77|  1.84k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  1.84k|         PW_LOG_LEVEL,                             \
  |  |  143|  1.84k|         tag,                                      \
  |  |  144|  1.84k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  1.84k|         __VA_ARGS__);                             \
  |  |  146|  1.84k|  ::bt::internal::CheckFormat(tag)
  ------------------
   80|  1.84k|           "l2cap",
   81|  1.84k|           "tried to decode channel configuration option from buffer with "
   82|  1.84k|           "invalid size (size: %zu)",
   83|  1.84k|           options.size());
   84|  1.84k|    return 0;
   85|  1.84k|  }
   86|       |
   87|  91.2k|  size_t remaining_size = options.size() - sizeof(ConfigurationOption);
   88|  91.2k|  PacketView<ConfigurationOption> option(&options, remaining_size);
   89|       |
   90|       |  // Check length against buffer bounds.
   91|  91.2k|  if (option.header().length > remaining_size) {
  ------------------
  |  Branch (91:7): [True: 6.99k, False: 84.2k]
  ------------------
   92|  6.99k|    bt_log(WARN,
  ------------------
  |  |  141|  6.99k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  6.99k|  do {                                                                     \
  |  |  |  |   74|  6.99k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  6.99k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  6.99k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.99k|  do {                                                    \
  |  |  |  |  |  |   56|  6.99k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  6.99k|           (flags),                                       \
  |  |  |  |  |  |   58|  6.99k|           module,                                        \
  |  |  |  |  |  |   59|  6.99k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  6.99k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  6.99k|           __func__,                                      \
  |  |  |  |  |  |   62|  6.99k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  6.99k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  6.99k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  6.99k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  6.99k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  6.99k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  6.99k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  6.99k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  6.99k|    }                                                                      \
  |  |  |  |   77|  6.99k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  6.99k|         PW_LOG_LEVEL,                             \
  |  |  143|  6.99k|         tag,                                      \
  |  |  144|  6.99k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  6.99k|         __VA_ARGS__);                             \
  |  |  146|  6.99k|  ::bt::internal::CheckFormat(tag)
  ------------------
   93|  6.99k|           "l2cap",
   94|  6.99k|           "decoded channel configuration option with length greater than "
   95|  6.99k|           "remaining buffer size "
   96|  6.99k|           "(length: %hhu, remaining: %zu)",
   97|  6.99k|           option.header().length,
   98|  6.99k|           remaining_size);
   99|  6.99k|    return 0;
  100|  6.99k|  }
  101|       |
  102|  91.2k|  PW_MODIFY_DIAGNOSTICS_PUSH();
  ------------------
  |  |  187|  91.2k|  _Pragma("GCC diagnostic push") _PW_REQUIRE_SEMICOLON
  |  |  ------------------
  |  |  |  |  182|  84.2k|  static_assert(1, "This macro must be terminated with a semicolon")
  |  |  ------------------
  ------------------
  103|  84.2k|  PW_MODIFY_DIAGNOSTIC(ignored, "-Wswitch-enum");
  ------------------
  |  |  201|  84.2k|  PW_PRAGMA(GCC diagnostic kind option) _PW_REQUIRE_SEMICOLON
  |  |  ------------------
  |  |  |  |  182|  84.2k|  static_assert(1, "This macro must be terminated with a semicolon")
  |  |  ------------------
  ------------------
  104|  84.2k|  switch (option.header().type) {
  105|  3.15k|    case OptionType::kMTU:
  ------------------
  |  Branch (105:5): [True: 3.15k, False: 81.1k]
  ------------------
  106|  3.15k|      if (!CheckHeaderLengthField<MtuOption>(option)) {
  ------------------
  |  Branch (106:11): [True: 2.60k, False: 549]
  ------------------
  107|  2.60k|        return 0;
  108|  2.60k|      }
  109|    549|      OnReadMtuOption(MtuOption(option.payload_data()));
  110|    549|      return MtuOption::kEncodedSize;
  111|    575|    case OptionType::kRetransmissionAndFlowControl:
  ------------------
  |  Branch (111:5): [True: 575, False: 83.7k]
  ------------------
  112|    575|      if (!CheckHeaderLengthField<RetransmissionAndFlowControlOption>(option)) {
  ------------------
  |  Branch (112:11): [True: 231, False: 344]
  ------------------
  113|    231|        return 0;
  114|    231|      }
  115|    344|      OnReadRetransmissionAndFlowControlOption(
  116|    344|          RetransmissionAndFlowControlOption(option.payload_data()));
  117|    344|      return RetransmissionAndFlowControlOption::kEncodedSize;
  118|    740|    case OptionType::kFCS:
  ------------------
  |  Branch (118:5): [True: 740, False: 83.5k]
  ------------------
  119|    740|      if (!CheckHeaderLengthField<FrameCheckSequenceOption>(option)) {
  ------------------
  |  Branch (119:11): [True: 73, False: 667]
  ------------------
  120|     73|        return 0;
  121|     73|      }
  122|    667|      OnReadFrameCheckSequenceOption(
  123|    667|          FrameCheckSequenceOption(option.payload_data()));
  124|    667|      return FrameCheckSequenceOption::kEncodedSize;
  125|  1.01k|    case OptionType::kFlushTimeout:
  ------------------
  |  Branch (125:5): [True: 1.01k, False: 83.2k]
  ------------------
  126|  1.01k|      if (!CheckHeaderLengthField<FlushTimeoutOption>(option)) {
  ------------------
  |  Branch (126:11): [True: 421, False: 598]
  ------------------
  127|    421|        return 0;
  128|    421|      }
  129|    598|      OnReadFlushTimeoutOption(FlushTimeoutOption(option.payload_data()));
  130|    598|      return FlushTimeoutOption::kEncodedSize;
  131|  78.7k|    default:
  ------------------
  |  Branch (131:5): [True: 78.7k, False: 5.48k]
  ------------------
  132|  78.7k|      bt_log(DEBUG,
  ------------------
  |  |  141|  78.7k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  78.7k|  do {                                                                     \
  |  |  |  |   74|  78.7k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  78.7k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  78.7k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  78.7k|  do {                                                    \
  |  |  |  |  |  |   56|  78.7k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  78.7k|           (flags),                                       \
  |  |  |  |  |  |   58|  78.7k|           module,                                        \
  |  |  |  |  |  |   59|  78.7k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  78.7k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  78.7k|           __func__,                                      \
  |  |  |  |  |  |   62|  78.7k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  78.7k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  78.7k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  78.7k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  78.7k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  78.7k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  78.7k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  78.7k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  78.7k|    }                                                                      \
  |  |  |  |   77|  78.7k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  78.7k|         PW_LOG_LEVEL,                             \
  |  |  143|  78.7k|         tag,                                      \
  |  |  144|  78.7k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  78.7k|         __VA_ARGS__);                             \
  |  |  146|  78.7k|  ::bt::internal::CheckFormat(tag)
  ------------------
  133|  78.7k|             "l2cap",
  134|  78.7k|             "decoded unsupported channel configuration option (type: %#.2x)",
  135|  78.7k|             static_cast<uint8_t>(option.header().type));
  136|       |
  137|  78.7k|      UnknownOption unknown_option(
  138|  78.7k|          option.header().type, option.header().length, option.payload_data());
  139|  78.7k|      size_t option_size = unknown_option.size();
  140|       |
  141|  78.7k|      OnReadUnknownOption(std::move(unknown_option));
  142|       |
  143|  78.7k|      return option_size;
  144|  84.2k|  }
  145|  84.2k|  PW_MODIFY_DIAGNOSTICS_POP();
  ------------------
  |  |  192|  84.2k|  _Pragma("GCC diagnostic pop") _PW_REQUIRE_SEMICOLON
  |  |  ------------------
  |  |  |  |  182|      0|  static_assert(1, "This macro must be terminated with a semicolon")
  |  |  ------------------
  ------------------
  146|      0|}
_ZN2bt5l2cap8internal20ChannelConfiguration9MtuOptionC2ERKNS_10ByteBufferE:
  150|    549|ChannelConfiguration::MtuOption::MtuOption(const ByteBuffer& data_buf) {
  151|    549|  mtu_ = pw::bytes::ConvertOrderFrom(
  152|    549|      cpp20::endian::little, data_buf.ReadMember<&MtuOptionPayload::mtu>());
  153|    549|}
_ZNK2bt5l2cap8internal20ChannelConfiguration9MtuOption6EncodeEv:
  155|  11.9k|DynamicByteBuffer ChannelConfiguration::MtuOption::Encode() const {
  156|  11.9k|  return EncodeOption<MtuOption>(
  157|  11.9k|      MtuOptionPayload{pw::bytes::ConvertOrderTo(cpp20::endian::little, mtu_)});
  158|  11.9k|}
_ZNK2bt5l2cap8internal20ChannelConfiguration9MtuOption8ToStringEv:
  160|  12.2k|std::string ChannelConfiguration::MtuOption::ToString() const {
  161|  12.2k|  return bt_lib_cpp_string::StringPrintf("[type: MTU, mtu: %hu]", mtu_);
  162|  12.2k|}
_ZN2bt5l2cap8internal20ChannelConfiguration34RetransmissionAndFlowControlOption13MakeBasicModeEv:
  167|  22.7k|ChannelConfiguration::RetransmissionAndFlowControlOption::MakeBasicMode() {
  168|  22.7k|  return RetransmissionAndFlowControlOption(
  169|  22.7k|      RetransmissionAndFlowControlMode::kBasic, 0, 0, 0, 0, 0);
  170|  22.7k|}
_ZN2bt5l2cap8internal20ChannelConfiguration34RetransmissionAndFlowControlOptionC2ENS0_32RetransmissionAndFlowControlModeEhhttt:
  194|  22.7k|    : mode_(mode),
  195|  22.7k|      tx_window_size_(tx_window_size),
  196|  22.7k|      max_transmit_(max_transmit),
  197|  22.7k|      rtx_timeout_(rtx_timeout),
  198|  22.7k|      monitor_timeout_(monitor_timeout),
  199|  22.7k|      mps_(mps) {}
_ZN2bt5l2cap8internal20ChannelConfiguration34RetransmissionAndFlowControlOptionC2ERKNS_10ByteBufferE:
  202|    344|    RetransmissionAndFlowControlOption(const ByteBuffer& data_buf) {
  203|    344|  const auto option_payload =
  204|    344|      data_buf.To<RetransmissionAndFlowControlOptionPayload>();
  205|    344|  mode_ = option_payload.mode;
  206|    344|  tx_window_size_ = option_payload.tx_window_size;
  207|    344|  max_transmit_ = option_payload.max_transmit;
  208|    344|  rtx_timeout_ = pw::bytes::ConvertOrderFrom(cpp20::endian::little,
  209|    344|                                             option_payload.rtx_timeout);
  210|    344|  monitor_timeout_ = pw::bytes::ConvertOrderFrom(
  211|    344|      cpp20::endian::little, option_payload.monitor_timeout);
  212|    344|  mps_ = pw::bytes::ConvertOrderFrom(cpp20::endian::little, option_payload.mps);
  213|    344|}
_ZNK2bt5l2cap8internal20ChannelConfiguration34RetransmissionAndFlowControlOption6EncodeEv:
  216|    182|ChannelConfiguration::RetransmissionAndFlowControlOption::Encode() const {
  217|    182|  RetransmissionAndFlowControlOptionPayload payload;
  218|    182|  payload.mode = mode_;
  219|    182|  payload.tx_window_size = tx_window_size_;
  220|    182|  payload.max_transmit = max_transmit_;
  221|    182|  payload.rtx_timeout =
  222|    182|      pw::bytes::ConvertOrderTo(cpp20::endian::little, rtx_timeout_);
  223|    182|  payload.monitor_timeout =
  224|    182|      pw::bytes::ConvertOrderTo(cpp20::endian::little, monitor_timeout_);
  225|    182|  payload.mps = mps_;
  226|    182|  return EncodeOption<RetransmissionAndFlowControlOption>(payload);
  227|    182|}
_ZNK2bt5l2cap8internal20ChannelConfiguration34RetransmissionAndFlowControlOption8ToStringEv:
  230|    426|    const {
  231|    426|  return bt_lib_cpp_string::StringPrintf(
  232|    426|      "[type: RtxFlowControl, mode: %hhu, tx window size: %hhu, max transmit: "
  233|    426|      "%hhu, rtx timeout: "
  234|    426|      "%hu, monitor timeout: %hu, max pdu payload size: %hu]",
  235|    426|      static_cast<uint8_t>(mode_),
  236|    426|      tx_window_size_,
  237|    426|      max_transmit_,
  238|    426|      rtx_timeout_,
  239|    426|      monitor_timeout_,
  240|    426|      mps_);
  241|    426|}
_ZN2bt5l2cap8internal20ChannelConfiguration24FrameCheckSequenceOptionC2ERKNS_10ByteBufferE:
  246|    667|    const ByteBuffer& data_buf) {
  247|    667|  fcs_type_ = data_buf.ReadMember<&FrameCheckSequenceOptionPayload::fcs_type>();
  248|    667|}
_ZNK2bt5l2cap8internal20ChannelConfiguration24FrameCheckSequenceOption8ToStringEv:
  257|    248|std::string ChannelConfiguration::FrameCheckSequenceOption::ToString() const {
  258|    248|  return bt_lib_cpp_string::StringPrintf(
  259|    248|      "[type: FrameCheckSequence, type: %hu]", static_cast<uint8_t>(fcs_type_));
  260|    248|}
_ZN2bt5l2cap8internal20ChannelConfiguration18FlushTimeoutOptionC2ERKNS_10ByteBufferE:
  265|    598|    const ByteBuffer& data_buf) {
  266|    598|  flush_timeout_ = pw::bytes::ConvertOrderFrom(
  267|    598|      cpp20::endian::little,
  268|    598|      data_buf.ReadMember<&FlushTimeoutOptionPayload::flush_timeout>());
  269|    598|}
_ZNK2bt5l2cap8internal20ChannelConfiguration18FlushTimeoutOption8ToStringEv:
  278|    414|std::string ChannelConfiguration::FlushTimeoutOption::ToString() const {
  279|    414|  return bt_lib_cpp_string::StringPrintf(
  280|    414|      "[type: FlushTimeout, flush timeout: %hu]", flush_timeout_);
  281|    414|}
_ZN2bt5l2cap8internal20ChannelConfiguration13UnknownOptionC2ENS0_10OptionTypeEhRKNS_10ByteBufferE:
  288|  78.7k|    : type_(type), payload_(BufferView(data, length)) {}
_ZNK2bt5l2cap8internal20ChannelConfiguration13UnknownOption6EncodeEv:
  290|  47.1k|DynamicByteBuffer ChannelConfiguration::UnknownOption::Encode() const {
  291|  47.1k|  DynamicByteBuffer buffer(size());
  292|  47.1k|  MutablePacketView<ConfigurationOption> option(&buffer, payload_.size());
  293|  47.1k|  option.mutable_header()->type = type_;
  294|  47.1k|  option.mutable_header()->length = static_cast<uint8_t>(payload_.size());
  295|       |
  296|       |  // Raw data is already in little endian
  297|  47.1k|  option.mutable_payload_data().Write(payload_);
  298|       |
  299|  47.1k|  return buffer;
  300|  47.1k|}
_ZNK2bt5l2cap8internal20ChannelConfiguration13UnknownOption6IsHintEv:
  302|  78.7k|bool ChannelConfiguration::UnknownOption::IsHint() const {
  303|       |  // An option is a hint if its MSB is 1.
  304|  78.7k|  const uint8_t kMSBMask = 0x80;
  305|  78.7k|  return static_cast<uint8_t>(type_) & kMSBMask;
  306|  78.7k|}
_ZNK2bt5l2cap8internal20ChannelConfiguration13UnknownOption8ToStringEv:
  308|   107k|std::string ChannelConfiguration::UnknownOption::ToString() const {
  309|   107k|  return bt_lib_cpp_string::StringPrintf("[type: %#.2hhx, length: %zu]",
  310|   107k|                                         static_cast<unsigned char>(type_),
  311|   107k|                                         payload_.size());
  312|   107k|}
_ZNK2bt5l2cap8internal20ChannelConfiguration7OptionsEv:
  317|  13.0k|    const {
  318|  13.0k|  ConfigurationOptions options;
  319|  13.0k|  if (mtu_option_) {
  ------------------
  |  Branch (319:7): [True: 11.9k, False: 1.12k]
  ------------------
  320|  11.9k|    options.push_back(ConfigurationOptionPtr(new MtuOption(*mtu_option_)));
  321|  11.9k|  }
  322|       |
  323|  13.0k|  if (retransmission_flow_control_option_) {
  ------------------
  |  Branch (323:7): [True: 133, False: 12.9k]
  ------------------
  324|    133|    options.push_back(
  325|    133|        ConfigurationOptionPtr(new RetransmissionAndFlowControlOption(
  326|    133|            *retransmission_flow_control_option_)));
  327|    133|  }
  328|       |
  329|  13.0k|  if (fcs_option_) {
  ------------------
  |  Branch (329:7): [True: 0, False: 13.0k]
  ------------------
  330|      0|    options.push_back(
  331|      0|        ConfigurationOptionPtr(new FrameCheckSequenceOption(*fcs_option_)));
  332|      0|  }
  333|       |
  334|  13.0k|  if (flush_timeout_option_) {
  ------------------
  |  Branch (334:7): [True: 0, False: 13.0k]
  ------------------
  335|      0|    options.push_back(
  336|      0|        ConfigurationOptionPtr(new FlushTimeoutOption(*flush_timeout_option_)));
  337|      0|  }
  338|       |
  339|  13.0k|  return options;
  340|  13.0k|}
_ZNK2bt5l2cap8internal20ChannelConfiguration8ToStringEv:
  342|  31.1k|std::string ChannelConfiguration::ToString() const {
  343|  31.1k|  std::string str("{");
  344|       |
  345|  31.1k|  std::vector<std::string> options;
  346|  31.1k|  if (mtu_option_) {
  ------------------
  |  Branch (346:7): [True: 12.2k, False: 18.8k]
  ------------------
  347|  12.2k|    options.push_back(mtu_option_->ToString());
  348|  12.2k|  }
  349|  31.1k|  if (retransmission_flow_control_option_) {
  ------------------
  |  Branch (349:7): [True: 426, False: 30.6k]
  ------------------
  350|    426|    options.push_back(retransmission_flow_control_option_->ToString());
  351|    426|  }
  352|  31.1k|  if (fcs_option_) {
  ------------------
  |  Branch (352:7): [True: 248, False: 30.8k]
  ------------------
  353|    248|    options.push_back(fcs_option_->ToString());
  354|    248|  }
  355|  31.1k|  if (flush_timeout_option_) {
  ------------------
  |  Branch (355:7): [True: 414, False: 30.6k]
  ------------------
  356|    414|    options.push_back(flush_timeout_option_->ToString());
  357|    414|  }
  358|  60.1k|  for (auto& option : unknown_options_) {
  ------------------
  |  Branch (358:21): [True: 60.1k, False: 31.1k]
  ------------------
  359|  60.1k|    options.push_back(option.ToString());
  360|  60.1k|  }
  361|       |
  362|   104k|  for (auto it = options.begin(); it != options.end(); it++) {
  ------------------
  |  Branch (362:35): [True: 73.4k, False: 31.1k]
  ------------------
  363|  73.4k|    str += *it;
  364|  73.4k|    if (it != options.end() - 1) {
  ------------------
  |  Branch (364:9): [True: 43.5k, False: 29.8k]
  ------------------
  365|  43.5k|      str += ", ";
  366|  43.5k|    }
  367|  73.4k|  }
  368|  31.1k|  str += "}";
  369|  31.1k|  return str;
  370|  31.1k|}
_ZN2bt5l2cap8internal20ChannelConfiguration5MergeES2_:
  372|  15.1k|void ChannelConfiguration::Merge(ChannelConfiguration other) {
  373|  15.1k|  if (other.mtu_option_) {
  ------------------
  |  Branch (373:7): [True: 1.08k, False: 14.0k]
  ------------------
  374|  1.08k|    mtu_option_ = other.mtu_option_;
  375|  1.08k|  }
  376|       |
  377|  15.1k|  if (other.retransmission_flow_control_option_) {
  ------------------
  |  Branch (377:7): [True: 143, False: 14.9k]
  ------------------
  378|    143|    retransmission_flow_control_option_ =
  379|    143|        other.retransmission_flow_control_option_;
  380|    143|  }
  381|       |
  382|  15.1k|  if (other.flush_timeout_option_) {
  ------------------
  |  Branch (382:7): [True: 367, False: 14.7k]
  ------------------
  383|    367|    flush_timeout_option_ = other.flush_timeout_option_;
  384|    367|  }
  385|       |
  386|  15.1k|  if (other.fcs_option_) {
  ------------------
  |  Branch (386:7): [True: 216, False: 14.9k]
  ------------------
  387|    216|    fcs_option_ = other.fcs_option_;
  388|    216|  }
  389|       |
  390|  15.1k|  unknown_options_.insert(
  391|  15.1k|      unknown_options_.end(),
  392|  15.1k|      std::make_move_iterator(other.unknown_options_.begin()),
  393|  15.1k|      std::make_move_iterator(other.unknown_options_.end()));
  394|  15.1k|}
_ZN2bt5l2cap8internal20ChannelConfiguration19OnReadUnknownOptionENS2_13UnknownOptionE:
  396|  78.7k|void ChannelConfiguration::OnReadUnknownOption(UnknownOption option) {
  397|       |  // Drop unknown hint options
  398|  78.7k|  if (!option.IsHint()) {
  ------------------
  |  Branch (398:7): [True: 65.7k, False: 13.0k]
  ------------------
  399|  65.7k|    unknown_options_.push_back(std::move(option));
  400|  65.7k|  }
  401|  78.7k|}
_ZN2bt5l2cap8internal22CheckHeaderLengthFieldINS1_20ChannelConfiguration9MtuOptionEEEbNS_10PacketViewINS0_19ConfigurationOptionEEE:
   46|  3.15k|bool CheckHeaderLengthField(PacketView<ConfigurationOption> option) {
   47|  3.15k|  if (option.header().length != OptionT::kPayloadLength) {
  ------------------
  |  Branch (47:7): [True: 2.60k, False: 549]
  ------------------
   48|  2.60k|    bt_log(WARN,
  ------------------
  |  |  141|  2.60k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  2.60k|  do {                                                                     \
  |  |  |  |   74|  2.60k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  2.60k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  2.60k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.60k|  do {                                                    \
  |  |  |  |  |  |   56|  2.60k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  2.60k|           (flags),                                       \
  |  |  |  |  |  |   58|  2.60k|           module,                                        \
  |  |  |  |  |  |   59|  2.60k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  2.60k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  2.60k|           __func__,                                      \
  |  |  |  |  |  |   62|  2.60k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  2.60k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  2.60k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  2.60k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  2.60k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  2.60k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  2.60k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  2.60k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  2.60k|    }                                                                      \
  |  |  |  |   77|  2.60k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  2.60k|         PW_LOG_LEVEL,                             \
  |  |  143|  2.60k|         tag,                                      \
  |  |  144|  2.60k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  2.60k|         __VA_ARGS__);                             \
  |  |  146|  2.60k|  ::bt::internal::CheckFormat(tag)
  ------------------
   49|  2.60k|           "l2cap",
   50|  2.60k|           "received channel configuration option with incorrect length (type: "
   51|  2.60k|           "%#.2x, "
   52|  2.60k|           "length: %hhu, expected length: %hhu)",
   53|  2.60k|           static_cast<uint8_t>(option.header().type),
   54|  2.60k|           option.header().length,
   55|  2.60k|           OptionT::kPayloadLength);
   56|  2.60k|    return false;
   57|  2.60k|  }
   58|    549|  return true;
   59|  3.15k|}
_ZN2bt5l2cap8internal22CheckHeaderLengthFieldINS1_20ChannelConfiguration34RetransmissionAndFlowControlOptionEEEbNS_10PacketViewINS0_19ConfigurationOptionEEE:
   46|    575|bool CheckHeaderLengthField(PacketView<ConfigurationOption> option) {
   47|    575|  if (option.header().length != OptionT::kPayloadLength) {
  ------------------
  |  Branch (47:7): [True: 231, False: 344]
  ------------------
   48|    231|    bt_log(WARN,
  ------------------
  |  |  141|    231|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    231|  do {                                                                     \
  |  |  |  |   74|    231|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    231|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    231|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    231|  do {                                                    \
  |  |  |  |  |  |   56|    231|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    231|           (flags),                                       \
  |  |  |  |  |  |   58|    231|           module,                                        \
  |  |  |  |  |  |   59|    231|           __FILE__,                                      \
  |  |  |  |  |  |   60|    231|           __LINE__,                                      \
  |  |  |  |  |  |   61|    231|           __func__,                                      \
  |  |  |  |  |  |   62|    231|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    231|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    231|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    231|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    231|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    231|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    231|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    231|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    231|    }                                                                      \
  |  |  |  |   77|    231|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    231|         PW_LOG_LEVEL,                             \
  |  |  143|    231|         tag,                                      \
  |  |  144|    231|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    231|         __VA_ARGS__);                             \
  |  |  146|    231|  ::bt::internal::CheckFormat(tag)
  ------------------
   49|    231|           "l2cap",
   50|    231|           "received channel configuration option with incorrect length (type: "
   51|    231|           "%#.2x, "
   52|    231|           "length: %hhu, expected length: %hhu)",
   53|    231|           static_cast<uint8_t>(option.header().type),
   54|    231|           option.header().length,
   55|    231|           OptionT::kPayloadLength);
   56|    231|    return false;
   57|    231|  }
   58|    344|  return true;
   59|    575|}
_ZN2bt5l2cap8internal22CheckHeaderLengthFieldINS1_20ChannelConfiguration24FrameCheckSequenceOptionEEEbNS_10PacketViewINS0_19ConfigurationOptionEEE:
   46|    740|bool CheckHeaderLengthField(PacketView<ConfigurationOption> option) {
   47|    740|  if (option.header().length != OptionT::kPayloadLength) {
  ------------------
  |  Branch (47:7): [True: 73, False: 667]
  ------------------
   48|     73|    bt_log(WARN,
  ------------------
  |  |  141|     73|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     73|  do {                                                                     \
  |  |  |  |   74|     73|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     73|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     73|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     73|  do {                                                    \
  |  |  |  |  |  |   56|     73|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     73|           (flags),                                       \
  |  |  |  |  |  |   58|     73|           module,                                        \
  |  |  |  |  |  |   59|     73|           __FILE__,                                      \
  |  |  |  |  |  |   60|     73|           __LINE__,                                      \
  |  |  |  |  |  |   61|     73|           __func__,                                      \
  |  |  |  |  |  |   62|     73|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     73|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     73|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     73|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     73|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     73|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     73|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     73|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     73|    }                                                                      \
  |  |  |  |   77|     73|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     73|         PW_LOG_LEVEL,                             \
  |  |  143|     73|         tag,                                      \
  |  |  144|     73|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     73|         __VA_ARGS__);                             \
  |  |  146|     73|  ::bt::internal::CheckFormat(tag)
  ------------------
   49|     73|           "l2cap",
   50|     73|           "received channel configuration option with incorrect length (type: "
   51|     73|           "%#.2x, "
   52|     73|           "length: %hhu, expected length: %hhu)",
   53|     73|           static_cast<uint8_t>(option.header().type),
   54|     73|           option.header().length,
   55|     73|           OptionT::kPayloadLength);
   56|     73|    return false;
   57|     73|  }
   58|    667|  return true;
   59|    740|}
_ZN2bt5l2cap8internal22CheckHeaderLengthFieldINS1_20ChannelConfiguration18FlushTimeoutOptionEEEbNS_10PacketViewINS0_19ConfigurationOptionEEE:
   46|  1.01k|bool CheckHeaderLengthField(PacketView<ConfigurationOption> option) {
   47|  1.01k|  if (option.header().length != OptionT::kPayloadLength) {
  ------------------
  |  Branch (47:7): [True: 421, False: 598]
  ------------------
   48|    421|    bt_log(WARN,
  ------------------
  |  |  141|    421|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    421|  do {                                                                     \
  |  |  |  |   74|    421|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    421|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    421|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    421|  do {                                                    \
  |  |  |  |  |  |   56|    421|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    421|           (flags),                                       \
  |  |  |  |  |  |   58|    421|           module,                                        \
  |  |  |  |  |  |   59|    421|           __FILE__,                                      \
  |  |  |  |  |  |   60|    421|           __LINE__,                                      \
  |  |  |  |  |  |   61|    421|           __func__,                                      \
  |  |  |  |  |  |   62|    421|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    421|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    421|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    421|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    421|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    421|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    421|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    421|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    421|    }                                                                      \
  |  |  |  |   77|    421|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    421|         PW_LOG_LEVEL,                             \
  |  |  143|    421|         tag,                                      \
  |  |  144|    421|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    421|         __VA_ARGS__);                             \
  |  |  146|    421|  ::bt::internal::CheckFormat(tag)
  ------------------
   49|    421|           "l2cap",
   50|    421|           "received channel configuration option with incorrect length (type: "
   51|    421|           "%#.2x, "
   52|    421|           "length: %hhu, expected length: %hhu)",
   53|    421|           static_cast<uint8_t>(option.header().type),
   54|    421|           option.header().length,
   55|    421|           OptionT::kPayloadLength);
   56|    421|    return false;
   57|    421|  }
   58|    598|  return true;
   59|  1.01k|}
_ZN2bt5l2cap8internal12EncodeOptionINS1_20ChannelConfiguration9MtuOptionENS0_16MtuOptionPayloadEEENS_17DynamicByteBufferET0_:
   33|  11.9k|DynamicByteBuffer EncodeOption(PayloadT payload) {
   34|  11.9k|  DynamicByteBuffer buffer(OptionT::kEncodedSize);
   35|  11.9k|  MutablePacketView<ConfigurationOption> option(&buffer,
   36|  11.9k|                                                OptionT::kPayloadLength);
   37|  11.9k|  option.mutable_header()->type = OptionT::kType;
   38|  11.9k|  option.mutable_header()->length = OptionT::kPayloadLength;
   39|  11.9k|  option.mutable_payload_data().WriteObj(payload);
   40|  11.9k|  return buffer;
   41|  11.9k|}
_ZN2bt5l2cap8internal12EncodeOptionINS1_20ChannelConfiguration34RetransmissionAndFlowControlOptionENS0_41RetransmissionAndFlowControlOptionPayloadEEENS_17DynamicByteBufferET0_:
   33|    182|DynamicByteBuffer EncodeOption(PayloadT payload) {
   34|    182|  DynamicByteBuffer buffer(OptionT::kEncodedSize);
   35|    182|  MutablePacketView<ConfigurationOption> option(&buffer,
   36|    182|                                                OptionT::kPayloadLength);
   37|    182|  option.mutable_header()->type = OptionT::kType;
   38|    182|  option.mutable_header()->length = OptionT::kPayloadLength;
   39|    182|  option.mutable_payload_data().WriteObj(payload);
   40|    182|  return buffer;
   41|    182|}

_ZN2bt5l2cap18ChannelManagerImplC2EPNS_3hci14AclDataChannelEPNS2_14CommandChannelEbRN2pw5async10DispatcherERNS7_18bluetooth_sapphire13LeaseProviderE:
  170|  3.05k|    : wake_lease_provider_(wake_lease_provider),
  171|  3.05k|      pw_dispatcher_(dispatcher),
  172|  3.05k|      acl_data_channel_(acl_data_channel),
  173|  3.05k|      cmd_channel_(cmd_channel),
  174|       |      a2dp_offload_manager_(
  175|  3.05k|          std::make_unique<A2dpOffloadManager>(cmd_channel_->AsWeakPtr())),
  176|  3.05k|      random_channel_ids_(random_channel_ids),
  177|  3.05k|      weak_self_(this) {
  178|  3.05k|  PW_CHECK(acl_data_channel_);
  ------------------
  |  |   39|  3.05k|  do {                                                                         \
  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  179|  3.05k|  max_acl_payload_size_ = acl_data_channel_->GetBufferInfo().max_data_length();
  180|  3.05k|  max_le_payload_size_ = acl_data_channel_->GetLeBufferInfo().max_data_length();
  181|  3.05k|  acl_data_channel_->SetDataRxHandler(MakeInboundDataHandler());
  182|       |
  183|  3.05k|  bt_log(DEBUG, "l2cap", "initialized");
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
  184|  3.05k|}
_ZN2bt5l2cap18ChannelManagerImplD2Ev:
  186|  3.05k|ChannelManagerImpl::~ChannelManagerImpl() {
  187|  3.05k|  bt_log(DEBUG, "l2cap", "shutting down");
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
  188|       |
  189|       |  // Explicitly shut down all links to force associated L2CAP channels to
  190|       |  // release their strong references.
  191|  3.05k|  for (auto& [handle, link] : ll_map_) {
  ------------------
  |  Branch (191:29): [True: 2.70k, False: 3.05k]
  ------------------
  192|  2.70k|    link->Close();
  193|  2.70k|  }
  194|  3.05k|}
_ZN2bt5l2cap18ChannelManagerImpl22MakeInboundDataHandlerEv:
  196|  3.05k|hci::ACLPacketHandler ChannelManagerImpl::MakeInboundDataHandler() {
  197|  3.05k|  return [self = weak_self_.GetWeakPtr()](auto packet) {
  198|  3.05k|    if (self.is_alive()) {
  199|  3.05k|      self->OnACLDataReceived(std::move(packet));
  200|  3.05k|    }
  201|  3.05k|  };
  202|  3.05k|}
_ZN2bt5l2cap18ChannelManagerImpl16AddACLConnectionEtN2pw9bluetooth6emboss14ConnectionRoleEN3fit13function_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEENS7_ILm16ELb0EFvtNS_2sm13SecurityLevelENS7_ILm16ELb0EFvNS6_6resultINS_5ErrorINSE_9ErrorCodeEEEJEEEESC_EEESC_EENS6_13callback_implILm16ELb0EFvNS0_14ChannelManager18BrEdrFixedChannelsEESC_EE:
  209|   142k|    fit::callback<void(BrEdrFixedChannels)> fixed_channels_callback) {
  210|   142k|  bt_log(DEBUG, "l2cap", "register ACL link (handle: %#.4x)", handle);
  ------------------
  |  |  141|   142k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   142k|  do {                                                                     \
  |  |  |  |   74|   142k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   142k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   142k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   142k|  do {                                                    \
  |  |  |  |  |  |   56|   142k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   142k|           (flags),                                       \
  |  |  |  |  |  |   58|   142k|           module,                                        \
  |  |  |  |  |  |   59|   142k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   142k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   142k|           __func__,                                      \
  |  |  |  |  |  |   62|   142k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   142k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   142k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   142k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   142k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   142k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   142k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   142k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   142k|    }                                                                      \
  |  |  |  |   77|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   142k|         PW_LOG_LEVEL,                             \
  |  |  143|   142k|         tag,                                      \
  |  |  144|   142k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   142k|         __VA_ARGS__);                             \
  |  |  146|   142k|  ::bt::internal::CheckFormat(tag)
  ------------------
  211|       |
  212|   142k|  auto* ll =
  213|   142k|      RegisterInternal(handle, bt::LinkType::kACL, role, max_acl_payload_size_);
  214|   142k|  ll->set_error_callback(std::move(link_error_callback));
  215|   142k|  ll->set_security_upgrade_callback(std::move(security_callback));
  216|   142k|  ll->OpenFixedChannelAsync(
  217|   142k|      kSMPChannelId,
  218|   142k|      [cb = std::move(fixed_channels_callback)](Channel::WeakPtr smp) mutable {
  219|   142k|        cb(BrEdrFixedChannels{.smp = std::move(smp)});
  220|   142k|      });
  221|   142k|}
_ZN2bt5l2cap18ChannelManagerImpl16RemoveConnectionEt:
  244|   139k|void ChannelManagerImpl::RemoveConnection(hci_spec::ConnectionHandle handle) {
  245|   139k|  bt_log(DEBUG, "l2cap", "unregister link (handle: %#.4x)", handle);
  ------------------
  |  |  141|   139k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   139k|  do {                                                                     \
  |  |  |  |   74|   139k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   139k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   139k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   139k|  do {                                                    \
  |  |  |  |  |  |   56|   139k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   139k|           (flags),                                       \
  |  |  |  |  |  |   58|   139k|           module,                                        \
  |  |  |  |  |  |   59|   139k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   139k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   139k|           __func__,                                      \
  |  |  |  |  |  |   62|   139k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   139k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   139k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   139k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   139k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   139k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   139k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   139k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   139k|    }                                                                      \
  |  |  |  |   77|   139k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   139k|         PW_LOG_LEVEL,                             \
  |  |  143|   139k|         tag,                                      \
  |  |  144|   139k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   139k|         __VA_ARGS__);                             \
  |  |  146|   139k|  ::bt::internal::CheckFormat(tag)
  ------------------
  246|       |
  247|   139k|  pending_packets_.erase(handle);
  248|   139k|  auto iter = ll_map_.find(handle);
  249|   139k|  if (iter == ll_map_.end()) {
  ------------------
  |  Branch (249:7): [True: 0, False: 139k]
  ------------------
  250|      0|    bt_log(DEBUG,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  251|      0|           "l2cap",
  252|      0|           "attempt to unregister unknown link (handle: %#.4x)",
  253|      0|           handle);
  254|      0|    return;
  255|      0|  }
  256|       |
  257|       |  // Explicitly shut down the link to force associated L2CAP channels to release
  258|       |  // their strong references.
  259|   139k|  iter->second->Close();
  260|   139k|  ll_map_.erase(iter);
  261|   139k|}
_ZN2bt5l2cap18ChannelManagerImpl15RegisterServiceEtNS0_17ChannelParametersEN3fit13function_implILm16ELb0EFv7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS6_EEENSt3__19allocatorISt4byteEEEE:
  312|  3.05k|                                         ChannelCallback cb) {
  313|       |  // v5.0 Vol 3, Part A, Sec 4.2: PSMs shall be odd and the least significant
  314|       |  // bit of the most significant byte shall be zero
  315|  3.05k|  if (((psm & 0x0001) != 0x0001) || ((psm & 0x0100) != 0x0000)) {
  ------------------
  |  Branch (315:7): [True: 0, False: 3.05k]
  |  Branch (315:37): [True: 0, False: 3.05k]
  ------------------
  316|      0|    return false;
  317|      0|  }
  318|       |
  319|  3.05k|  auto iter = services_.find(psm);
  320|  3.05k|  if (iter != services_.end()) {
  ------------------
  |  Branch (320:7): [True: 0, False: 3.05k]
  ------------------
  321|      0|    return false;
  322|      0|  }
  323|       |
  324|  3.05k|  ServiceData service{.info = ServiceInfo(params, std::move(cb)),
  325|  3.05k|                      .psm = psm,
  326|  3.05k|                      .node = {},
  327|  3.05k|                      .psm_property = {}};
  328|  3.05k|  service.AttachInspect(services_node_);
  329|  3.05k|  services_.emplace(psm, std::move(service));
  330|  3.05k|  return true;
  331|  3.05k|}
_ZN2bt5l2cap18ChannelManagerImpl17OnACLDataReceivedENSt3__110unique_ptrINS_3hci6PacketINS_8hci_spec13ACLDataHeaderEEENS2_14default_deleteIS8_EEEE:
  382|   543k|void ChannelManagerImpl::OnACLDataReceived(hci::ACLDataPacketPtr packet) {
  383|   543k|  auto handle = packet->connection_handle();
  384|   543k|  TRACE_DURATION(
  385|   543k|      "bluetooth", "ChannelManagerImpl::OnDataReceived", "handle", handle);
  386|       |
  387|   543k|  auto iter = ll_map_.find(handle);
  388|   543k|  PendingPacketMap::iterator pp_iter;
  389|       |
  390|       |  // If a LogicalLink does not exist, we set up a queue for its packets to be
  391|       |  // delivered when the LogicalLink gets created.
  392|   543k|  if (iter == ll_map_.end()) {
  ------------------
  |  Branch (392:7): [True: 210k, False: 332k]
  ------------------
  393|   210k|    pp_iter =
  394|   210k|        pending_packets_.emplace(handle, std::queue<hci::ACLDataPacketPtr>())
  395|   210k|            .first;
  396|   332k|  } else {
  397|       |    // A logical link exists. |pp_iter| will be valid only if the drain task has
  398|       |    // not run yet (see ChannelManagerImpl::RegisterInternal()).
  399|   332k|    pp_iter = pending_packets_.find(handle);
  400|   332k|  }
  401|       |
  402|   543k|  if (pp_iter != pending_packets_.end()) {
  ------------------
  |  Branch (402:7): [True: 210k, False: 332k]
  ------------------
  403|   210k|    packet->set_trace_id(TRACE_NONCE());
  ------------------
  |  |   24|   210k|#define TRACE_NONCE() (0u)
  ------------------
  404|   210k|    TRACE_FLOW_BEGIN("bluetooth",
  405|   210k|                     "ChannelMaager::OnDataReceived queued",
  406|   210k|                     packet->trace_id());
  407|   210k|    pp_iter->second.push(std::move(packet));
  408|   210k|    bt_log(TRACE, "l2cap", "queued rx packet on handle: %#.4x", handle);
  ------------------
  |  |  141|   210k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   210k|  do {                                                                     \
  |  |  |  |   74|   210k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   210k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   210k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   210k|  do {                                                    \
  |  |  |  |  |  |   56|   210k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   210k|           (flags),                                       \
  |  |  |  |  |  |   58|   210k|           module,                                        \
  |  |  |  |  |  |   59|   210k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   210k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   210k|           __func__,                                      \
  |  |  |  |  |  |   62|   210k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   210k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   210k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   210k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   210k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   210k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   210k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   210k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   210k|    }                                                                      \
  |  |  |  |   77|   210k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   210k|         PW_LOG_LEVEL,                             \
  |  |  143|   210k|         tag,                                      \
  |  |  144|   210k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   210k|         __VA_ARGS__);                             \
  |  |  146|   210k|  ::bt::internal::CheckFormat(tag)
  ------------------
  409|   210k|    return;
  410|   210k|  }
  411|       |
  412|   332k|  iter->second->HandleRxPacket(std::move(packet));
  413|   332k|}
_ZN2bt5l2cap18ChannelManagerImpl16RegisterInternalEtNS_8LinkTypeEN2pw9bluetooth6emboss14ConnectionRoleEm:
  419|   142k|    size_t max_payload_size) {
  420|   142k|  TRACE_DURATION(
  421|   142k|      "bluetooth", "ChannelManagerImpl::RegisterInternal", "handle", handle);
  422|       |
  423|       |  // TODO(armansito): Return nullptr instead of asserting. Callers shouldn't
  424|       |  // assume this will succeed.
  425|   142k|  auto iter = ll_map_.find(handle);
  426|   142k|  PW_DCHECK(iter == ll_map_.end(),
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   142k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  427|   142k|            "connection handle re-used! (handle=%#.4x)",
  428|   142k|            handle);
  429|       |
  430|   142k|  auto ll = std::make_unique<internal::LogicalLink>(
  431|   142k|      handle,
  432|   142k|      ll_type,
  433|   142k|      role,
  434|   142k|      max_payload_size,
  435|   142k|      fit::bind_member<&ChannelManagerImpl::QueryService>(this),
  436|   142k|      acl_data_channel_,
  437|   142k|      cmd_channel_,
  438|   142k|      random_channel_ids_,
  439|   142k|      *a2dp_offload_manager_,
  440|   142k|      pw_dispatcher_,
  441|   142k|      wake_lease_provider_);
  442|       |
  443|   142k|  if (ll_node_) {
  ------------------
  |  Branch (443:7): [True: 0, False: 142k]
  ------------------
  444|      0|    ll->AttachInspect(ll_node_,
  445|      0|                      ll_node_.UniqueName(kInspectLogicalLinkNodePrefix));
  446|      0|  }
  447|       |
  448|       |  // Route all pending packets to the link.
  449|   142k|  auto pp_iter = pending_packets_.find(handle);
  450|   142k|  if (pp_iter != pending_packets_.end()) {
  ------------------
  |  Branch (450:7): [True: 13.8k, False: 128k]
  ------------------
  451|  13.8k|    auto& packets = pp_iter->second;
  452|   178k|    while (!packets.empty()) {
  ------------------
  |  Branch (452:12): [True: 164k, False: 13.8k]
  ------------------
  453|   164k|      auto packet = std::move(packets.front());
  454|   164k|      packets.pop();
  455|   164k|      TRACE_FLOW_END("bluetooth",
  456|   164k|                     "ChannelManagerImpl::OnDataReceived queued",
  457|   164k|                     packet->trace_id());
  458|   164k|      ll->HandleRxPacket(std::move(packet));
  459|   164k|    }
  460|  13.8k|    pending_packets_.erase(pp_iter);
  461|  13.8k|  }
  462|       |
  463|   142k|  auto* ll_raw = ll.get();
  464|   142k|  ll_map_[handle] = std::move(ll);
  465|       |
  466|   142k|  return ll_raw;
  467|   142k|}
_ZN2bt5l2cap18ChannelManagerImpl12QueryServiceEtt:
  470|  12.5k|    hci_spec::ConnectionHandle, Psm psm) {
  471|  12.5k|  auto iter = services_.find(psm);
  472|  12.5k|  if (iter == services_.end()) {
  ------------------
  |  Branch (472:7): [True: 1.79k, False: 10.7k]
  ------------------
  473|  1.79k|    return std::nullopt;
  474|  1.79k|  }
  475|       |
  476|       |  // |channel_cb| will be called in LogicalLink. Each callback in |services_|
  477|       |  // already trampolines to the appropriate dispatcher (passed to
  478|       |  // RegisterService).
  479|  10.7k|  return ServiceInfo(iter->second.info.channel_params,
  480|  10.7k|                     iter->second.info.channel_cb.share());
  481|  12.5k|}
_ZN2bt5l2cap18ChannelManagerImpl11ServiceData13AttachInspectERN7inspect4NodeE:
  483|  3.05k|void ChannelManagerImpl::ServiceData::AttachInspect(inspect::Node& parent) {
  484|  3.05k|  if (!parent) {
  ------------------
  |  Branch (484:7): [True: 3.05k, False: 0]
  ------------------
  485|  3.05k|    return;
  486|  3.05k|  }
  487|      0|  node = parent.CreateChild(parent.UniqueName(kInspectServiceNodePrefix));
  488|      0|  psm_property = node.CreateString(kInspectPsmPropertyName, PsmToString(psm));
  489|      0|}
_ZN2bt5l2cap14ChannelManager6CreateEPNS_3hci14AclDataChannelEPNS2_14CommandChannelEbRN2pw5async10DispatcherERNS7_18bluetooth_sapphire13LeaseProviderE:
  496|  3.05k|    pw::bluetooth_sapphire::LeaseProvider& wake_lease_provider) {
  497|  3.05k|  return std::make_unique<ChannelManagerImpl>(acl_data_channel,
  498|  3.05k|                                              cmd_channel,
  499|  3.05k|                                              random_channel_ids,
  500|  3.05k|                                              dispatcher,
  501|  3.05k|                                              wake_lease_provider);
  502|  3.05k|}
channel_manager.cc:_ZZN2bt5l2cap18ChannelManagerImpl22MakeInboundDataHandlerEvENK3$_0clINSt3__110unique_ptrINS_3hci6PacketINS_8hci_spec13ACLDataHeaderEEENS4_14default_deleteISA_EEEEEEDaT_:
  197|   543k|  return [self = weak_self_.GetWeakPtr()](auto packet) {
  198|   543k|    if (self.is_alive()) {
  ------------------
  |  Branch (198:9): [True: 543k, False: 0]
  ------------------
  199|   543k|      self->OnACLDataReceived(std::move(packet));
  200|   543k|    }
  201|   543k|  };
channel_manager.cc:_ZZN2bt5l2cap18ChannelManagerImpl16AddACLConnectionEtN2pw9bluetooth6emboss14ConnectionRoleEN3fit13function_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEENS7_ILm16ELb0EFvtNS_2sm13SecurityLevelENS7_ILm16ELb0EFvNS6_6resultINS_5ErrorINSE_9ErrorCodeEEEJEEEESC_EEESC_EENS6_13callback_implILm16ELb0EFvNS0_14ChannelManager18BrEdrFixedChannelsEESC_EEEN3$_0clE7WeakPtrINS0_7ChannelE18DynamicWeakManagerISW_EE:
  218|    418|      [cb = std::move(fixed_channels_callback)](Channel::WeakPtr smp) mutable {
  219|    418|        cb(BrEdrFixedChannels{.smp = std::move(smp)});
  220|    418|      });

_ZN2bt5l2cap8internal14CommandHandler8Response11ParseRejectERKNS_10ByteBufferE:
   22|  1.58k|bool CommandHandler::Response::ParseReject(const ByteBuffer& rej_payload_buf) {
   23|  1.58k|  if (rej_payload_buf.size() < sizeof(CommandRejectPayload)) {
  ------------------
  |  Branch (23:7): [True: 259, False: 1.32k]
  ------------------
   24|    259|    bt_log(DEBUG,
  ------------------
  |  |  141|    259|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    259|  do {                                                                     \
  |  |  |  |   74|    259|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    259|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    259|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    259|  do {                                                    \
  |  |  |  |  |  |   56|    259|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    259|           (flags),                                       \
  |  |  |  |  |  |   58|    259|           module,                                        \
  |  |  |  |  |  |   59|    259|           __FILE__,                                      \
  |  |  |  |  |  |   60|    259|           __LINE__,                                      \
  |  |  |  |  |  |   61|    259|           __func__,                                      \
  |  |  |  |  |  |   62|    259|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    259|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    259|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    259|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    259|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    259|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    259|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    259|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    259|    }                                                                      \
  |  |  |  |   77|    259|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    259|         PW_LOG_LEVEL,                             \
  |  |  143|    259|         tag,                                      \
  |  |  144|    259|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    259|         __VA_ARGS__);                             \
  |  |  146|    259|  ::bt::internal::CheckFormat(tag)
  ------------------
   25|    259|           "l2cap",
   26|    259|           "cmd: ignoring malformed Command Reject, size %zu (expected >= %zu)",
   27|    259|           rej_payload_buf.size(),
   28|    259|           sizeof(CommandRejectPayload));
   29|    259|    return false;
   30|    259|  }
   31|  1.32k|  reject_reason_ = static_cast<RejectReason>(pw::bytes::ConvertOrderFrom(
   32|  1.32k|      cpp20::endian::little,
   33|  1.32k|      rej_payload_buf.ReadMember<&CommandRejectPayload::reason>()));
   34|       |
   35|  1.32k|  if (reject_reason() == RejectReason::kInvalidCID) {
  ------------------
  |  Branch (35:7): [True: 135, False: 1.18k]
  ------------------
   36|    135|    if (rej_payload_buf.size() - sizeof(CommandRejectPayload) <
  ------------------
  |  Branch (36:9): [True: 37, False: 98]
  ------------------
   37|    135|        sizeof(InvalidCIDPayload)) {
   38|     37|      bt_log(DEBUG,
  ------------------
  |  |  141|     37|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     37|  do {                                                                     \
  |  |  |  |   74|     37|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     37|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     37|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     37|  do {                                                    \
  |  |  |  |  |  |   56|     37|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     37|           (flags),                                       \
  |  |  |  |  |  |   58|     37|           module,                                        \
  |  |  |  |  |  |   59|     37|           __FILE__,                                      \
  |  |  |  |  |  |   60|     37|           __LINE__,                                      \
  |  |  |  |  |  |   61|     37|           __func__,                                      \
  |  |  |  |  |  |   62|     37|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     37|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     37|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     37|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     37|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     37|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     37|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     37|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     37|    }                                                                      \
  |  |  |  |   77|     37|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     37|         PW_LOG_LEVEL,                             \
  |  |  143|     37|         tag,                                      \
  |  |  144|     37|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     37|         __VA_ARGS__);                             \
  |  |  146|     37|  ::bt::internal::CheckFormat(tag)
  ------------------
   39|     37|             "l2cap",
   40|     37|             "cmd: ignoring malformed Command Reject Invalid Channel ID, size "
   41|     37|             "%zu (expected %zu)",
   42|     37|             rej_payload_buf.size(),
   43|     37|             sizeof(CommandRejectPayload) + sizeof(InvalidCIDPayload));
   44|     37|      return false;
   45|     37|    }
   46|     98|    const auto& invalid_cid_payload =
   47|     98|        rej_payload_buf.view(sizeof(CommandRejectPayload))
   48|     98|            .To<InvalidCIDPayload>();
   49|     98|    remote_cid_ = pw::bytes::ConvertOrderFrom(cpp20::endian::little,
   50|     98|                                              invalid_cid_payload.src_cid);
   51|     98|    local_cid_ = pw::bytes::ConvertOrderFrom(cpp20::endian::little,
   52|     98|                                             invalid_cid_payload.dst_cid);
   53|     98|  }
   54|       |
   55|  1.28k|  return true;
   56|  1.32k|}
_ZN2bt5l2cap8internal14CommandHandler21DisconnectionResponse6DecodeERKNS_10ByteBufferE:
   59|     17|    const ByteBuffer& payload_buf) {
   60|     17|  const auto disconn_rsp_payload = payload_buf.To<PayloadT>();
   61|     17|  local_cid_ = pw::bytes::ConvertOrderFrom(cpp20::endian::little,
   62|     17|                                           disconn_rsp_payload.src_cid);
   63|     17|  remote_cid_ = pw::bytes::ConvertOrderFrom(cpp20::endian::little,
   64|     17|                                            disconn_rsp_payload.dst_cid);
   65|     17|  return true;
   66|     17|}
_ZN2bt5l2cap8internal14CommandHandler9ResponderC2EPNS1_25SignalingChannelInterface9ResponderEtt:
   71|  60.5k|    : sig_responder_(sig_responder),
   72|  60.5k|      local_cid_(local_cid),
   73|  60.5k|      remote_cid_(remote_cid) {}
_ZN2bt5l2cap8internal14CommandHandler9Responder19RejectNotUnderstoodEv:
   75|    215|void CommandHandler::Responder::RejectNotUnderstood() {
   76|    215|  sig_responder_->RejectNotUnderstood();
   77|    215|}
_ZN2bt5l2cap8internal14CommandHandler9Responder22RejectInvalidChannelIdEv:
   79|  9.18k|void CommandHandler::Responder::RejectInvalidChannelId() {
   80|  9.18k|  sig_responder_->RejectInvalidChannelId(local_cid(), remote_cid());
   81|  9.18k|}
_ZN2bt5l2cap8internal14CommandHandler24SendDisconnectionRequestEttN3fit13function_implILm16ELb0EFvRKNS2_21DisconnectionResponseEENSt3__19allocatorISt4byteEEEE:
   86|  1.25k|    DisconnectionResponseCallback cb) {
   87|  1.25k|  auto on_discon_rsp =
   88|  1.25k|      BuildResponseHandler<DisconnectionResponse>(std::move(cb));
   89|       |
   90|  1.25k|  DisconnectionRequestPayload payload = {
   91|  1.25k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, remote_cid),
   92|  1.25k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, local_cid)};
   93|  1.25k|  return sig()->SendRequest(kDisconnectionRequest,
   94|  1.25k|                            BufferView(&payload, sizeof(payload)),
   95|  1.25k|                            std::move(on_discon_rsp));
   96|  1.25k|}
_ZN2bt5l2cap8internal14CommandHandler25ServeDisconnectionRequestEN3fit13function_implILm16ELb0EFvttPNS2_22DisconnectionResponderEENSt3__19allocatorISt4byteEEEE:
   99|   142k|    DisconnectionRequestCallback callback) {
  100|   142k|  auto on_discon_req = [cb = std::move(callback)](
  101|   142k|                           const ByteBuffer& request_payload,
  102|   142k|                           SignalingChannel::Responder* sig_responder) {
  103|   142k|    if (request_payload.size() != sizeof(DisconnectionRequestPayload)) {
  104|   142k|      bt_log(DEBUG,
  105|   142k|             "l2cap",
  106|   142k|             "cmd: rejecting malformed Disconnection Request, size %zu",
  107|   142k|             request_payload.size());
  108|   142k|      sig_responder->RejectNotUnderstood();
  109|   142k|      return;
  110|   142k|    }
  111|       |
  112|   142k|    const auto& discon_req = request_payload.To<DisconnectionRequestPayload>();
  113|   142k|    const ChannelId local_cid =
  114|   142k|        pw::bytes::ConvertOrderFrom(cpp20::endian::little, discon_req.dst_cid);
  115|   142k|    const ChannelId remote_cid =
  116|   142k|        pw::bytes::ConvertOrderFrom(cpp20::endian::little, discon_req.src_cid);
  117|   142k|    DisconnectionResponder responder(sig_responder, local_cid, remote_cid);
  118|   142k|    cb(local_cid, remote_cid, &responder);
  119|   142k|  };
  120|       |
  121|   142k|  sig()->ServeRequest(kDisconnectionRequest, std::move(on_discon_req));
  122|   142k|}
_ZN2bt5l2cap8internal14CommandHandlerC2EPNS1_25SignalingChannelInterfaceEN3fit13function_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEE:
  158|   439k|    : sig_(sig), request_fail_callback_(std::move(request_fail_callback)) {
  159|   439k|  PW_CHECK(sig_);
  ------------------
  |  |   39|   439k|  do {                                                                         \
  |  |   40|   439k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 439k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   439k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  160|   439k|}
command_handler.cc:_ZZN2bt5l2cap8internal14CommandHandler25ServeDisconnectionRequestEN3fit13function_implILm16ELb0EFvttPNS2_22DisconnectionResponderEENSt3__19allocatorISt4byteEEEEENK3$_0clERKNS_10ByteBufferEPNS1_25SignalingChannelInterface9ResponderE:
  102|  11.2k|                           SignalingChannel::Responder* sig_responder) {
  103|  11.2k|    if (request_payload.size() != sizeof(DisconnectionRequestPayload)) {
  ------------------
  |  Branch (103:9): [True: 6.47k, False: 4.74k]
  ------------------
  104|  6.47k|      bt_log(DEBUG,
  ------------------
  |  |  141|  6.47k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  6.47k|  do {                                                                     \
  |  |  |  |   74|  6.47k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  6.47k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  6.47k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.47k|  do {                                                    \
  |  |  |  |  |  |   56|  6.47k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  6.47k|           (flags),                                       \
  |  |  |  |  |  |   58|  6.47k|           module,                                        \
  |  |  |  |  |  |   59|  6.47k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  6.47k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  6.47k|           __func__,                                      \
  |  |  |  |  |  |   62|  6.47k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  6.47k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  6.47k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  6.47k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  6.47k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  6.47k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  6.47k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  6.47k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  6.47k|    }                                                                      \
  |  |  |  |   77|  6.47k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  6.47k|         PW_LOG_LEVEL,                             \
  |  |  143|  6.47k|         tag,                                      \
  |  |  144|  6.47k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  6.47k|         __VA_ARGS__);                             \
  |  |  146|  6.47k|  ::bt::internal::CheckFormat(tag)
  ------------------
  105|  6.47k|             "l2cap",
  106|  6.47k|             "cmd: rejecting malformed Disconnection Request, size %zu",
  107|  6.47k|             request_payload.size());
  108|  6.47k|      sig_responder->RejectNotUnderstood();
  109|  6.47k|      return;
  110|  6.47k|    }
  111|       |
  112|  4.74k|    const auto& discon_req = request_payload.To<DisconnectionRequestPayload>();
  113|  4.74k|    const ChannelId local_cid =
  114|  4.74k|        pw::bytes::ConvertOrderFrom(cpp20::endian::little, discon_req.dst_cid);
  115|  4.74k|    const ChannelId remote_cid =
  116|  4.74k|        pw::bytes::ConvertOrderFrom(cpp20::endian::little, discon_req.src_cid);
  117|  4.74k|    DisconnectionResponder responder(sig_responder, local_cid, remote_cid);
  118|  4.74k|    cb(local_cid, remote_cid, &responder);
  119|  4.74k|  };

_ZN2bt5l2cap8internal14DynamicChannelC2EPNS1_22DynamicChannelRegistryEttt:
   30|  10.7k|    : registry_(registry),
   31|  10.7k|      psm_(psm),
   32|  10.7k|      local_cid_(local_cid),
   33|  10.7k|      remote_cid_(remote_cid),
   34|  10.7k|      opened_(false) {
   35|  10.7k|  PW_DCHECK(registry_);
  ------------------
  |  |   51|  10.7k|  do {                            \
  |  |   52|  10.7k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  10.7k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  10.7k|  do {                                                                         \
  |  |  |  |   40|  10.7k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 10.7k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  10.7k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  10.7k|    }                             \
  |  |   55|  10.7k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   36|  10.7k|}
_ZN2bt5l2cap8internal14DynamicChannel14OnDisconnectedEv:
   56|     18|void DynamicChannel::OnDisconnected() {
   57|     18|  registry_->OnChannelDisconnected(this);
   58|     18|}

_ZN2bt5l2cap8internal22DynamicChannelRegistryC2EtN3fit13function_implILm16ELb0EFvPKNS1_14DynamicChannelEENSt3__19allocatorISt4byteEEEENS4_ILm16ELb0EFNS9_8optionalINS0_11ServiceInfoISD_EEEEtESC_EEb:
   65|   142k|    : WeakSelf(this),
   66|   142k|      max_num_channels_(max_num_channels),
   67|   142k|      close_cb_(std::move(close_cb)),
   68|   142k|      service_request_cb_(std::move(service_request_cb)),
   69|   142k|      random_channel_ids_(random_channel_ids) {
   70|   142k|  PW_DCHECK(max_num_channels > 0);
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   71|   142k|  PW_DCHECK(max_num_channels < 65473);
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   72|   142k|  PW_DCHECK(close_cb_);
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   73|   142k|  PW_DCHECK(service_request_cb_);
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   74|   142k|}
_ZN2bt5l2cap8internal22DynamicChannelRegistry14RequestServiceEttt:
   78|  12.5k|                                                       ChannelId remote_cid) {
   79|  12.5k|  PW_DCHECK(local_cid != kInvalidChannelId);
  ------------------
  |  |   51|  12.5k|  do {                            \
  |  |   52|  12.5k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  12.5k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  12.5k|  do {                                                                         \
  |  |  |  |   40|  12.5k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 12.5k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  12.5k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  12.5k|    }                             \
  |  |   55|  12.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   80|       |
   81|  12.5k|  auto service_info = service_request_cb_(psm);
   82|  12.5k|  if (!service_info) {
  ------------------
  |  Branch (82:7): [True: 1.79k, False: 10.7k]
  ------------------
   83|  1.79k|    bt_log(WARN,
  ------------------
  |  |  141|  1.79k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  1.79k|  do {                                                                     \
  |  |  |  |   74|  1.79k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.79k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  1.79k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.79k|  do {                                                    \
  |  |  |  |  |  |   56|  1.79k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  1.79k|           (flags),                                       \
  |  |  |  |  |  |   58|  1.79k|           module,                                        \
  |  |  |  |  |  |   59|  1.79k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  1.79k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  1.79k|           __func__,                                      \
  |  |  |  |  |  |   62|  1.79k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  1.79k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  1.79k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  1.79k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  1.79k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  1.79k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  1.79k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.79k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  1.79k|    }                                                                      \
  |  |  |  |   77|  1.79k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  1.79k|         PW_LOG_LEVEL,                             \
  |  |  143|  1.79k|         tag,                                      \
  |  |  144|  1.79k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  1.79k|         __VA_ARGS__);                             \
  |  |  146|  1.79k|  ::bt::internal::CheckFormat(tag)
  ------------------
   84|  1.79k|           "l2cap",
   85|  1.79k|           "No service found for PSM %#.4x from %#.4x",
   86|  1.79k|           psm,
   87|  1.79k|           remote_cid);
   88|  1.79k|    return nullptr;
   89|  1.79k|  }
   90|       |
   91|  10.7k|  auto iter =
   92|  10.7k|      channels_
   93|  10.7k|          .emplace(
   94|  10.7k|              local_cid,
   95|  10.7k|              MakeInbound(
   96|  10.7k|                  psm, local_cid, remote_cid, service_info->channel_params))
   97|  10.7k|          .first;
   98|  10.7k|  ActivateChannel(iter->second.get(),
   99|  10.7k|                  std::move(service_info->channel_cb),
  100|  10.7k|                  /*pass_failed=*/false);
  101|  10.7k|  return iter->second.get();
  102|  12.5k|}
_ZN2bt5l2cap8internal22DynamicChannelRegistry22FindAvailableChannelIdEv:
  104|  12.5k|ChannelId DynamicChannelRegistry::FindAvailableChannelId() {
  105|  12.5k|  uint16_t offset = 0;
  106|  12.5k|  if (random_channel_ids_) {
  ------------------
  |  Branch (106:7): [True: 0, False: 12.5k]
  ------------------
  107|      0|    random_generator()->GetInt(offset, max_num_channels_);
  108|      0|  }
  109|  46.9k|  for (uint16_t i = 0; i < max_num_channels_; i++) {
  ------------------
  |  Branch (109:24): [True: 46.9k, False: 0]
  ------------------
  110|  46.9k|    ChannelId id = kFirstDynamicChannelId + ((offset + i) % max_num_channels_);
  111|  46.9k|    if (channels_.count(id) == 0) {
  ------------------
  |  Branch (111:9): [True: 12.5k, False: 34.3k]
  ------------------
  112|  12.5k|      return id;
  113|  12.5k|    }
  114|  46.9k|  }
  115|       |
  116|      0|  return kInvalidChannelId;
  117|  12.5k|}
_ZNK2bt5l2cap8internal22DynamicChannelRegistry20FindChannelByLocalIdEt:
  124|  29.2k|    ChannelId local_cid) const {
  125|  29.2k|  auto iter = channels_.find(local_cid);
  126|  29.2k|  if (iter == channels_.end()) {
  ------------------
  |  Branch (126:7): [True: 8.90k, False: 20.3k]
  ------------------
  127|  8.90k|    return nullptr;
  128|  8.90k|  }
  129|  20.3k|  return iter->second.get();
  130|  29.2k|}
_ZNK2bt5l2cap8internal22DynamicChannelRegistry21FindChannelByRemoteIdEt:
  133|  29.0k|    ChannelId remote_cid) const {
  134|  73.2k|  for (auto& [id, channel_ptr] : channels_) {
  ------------------
  |  Branch (134:32): [True: 73.2k, False: 12.5k]
  ------------------
  135|  73.2k|    if (channel_ptr->remote_cid() == remote_cid) {
  ------------------
  |  Branch (135:9): [True: 16.4k, False: 56.8k]
  ------------------
  136|  16.4k|      return channel_ptr.get();
  137|  16.4k|    }
  138|  73.2k|  }
  139|  12.5k|  return nullptr;
  140|  29.0k|}
_ZNK2bt5l2cap8internal22DynamicChannelRegistry7ForEachEN3fit13function_implILm16ELb0EFvPNS1_14DynamicChannelEENSt3__19allocatorISt4byteEEEE:
  143|    452|    fit::function<void(DynamicChannel*)> f) const {
  144|    880|  for (auto iter = channels_.begin(); iter != channels_.end();) {
  ------------------
  |  Branch (144:39): [True: 428, False: 452]
  ------------------
  145|       |    // f() may remove the channel from the registry, so get next iterator to
  146|       |    // avoid invalidation. Only the erased iterator is invalidated.
  147|    428|    auto next = std::next(iter);
  148|    428|    f(iter->second.get());
  149|    428|    iter = next;
  150|    428|  }
  151|    452|}
_ZN2bt5l2cap8internal22DynamicChannelRegistry15ActivateChannelEPNS1_14DynamicChannelEN3fit13function_implILm16ELb0EFvPKS3_ENSt3__19allocatorISt4byteEEEEb:
  156|  10.7k|    bool pass_failed) {
  157|       |  // It's safe to capture |this| here because the callback will be owned by the
  158|       |  // DynamicChannel, which this registry owns.
  159|  10.7k|  auto return_chan = [this,
  160|  10.7k|                      channel,
  161|  10.7k|                      open_cb = std::move(open_callback),
  162|  10.7k|                      pass_failed]() mutable {
  163|  10.7k|    if (channel->IsOpen()) {
  164|  10.7k|      open_cb(channel);
  165|  10.7k|      return;
  166|  10.7k|    }
  167|       |
  168|  10.7k|    bt_log(DEBUG,
  169|  10.7k|           "l2cap",
  170|  10.7k|           "Failed to open dynamic channel %#.4x (remote %#.4x) for PSM %#.4x",
  171|  10.7k|           channel->local_cid(),
  172|  10.7k|           channel->remote_cid(),
  173|  10.7k|           channel->psm());
  174|       |
  175|       |    // TODO(fxbug.dev/42057179): Maybe negotiate channel parameters here?
  176|       |    // For now, just disconnect the channel. Move the callback to the stack
  177|       |    // to prepare for channel destruction.
  178|  10.7k|    auto pass_failure = [cb = std::move(open_cb), pass_failed] {
  179|  10.7k|      if (pass_failed) {
  180|  10.7k|        cb(nullptr);
  181|  10.7k|      }
  182|  10.7k|    };
  183|       |
  184|       |    // This lambda is owned by the channel, so captures are no longer valid
  185|       |    // after this call.
  186|  10.7k|    auto disconn_done_cb = [self = GetWeakPtr(), channel] {
  187|  10.7k|      if (!self.is_alive()) {
  188|  10.7k|        return;
  189|  10.7k|      }
  190|  10.7k|      self->RemoveChannel(channel);
  191|  10.7k|    };
  192|  10.7k|    channel->Disconnect(std::move(disconn_done_cb));
  193|       |
  194|  10.7k|    pass_failure();
  195|  10.7k|  };
  196|       |
  197|  10.7k|  channel->Open(std::move(return_chan));
  198|  10.7k|}
_ZN2bt5l2cap8internal22DynamicChannelRegistry21OnChannelDisconnectedEPNS1_14DynamicChannelE:
  200|     18|void DynamicChannelRegistry::OnChannelDisconnected(DynamicChannel* channel) {
  201|     18|  if (channel->opened()) {
  ------------------
  |  Branch (201:7): [True: 18, False: 0]
  ------------------
  202|     18|    close_cb_(channel);
  203|     18|  }
  204|     18|  RemoveChannel(channel);
  205|     18|}
_ZN2bt5l2cap8internal22DynamicChannelRegistry13RemoveChannelEPNS1_14DynamicChannelE:
  207|  2.29k|void DynamicChannelRegistry::RemoveChannel(DynamicChannel* channel) {
  208|  2.29k|  PW_DCHECK(channel);
  ------------------
  |  |   51|  2.29k|  do {                            \
  |  |   52|  2.29k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  2.29k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  2.29k|  do {                                                                         \
  |  |  |  |   40|  2.29k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 2.29k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  2.29k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  2.29k|    }                             \
  |  |   55|  2.29k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  209|  2.29k|  PW_DCHECK(!channel->IsConnected());
  ------------------
  |  |   51|  2.29k|  do {                            \
  |  |   52|  2.29k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  2.29k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  2.29k|  do {                                                                         \
  |  |  |  |   40|  2.29k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 2.29k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  2.29k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  2.29k|    }                             \
  |  |   55|  2.29k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  210|       |
  211|  2.29k|  auto iter = channels_.find(channel->local_cid());
  212|  2.29k|  if (iter == channels_.end()) {
  ------------------
  |  Branch (212:7): [True: 0, False: 2.29k]
  ------------------
  213|      0|    return;
  214|      0|  }
  215|       |
  216|  2.29k|  if (channel != iter->second.get()) {
  ------------------
  |  Branch (216:7): [True: 0, False: 2.29k]
  ------------------
  217|      0|    return;
  218|      0|  }
  219|       |
  220|  2.29k|  channels_.erase(iter);
  221|  2.29k|}
dynamic_channel_registry.cc:_ZZN2bt5l2cap8internal22DynamicChannelRegistry15ActivateChannelEPNS1_14DynamicChannelEN3fit13function_implILm16ELb0EFvPKS3_ENSt3__19allocatorISt4byteEEEEbEN3$_0clEv:
  162|  3.46k|                      pass_failed]() mutable {
  163|  3.46k|    if (channel->IsOpen()) {
  ------------------
  |  Branch (163:9): [True: 180, False: 3.28k]
  ------------------
  164|    180|      open_cb(channel);
  165|    180|      return;
  166|    180|    }
  167|       |
  168|  3.46k|    bt_log(DEBUG,
  ------------------
  |  |  141|  3.28k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.28k|  do {                                                                     \
  |  |  |  |   74|  3.28k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.28k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.28k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.28k|  do {                                                    \
  |  |  |  |  |  |   56|  3.28k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.28k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.28k|           module,                                        \
  |  |  |  |  |  |   59|  3.28k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.28k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.28k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.28k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  3.28k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  3.28k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  3.28k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  3.28k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  3.28k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  3.28k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  3.28k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.28k|    }                                                                      \
  |  |  |  |   77|  3.28k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.28k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.28k|         tag,                                      \
  |  |  144|  3.28k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.28k|         __VA_ARGS__);                             \
  |  |  146|  3.28k|  ::bt::internal::CheckFormat(tag)
  ------------------
  169|  3.28k|           "l2cap",
  170|  3.28k|           "Failed to open dynamic channel %#.4x (remote %#.4x) for PSM %#.4x",
  171|  3.28k|           channel->local_cid(),
  172|  3.28k|           channel->remote_cid(),
  173|  3.28k|           channel->psm());
  174|       |
  175|       |    // TODO(fxbug.dev/42057179): Maybe negotiate channel parameters here?
  176|       |    // For now, just disconnect the channel. Move the callback to the stack
  177|       |    // to prepare for channel destruction.
  178|  3.28k|    auto pass_failure = [cb = std::move(open_cb), pass_failed] {
  179|  3.28k|      if (pass_failed) {
  180|  3.28k|        cb(nullptr);
  181|  3.28k|      }
  182|  3.28k|    };
  183|       |
  184|       |    // This lambda is owned by the channel, so captures are no longer valid
  185|       |    // after this call.
  186|  3.28k|    auto disconn_done_cb = [self = GetWeakPtr(), channel] {
  187|  3.28k|      if (!self.is_alive()) {
  188|  3.28k|        return;
  189|  3.28k|      }
  190|  3.28k|      self->RemoveChannel(channel);
  191|  3.28k|    };
  192|  3.28k|    channel->Disconnect(std::move(disconn_done_cb));
  193|       |
  194|  3.28k|    pass_failure();
  195|  3.28k|  };
dynamic_channel_registry.cc:_ZZZN2bt5l2cap8internal22DynamicChannelRegistry15ActivateChannelEPNS1_14DynamicChannelEN3fit13function_implILm16ELb0EFvPKS3_ENSt3__19allocatorISt4byteEEEEbEN3$_0clEvENKUlvE0_clEv:
  186|  2.27k|    auto disconn_done_cb = [self = GetWeakPtr(), channel] {
  187|  2.27k|      if (!self.is_alive()) {
  ------------------
  |  Branch (187:11): [True: 0, False: 2.27k]
  ------------------
  188|      0|        return;
  189|      0|      }
  190|  2.27k|      self->RemoveChannel(channel);
  191|  2.27k|    };
dynamic_channel_registry.cc:_ZZZN2bt5l2cap8internal22DynamicChannelRegistry15ActivateChannelEPNS1_14DynamicChannelEN3fit13function_implILm16ELb0EFvPKS3_ENSt3__19allocatorISt4byteEEEEbEN3$_0clEvENKUlvE_clEv:
  178|  3.28k|    auto pass_failure = [cb = std::move(open_cb), pass_failed] {
  179|  3.28k|      if (pass_failed) {
  ------------------
  |  Branch (179:11): [True: 0, False: 3.28k]
  ------------------
  180|      0|        cb(nullptr);
  181|      0|      }
  182|  3.28k|    };

_ZN2bt5l2cap13OutboundFrameC2EtRKNS_10ByteBufferENS0_24FrameCheckSequenceOptionE:
   43|   364k|    : channel_id_(channel_id),
   44|   364k|      data_(data.view()),
   45|   364k|      fcs_option_(fcs_option),
   46|   364k|      fcs_(include_fcs() ? std::optional(MakeFcs()) : std::nullopt) {}
  ------------------
  |  Branch (46:12): [True: 0, False: 364k]
  ------------------
_ZNK2bt5l2cap13OutboundFrame4sizeEv:
   48|  1.46M|size_t OutboundFrame::size() const {
   49|  1.46M|  return sizeof(BasicHeader) + data_.size() +
   50|  1.46M|         (include_fcs() ? sizeof(FrameCheckSequence) : 0);
  ------------------
  |  Branch (50:11): [True: 0, False: 1.46M]
  ------------------
   51|  1.46M|}
_ZN2bt5l2cap13OutboundFrame15WriteToFragmentENS_17MutableBufferViewEm:
   54|   365k|                                    size_t offset) {
   55|       |  // Build a table of the pages making up the frame's content, in sorted order.
   56|   365k|  const StaticByteBuffer header_buffer = MakeBasicHeader();
   57|   365k|  const std::optional fcs_buffer =
   58|   365k|      include_fcs() ? std::optional(MakeFcs()) : std::nullopt;
  ------------------
  |  Branch (58:7): [True: 0, False: 365k]
  ------------------
   59|   365k|  const BufferView footer_buffer =
   60|   365k|      fcs_buffer ? fcs_buffer->view() : BufferView();
  ------------------
  |  Branch (60:7): [True: 0, False: 365k]
  ------------------
   61|   365k|  const std::array pages = {
   62|   365k|      header_buffer.view(), data_.view(), footer_buffer, BufferView()};
   63|   365k|  const std::array offsets = {size_t{0},
   64|   365k|                              header_buffer.size(),
   65|   365k|                              header_buffer.size() + data_.size(),
   66|   365k|                              size()};
   67|   365k|  static_assert(pages.size() == offsets.size());
   68|       |
   69|   365k|  PW_CHECK(offset <= size());
  ------------------
  |  |   39|   365k|  do {                                                                         \
  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   70|   365k|  size_t output_offset = 0;
   71|       |
   72|       |  // Find the last page whose offset is not greater than the current offset.
   73|   365k|  const auto page_iter =
   74|   365k|      std::prev(std::upper_bound(offsets.begin(), offsets.end(), offset));
   75|   365k|  for (size_t page_index = page_iter - offsets.begin();
   76|  1.09M|       page_index < pages.size();
  ------------------
  |  Branch (76:8): [True: 1.09M, False: 0]
  ------------------
   77|  1.09M|       page_index++) {
   78|  1.09M|    if (fragment_payload.size() - output_offset == 0) {
  ------------------
  |  Branch (78:9): [True: 365k, False: 730k]
  ------------------
   79|   365k|      break;
   80|   365k|    }
   81|   730k|    const auto& page_buffer = pages[page_index];
   82|   730k|    const size_t bytes_copied =
   83|   730k|        CopyBounded(fragment_payload.mutable_view(output_offset),
   84|   730k|                    page_buffer.view(offset - offsets[page_index]));
   85|   730k|    offset += bytes_copied;
   86|   730k|    output_offset += bytes_copied;
   87|   730k|  }
   88|   365k|  PW_CHECK(output_offset <= fragment_payload.size());
  ------------------
  |  |   39|   365k|  do {                                                                         \
  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   89|   365k|}
_ZNK2bt5l2cap13OutboundFrame15MakeBasicHeaderEv:
   91|   365k|OutboundFrame::BasicHeaderBuffer OutboundFrame::MakeBasicHeader() const {
   92|       |  // Length is "the length of the entire L2CAP PDU in octets, excluding the
   93|       |  // Length and CID field" (v5.0 Vol 3, Part A, Section 3.3.1)
   94|   365k|  const size_t pdu_content_length = size() - sizeof(BasicHeader);
   95|   365k|  PW_CHECK(pdu_content_length <=
  ------------------
  |  |   39|   365k|  do {                                                                         \
  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   96|   365k|               std::numeric_limits<decltype(BasicHeader::length)>::max(),
   97|   365k|           "PDU payload is too large to be encoded");
   98|   365k|  BasicHeader header = {};
   99|   365k|  header.length = pw::bytes::ConvertOrderTo(
  100|   365k|      cpp20::endian::little, static_cast<uint16_t>(pdu_content_length));
  101|   365k|  header.channel_id =
  102|   365k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, channel_id_);
  103|   365k|  BasicHeaderBuffer buffer;
  104|   365k|  buffer.WriteObj(header);
  105|   365k|  return buffer;
  106|   365k|}
_ZN2bt5l2cap10FragmenterC2Ett:
  122|   143k|    : connection_handle_(connection_handle),
  123|   143k|      max_acl_payload_size_(max_acl_payload_size) {
  124|   143k|  PW_CHECK(connection_handle_ <= hci_spec::kConnectionHandleMax);
  ------------------
  |  |   39|   143k|  do {                                                                         \
  |  |   40|   143k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 143k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   143k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  125|   143k|  PW_CHECK(max_acl_payload_size_);
  ------------------
  |  |   39|   143k|  do {                                                                         \
  |  |   40|   143k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 143k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   143k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  126|   143k|  PW_CHECK(max_acl_payload_size_ >= sizeof(BasicHeader));
  ------------------
  |  |   39|   143k|  do {                                                                         \
  |  |   40|   143k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 143k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   143k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  127|   143k|}
_ZNK2bt5l2cap10Fragmenter10BuildFrameEtRKNS_10ByteBufferENS0_24FrameCheckSequenceOptionEb:
  157|   364k|                           bool flushable) const {
  158|   364k|  PW_DCHECK(data.size() <= kMaxBasicFramePayloadSize);
  ------------------
  |  |   51|   364k|  do {                            \
  |  |   52|   364k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   364k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   364k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   364k|  do {                                                                         \
  |  |  |  |   40|   364k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 364k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   364k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   364k|    }                             \
  |  |   55|   364k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  159|   364k|  PW_DCHECK(channel_id);
  ------------------
  |  |   51|   364k|  do {                            \
  |  |   52|   364k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   364k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   364k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   364k|  do {                                                                         \
  |  |  |  |   40|   364k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 364k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   364k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   364k|    }                             \
  |  |   55|   364k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  160|       |
  161|   364k|  OutboundFrame frame(channel_id, data, fcs_option);
  162|   364k|  const size_t frame_size = frame.size();
  163|   364k|  const size_t num_fragments = frame_size / max_acl_payload_size_ +
  164|   364k|                               (frame_size % max_acl_payload_size_ ? 1 : 0);
  ------------------
  |  Branch (164:33): [True: 364k, False: 10]
  ------------------
  165|       |
  166|   364k|  PDU pdu;
  167|   364k|  size_t processed = 0;
  168|   730k|  for (size_t i = 0; i < num_fragments; i++) {
  ------------------
  |  Branch (168:22): [True: 365k, False: 364k]
  ------------------
  169|   365k|    PW_DCHECK(frame_size > processed);
  ------------------
  |  |   51|   365k|  do {                            \
  |  |   52|   365k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   365k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   365k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   365k|  do {                                                                         \
  |  |  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   365k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   365k|    }                             \
  |  |   55|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  170|       |
  171|   365k|    const size_t fragment_size = std::min(
  172|   365k|        frame_size - processed, static_cast<size_t>(max_acl_payload_size_));
  173|   365k|    auto pbf =
  174|   365k|        (i ? hci_spec::ACLPacketBoundaryFlag::kContinuingFragment
  ------------------
  |  Branch (174:10): [True: 1.12k, False: 364k]
  ------------------
  175|   365k|           : (flushable ? hci_spec::ACLPacketBoundaryFlag::kFirstFlushable
  ------------------
  |  Branch (175:15): [True: 0, False: 364k]
  ------------------
  176|   364k|                        : hci_spec::ACLPacketBoundaryFlag::kFirstNonFlushable));
  177|       |
  178|       |    // TODO(armansito): allow passing Active Peripheral Broadcast flag when we
  179|       |    // support it.
  180|   365k|    auto acl_packet =
  181|   365k|        hci::ACLDataPacket::New(connection_handle_,
  182|   365k|                                pbf,
  183|   365k|                                hci_spec::ACLBroadcastFlag::kPointToPoint,
  184|   365k|                                static_cast<uint16_t>(fragment_size));
  185|   365k|    PW_DCHECK(acl_packet);
  ------------------
  |  |   51|   365k|  do {                            \
  |  |   52|   365k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   365k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   365k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   365k|  do {                                                                         \
  |  |  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   365k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   365k|    }                             \
  |  |   55|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  186|       |
  187|   365k|    frame.WriteToFragment(acl_packet->mutable_view()->mutable_payload_data(),
  188|   365k|                          processed);
  189|   365k|    processed += fragment_size;
  190|       |
  191|   365k|    pdu.AppendFragment(std::move(acl_packet));
  192|   365k|  }
  193|       |
  194|       |  // The PDU should have been completely processed if we got here.
  195|   364k|  PW_DCHECK(processed == frame_size);
  ------------------
  |  |   51|   364k|  do {                            \
  |  |   52|   364k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   364k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   364k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   364k|  do {                                                                         \
  |  |  |  |   40|   364k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 364k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   364k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   364k|    }                             \
  |  |   55|   364k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  196|       |
  197|   364k|  return pdu;
  198|   364k|}
fragmenter.cc:_ZN2bt5l2cap12_GLOBAL__N_111CopyBoundedENS_17MutableBufferViewERKNS_10ByteBufferE:
   32|   730k|size_t CopyBounded(MutableBufferView destination, const ByteBuffer& source) {
   33|   730k|  const size_t size = std::min(destination.size(), source.size());
   34|   730k|  source.Copy(&destination, 0, size);
   35|   730k|  return size;
   36|   730k|}

LLVMFuzzerTestOneInput:
  196|  3.05k|extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
  197|  3.05k|  bt::testing::DataFuzzTest fuzz(data, size);
  198|  3.05k|  fuzz.TestBody();
  199|  3.05k|  return 0;
  200|  3.05k|}
_ZN2bt7testing12DataFuzzTestC2EPKhm:
   67|  3.05k|      : data_(data, size), rng_(&data_) {
   68|  3.05k|    set_random_generator(&rng_);
   69|  3.05k|    TestingBase::SetUp();
   70|  3.05k|    const auto bredr_buffer_info =
   71|  3.05k|        hci::DataBufferInfo(kMaxDataPacketLength, kBufferMaxNumPackets);
   72|  3.05k|    InitializeACLDataChannel(bredr_buffer_info);
   73|       |
   74|       |    // Random channel IDs are disabled because they result in infinite loops in
   75|       |    // RandomGenerator::GetInt when the remaining fuzzer data is all 0 or there
   76|       |    // is insufficient remaining data.
   77|  3.05k|    channel_manager_ =
   78|  3.05k|        l2cap::ChannelManager::Create(transport()->acl_data_channel(),
   79|  3.05k|                                      transport()->command_channel(),
   80|  3.05k|                                      /*random_channel_ids=*/false,
   81|  3.05k|                                      dispatcher(),
   82|  3.05k|                                      lease_provider_);
   83|  3.05k|  }
_ZN2bt7testing16FuzzerControllerC2ERN2pw5async10DispatcherE:
   50|  3.05k|      : ControllerTestDoubleBase(pw_dispatcher), WeakSelf(this) {}
_ZN2bt7testing16FuzzerControllerD2Ev:
   51|  3.05k|  ~FuzzerController() override = default;
_ZN2bt7testing16FuzzerController11SendAclDataEN2pw4spanIKSt4byteLm18446744073709551615EEE:
   57|   365k|  void SendAclData([[maybe_unused]] pw::span<const std::byte> data) override {}
_ZN2bt7testing12DataFuzzTest8TestBodyEv:
   91|  3.05k|  void TestBody() override {
   92|  3.05k|    RegisterService();
   93|       |
   94|       |    // The fuzzer times out if the input data is massive (>1MB) and the packets
   95|       |    // are all the minimum size (4), so we have to cap the max number of
   96|       |    // iterations.
   97|   546k|    for (size_t i = 0; i < kMaxNumLoopIterations && data_.remaining_bytes() > 0;
  ------------------
  |  Branch (97:24): [True: 546k, False: 46]
  |  Branch (97:53): [True: 543k, False: 2.33k]
  ------------------
   98|   543k|         i++) {
   99|   543k|      bool run_loop = data_.ConsumeBool();
  100|   543k|      if (run_loop) {
  ------------------
  |  Branch (100:11): [True: 55.5k, False: 488k]
  ------------------
  101|  55.5k|        RunUntilIdle();
  102|  55.5k|      }
  103|       |
  104|   543k|      if (!SendAclPacket()) {
  ------------------
  |  Branch (104:11): [True: 673, False: 543k]
  ------------------
  105|    673|        break;
  106|    673|      }
  107|       |
  108|   543k|      if (data_.ConsumeProbability<float>() < kToggleConnectionChance) {
  ------------------
  |  Branch (108:11): [True: 282k, False: 260k]
  ------------------
  109|   282k|        ToggleConnection();
  110|   282k|      }
  111|   543k|    }
  112|       |
  113|  3.05k|    RunUntilIdle();
  114|  3.05k|  }
_ZN2bt7testing12DataFuzzTest15RegisterServiceEv:
  154|  3.05k|  void RegisterService() {
  155|  3.05k|    channel_manager_->RegisterService(
  156|  3.05k|        l2cap::kAVDTP,
  157|  3.05k|        l2cap::ChannelParameters(),
  158|  3.05k|        [this](l2cap::Channel::WeakPtr chan) {
  159|  3.05k|          if (!chan.is_alive()) {
  160|  3.05k|            return;
  161|  3.05k|          }
  162|  3.05k|          chan->Activate(/*rx_callback=*/[](auto) {}, /*closed_callback=*/
  163|  3.05k|                         [this, id = chan->id()] { channels_.erase(id); });
  164|  3.05k|          channels_.emplace(chan->id(), std::move(chan));
  165|  3.05k|        });
  166|  3.05k|  }
_ZZN2bt7testing12DataFuzzTest15RegisterServiceEvENKUl7WeakPtrINS_5l2cap7ChannelE18DynamicWeakManagerIS4_EEE_clES7_:
  158|    180|        [this](l2cap::Channel::WeakPtr chan) {
  159|    180|          if (!chan.is_alive()) {
  ------------------
  |  Branch (159:15): [True: 0, False: 180]
  ------------------
  160|      0|            return;
  161|      0|          }
  162|    180|          chan->Activate(/*rx_callback=*/[](auto) {}, /*closed_callback=*/
  163|    180|                         [this, id = chan->id()] { channels_.erase(id); });
  164|    180|          channels_.emplace(chan->id(), std::move(chan));
  165|    180|        });
_ZZZN2bt7testing12DataFuzzTest15RegisterServiceEvENKUl7WeakPtrINS_5l2cap7ChannelE18DynamicWeakManagerIS4_EEE_clES7_ENKUlT_E_clINSt3__110unique_ptrINS_10ByteBufferENSC_14default_deleteISE_EEEEEEDaS9_:
  162|     66|          chan->Activate(/*rx_callback=*/[](auto) {}, /*closed_callback=*/
_ZZZN2bt7testing12DataFuzzTest15RegisterServiceEvENKUl7WeakPtrINS_5l2cap7ChannelE18DynamicWeakManagerIS4_EEE_clES7_ENKUlvE_clEv:
  163|    180|                         [this, id = chan->id()] { channels_.erase(id); });
_ZN2bt7testing12DataFuzzTest13SendAclPacketEv:
  116|   543k|  bool SendAclPacket() {
  117|   543k|    if (data_.remaining_bytes() < sizeof(uint64_t)) {
  ------------------
  |  Branch (117:9): [True: 611, False: 543k]
  ------------------
  118|    611|      return false;
  119|    611|    }
  120|       |    // Consumes 8 bytes.
  121|   543k|    auto packet_size = data_.ConsumeIntegralInRange<uint16_t>(
  122|   543k|        sizeof(hci_spec::ACLDataHeader),
  123|   543k|        static_cast<uint16_t>(std::min(static_cast<size_t>(kMaxAclPacketSize),
  124|   543k|                                       data_.remaining_bytes())));
  125|       |
  126|   543k|    auto packet_data = data_.ConsumeBytes<uint8_t>(packet_size);
  127|   543k|    if (packet_data.size() < packet_size) {
  ------------------
  |  Branch (127:9): [True: 62, False: 543k]
  ------------------
  128|       |      // Check if we ran out of fuzzer data.
  129|     62|      return false;
  130|     62|    }
  131|       |
  132|   543k|    MutableBufferView packet_view(packet_data.data(), packet_data.size());
  133|       |
  134|       |    // Use correct length so packets aren't rejected for invalid length.
  135|   543k|    packet_view.AsMutable<hci_spec::ACLDataHeader>()->data_total_length =
  136|   543k|        pw::bytes::ConvertOrderTo(
  137|   543k|            cpp20::endian::little,
  138|   543k|            static_cast<uint16_t>(
  139|   543k|                (packet_view.size() - sizeof(hci_spec::ACLDataHeader))));
  140|       |
  141|       |    // Use correct connection handle so packets aren't rejected/queued for
  142|       |    // invalid handle.
  143|   543k|    uint16_t handle_and_flags =
  144|   543k|        packet_view.ReadMember<&hci_spec::ACLDataHeader::handle_and_flags>();
  145|   543k|    handle_and_flags &= 0xF000;  // Keep flags, clear handle.
  146|   543k|    handle_and_flags |= kHandle;
  147|   543k|    packet_view.AsMutable<hci_spec::ACLDataHeader>()->handle_and_flags =
  148|   543k|        handle_and_flags;
  149|       |
  150|   543k|    PW_CHECK(test_device()->SendACLDataChannelPacket(packet_view));
  ------------------
  |  |   39|   543k|  do {                                                                         \
  |  |   40|   543k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 543k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   543k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  151|   543k|    return true;
  152|   543k|  }
_ZN2bt7testing12DataFuzzTest16ToggleConnectionEv:
  168|   282k|  void ToggleConnection() {
  169|   282k|    if (connection_) {
  ------------------
  |  Branch (169:9): [True: 139k, False: 142k]
  ------------------
  170|   139k|      channel_manager_->RemoveConnection(kHandle);
  171|   139k|      connection_ = false;
  172|   139k|      return;
  173|   139k|    }
  174|       |
  175|   142k|    channel_manager_->AddACLConnection(
  176|   142k|        kHandle,
  177|   142k|        pw::bluetooth::emboss::ConnectionRole::CENTRAL,
  178|   142k|        /*link_error_callback=*/[] {},
  179|   142k|        /*security_callback=*/[](auto, auto, auto) {},
  180|       |        /*fixed_channels_callback=*/
  181|   142k|        [](l2cap::ChannelManager::BrEdrFixedChannels) {});
  182|   142k|    connection_ = true;
  183|   142k|  }
_ZZN2bt7testing12DataFuzzTest16ToggleConnectionEvENKUlNS_5l2cap14ChannelManager18BrEdrFixedChannelsEE_clES4_:
  181|    418|        [](l2cap::ChannelManager::BrEdrFixedChannels) {});
_ZN2bt7testing12DataFuzzTestD2Ev:
   85|  3.05k|  ~DataFuzzTest() override {
   86|  3.05k|    channel_manager_ = nullptr;
   87|  3.05k|    bt::set_random_generator(nullptr);
   88|  3.05k|    TestingBase::TearDown();
   89|  3.05k|  }

_ZN2bt5l2cap8internal11LogicalLinkC2EtNS_8LinkTypeEN2pw9bluetooth6emboss14ConnectionRoleEtN3fit13function_implILm16ELb0EFNSt3__18optionalINS0_11ServiceInfoINS9_ILm16ELb0EFv7WeakPtrINS0_7ChannelE18DynamicWeakManagerISE_EEENSA_9allocatorISt4byteEEEEEEEEttESL_EEPNS_3hci14AclDataChannelEPNSR_14CommandChannelEbRNS0_18A2dpOffloadManagerERNS4_5async10DispatcherERNS4_18bluetooth_sapphire13LeaseProviderE:
   99|   142k|    : wake_lease_provider_(wake_lease_provider),
  100|   142k|      pw_dispatcher_(dispatcher),
  101|   142k|      handle_(handle),
  102|   142k|      type_(type),
  103|   142k|      role_(role),
  104|   142k|      max_acl_payload_size_(max_acl_payload_size),
  105|   142k|      flush_timeout_(
  106|   142k|          pw::chrono::SystemClock::duration::max(), /*convert=*/
  107|   142k|          [](pw::chrono::SystemClock::duration f) {
  108|   142k|            return std::chrono::duration_cast<std::chrono::milliseconds>(f)
  109|   142k|                .count();
  110|   142k|          }),
  111|   142k|      closed_(false),
  112|   142k|      recombiner_(handle, wake_lease_provider),
  113|   142k|      acl_data_channel_(acl_data_channel),
  114|   142k|      cmd_channel_(cmd_channel),
  115|   142k|      query_service_cb_(std::move(query_service_cb)),
  116|   142k|      a2dp_offload_manager_(a2dp_offload_manager),
  117|   142k|      weak_conn_interface_(this),
  118|   142k|      weak_self_(this) {
  119|   142k|  PW_CHECK(type_ == bt::LinkType::kLE || type_ == bt::LinkType::kACL);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   285k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:11): [True: 0, False: 142k]
  |  |  |  Branch (40:11): [True: 142k, False: 0]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  120|   142k|  PW_CHECK(acl_data_channel_);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  121|   142k|  PW_CHECK(cmd_channel_);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  122|   142k|  PW_CHECK(query_service_cb_);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  123|       |
  124|       |  // Allow packets to be sent on this link immediately.
  125|   142k|  acl_data_channel_->RegisterConnection(weak_conn_interface_.GetWeakPtr());
  126|       |
  127|       |  // Set up the signaling channel and dynamic channels.
  128|   142k|  if (type_ == bt::LinkType::kLE) {
  ------------------
  |  Branch (128:7): [True: 0, False: 142k]
  ------------------
  129|      0|    signaling_channel_ = std::make_unique<LESignalingChannel>(
  130|      0|        OpenFixedChannel(kLESignalingChannelId),
  131|      0|        role_,
  132|      0|        pw_dispatcher_,
  133|      0|        wake_lease_provider_);
  134|      0|    dynamic_registry_ = std::make_unique<LeDynamicChannelRegistry>(
  135|      0|        signaling_channel_.get(),
  136|      0|        fit::bind_member<&LogicalLink::OnChannelDisconnectRequest>(this),
  137|      0|        fit::bind_member<&LogicalLink::OnServiceRequest>(this),
  138|      0|        random_channel_ids);
  139|       |
  140|      0|    ServeConnectionParameterUpdateRequest();
  141|      0|    ServeFlowControlCreditInd();
  142|   142k|  } else {
  143|   142k|    signaling_channel_ = std::make_unique<BrEdrSignalingChannel>(
  144|   142k|        OpenFixedChannel(kSignalingChannelId),
  145|   142k|        role_,
  146|   142k|        pw_dispatcher_,
  147|   142k|        wake_lease_provider_);
  148|   142k|    dynamic_registry_ = std::make_unique<BrEdrDynamicChannelRegistry>(
  149|   142k|        signaling_channel_.get(),
  150|   142k|        fit::bind_member<&LogicalLink::OnChannelDisconnectRequest>(this),
  151|   142k|        fit::bind_member<&LogicalLink::OnServiceRequest>(this),
  152|   142k|        random_channel_ids);
  153|       |
  154|   142k|    SendFixedChannelsSupportedInformationRequest();
  155|   142k|  }
  156|   142k|}
_ZN2bt5l2cap8internal11LogicalLinkD2Ev:
  158|   142k|LogicalLink::~LogicalLink() {
  159|   142k|  bt_log(DEBUG, "l2cap", "LogicalLink destroyed (handle: %#.4x)", handle_);
  ------------------
  |  |  141|   142k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   142k|  do {                                                                     \
  |  |  |  |   74|   142k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   142k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   142k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   142k|  do {                                                    \
  |  |  |  |  |  |   56|   142k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   142k|           (flags),                                       \
  |  |  |  |  |  |   58|   142k|           module,                                        \
  |  |  |  |  |  |   59|   142k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   142k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   142k|           __func__,                                      \
  |  |  |  |  |  |   62|   142k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   142k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   142k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   142k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   142k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   142k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   142k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   142k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   142k|    }                                                                      \
  |  |  |  |   77|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   142k|         PW_LOG_LEVEL,                             \
  |  |  143|   142k|         tag,                                      \
  |  |  144|   142k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   142k|         __VA_ARGS__);                             \
  |  |  146|   142k|  ::bt::internal::CheckFormat(tag)
  ------------------
  160|   142k|  PW_CHECK(closed_);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  161|   142k|}
_ZN2bt5l2cap8internal11LogicalLink16OpenFixedChannelEt:
  163|   142k|Channel::WeakPtr LogicalLink::OpenFixedChannel(ChannelId id) {
  164|   142k|  PW_DCHECK(!closed_);
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  165|       |
  166|   142k|  TRACE_DURATION("bluetooth",
  167|   142k|                 "LogicalLink::OpenFixedChannel",
  168|   142k|                 "handle",
  169|   142k|                 handle_,
  170|   142k|                 "channel id",
  171|   142k|                 id);
  172|       |
  173|       |  // We currently only support the pre-defined fixed-channels.
  174|   142k|  if (!AllowsFixedChannel(id)) {
  ------------------
  |  Branch (174:7): [True: 0, False: 142k]
  ------------------
  175|      0|    bt_log(ERROR, "l2cap", "cannot open fixed channel with id %#.4x", id);
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  176|      0|    return Channel::WeakPtr();
  177|      0|  }
  178|       |
  179|   142k|  auto iter = channels_.find(id);
  180|   142k|  if (iter != channels_.end()) {
  ------------------
  |  Branch (180:7): [True: 0, False: 142k]
  ------------------
  181|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  182|      0|           "l2cap",
  183|      0|           "channel is already open! (id: %#.4x, handle: %#.4x)",
  184|      0|           id,
  185|      0|           handle_);
  186|      0|    return Channel::WeakPtr();
  187|      0|  }
  188|       |
  189|   142k|  std::unique_ptr<ChannelImpl> chan =
  190|   142k|      ChannelImpl::CreateFixedChannel(pw_dispatcher_,
  191|   142k|                                      id,
  192|   142k|                                      GetWeakPtr(),
  193|   142k|                                      cmd_channel_->AsWeakPtr(),
  194|   142k|                                      max_acl_payload_size_,
  195|   142k|                                      a2dp_offload_manager_,
  196|   142k|                                      wake_lease_provider_);
  197|       |
  198|   142k|  auto pp_iter = pending_pdus_.find(id);
  199|   142k|  if (pp_iter != pending_pdus_.end()) {
  ------------------
  |  Branch (199:7): [True: 44, False: 142k]
  ------------------
  200|    398|    for (auto& pdu : pp_iter->second) {
  ------------------
  |  Branch (200:20): [True: 398, False: 44]
  ------------------
  201|    398|      TRACE_FLOW_END(
  202|    398|          "bluetooth", "LogicalLink::HandleRxPacket queued", pdu.trace_id());
  203|    398|      chan->HandleRxPdu(std::move(pdu));
  204|    398|    }
  205|     44|    pending_pdus_.erase(pp_iter);
  206|     44|  }
  207|       |
  208|   142k|  if (inspect_properties_.channels_node) {
  ------------------
  |  Branch (208:7): [True: 0, False: 142k]
  ------------------
  209|      0|    chan->AttachInspect(inspect_properties_.channels_node,
  210|      0|                        inspect_properties_.channels_node.UniqueName(
  211|      0|                            kInspectChannelNodePrefix));
  212|      0|  }
  213|       |
  214|   142k|  channels_[id] = std::move(chan);
  215|       |
  216|       |  // Reset round robin iterator
  217|   142k|  current_channel_ = channels_.begin();
  218|       |
  219|   142k|  return channels_[id]->GetWeakPtr();
  220|   142k|}
_ZN2bt5l2cap8internal11LogicalLink21OpenFixedChannelAsyncEtN3fit13function_implILm16ELb0EFv7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS6_EEENSt3__19allocatorISt4byteEEEE:
  223|   142k|                                        ChannelCallback callback) {
  224|   142k|  if (type_ == LinkType::kACL) {
  ------------------
  |  Branch (224:7): [True: 142k, False: 0]
  ------------------
  225|   142k|    if (fixed_channels_supported_callbacks_.count(channel_id) > 0) {
  ------------------
  |  Branch (225:9): [True: 0, False: 142k]
  ------------------
  226|      0|      bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  227|      0|             "l2cap",
  228|      0|             "fixed channel is already pending! (id: %#.4x, handle: %#.4x)",
  229|      0|             channel_id,
  230|      0|             handle_);
  231|      0|      callback(Channel::WeakPtr());
  232|      0|      return;
  233|      0|    }
  234|       |
  235|   142k|    if (!fixed_channels_supported_.has_value()) {
  ------------------
  |  Branch (235:9): [True: 142k, False: 418]
  ------------------
  236|   142k|      fixed_channels_supported_callbacks_.emplace(
  237|   142k|          channel_id, [this, channel_id, cb = std::move(callback)]() mutable {
  238|   142k|            OpenFixedChannelAsync(channel_id, std::move(cb));
  239|   142k|          });
  240|   142k|      return;
  241|   142k|    }
  242|       |
  243|    418|    bool channel_supported = *fixed_channels_supported_ &
  244|    418|                             FixedChannelsSupportedBitForChannelId(channel_id);
  245|       |
  246|    418|    if (!channel_supported) {
  ------------------
  |  Branch (246:9): [True: 149, False: 269]
  ------------------
  247|    149|      bt_log(DEBUG,
  ------------------
  |  |  141|    149|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    149|  do {                                                                     \
  |  |  |  |   74|    149|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    149|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    149|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    149|  do {                                                    \
  |  |  |  |  |  |   56|    149|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    149|           (flags),                                       \
  |  |  |  |  |  |   58|    149|           module,                                        \
  |  |  |  |  |  |   59|    149|           __FILE__,                                      \
  |  |  |  |  |  |   60|    149|           __LINE__,                                      \
  |  |  |  |  |  |   61|    149|           __func__,                                      \
  |  |  |  |  |  |   62|    149|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    149|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    149|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    149|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    149|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    149|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    149|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    149|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    149|    }                                                                      \
  |  |  |  |   77|    149|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    149|         PW_LOG_LEVEL,                             \
  |  |  143|    149|         tag,                                      \
  |  |  144|    149|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    149|         __VA_ARGS__);                             \
  |  |  146|    149|  ::bt::internal::CheckFormat(tag)
  ------------------
  248|    149|             "l2cap",
  249|    149|             "tried to open fixed channel not supported by peer (id: %#.4x, "
  250|    149|             "handle: %#.4x)",
  251|    149|             channel_id,
  252|    149|             handle_);
  253|    149|      callback(Channel::WeakPtr());
  254|    149|      return;
  255|    149|    }
  256|    418|  }
  257|       |
  258|    269|  callback(OpenFixedChannel(channel_id));
  259|    269|}
_ZN2bt5l2cap8internal11LogicalLink14HandleRxPacketENSt3__110unique_ptrINS_3hci6PacketINS_8hci_spec13ACLDataHeaderEEENS3_14default_deleteIS9_EEEE:
  277|   497k|void LogicalLink::HandleRxPacket(hci::ACLDataPacketPtr packet) {
  278|   497k|  PW_DCHECK(packet);
  ------------------
  |  |   51|   497k|  do {                            \
  |  |   52|   497k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   497k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   497k|  do {                                                                         \
  |  |  |  |   40|   497k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 497k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   497k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   497k|    }                             \
  |  |   55|   497k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  279|   497k|  PW_DCHECK(!closed_);
  ------------------
  |  |   51|   497k|  do {                            \
  |  |   52|   497k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   497k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   497k|  do {                                                                         \
  |  |  |  |   40|   497k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 497k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   497k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   497k|    }                             \
  |  |   55|   497k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  280|       |
  281|   497k|  TRACE_DURATION("bluetooth", "LogicalLink::HandleRxPacket", "handle", handle_);
  282|       |
  283|       |  // We do not support the Connectionless data channel, and the active broadcast
  284|       |  // flag can only be used on the connectionless channel.  Drop packets that are
  285|       |  // broadcast.
  286|   497k|  if (packet->broadcast_flag() ==
  ------------------
  |  Branch (286:7): [True: 27.1k, False: 470k]
  ------------------
  287|   497k|      hci_spec::ACLBroadcastFlag::kActivePeripheralBroadcast) {
  288|  27.1k|    bt_log(DEBUG, "l2cap", "Unsupported Broadcast Frame dropped");
  ------------------
  |  |  141|  27.1k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  27.1k|  do {                                                                     \
  |  |  |  |   74|  27.1k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  27.1k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  27.1k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  27.1k|  do {                                                    \
  |  |  |  |  |  |   56|  27.1k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  27.1k|           (flags),                                       \
  |  |  |  |  |  |   58|  27.1k|           module,                                        \
  |  |  |  |  |  |   59|  27.1k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  27.1k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  27.1k|           __func__,                                      \
  |  |  |  |  |  |   62|  27.1k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  27.1k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  27.1k|    }                                                                      \
  |  |  |  |   77|  27.1k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  27.1k|         PW_LOG_LEVEL,                             \
  |  |  143|  27.1k|         tag,                                      \
  |  |  144|  27.1k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  27.1k|         __VA_ARGS__);                             \
  |  |  146|  27.1k|  ::bt::internal::CheckFormat(tag)
  ------------------
  289|  27.1k|    return;
  290|  27.1k|  }
  291|       |
  292|   470k|  auto result = recombiner_.ConsumeFragment(std::move(packet));
  293|   470k|  if (result.frames_dropped) {
  ------------------
  |  Branch (293:7): [True: 361k, False: 109k]
  ------------------
  294|   361k|    bt_log(TRACE, "l2cap", "Frame(s) dropped due to recombination error");
  ------------------
  |  |  141|   361k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   361k|  do {                                                                     \
  |  |  |  |   74|   361k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   361k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   361k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   361k|  do {                                                    \
  |  |  |  |  |  |   56|   361k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   361k|           (flags),                                       \
  |  |  |  |  |  |   58|   361k|           module,                                        \
  |  |  |  |  |  |   59|   361k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   361k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   361k|           __func__,                                      \
  |  |  |  |  |  |   62|   361k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|   361k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   361k|    }                                                                      \
  |  |  |  |   77|   361k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   361k|         PW_LOG_LEVEL,                             \
  |  |  143|   361k|         tag,                                      \
  |  |  144|   361k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   361k|         __VA_ARGS__);                             \
  |  |  146|   361k|  ::bt::internal::CheckFormat(tag)
  ------------------
  295|   361k|  }
  296|       |
  297|   470k|  if (!result.pdu) {
  ------------------
  |  Branch (297:7): [True: 416k, False: 53.4k]
  ------------------
  298|       |    // Either a partial fragment was received, which was buffered for
  299|       |    // recombination, or the packet was dropped.
  300|   416k|    return;
  301|   416k|  }
  302|       |
  303|  53.4k|  PW_DCHECK(result.pdu->is_valid());
  ------------------
  |  |   51|  53.4k|  do {                            \
  |  |   52|  53.4k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  53.4k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  53.4k|  do {                                                                         \
  |  |  |  |   40|  53.4k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 53.4k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  53.4k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  53.4k|    }                             \
  |  |   55|  53.4k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  304|       |
  305|  53.4k|  uint16_t channel_id = result.pdu->channel_id();
  306|  53.4k|  auto iter = channels_.find(channel_id);
  307|  53.4k|  PendingPduMap::iterator pp_iter;
  308|       |
  309|  53.4k|  if (iter == channels_.end()) {
  ------------------
  |  Branch (309:7): [True: 8.34k, False: 45.1k]
  ------------------
  310|       |    // Only buffer data for fixed channels. This prevents stale data that is
  311|       |    // intended for a closed dynamic channel from being delivered to a new
  312|       |    // channel that recycled the former's ID. The downside is that it's possible
  313|       |    // to lose any data that is received after a dynamic channel's connection
  314|       |    // request and before its completed configuration. This would require tricky
  315|       |    // additional state to track "pending open" channels here and it's not clear
  316|       |    // if that is necessary since hosts should not send data before a channel is
  317|       |    // first configured.
  318|  8.34k|    if (!AllowsFixedChannel(channel_id)) {
  ------------------
  |  Branch (318:9): [True: 6.79k, False: 1.55k]
  ------------------
  319|  6.79k|      bt_log(WARN,
  ------------------
  |  |  141|  6.79k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  6.79k|  do {                                                                     \
  |  |  |  |   74|  6.79k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  6.79k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  6.79k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.79k|  do {                                                    \
  |  |  |  |  |  |   56|  6.79k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  6.79k|           (flags),                                       \
  |  |  |  |  |  |   58|  6.79k|           module,                                        \
  |  |  |  |  |  |   59|  6.79k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  6.79k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  6.79k|           __func__,                                      \
  |  |  |  |  |  |   62|  6.79k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  6.79k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  6.79k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  6.79k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  6.79k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  6.79k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  6.79k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  6.79k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  6.79k|    }                                                                      \
  |  |  |  |   77|  6.79k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  6.79k|         PW_LOG_LEVEL,                             \
  |  |  143|  6.79k|         tag,                                      \
  |  |  144|  6.79k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  6.79k|         __VA_ARGS__);                             \
  |  |  146|  6.79k|  ::bt::internal::CheckFormat(tag)
  ------------------
  320|  6.79k|             "l2cap",
  321|  6.79k|             "Dropping PDU for nonexistent dynamic channel %#.4x on link %#.4x",
  322|  6.79k|             channel_id,
  323|  6.79k|             handle_);
  324|  6.79k|      return;
  325|  6.79k|    }
  326|       |
  327|       |    // The packet was received on a channel for which no ChannelImpl currently
  328|       |    // exists. Buffer packets for the channel to receive when it gets created.
  329|  1.55k|    pp_iter = pending_pdus_.emplace(channel_id, std::list<PDU>()).first;
  330|  45.1k|  } else {
  331|       |    // A channel exists. |pp_iter| will be valid only if the drain task has not
  332|       |    // run yet (see LogicalLink::OpenFixedChannel()).
  333|  45.1k|    pp_iter = pending_pdus_.find(channel_id);
  334|  45.1k|  }
  335|       |
  336|  46.7k|  if (pp_iter != pending_pdus_.end()) {
  ------------------
  |  Branch (336:7): [True: 1.55k, False: 45.1k]
  ------------------
  337|  1.55k|    result.pdu->set_trace_id(TRACE_NONCE());
  ------------------
  |  |   24|  1.55k|#define TRACE_NONCE() (0u)
  ------------------
  338|  1.55k|    TRACE_FLOW_BEGIN("bluetooth",
  339|  1.55k|                     "LogicalLink::HandleRxPacket queued",
  340|  1.55k|                     result.pdu->trace_id());
  341|       |
  342|  1.55k|    pp_iter->second.emplace_back(std::move(*result.pdu));
  343|       |
  344|  1.55k|    bt_log(TRACE,
  ------------------
  |  |  141|  1.55k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  1.55k|  do {                                                                     \
  |  |  |  |   74|  1.55k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  1.55k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  1.55k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  1.55k|  do {                                                    \
  |  |  |  |  |  |   56|  1.55k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  1.55k|           (flags),                                       \
  |  |  |  |  |  |   58|  1.55k|           module,                                        \
  |  |  |  |  |  |   59|  1.55k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  1.55k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  1.55k|           __func__,                                      \
  |  |  |  |  |  |   62|  1.55k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  1.55k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  1.55k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  1.55k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  1.55k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  1.55k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  1.55k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  1.55k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  1.55k|    }                                                                      \
  |  |  |  |   77|  1.55k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  1.55k|         PW_LOG_LEVEL,                             \
  |  |  143|  1.55k|         tag,                                      \
  |  |  144|  1.55k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  1.55k|         __VA_ARGS__);                             \
  |  |  146|  1.55k|  ::bt::internal::CheckFormat(tag)
  ------------------
  345|  1.55k|           "l2cap",
  346|  1.55k|           "PDU buffered (channel: %#.4x, ll: %#.4x)",
  347|  1.55k|           channel_id,
  348|  1.55k|           handle_);
  349|  1.55k|    return;
  350|  1.55k|  }
  351|       |
  352|  45.1k|  iter->second->HandleRxPdu(std::move(*result.pdu));
  353|  45.1k|}
_ZNK2bt5l2cap8internal11LogicalLink18HasAvailablePacketEv:
  393|   730k|bool LogicalLink::HasAvailablePacket() const {
  394|   746k|  for (auto& [_, channel] : channels_) {
  ------------------
  |  Branch (394:27): [True: 746k, False: 364k]
  ------------------
  395|       |    // TODO(fxbug.dev/42074553): Check HasSDUs() after transmission engines are
  396|       |    // refactored
  397|   746k|    if (channel->HasPDUs() || channel->HasFragments()) {
  ------------------
  |  Branch (397:9): [True: 364k, False: 381k]
  |  Branch (397:31): [True: 912, False: 380k]
  ------------------
  398|   365k|      return true;
  399|   365k|    }
  400|   746k|  }
  401|   364k|  return false;
  402|   730k|}
_ZN2bt5l2cap8internal11LogicalLink18RoundRobinChannelsEv:
  404|   372k|void LogicalLink::RoundRobinChannels() {
  405|       |  // Go through all channels in map
  406|   372k|  if (next(current_channel_) == channels_.end()) {
  ------------------
  |  Branch (406:7): [True: 364k, False: 8.04k]
  ------------------
  407|   364k|    current_channel_ = channels_.begin();
  408|   364k|  } else {
  409|  8.04k|    current_channel_++;
  410|  8.04k|  }
  411|   372k|}
_ZNK2bt5l2cap8internal11LogicalLink30IsNextPacketContinuingFragmentEv:
  413|   373k|bool LogicalLink::IsNextPacketContinuingFragment() const {
  414|   373k|  return current_pdus_channel_.is_alive() &&
  ------------------
  |  Branch (414:10): [True: 236k, False: 136k]
  ------------------
  415|   373k|         current_pdus_channel_->HasFragments();
  ------------------
  |  Branch (415:10): [True: 912, False: 236k]
  ------------------
  416|   373k|}
_ZN2bt5l2cap8internal11LogicalLink21GetNextOutboundPacketEv:
  418|   365k|std::unique_ptr<hci::ACLDataPacket> LogicalLink::GetNextOutboundPacket() {
  419|   373k|  for (size_t i = 0; i < channels_.size(); i++) {
  ------------------
  |  Branch (419:22): [True: 373k, False: 0]
  ------------------
  420|   373k|    if (!IsNextPacketContinuingFragment()) {
  ------------------
  |  Branch (420:9): [True: 372k, False: 912]
  ------------------
  421|   372k|      current_pdus_channel_ = ChannelImpl::WeakPtr();
  422|       |
  423|       |      // Go to next channel to try and get next packet to send
  424|   372k|      RoundRobinChannels();
  425|       |
  426|   372k|      if (current_channel_->second->HasPDUs()) {
  ------------------
  |  Branch (426:11): [True: 364k, False: 7.88k]
  ------------------
  427|   364k|        current_pdus_channel_ = current_channel_->second->GetWeakPtr();
  428|   364k|      }
  429|   372k|    }
  430|       |
  431|   373k|    if (current_pdus_channel_.is_alive()) {
  ------------------
  |  Branch (431:9): [True: 365k, False: 7.88k]
  ------------------
  432|       |      // Next packet will either be a starting or continuing fragment
  433|   365k|      return current_pdus_channel_->GetNextOutboundPacket();
  434|   365k|    }
  435|   373k|  }
  436|       |  // All channels are empty
  437|       |  // This should never actually return a nullptr since we only call
  438|       |  // LogicalLink::GetNextOutboundPacket() when LogicalLink::HasAvailablePacket()
  439|       |  // is true
  440|      0|  return nullptr;
  441|   365k|}
_ZN2bt5l2cap8internal11LogicalLink25OnOutboundPacketAvailableEv:
  443|   378k|void LogicalLink::OnOutboundPacketAvailable() {
  444|   378k|  acl_data_channel_->OnOutboundPacketAvailable();
  445|   378k|}
_ZN2bt5l2cap8internal11LogicalLink18set_error_callbackEN3fit13function_implILm16ELb0EFvvENSt3__19allocatorISt4byteEEEE:
  447|   142k|void LogicalLink::set_error_callback(fit::closure callback) {
  448|   142k|  link_error_cb_ = std::move(callback);
  449|   142k|}
_ZN2bt5l2cap8internal11LogicalLink29set_security_upgrade_callbackEN3fit13function_implILm16ELb0EFvtNS_2sm13SecurityLevelENS4_ILm16ELb0EFvNS3_6resultINS_5ErrorINS5_9ErrorCodeEEEJEEEENSt3__19allocatorISt4byteEEEEESG_EE:
  452|   142k|    SecurityUpgradeCallback callback) {
  453|   142k|  security_callback_ = std::move(callback);
  454|   142k|}
_ZN2bt5l2cap8internal11LogicalLink18AllowsFixedChannelEt:
  461|   151k|bool LogicalLink::AllowsFixedChannel(ChannelId id) {
  462|   151k|  return (type_ == bt::LinkType::kLE) ? IsValidLEFixedChannel(id)
  ------------------
  |  Branch (462:10): [True: 0, False: 151k]
  ------------------
  463|   151k|                                      : IsValidBREDRFixedChannel(id);
  464|   151k|}
_ZN2bt5l2cap8internal11LogicalLink5CloseEv:
  574|   142k|void LogicalLink::Close() {
  575|   142k|  PW_DCHECK(!closed_);
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  576|       |
  577|   142k|  closed_ = true;
  578|       |
  579|   142k|  acl_data_channel_->UnregisterConnection(handle_);
  580|       |
  581|   143k|  for (auto& iter : channels_) {
  ------------------
  |  Branch (581:19): [True: 143k, False: 142k]
  ------------------
  582|   143k|    iter.second->OnClosed();
  583|   143k|  }
  584|   142k|  channels_.clear();
  585|   142k|  dynamic_registry_.reset();
  586|   142k|}
_ZN2bt5l2cap8internal11LogicalLink16OnServiceRequestEt:
  589|  12.5k|LogicalLink::OnServiceRequest(Psm psm) {
  590|  12.5k|  PW_DCHECK(!closed_);
  ------------------
  |  |   51|  12.5k|  do {                            \
  |  |   52|  12.5k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  12.5k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  12.5k|  do {                                                                         \
  |  |  |  |   40|  12.5k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 12.5k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  12.5k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  12.5k|    }                             \
  |  |   55|  12.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  591|       |
  592|       |  // Query upper layer for a service handler attached to this PSM.
  593|  12.5k|  auto result = query_service_cb_(handle_, psm);
  594|  12.5k|  if (!result) {
  ------------------
  |  Branch (594:7): [True: 1.79k, False: 10.7k]
  ------------------
  595|  1.79k|    return std::nullopt;
  596|  1.79k|  }
  597|       |
  598|  10.7k|  auto channel_cb = [this, chan_cb = std::move(result->channel_cb)](
  599|  10.7k|                        const DynamicChannel* dyn_chan) mutable {
  600|  10.7k|    CompleteDynamicOpen(dyn_chan, std::move(chan_cb));
  601|  10.7k|  };
  602|  10.7k|  return DynamicChannelRegistry::ServiceInfo(result->channel_params,
  603|  10.7k|                                             std::move(channel_cb));
  604|  12.5k|}
_ZN2bt5l2cap8internal11LogicalLink26OnChannelDisconnectRequestEPKNS1_14DynamicChannelE:
  606|     18|void LogicalLink::OnChannelDisconnectRequest(const DynamicChannel* dyn_chan) {
  607|     18|  PW_DCHECK(dyn_chan);
  ------------------
  |  |   51|     18|  do {                            \
  |  |   52|     18|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|     18|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|     18|  do {                                                                         \
  |  |  |  |   40|     18|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 18]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|     18|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|     18|    }                             \
  |  |   55|     18|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  608|     18|  PW_DCHECK(!closed_);
  ------------------
  |  |   51|     18|  do {                            \
  |  |   52|     18|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|     18|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|     18|  do {                                                                         \
  |  |  |  |   40|     18|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 18]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|     18|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|     18|    }                             \
  |  |   55|     18|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  609|       |
  610|     18|  auto iter = channels_.find(dyn_chan->local_cid());
  611|     18|  if (iter == channels_.end()) {
  ------------------
  |  Branch (611:7): [True: 0, False: 18]
  ------------------
  612|      0|    bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  613|      0|           "l2cap",
  614|      0|           "No ChannelImpl found for closing dynamic channel %#.4x",
  615|      0|           dyn_chan->local_cid());
  616|      0|    return;
  617|      0|  }
  618|       |
  619|     18|  ChannelImpl* channel = iter->second.get();
  620|     18|  PW_DCHECK(channel->remote_id() == dyn_chan->remote_cid());
  ------------------
  |  |   51|     18|  do {                            \
  |  |   52|     18|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|     18|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|     18|  do {                                                                         \
  |  |  |  |   40|     18|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 18]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|     18|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|     18|    }                             \
  |  |   55|     18|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  621|       |
  622|       |  // Signal closure because this is a remote disconnection.
  623|     18|  channel->OnClosed();
  624|     18|  channels_.erase(iter);
  625|       |
  626|       |  // Reset round robin iterator
  627|     18|  current_channel_ = channels_.begin();
  628|     18|}
_ZN2bt5l2cap8internal11LogicalLink19CompleteDynamicOpenEPKNS1_14DynamicChannelEN3fit13function_implILm16ELb0EFv7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS9_EEENSt3__19allocatorISt4byteEEEE:
  631|    180|                                      ChannelCallback open_cb) {
  632|    180|  PW_DCHECK(!closed_);
  ------------------
  |  |   51|    180|  do {                            \
  |  |   52|    180|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|    180|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|    180|  do {                                                                         \
  |  |  |  |   40|    180|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 180]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|    180|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|    180|    }                             \
  |  |   55|    180|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  633|       |
  634|    180|  if (!dyn_chan) {
  ------------------
  |  Branch (634:7): [True: 0, False: 180]
  ------------------
  635|      0|    open_cb(Channel::WeakPtr());
  636|      0|    return;
  637|      0|  }
  638|       |
  639|    180|  const ChannelId local_cid = dyn_chan->local_cid();
  640|    180|  const ChannelId remote_cid = dyn_chan->remote_cid();
  641|    180|  bt_log(DEBUG,
  ------------------
  |  |  141|    180|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    180|  do {                                                                     \
  |  |  |  |   74|    180|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    180|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    180|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    180|  do {                                                    \
  |  |  |  |  |  |   56|    180|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    180|           (flags),                                       \
  |  |  |  |  |  |   58|    180|           module,                                        \
  |  |  |  |  |  |   59|    180|           __FILE__,                                      \
  |  |  |  |  |  |   60|    180|           __LINE__,                                      \
  |  |  |  |  |  |   61|    180|           __func__,                                      \
  |  |  |  |  |  |   62|    180|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    180|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    180|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    180|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    180|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    180|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    180|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    180|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    180|    }                                                                      \
  |  |  |  |   77|    180|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    180|         PW_LOG_LEVEL,                             \
  |  |  143|    180|         tag,                                      \
  |  |  144|    180|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    180|         __VA_ARGS__);                             \
  |  |  146|    180|  ::bt::internal::CheckFormat(tag)
  ------------------
  642|    180|         "l2cap",
  643|    180|         "Link %#.4x: Channel opened with ID %#.4x (remote ID: %#.4x, psm: %s, "
  644|    180|         "mode: %s)",
  645|    180|         handle_,
  646|    180|         local_cid,
  647|    180|         remote_cid,
  648|    180|         PsmToString(dyn_chan->psm()).c_str(),
  649|    180|         AnyChannelModeToString(dyn_chan->info().mode).c_str());
  650|       |
  651|    180|  auto chan_info = dyn_chan->info();
  652|       |  // Extract preferred flush timeout to avoid creating channel with a flush
  653|       |  // timeout that hasn't been successfully configured yet.
  654|    180|  auto preferred_flush_timeout = chan_info.flush_timeout;
  655|    180|  chan_info.flush_timeout.reset();
  656|       |
  657|    180|  std::unique_ptr<ChannelImpl> chan =
  658|    180|      ChannelImpl::CreateDynamicChannel(pw_dispatcher_,
  659|    180|                                        local_cid,
  660|    180|                                        remote_cid,
  661|    180|                                        GetWeakPtr(),
  662|    180|                                        chan_info,
  663|    180|                                        cmd_channel_->AsWeakPtr(),
  664|    180|                                        max_acl_payload_size_,
  665|    180|                                        a2dp_offload_manager_,
  666|    180|                                        wake_lease_provider_);
  667|    180|  auto chan_weak = chan->GetWeakPtr();
  668|    180|  channels_[local_cid] = std::move(chan);
  669|       |
  670|    180|  if (inspect_properties_.channels_node) {
  ------------------
  |  Branch (670:7): [True: 0, False: 180]
  ------------------
  671|      0|    chan_weak->AttachInspect(inspect_properties_.channels_node,
  672|      0|                             inspect_properties_.channels_node.UniqueName(
  673|      0|                                 kInspectChannelNodePrefix));
  674|      0|  }
  675|       |
  676|       |  // If a flush timeout was requested for this channel, try to set it before
  677|       |  // returning the channel to the client to ensure outbound PDUs have correct
  678|       |  // flushable flag.
  679|    180|  if (preferred_flush_timeout.has_value()) {
  ------------------
  |  Branch (679:7): [True: 0, False: 180]
  ------------------
  680|      0|    chan_weak->SetBrEdrAutomaticFlushTimeout(
  681|      0|        preferred_flush_timeout.value(),
  682|      0|        [cb = std::move(open_cb), chan_weak](auto /*result*/) {
  683|      0|          cb(chan_weak);
  684|      0|        });
  685|      0|    return;
  686|      0|  }
  687|       |
  688|    180|  open_cb(std::move(chan_weak));
  689|    180|}
_ZN2bt5l2cap8internal11LogicalLink44SendFixedChannelsSupportedInformationRequestEv:
  691|   142k|void LogicalLink::SendFixedChannelsSupportedInformationRequest() {
  692|   142k|  PW_CHECK(signaling_channel_);
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  693|       |
  694|   142k|  BrEdrCommandHandler cmd_handler(signaling_channel_.get());
  695|   142k|  if (!cmd_handler.SendInformationRequest(
  ------------------
  |  Branch (695:7): [True: 0, False: 142k]
  ------------------
  696|   142k|          InformationType::kFixedChannelsSupported,
  697|   142k|          [self = GetWeakPtr()](auto& rsp) {
  698|   142k|            if (self.is_alive()) {
  699|   142k|              self->OnRxFixedChannelsSupportedInfoRsp(rsp);
  700|   142k|            }
  701|   142k|          })) {
  702|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  703|      0|           "l2cap",
  704|      0|           "Failed to send Fixed Channels Supported Information Request");
  705|      0|    return;
  706|      0|  }
  707|       |
  708|   142k|  bt_log(TRACE, "l2cap", "Sent Fixed Channels Supported Information Request");
  ------------------
  |  |  141|   142k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   142k|  do {                                                                     \
  |  |  |  |   74|   142k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   142k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   142k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   142k|  do {                                                    \
  |  |  |  |  |  |   56|   142k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   142k|           (flags),                                       \
  |  |  |  |  |  |   58|   142k|           module,                                        \
  |  |  |  |  |  |   59|   142k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   142k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   142k|           __func__,                                      \
  |  |  |  |  |  |   62|   142k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|   142k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   142k|    }                                                                      \
  |  |  |  |   77|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   142k|         PW_LOG_LEVEL,                             \
  |  |  143|   142k|         tag,                                      \
  |  |  144|   142k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   142k|         __VA_ARGS__);                             \
  |  |  146|   142k|  ::bt::internal::CheckFormat(tag)
  ------------------
  709|   142k|}
_ZN2bt5l2cap8internal11LogicalLink33OnRxFixedChannelsSupportedInfoRspERKNS1_19BrEdrCommandHandler19InformationResponseE:
  712|    676|    const BrEdrCommandHandler::InformationResponse& rsp) {
  713|    676|  if (rsp.status() == BrEdrCommandHandler::Status::kReject) {
  ------------------
  |  Branch (713:7): [True: 133, False: 543]
  ------------------
  714|    133|    bt_log(
  ------------------
  |  |  141|    133|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    133|  do {                                                                     \
  |  |  |  |   74|    133|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    133|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    133|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    133|  do {                                                    \
  |  |  |  |  |  |   56|    133|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    133|           (flags),                                       \
  |  |  |  |  |  |   58|    133|           module,                                        \
  |  |  |  |  |  |   59|    133|           __FILE__,                                      \
  |  |  |  |  |  |   60|    133|           __LINE__,                                      \
  |  |  |  |  |  |   61|    133|           __func__,                                      \
  |  |  |  |  |  |   62|    133|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    133|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    133|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    133|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    133|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    133|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    133|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    133|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    133|    }                                                                      \
  |  |  |  |   77|    133|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    133|         PW_LOG_LEVEL,                             \
  |  |  143|    133|         tag,                                      \
  |  |  144|    133|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    133|         __VA_ARGS__);                             \
  |  |  146|    133|  ::bt::internal::CheckFormat(tag)
  ------------------
  715|    133|        TRACE,
  716|    133|        "l2cap",
  717|    133|        "Fixed Channels Supported Information Request rejected (reason %#.4hx)",
  718|    133|        static_cast<unsigned short>(rsp.reject_reason()));
  719|    133|    return;
  720|    133|  }
  721|       |
  722|    543|  if (rsp.result() == InformationResult::kNotSupported) {
  ------------------
  |  Branch (722:7): [True: 10, False: 533]
  ------------------
  723|     10|    bt_log(TRACE,
  ------------------
  |  |  141|     10|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     10|  do {                                                                     \
  |  |  |  |   74|     10|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     10|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     10|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     10|  do {                                                    \
  |  |  |  |  |  |   56|     10|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     10|           (flags),                                       \
  |  |  |  |  |  |   58|     10|           module,                                        \
  |  |  |  |  |  |   59|     10|           __FILE__,                                      \
  |  |  |  |  |  |   60|     10|           __LINE__,                                      \
  |  |  |  |  |  |   61|     10|           __func__,                                      \
  |  |  |  |  |  |   62|     10|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|     10|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     10|    }                                                                      \
  |  |  |  |   77|     10|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     10|         PW_LOG_LEVEL,                             \
  |  |  143|     10|         tag,                                      \
  |  |  144|     10|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     10|         __VA_ARGS__);                             \
  |  |  146|     10|  ::bt::internal::CheckFormat(tag)
  ------------------
  724|     10|           "l2cap",
  725|     10|           "Received Fixed Channels Supported Information Response (result: "
  726|     10|           "Not Supported)");
  727|     10|    return;
  728|     10|  }
  729|       |
  730|    533|  if (rsp.result() != InformationResult::kSuccess) {
  ------------------
  |  Branch (730:7): [True: 68, False: 465]
  ------------------
  731|     68|    bt_log(TRACE,
  ------------------
  |  |  141|     68|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     68|  do {                                                                     \
  |  |  |  |   74|     68|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     68|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     68|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     68|  do {                                                    \
  |  |  |  |  |  |   56|     68|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     68|           (flags),                                       \
  |  |  |  |  |  |   58|     68|           module,                                        \
  |  |  |  |  |  |   59|     68|           __FILE__,                                      \
  |  |  |  |  |  |   60|     68|           __LINE__,                                      \
  |  |  |  |  |  |   61|     68|           __func__,                                      \
  |  |  |  |  |  |   62|     68|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     68|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     68|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     68|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     68|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     68|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     68|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     68|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     68|    }                                                                      \
  |  |  |  |   77|     68|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     68|         PW_LOG_LEVEL,                             \
  |  |  143|     68|         tag,                                      \
  |  |  144|     68|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     68|         __VA_ARGS__);                             \
  |  |  146|     68|  ::bt::internal::CheckFormat(tag)
  ------------------
  732|     68|           "l2cap",
  733|     68|           "Received Fixed Channels Supported Information Response (result: "
  734|     68|           "%.4hx)",
  735|     68|           static_cast<uint16_t>(rsp.result()));
  736|     68|    return;
  737|     68|  }
  738|       |
  739|    465|  if (rsp.type() != InformationType::kFixedChannelsSupported) {
  ------------------
  |  Branch (739:7): [True: 47, False: 418]
  ------------------
  740|     47|    bt_log(TRACE,
  ------------------
  |  |  141|     47|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|     47|  do {                                                                     \
  |  |  |  |   74|     47|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|     47|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|     47|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|     47|  do {                                                    \
  |  |  |  |  |  |   56|     47|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|     47|           (flags),                                       \
  |  |  |  |  |  |   58|     47|           module,                                        \
  |  |  |  |  |  |   59|     47|           __FILE__,                                      \
  |  |  |  |  |  |   60|     47|           __LINE__,                                      \
  |  |  |  |  |  |   61|     47|           __func__,                                      \
  |  |  |  |  |  |   62|     47|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|     47|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|     47|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|     47|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|     47|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|     47|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|     47|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|     47|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|     47|    }                                                                      \
  |  |  |  |   77|     47|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|     47|         PW_LOG_LEVEL,                             \
  |  |  143|     47|         tag,                                      \
  |  |  144|     47|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|     47|         __VA_ARGS__);                             \
  |  |  146|     47|  ::bt::internal::CheckFormat(tag)
  ------------------
  741|     47|           "l2cap",
  742|     47|           "Incorrect Fixed Channels Supported Information Response type "
  743|     47|           "(type: %#.4hx)",
  744|     47|           static_cast<unsigned short>(rsp.type()));
  745|     47|    return;
  746|     47|  }
  747|       |
  748|    465|  bt_log(TRACE,
  ------------------
  |  |  141|    418|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    418|  do {                                                                     \
  |  |  |  |   74|    418|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    418|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    418|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    418|  do {                                                    \
  |  |  |  |  |  |   56|    418|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    418|           (flags),                                       \
  |  |  |  |  |  |   58|    418|           module,                                        \
  |  |  |  |  |  |   59|    418|           __FILE__,                                      \
  |  |  |  |  |  |   60|    418|           __LINE__,                                      \
  |  |  |  |  |  |   61|    418|           __func__,                                      \
  |  |  |  |  |  |   62|    418|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    418|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    418|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    418|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    418|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    418|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    418|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    418|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    418|    }                                                                      \
  |  |  |  |   77|    418|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    418|         PW_LOG_LEVEL,                             \
  |  |  143|    418|         tag,                                      \
  |  |  144|    418|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    418|         __VA_ARGS__);                             \
  |  |  146|    418|  ::bt::internal::CheckFormat(tag)
  ------------------
  749|    418|         "l2cap",
  750|    418|         "Received Fixed Channels Supported Information Response (mask: "
  751|    418|         "%#016" PRIx64 ")",
  752|    418|         rsp.fixed_channels());
  753|       |
  754|    418|  fixed_channels_supported_ = rsp.fixed_channels();
  755|    418|  auto callbacks = std::move(fixed_channels_supported_callbacks_);
  756|    418|  fixed_channels_supported_callbacks_.clear();
  757|    418|  for (auto& [_, cb] : callbacks) {
  ------------------
  |  Branch (757:22): [True: 249, False: 418]
  ------------------
  758|    249|    cb();
  759|    249|  }
  760|    418|}
_ZN2bt5l2cap8internal11LogicalLink18RequestAclPriorityE7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS4_EEN2pw9bluetooth11AclPriorityEN3fit13callback_implILm16ELb0EFvNSB_6resultINSB_6failedEJEEEENSt3__19allocatorISt4byteEEEE:
  796|   142k|    fit::callback<void(fit::result<fit::failed>)> callback) {
  797|   142k|  PW_CHECK(channel.is_alive());
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  798|   142k|  auto iter = channels_.find(channel->id());
  799|   142k|  PW_CHECK(iter != channels_.end());
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  800|   142k|  pending_acl_requests_.push(
  801|   142k|      PendingAclRequest{std::move(channel), priority, std::move(callback)});
  802|   142k|  if (pending_acl_requests_.size() == 1) {
  ------------------
  |  Branch (802:7): [True: 142k, False: 162]
  ------------------
  803|   142k|    HandleNextAclPriorityRequest();
  804|   142k|  }
  805|   142k|}
_ZN2bt5l2cap8internal11LogicalLink28HandleNextAclPriorityRequestEv:
  908|   142k|void LogicalLink::HandleNextAclPriorityRequest() {
  909|   142k|  if (pending_acl_requests_.empty() || closed_) {
  ------------------
  |  Branch (909:7): [True: 18, False: 142k]
  |  Branch (909:40): [True: 142k, False: 18]
  ------------------
  910|   142k|    return;
  911|   142k|  }
  912|       |
  913|     18|  auto& request = pending_acl_requests_.front();
  914|     18|  PW_CHECK(request.callback);
  ------------------
  |  |   39|     18|  do {                                                                         \
  |  |   40|     18|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 18]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|     18|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  915|       |
  916|       |  // Prevent closed channels with queued requests from upgrading channel
  917|       |  // priority. Allow closed channels to downgrade priority so that they can
  918|       |  // clean up their priority on destruction.
  919|     18|  if (!request.channel.is_alive() && request.priority != AclPriority::kNormal) {
  ------------------
  |  Branch (919:7): [True: 0, False: 18]
  |  Branch (919:38): [True: 0, False: 0]
  ------------------
  920|      0|    request.callback(fit::failed());
  921|      0|    pending_acl_requests_.pop();
  922|      0|    HandleNextAclPriorityRequest();
  923|      0|    return;
  924|      0|  }
  925|       |
  926|       |  // Skip sending command if desired priority is already set. Do this here
  927|       |  // instead of Channel in case Channel queues up multiple requests.
  928|     18|  if (request.priority == acl_priority_) {
  ------------------
  |  Branch (928:7): [True: 18, False: 0]
  ------------------
  929|     18|    request.callback(fit::ok());
  930|     18|    pending_acl_requests_.pop();
  931|     18|    HandleNextAclPriorityRequest();
  932|     18|    return;
  933|     18|  }
  934|       |
  935|       |  // If priority is not kNormal, then a channel might be using a conflicting
  936|       |  // priority, and the new priority should not be requested.
  937|      0|  if (acl_priority_ != AclPriority::kNormal) {
  ------------------
  |  Branch (937:7): [True: 0, False: 0]
  ------------------
  938|      0|    for (auto& [chan_id, chan] : channels_) {
  ------------------
  |  Branch (938:32): [True: 0, False: 0]
  ------------------
  939|      0|      if ((request.channel.is_alive() &&
  ------------------
  |  Branch (939:12): [True: 0, False: 0]
  ------------------
  940|      0|           chan.get() == &request.channel.get()) ||
  ------------------
  |  Branch (940:12): [True: 0, False: 0]
  ------------------
  941|      0|          chan->requested_acl_priority() == AclPriority::kNormal) {
  ------------------
  |  Branch (941:11): [True: 0, False: 0]
  ------------------
  942|      0|        continue;
  943|      0|      }
  944|       |
  945|       |      // If the request returns priority to normal but a different channel still
  946|       |      // requires high priority, skip sending command and just report success.
  947|      0|      if (request.priority == AclPriority::kNormal) {
  ------------------
  |  Branch (947:11): [True: 0, False: 0]
  ------------------
  948|      0|        request.callback(fit::ok());
  949|      0|        break;
  950|      0|      }
  951|       |
  952|       |      // If the request tries to upgrade priority but it conflicts with another
  953|       |      // channel's priority (e.g. sink vs. source), report an error.
  954|      0|      if (request.priority != chan->requested_acl_priority()) {
  ------------------
  |  Branch (954:11): [True: 0, False: 0]
  ------------------
  955|      0|        request.callback(fit::failed());
  956|      0|        break;
  957|      0|      }
  958|      0|    }
  959|       |
  960|      0|    if (!request.callback) {
  ------------------
  |  Branch (960:9): [True: 0, False: 0]
  ------------------
  961|      0|      pending_acl_requests_.pop();
  962|      0|      HandleNextAclPriorityRequest();
  963|      0|      return;
  964|      0|    }
  965|      0|  }
  966|       |
  967|      0|  auto cb_wrapper = [self = GetWeakPtr(),
  968|      0|                     cb = std::move(request.callback),
  969|      0|                     priority = request.priority](auto result) mutable {
  970|      0|    if (!self.is_alive()) {
  971|      0|      return;
  972|      0|    }
  973|      0|    if (result.is_ok()) {
  974|      0|      self->acl_priority_ = priority;
  975|      0|    }
  976|      0|    cb(result);
  977|      0|    self->pending_acl_requests_.pop();
  978|      0|    self->HandleNextAclPriorityRequest();
  979|      0|  };
  980|       |
  981|      0|  acl_data_channel_->RequestAclPriority(
  982|      0|      request.priority, handle_, std::move(cb_wrapper));
  983|      0|}
logical_link.cc:_ZN2bt5l2cap8internal12_GLOBAL__N_137FixedChannelsSupportedBitForChannelIdEt:
   72|    418|    ChannelId channel_id) {
   73|    418|  switch (channel_id) {
   74|      0|    case kSignalingChannelId:
  ------------------
  |  Branch (74:5): [True: 0, False: 418]
  ------------------
   75|      0|      return kFixedChannelsSupportedBitSignaling;
   76|      0|    case kConnectionlessChannelId:
  ------------------
  |  Branch (76:5): [True: 0, False: 418]
  ------------------
   77|      0|      return kFixedChannelsSupportedBitConnectionless;
   78|    418|    case kSMPChannelId:
  ------------------
  |  Branch (78:5): [True: 418, False: 0]
  ------------------
   79|    418|      return kFixedChannelsSupportedBitSM;
   80|      0|    default:
  ------------------
  |  Branch (80:5): [True: 0, False: 418]
  ------------------
   81|      0|      return 0;
   82|    418|  }
   83|    418|}
logical_link.cc:_ZN2bt5l2cap8internal12_GLOBAL__N_124IsValidBREDRFixedChannelEt:
   59|   151k|constexpr bool IsValidBREDRFixedChannel(ChannelId id) {
   60|   151k|  switch (id) {
   61|   142k|    case kSignalingChannelId:
  ------------------
  |  Branch (61:5): [True: 142k, False: 8.61k]
  ------------------
   62|   143k|    case kConnectionlessChannelId:
  ------------------
  |  Branch (62:5): [True: 537, False: 150k]
  ------------------
   63|   144k|    case kSMPChannelId:
  ------------------
  |  Branch (63:5): [True: 1.28k, False: 149k]
  ------------------
   64|   144k|      return true;
   65|  6.79k|    default:
  ------------------
  |  Branch (65:5): [True: 6.79k, False: 144k]
  ------------------
   66|  6.79k|      break;
   67|   151k|  }
   68|  6.79k|  return false;
   69|   151k|}
logical_link.cc:_ZZN2bt5l2cap8internal11LogicalLink21OpenFixedChannelAsyncEtN3fit13function_implILm16ELb0EFv7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS6_EEENSt3__19allocatorISt4byteEEEEEN3$_0clEv:
  237|    249|          channel_id, [this, channel_id, cb = std::move(callback)]() mutable {
  238|    249|            OpenFixedChannelAsync(channel_id, std::move(cb));
  239|    249|          });
logical_link.cc:_ZZN2bt5l2cap8internal11LogicalLink16OnServiceRequestEtEN3$_0clEPKNS1_14DynamicChannelE:
  599|    180|                        const DynamicChannel* dyn_chan) mutable {
  600|    180|    CompleteDynamicOpen(dyn_chan, std::move(chan_cb));
  601|    180|  };
logical_link.cc:_ZZN2bt5l2cap8internal11LogicalLink44SendFixedChannelsSupportedInformationRequestEvENK3$_0clIKNS1_19BrEdrCommandHandler19InformationResponseEEEDaRT_:
  697|    676|          [self = GetWeakPtr()](auto& rsp) {
  698|    676|            if (self.is_alive()) {
  ------------------
  |  Branch (698:17): [True: 676, False: 0]
  ------------------
  699|    676|              self->OnRxFixedChannelsSupportedInfoRsp(rsp);
  700|    676|            }
  701|    676|          })) {

_ZN2bt5l2cap3PDUC2EOS1_:
   26|   345k|PDU::PDU(PDU&& other) : fragments_(other.ReleaseFragments()) {}
_ZNK2bt5l2cap3PDU4CopyEPNS_17MutableByteBufferEmm:
   35|  45.5k|size_t PDU::Copy(MutableByteBuffer* out_buffer, size_t pos, size_t size) const {
   36|  45.5k|  PW_DCHECK(out_buffer);
  ------------------
  |  |   51|  45.5k|  do {                            \
  |  |   52|  45.5k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  45.5k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  45.5k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  45.5k|  do {                                                                         \
  |  |  |  |   40|  45.5k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 45.5k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  45.5k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  45.5k|    }                             \
  |  |   55|  45.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   37|  45.5k|  PW_DCHECK(pos <= length());
  ------------------
  |  |   51|  45.5k|  do {                            \
  |  |   52|  45.5k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  45.5k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  45.5k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  45.5k|  do {                                                                         \
  |  |  |  |   40|  45.5k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 45.5k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  45.5k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  45.5k|    }                             \
  |  |   55|  45.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   38|  45.5k|  PW_DCHECK(is_valid());
  ------------------
  |  |   51|  45.5k|  do {                            \
  |  |   52|  45.5k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  45.5k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  45.5k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  45.5k|  do {                                                                         \
  |  |  |  |   40|  45.5k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 45.5k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  45.5k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  45.5k|    }                             \
  |  |   55|  45.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   39|       |
   40|  45.5k|  size_t remaining = std::min(size, length() - pos);
   41|  45.5k|  PW_DCHECK(out_buffer->size() >= remaining);
  ------------------
  |  |   51|  45.5k|  do {                            \
  |  |   52|  45.5k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  45.5k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  45.5k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  45.5k|  do {                                                                         \
  |  |  |  |   40|  45.5k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 45.5k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  45.5k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  45.5k|    }                             \
  |  |   55|  45.5k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   42|  45.5k|  if (!remaining) {
  ------------------
  |  Branch (42:7): [True: 1.90k, False: 43.6k]
  ------------------
   43|  1.90k|    return 0;
   44|  1.90k|  }
   45|       |
   46|  43.6k|  bool found = false;
   47|  43.6k|  size_t offset = 0u;
   48|  89.3k|  for (auto iter = fragments_.begin(); iter != fragments_.end() && remaining;
  ------------------
  |  Branch (48:40): [True: 45.6k, False: 43.6k]
  |  Branch (48:40): [True: 45.6k, False: 43.6k]
  |  Branch (48:68): [True: 45.6k, False: 0]
  ------------------
   49|  45.6k|       ++iter) {
   50|  45.6k|    auto payload = (*iter)->view().payload_data();
   51|       |
   52|       |    // Skip the Basic L2CAP header for the first fragment.
   53|  45.6k|    if (iter == fragments_.begin()) {
  ------------------
  |  Branch (53:9): [True: 43.6k, False: 2.01k]
  ------------------
   54|  43.6k|      payload = payload.view(sizeof(BasicHeader));
   55|  43.6k|    }
   56|       |
   57|       |    // We first find the beginning fragment based on |pos|.
   58|  45.6k|    if (!found) {
  ------------------
  |  Branch (58:9): [True: 43.7k, False: 1.89k]
  ------------------
   59|  43.7k|      size_t fragment_size = payload.size();
   60|  43.7k|      if (pos >= fragment_size) {
  ------------------
  |  Branch (60:11): [True: 117, False: 43.6k]
  ------------------
   61|    117|        pos -= fragment_size;
   62|    117|        continue;
   63|    117|      }
   64|       |
   65|       |      // The beginning fragment has been found.
   66|  43.6k|      found = true;
   67|  43.6k|    }
   68|       |
   69|       |    // Calculate how much to read from the current fragment
   70|  45.5k|    size_t write_size = std::min(payload.size() - pos, remaining);
   71|       |
   72|       |    // Read the fragment into out_buffer->mutable_data() + offset.
   73|  45.5k|    out_buffer->Write(payload.data() + pos, write_size, offset);
   74|       |
   75|       |    // Clear |pos| after using it on the first fragment as all successive
   76|       |    // fragments are read from the beginning.
   77|  45.5k|    if (pos)
  ------------------
  |  Branch (77:9): [True: 0, False: 45.5k]
  ------------------
   78|      0|      pos = 0u;
   79|       |
   80|  45.5k|    offset += write_size;
   81|  45.5k|    remaining -= write_size;
   82|  45.5k|  }
   83|       |
   84|  43.6k|  return offset;
   85|  45.5k|}
_ZN2bt5l2cap3PDU16ReleaseFragmentsEv:
   87|   710k|PDU::FragmentList PDU::ReleaseFragments() {
   88|   710k|  auto out_list = std::move(fragments_);
   89|       |
   90|   710k|  PW_DCHECK(!is_valid());
  ------------------
  |  |   51|   710k|  do {                            \
  |  |   52|   710k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   710k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   710k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   710k|  do {                                                                         \
  |  |  |  |   40|   710k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 710k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   710k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   710k|    }                             \
  |  |   55|   710k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   91|   710k|  return out_list;
   92|   710k|}
_ZNK2bt5l2cap3PDU12basic_headerEv:
   94|   190k|const BasicHeader& PDU::basic_header() const {
   95|   190k|  PW_DCHECK(!fragments_.empty());
  ------------------
  |  |   51|   190k|  do {                            \
  |  |   52|   190k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   190k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   190k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   190k|  do {                                                                         \
  |  |  |  |   40|   190k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 190k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   190k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   190k|    }                             \
  |  |   55|   190k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   96|   190k|  const auto& fragment = *fragments_.begin();
   97|       |
   98|   190k|  PW_DCHECK(fragment->packet_boundary_flag() !=
  ------------------
  |  |   51|   190k|  do {                            \
  |  |   52|   190k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   190k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   190k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   190k|  do {                                                                         \
  |  |  |  |   40|   190k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 190k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   190k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   190k|    }                             \
  |  |   55|   190k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   99|   190k|            hci_spec::ACLPacketBoundaryFlag::kContinuingFragment);
  100|   190k|  return fragment->view().payload<BasicHeader>();
  101|   190k|}
_ZN2bt5l2cap3PDU14AppendFragmentENSt3__110unique_ptrINS_3hci6PacketINS_8hci_spec13ACLDataHeaderEEENS2_14default_deleteIS8_EEEE:
  103|   559k|void PDU::AppendFragment(hci::ACLDataPacketPtr fragment) {
  104|   559k|  PW_DCHECK(fragment);
  ------------------
  |  |   51|   559k|  do {                            \
  |  |   52|   559k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   559k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   559k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   559k|  do {                                                                         \
  |  |  |  |   40|   559k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 559k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   559k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   559k|    }                             \
  |  |   55|   559k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  105|   559k|  PW_DCHECK(!is_valid() || (*fragments_.begin())->connection_handle() ==
  ------------------
  |  |   51|   559k|  do {                            \
  |  |   52|   559k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   559k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   559k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   559k|  do {                                                                         \
  |  |  |  |   40|   579k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 559k]
  |  |  |  |  |  Branch (40:11): [True: 540k, False: 19.3k]
  |  |  |  |  |  Branch (40:11): [True: 19.3k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   559k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   559k|    }                             \
  |  |   55|   559k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  106|   559k|                               fragment->connection_handle());
  107|   559k|  fragments_.push_back(std::move(fragment));
  108|   559k|}

_ZN2bt5l2cap10RecombinerC2EtRN2pw18bluetooth_sapphire13LeaseProviderE:
   36|   142k|    : handle_(handle), wake_lease_provider_(wake_lease_provider) {}
_ZN2bt5l2cap10Recombiner15ConsumeFragmentENSt3__110unique_ptrINS_3hci6PacketINS_8hci_spec13ACLDataHeaderEEENS2_14default_deleteIS8_EEEE:
   38|   470k|Recombiner::Result Recombiner::ConsumeFragment(hci::ACLDataPacketPtr fragment) {
   39|   470k|  PW_DCHECK(fragment);
  ------------------
  |  |   51|   470k|  do {                            \
  |  |   52|   470k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   470k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   470k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   470k|  do {                                                                         \
  |  |  |  |   40|   470k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 470k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   470k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   470k|    }                             \
  |  |   55|   470k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   40|   470k|  PW_DCHECK(fragment->connection_handle() == handle_);
  ------------------
  |  |   51|   470k|  do {                            \
  |  |   52|   470k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   470k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   470k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   470k|  do {                                                                         \
  |  |  |  |   40|   470k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 470k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   470k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   470k|    }                             \
  |  |   55|   470k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   41|   470k|  TRACE_DURATION("bluetooth", "Recombiner::AddFragment");
   42|       |
   43|   470k|  if (!recombination_) {
  ------------------
  |  Branch (43:7): [True: 336k, False: 134k]
  ------------------
   44|   336k|    return ProcessFirstFragment(std::move(fragment));
   45|   336k|  }
   46|       |
   47|       |  // If we received a new initial packet without completing the recombination,
   48|       |  // then drop the entire last sequence.
   49|   134k|  if (fragment->packet_boundary_flag() !=
  ------------------
  |  Branch (49:7): [True: 115k, False: 18.1k]
  ------------------
   50|   134k|      hci_spec::ACLPacketBoundaryFlag::kContinuingFragment) {
   51|   115k|    bt_log(
  ------------------
  |  |  141|   115k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   115k|  do {                                                                     \
  |  |  |  |   74|   115k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   115k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   115k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   115k|  do {                                                    \
  |  |  |  |  |  |   56|   115k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   115k|           (flags),                                       \
  |  |  |  |  |  |   58|   115k|           module,                                        \
  |  |  |  |  |  |   59|   115k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   115k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   115k|           __func__,                                      \
  |  |  |  |  |  |   62|   115k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   115k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   115k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   115k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   115k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   115k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   115k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   115k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   115k|    }                                                                      \
  |  |  |  |   77|   115k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   115k|         PW_LOG_LEVEL,                             \
  |  |  143|   115k|         tag,                                      \
  |  |  144|   115k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   115k|         __VA_ARGS__);                             \
  |  |  146|   115k|  ::bt::internal::CheckFormat(tag)
  ------------------
   52|   115k|        WARN, "l2cap", "expected continuing fragment! (handle: %.4x)", handle_);
   53|   115k|    ClearRecombination();
   54|       |
   55|       |    // Try to initiate a new starting sequence with |fragment|.
   56|   115k|    auto result = ProcessFirstFragment(std::move(fragment));
   57|       |
   58|       |    // Report an error for the dropped frame, even if there was no error
   59|       |    // processing |fragment| itself.
   60|   115k|    result.frames_dropped = true;
   61|   115k|    return result;
   62|   115k|  }
   63|       |
   64|  18.1k|  recombination_->accumulated_length += fragment->view().payload_size();
   65|  18.1k|  recombination_->pdu.AppendFragment(std::move(fragment));
   66|  18.1k|  BeginTrace();
   67|       |
   68|  18.1k|  if (recombination_->accumulated_length >
  ------------------
  |  Branch (68:7): [True: 336, False: 17.8k]
  ------------------
   69|  18.1k|      recombination_->expected_frame_length) {
   70|    336|    bt_log(
  ------------------
  |  |  141|    336|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    336|  do {                                                                     \
  |  |  |  |   74|    336|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    336|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    336|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    336|  do {                                                    \
  |  |  |  |  |  |   56|    336|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    336|           (flags),                                       \
  |  |  |  |  |  |   58|    336|           module,                                        \
  |  |  |  |  |  |   59|    336|           __FILE__,                                      \
  |  |  |  |  |  |   60|    336|           __LINE__,                                      \
  |  |  |  |  |  |   61|    336|           __func__,                                      \
  |  |  |  |  |  |   62|    336|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    336|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    336|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    336|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    336|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    336|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    336|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    336|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    336|    }                                                                      \
  |  |  |  |   77|    336|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    336|         PW_LOG_LEVEL,                             \
  |  |  143|    336|         tag,                                      \
  |  |  144|    336|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    336|         __VA_ARGS__);                             \
  |  |  146|    336|  ::bt::internal::CheckFormat(tag)
  ------------------
   71|    336|        WARN, "l2cap", "continuing fragment too long! (handle: %.4x)", handle_);
   72|    336|    ClearRecombination();
   73|       |
   74|       |    // Drop |fragment| since a continuing fragment cannot begin a sequence.
   75|    336|    return {.pdu = {}, .frames_dropped = true};
   76|    336|  }
   77|       |
   78|  17.8k|  if (recombination_->accumulated_length ==
  ------------------
  |  Branch (78:7): [True: 334, False: 17.5k]
  ------------------
   79|  17.8k|      recombination_->expected_frame_length) {
   80|       |    // The frame is complete!
   81|    334|    auto pdu = std::move(recombination_->pdu);
   82|    334|    ClearRecombination();
   83|    334|    return {.pdu = {std::move(pdu)}, .frames_dropped = false};
   84|    334|  }
   85|       |
   86|       |  // The frame is not complete yet.
   87|  17.5k|  return {.pdu = {}, .frames_dropped = false};
   88|  17.8k|}
_ZN2bt5l2cap10Recombiner20ProcessFirstFragmentENSt3__110unique_ptrINS_3hci6PacketINS_8hci_spec13ACLDataHeaderEEENS2_14default_deleteIS8_EEEE:
   91|   452k|    hci::ACLDataPacketPtr fragment) {
   92|   452k|  PW_DCHECK(fragment);
  ------------------
  |  |   51|   452k|  do {                            \
  |  |   52|   452k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   452k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   452k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   452k|  do {                                                                         \
  |  |  |  |   40|   452k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 452k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   452k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   452k|    }                             \
  |  |   55|   452k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   93|   452k|  PW_DCHECK(!recombination_);
  ------------------
  |  |   51|   452k|  do {                            \
  |  |   52|   452k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   452k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   452k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   452k|  do {                                                                         \
  |  |  |  |   40|   452k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 452k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   452k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   452k|    }                             \
  |  |   55|   452k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   94|       |
   95|       |  // The first fragment needs to at least contain the Basic L2CAP header and
   96|       |  // should not be a continuation fragment.
   97|   452k|  size_t current_length = fragment->view().payload_size();
   98|   452k|  if (fragment->packet_boundary_flag() ==
  ------------------
  |  Branch (98:7): [True: 12.8k, False: 439k]
  ------------------
   99|   452k|          hci_spec::ACLPacketBoundaryFlag::kContinuingFragment ||
  100|   452k|      current_length < sizeof(BasicHeader)) {
  ------------------
  |  Branch (100:7): [True: 213k, False: 225k]
  ------------------
  101|   226k|    bt_log(DEBUG, "l2cap", "bad first fragment (size: %zu)", current_length);
  ------------------
  |  |  141|   226k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   226k|  do {                                                                     \
  |  |  |  |   74|   226k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   226k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   226k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   226k|  do {                                                    \
  |  |  |  |  |  |   56|   226k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   226k|           (flags),                                       \
  |  |  |  |  |  |   58|   226k|           module,                                        \
  |  |  |  |  |  |   59|   226k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   226k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   226k|           __func__,                                      \
  |  |  |  |  |  |   62|   226k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   226k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   226k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   226k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   226k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   226k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   226k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   226k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   226k|    }                                                                      \
  |  |  |  |   77|   226k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   226k|         PW_LOG_LEVEL,                             \
  |  |  143|   226k|         tag,                                      \
  |  |  144|   226k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   226k|         __VA_ARGS__);                             \
  |  |  146|   226k|  ::bt::internal::CheckFormat(tag)
  ------------------
  102|   226k|    return {.pdu = {}, .frames_dropped = true};
  103|   226k|  }
  104|       |
  105|       |  // TODO(armansito): Also validate that the controller honors the HCI packet
  106|       |  // boundary flag contract for the controller-to-host flow direction.
  107|       |
  108|   225k|  size_t expected_frame_length =
  109|   225k|      static_cast<uint16_t>(pw::bytes::ConvertOrderFrom(
  110|   225k|          cpp20::endian::little, GetBasicHeader(*fragment).length)) +
  111|   225k|      sizeof(BasicHeader);
  112|       |
  113|   225k|  if (current_length > expected_frame_length) {
  ------------------
  |  Branch (113:7): [True: 49.6k, False: 175k]
  ------------------
  114|  49.6k|    bt_log(DEBUG,
  ------------------
  |  |  141|  49.6k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  49.6k|  do {                                                                     \
  |  |  |  |   74|  49.6k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  49.6k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  49.6k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  49.6k|  do {                                                    \
  |  |  |  |  |  |   56|  49.6k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  49.6k|           (flags),                                       \
  |  |  |  |  |  |   58|  49.6k|           module,                                        \
  |  |  |  |  |  |   59|  49.6k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  49.6k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  49.6k|           __func__,                                      \
  |  |  |  |  |  |   62|  49.6k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  49.6k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  49.6k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  49.6k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  49.6k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  49.6k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  49.6k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  49.6k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  49.6k|    }                                                                      \
  |  |  |  |   77|  49.6k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  49.6k|         PW_LOG_LEVEL,                             \
  |  |  143|  49.6k|         tag,                                      \
  |  |  144|  49.6k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  49.6k|         __VA_ARGS__);                             \
  |  |  146|  49.6k|  ::bt::internal::CheckFormat(tag)
  ------------------
  115|  49.6k|           "l2cap",
  116|  49.6k|           "fragment malformed: payload too long (expected length: %zu, "
  117|  49.6k|           "fragment length: %zu)",
  118|  49.6k|           expected_frame_length,
  119|  49.6k|           current_length);
  120|  49.6k|    return {.pdu = {}, .frames_dropped = true};
  121|  49.6k|  }
  122|       |
  123|       |  // We can start building a PDU.
  124|   175k|  PDU pdu;
  125|   175k|  pdu.AppendFragment(std::move(fragment));
  126|       |
  127|   175k|  if (current_length == expected_frame_length) {
  ------------------
  |  Branch (127:7): [True: 53.1k, False: 122k]
  ------------------
  128|       |    // The PDU is complete.
  129|  53.1k|    return {.pdu = {std::move(pdu)}, .frames_dropped = false};
  130|  53.1k|  }
  131|       |
  132|   122k|  pw::bluetooth_sapphire::Lease lease =
  133|   122k|      PW_SAPPHIRE_ACQUIRE_LEASE(wake_lease_provider_, "Recombiner")
  ------------------
  |  |   25|   122k|  lease_provider.Acquire(PW_SAPPHIRE_LEASE_TOKEN_EXPR(name))
  |  |  ------------------
  |  |  |  |   37|   122k|#define PW_SAPPHIRE_LEASE_TOKEN_EXPR(name) name
  |  |  ------------------
  ------------------
  134|   122k|          .value_or(pw::bluetooth_sapphire::Lease());
  135|       |
  136|       |  // We need to recombine multiple fragments to obtain a complete PDU.
  137|   122k|  BeginTrace();
  138|   122k|  recombination_ = {.pdu = std::move(pdu),
  139|   122k|                    .expected_frame_length = expected_frame_length,
  140|   122k|                    .accumulated_length = current_length,
  141|   122k|                    .wake_lease = std::move(lease)};
  142|   122k|  return {.pdu = {}, .frames_dropped = false};
  143|   175k|}
_ZN2bt5l2cap10Recombiner18ClearRecombinationEv:
  145|   116k|void Recombiner::ClearRecombination() {
  146|   116k|  PW_DCHECK(recombination_);
  ------------------
  |  |   51|   116k|  do {                            \
  |  |   52|   116k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   116k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   116k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   116k|  do {                                                                         \
  |  |  |  |   40|   116k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 116k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   116k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   116k|    }                             \
  |  |   55|   116k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  147|   116k|  if (recombination_->pdu.is_valid()) {
  ------------------
  |  Branch (147:7): [True: 116k, False: 334]
  ------------------
  148|   116k|    bt_log(DEBUG,
  ------------------
  |  |  141|   116k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   116k|  do {                                                                     \
  |  |  |  |   74|   116k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   116k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   116k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   116k|  do {                                                    \
  |  |  |  |  |  |   56|   116k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   116k|           (flags),                                       \
  |  |  |  |  |  |   58|   116k|           module,                                        \
  |  |  |  |  |  |   59|   116k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   116k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   116k|           __func__,                                      \
  |  |  |  |  |  |   62|   116k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   116k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   116k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   116k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   116k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   116k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   116k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   116k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   116k|    }                                                                      \
  |  |  |  |   77|   116k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   116k|         PW_LOG_LEVEL,                             \
  |  |  143|   116k|         tag,                                      \
  |  |  144|   116k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   116k|         __VA_ARGS__);                             \
  |  |  146|   116k|  ::bt::internal::CheckFormat(tag)
  ------------------
  149|   116k|           "l2cap",
  150|   116k|           "recombiner dropped packet (fragments: %zu, expected length: %zu, "
  151|   116k|           "accumulated length: "
  152|   116k|           "%zu, handle: %.4x)",
  153|   116k|           recombination_->pdu.fragment_count(),
  154|   116k|           recombination_->expected_frame_length,
  155|   116k|           recombination_->accumulated_length,
  156|   116k|           handle_);
  157|   116k|  }
  158|   116k|  recombination_.reset();
  159|   116k|  EndTraces();
  160|   116k|}
_ZN2bt5l2cap10Recombiner10BeginTraceEv:
  162|   140k|void Recombiner::BeginTrace() {
  163|   140k|  if (!TRACE_ENABLED()) {
  ------------------
  |  |   25|   140k|#define TRACE_ENABLED() (false)
  ------------------
  |  Branch (163:7): [Folded - Ignored]
  ------------------
  164|   140k|    return;
  165|   140k|  }
  166|      0|  trace_flow_id_t flow_id = TRACE_NONCE();
  ------------------
  |  |   24|      0|#define TRACE_NONCE() (0u)
  ------------------
  167|      0|  TRACE_FLOW_BEGIN(
  168|      0|      "bluetooth", "Recombiner buffered ACL data fragment", flow_id);
  169|      0|  trace_ids_.push_back(flow_id);
  170|      0|}
_ZN2bt5l2cap10Recombiner9EndTracesEv:
  172|   116k|void Recombiner::EndTraces() {
  173|   116k|  if (!TRACE_ENABLED()) {
  ------------------
  |  |   25|   116k|#define TRACE_ENABLED() (false)
  ------------------
  |  Branch (173:7): [Folded - Ignored]
  ------------------
  174|   116k|    return;
  175|   116k|  }
  176|      0|  for ([[maybe_unused]] auto flow_id : trace_ids_) {
  ------------------
  |  Branch (176:38): [True: 0, False: 0]
  ------------------
  177|      0|    TRACE_FLOW_END(
  178|      0|        "bluetooth", "Recombiner buffered ACL data fragment", flow_id);
  179|      0|  }
  180|      0|  trace_ids_.clear();
  181|      0|}
recombiner.cc:_ZN2bt5l2cap12_GLOBAL__N_114GetBasicHeaderERKNS_3hci6PacketINS_8hci_spec13ACLDataHeaderEEE:
   25|   225k|const BasicHeader& GetBasicHeader(const hci::ACLDataPacket& fragment) {
   26|   225k|  PW_DCHECK(fragment.packet_boundary_flag() !=
  ------------------
  |  |   51|   225k|  do {                            \
  |  |   52|   225k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   225k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   225k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   225k|  do {                                                                         \
  |  |  |  |   40|   225k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 225k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   225k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   225k|    }                             \
  |  |   55|   225k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   27|   225k|            hci_spec::ACLPacketBoundaryFlag::kContinuingFragment);
   28|   225k|  return fragment.view().payload<BasicHeader>();
   29|   225k|}

_ZN2bt5l2cap13ScopedChannelC2E7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS3_EE:
   19|   142k|ScopedChannel::ScopedChannel(Channel::WeakPtr chan) : chan_(std::move(chan)) {}
_ZN2bt5l2cap13ScopedChannelD2Ev:
   24|   142k|ScopedChannel::~ScopedChannel() { Close(); }
_ZN2bt5l2cap13ScopedChannel5CloseEv:
   33|   142k|void ScopedChannel::Close() {
   34|   142k|  if (chan_.is_alive()) {
  ------------------
  |  Branch (34:7): [True: 0, False: 142k]
  ------------------
   35|      0|    chan_->Deactivate();
   36|      0|    chan_ = Channel::WeakPtr();
   37|      0|  }
   38|   142k|}

_ZN2bt5l2cap8internal16SignalingChannelC2E7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS4_EEN2pw9bluetooth6emboss14ConnectionRoleERNS8_5async10DispatcherERNS8_18bluetooth_sapphire13LeaseProviderE:
   32|   142k|    : pw_dispatcher_(dispatcher),
   33|   142k|      wake_lease_provider_(wake_lease_provider),
   34|   142k|      is_open_(true),
   35|   142k|      chan_(std::move(chan)),
   36|   142k|      role_(role),
   37|   142k|      next_cmd_id_(0x01),
   38|   142k|      weak_self_(this) {
   39|   142k|  PW_DCHECK(chan_);
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   142k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   40|   142k|  PW_DCHECK(chan_->id() == kSignalingChannelId ||
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   142k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [True: 142k, False: 0]
  |  |  |  |  |  Branch (40:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   41|   142k|            chan_->id() == kLESignalingChannelId);
   42|       |
   43|       |  // Note: No need to guard against out-of-thread access as these callbacks are
   44|       |  // called on the L2CAP thread.
   45|   142k|  auto self = weak_self_.GetWeakPtr();
   46|   142k|  chan_->Activate(
   47|   142k|      [self](ByteBufferPtr sdu) {
   48|   142k|        if (self.is_alive())
   49|   142k|          self->OnRxBFrame(std::move(sdu));
   50|   142k|      },
   51|   142k|      [self] {
   52|   142k|        if (self.is_alive())
   53|   142k|          self->OnChannelClosed();
   54|   142k|      });
   55|   142k|}
_ZN2bt5l2cap8internal16SignalingChannel11SendRequestEhRKNS_10ByteBufferEN3fit13function_implILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionENS8_6StatusES5_ENSt3__19allocatorISt4byteEEEE:
   59|   297k|                                   ResponseHandler cb) {
   60|   297k|  PW_CHECK(cb);
  ------------------
  |  |   39|   297k|  do {                                                                         \
  |  |   40|   297k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 297k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   297k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   61|       |
   62|   297k|  const std::optional<CommandId> id = GetNextAvailableCommandId();
   63|   297k|  if (!id.has_value()) {
  ------------------
  |  Branch (63:7): [True: 0, False: 297k]
  ------------------
   64|      0|    bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
   65|      0|           "l2cap",
   66|      0|           "sig: all valid command IDs in use for pending requests; can't send "
   67|      0|           "request %#.2x",
   68|      0|           req_code);
   69|      0|    return false;
   70|      0|  }
   71|   297k|  auto command_packet = BuildPacket(req_code, *id, payload);
   72|       |
   73|   297k|  CommandCode response_code = req_code + 1;
   74|   297k|  EnqueueResponse(*command_packet, *id, response_code, std::move(cb));
   75|       |
   76|   297k|  return Send(std::move(command_packet));
   77|   297k|}
_ZN2bt5l2cap8internal16SignalingChannel12ServeRequestEhN3fit13function_implILm16ELb0EFvRKNS_10ByteBufferEPNS1_25SignalingChannelInterface9ResponderEENSt3__19allocatorISt4byteEEEE:
   79|   713k|void SignalingChannel::ServeRequest(CommandCode req_code, RequestDelegate cb) {
   80|   713k|  PW_CHECK(!IsSupportedResponse(req_code));
  ------------------
  |  |   39|   713k|  do {                                                                         \
  |  |   40|   713k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 713k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   713k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   81|   713k|  PW_CHECK(cb);
  ------------------
  |  |   39|   713k|  do {                                                                         \
  |  |   40|   713k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 713k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   713k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   82|   713k|  inbound_handlers_[req_code] = std::move(cb);
   83|   713k|}
_ZN2bt5l2cap8internal16SignalingChannel15EnqueueResponseERKNS_10ByteBufferEhhN3fit13function_implILm16ELb0EFNS1_25SignalingChannelInterface21ResponseHandlerActionENS8_6StatusES5_ENSt3__19allocatorISt4byteEEEE:
  103|   297k|                                       ResponseHandler cb) {
  104|   297k|  PW_CHECK(IsSupportedResponse(response_command_code));
  ------------------
  |  |   39|   297k|  do {                                                                         \
  |  |   40|   297k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 297k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   297k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  105|       |
  106|   297k|  pw::bluetooth_sapphire::Lease wake_lease =
  107|   297k|      PW_SAPPHIRE_ACQUIRE_LEASE(wake_lease_provider_, "SignalingChannel")
  ------------------
  |  |   25|   297k|  lease_provider.Acquire(PW_SAPPHIRE_LEASE_TOKEN_EXPR(name))
  |  |  ------------------
  |  |  |  |   37|   297k|#define PW_SAPPHIRE_LEASE_TOKEN_EXPR(name) name
  |  |  ------------------
  ------------------
  108|   297k|          .value_or(pw::bluetooth_sapphire::Lease());
  109|       |
  110|   297k|  const auto [iter, inserted] =
  111|   297k|      pending_commands_.try_emplace(id,
  112|   297k|                                    request_packet,
  113|   297k|                                    response_command_code,
  114|   297k|                                    std::move(cb),
  115|   297k|                                    pw_dispatcher_,
  116|   297k|                                    std::move(wake_lease));
  117|   297k|  PW_CHECK(inserted);
  ------------------
  |  |   39|   297k|  do {                                                                         \
  |  |   40|   297k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 297k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   297k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  118|       |
  119|       |  // Start the RTX timer per Core Spec v5.0, Volume 3, Part A, Sec 6.2.1 which
  120|       |  // will call OnResponseTimeout when it expires. This timer is canceled if the
  121|       |  // response is received before expiry because OnRxResponse destroys its
  122|       |  // containing PendingCommand.
  123|   297k|  SmartTask& rtx_task = iter->second.response_timeout_task;
  124|   297k|  rtx_task.set_function(
  125|   297k|      [this, id](pw::async::Context /*ctx*/, pw::Status status) {
  126|   297k|        if (status.ok()) {
  127|   297k|          OnResponseTimeout(id, /*retransmit=*/true);
  128|   297k|        }
  129|   297k|      });
  130|   297k|  iter->second.timer_duration = kSignalingChannelResponseTimeout;
  131|   297k|  rtx_task.PostAfter(iter->second.timer_duration);
  132|   297k|}
_ZNK2bt5l2cap8internal16SignalingChannel16IsCommandPendingEh:
  134|   297k|bool SignalingChannel::IsCommandPending(CommandId id) const {
  135|   297k|  return pending_commands_.find(id) != pending_commands_.end();
  136|   297k|}
_ZN2bt5l2cap8internal16SignalingChannel13ResponderImplC2EPS2_hh:
  141|  68.4k|    : sig_(sig), code_(code), id_(id) {
  142|  68.4k|  PW_DCHECK(sig_);
  ------------------
  |  |   51|  68.4k|  do {                            \
  |  |   52|  68.4k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  68.4k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  68.4k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  68.4k|  do {                                                                         \
  |  |  |  |   40|  68.4k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 68.4k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  68.4k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  68.4k|    }                             \
  |  |   55|  68.4k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  143|  68.4k|}
_ZN2bt5l2cap8internal16SignalingChannel13ResponderImpl4SendERKNS_10ByteBufferE:
  145|  51.1k|void SignalingChannel::ResponderImpl::Send(const ByteBuffer& rsp_payload) {
  146|  51.1k|  sig()->SendPacket(code_, id_, rsp_payload);
  147|  51.1k|}
_ZN2bt5l2cap8internal16SignalingChannel13ResponderImpl19RejectNotUnderstoodEv:
  149|  7.88k|void SignalingChannel::ResponderImpl::RejectNotUnderstood() {
  150|  7.88k|  sig()->SendCommandReject(id_, RejectReason::kNotUnderstood, BufferView());
  151|  7.88k|}
_ZN2bt5l2cap8internal16SignalingChannel13ResponderImpl22RejectInvalidChannelIdEtt:
  154|  9.18k|    ChannelId local_cid, ChannelId remote_cid) {
  155|  9.18k|  uint16_t ids[2];
  156|  9.18k|  ids[0] = pw::bytes::ConvertOrderTo(cpp20::endian::little, local_cid);
  157|  9.18k|  ids[1] = pw::bytes::ConvertOrderTo(cpp20::endian::little, remote_cid);
  158|  9.18k|  sig()->SendCommandReject(
  159|  9.18k|      id_, RejectReason::kInvalidCID, BufferView(ids, sizeof(ids)));
  160|  9.18k|}
_ZN2bt5l2cap8internal16SignalingChannel10SendPacketEhhRKNS_10ByteBufferE:
  164|   110k|                                  const ByteBuffer& data) {
  165|   110k|  return Send(BuildPacket(code, identifier, data));
  166|   110k|}
_ZN2bt5l2cap8internal16SignalingChannel12HandlePacketERKNS_10PacketViewINS0_13CommandHeaderEEE:
  168|  91.2k|bool SignalingChannel::HandlePacket(const SignalingPacket& packet) {
  169|  91.2k|  if (IsSupportedResponse(packet.header().code)) {
  ------------------
  |  Branch (169:7): [True: 7.35k, False: 83.8k]
  ------------------
  170|  7.35k|    OnRxResponse(packet);
  171|  7.35k|    return true;
  172|  7.35k|  }
  173|       |
  174|       |  // Handle request commands from remote.
  175|  83.8k|  const auto iter = inbound_handlers_.find(packet.header().code);
  176|  83.8k|  if (iter != inbound_handlers_.end()) {
  ------------------
  |  Branch (176:7): [True: 68.4k, False: 15.3k]
  ------------------
  177|  68.4k|    ResponderImpl responder(this, packet.header().code + 1, packet.header().id);
  178|  68.4k|    iter->second(packet.payload_data(), &responder);
  179|  68.4k|    return true;
  180|  68.4k|  }
  181|       |
  182|  83.8k|  bt_log(DEBUG,
  ------------------
  |  |  141|  15.3k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  15.3k|  do {                                                                     \
  |  |  |  |   74|  15.3k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  15.3k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  15.3k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  15.3k|  do {                                                    \
  |  |  |  |  |  |   56|  15.3k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  15.3k|           (flags),                                       \
  |  |  |  |  |  |   58|  15.3k|           module,                                        \
  |  |  |  |  |  |   59|  15.3k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  15.3k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  15.3k|           __func__,                                      \
  |  |  |  |  |  |   62|  15.3k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  15.3k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  15.3k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  15.3k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  15.3k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  15.3k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  15.3k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  15.3k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  15.3k|    }                                                                      \
  |  |  |  |   77|  15.3k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  15.3k|         PW_LOG_LEVEL,                             \
  |  |  143|  15.3k|         tag,                                      \
  |  |  144|  15.3k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  15.3k|         __VA_ARGS__);                             \
  |  |  146|  15.3k|  ::bt::internal::CheckFormat(tag)
  ------------------
  183|  15.3k|         "l2cap",
  184|  15.3k|         "sig: ignoring unsupported code %#.2x",
  185|  15.3k|         packet.header().code);
  186|       |
  187|  15.3k|  return false;
  188|  83.8k|}
_ZN2bt5l2cap8internal16SignalingChannel12OnRxResponseERKNS_10PacketViewINS0_13CommandHeaderEEE:
  190|  7.35k|void SignalingChannel::OnRxResponse(const SignalingPacket& packet) {
  191|  7.35k|  auto cmd_id = packet.header().id;
  192|  7.35k|  auto iter = pending_commands_.find(cmd_id);
  193|  7.35k|  if (iter == pending_commands_.end()) {
  ------------------
  |  Branch (193:7): [True: 2.74k, False: 4.60k]
  ------------------
  194|       |    // Core Spec v5.2, Vol 3, Part A, Section 4.1: L2CAP_COMMAND_REJECT_RSP
  195|       |    // packets should NOT be sent in response to an identified response packet.
  196|  2.74k|    bt_log(TRACE,
  ------------------
  |  |  141|  2.74k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  2.74k|  do {                                                                     \
  |  |  |  |   74|  2.74k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  2.74k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  2.74k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  2.74k|  do {                                                    \
  |  |  |  |  |  |   56|  2.74k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  2.74k|           (flags),                                       \
  |  |  |  |  |  |   58|  2.74k|           module,                                        \
  |  |  |  |  |  |   59|  2.74k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  2.74k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  2.74k|           __func__,                                      \
  |  |  |  |  |  |   62|  2.74k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  2.74k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  2.74k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  2.74k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  2.74k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  2.74k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  2.74k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  2.74k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  2.74k|    }                                                                      \
  |  |  |  |   77|  2.74k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  2.74k|         PW_LOG_LEVEL,                             \
  |  |  143|  2.74k|         tag,                                      \
  |  |  144|  2.74k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  2.74k|         __VA_ARGS__);                             \
  |  |  146|  2.74k|  ::bt::internal::CheckFormat(tag)
  ------------------
  197|  2.74k|           "l2cap",
  198|  2.74k|           "sig: ignoring unexpected response, id %#.2x",
  199|  2.74k|           packet.header().id);
  200|  2.74k|    return;
  201|  2.74k|  }
  202|       |
  203|  4.60k|  Status status;
  204|  4.60k|  auto command_node = pending_commands_.extract(iter);
  205|  4.60k|  auto& pending_command = command_node.mapped();
  206|  4.60k|  if (packet.header().code == pending_command.response_code) {
  ------------------
  |  Branch (206:7): [True: 2.76k, False: 1.84k]
  ------------------
  207|  2.76k|    status = Status::kSuccess;
  208|  2.76k|  } else if (packet.header().code == kCommandRejectCode) {
  ------------------
  |  Branch (208:14): [True: 1.58k, False: 257]
  ------------------
  209|  1.58k|    status = Status::kReject;
  210|  1.58k|  } else {
  211|    257|    bt_log(WARN,
  ------------------
  |  |  141|    257|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|    257|  do {                                                                     \
  |  |  |  |   74|    257|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|    257|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|    257|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|    257|  do {                                                    \
  |  |  |  |  |  |   56|    257|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|    257|           (flags),                                       \
  |  |  |  |  |  |   58|    257|           module,                                        \
  |  |  |  |  |  |   59|    257|           __FILE__,                                      \
  |  |  |  |  |  |   60|    257|           __LINE__,                                      \
  |  |  |  |  |  |   61|    257|           __func__,                                      \
  |  |  |  |  |  |   62|    257|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|    257|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|    257|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|    257|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|    257|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|    257|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|    257|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|    257|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|    257|    }                                                                      \
  |  |  |  |   77|    257|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|    257|         PW_LOG_LEVEL,                             \
  |  |  143|    257|         tag,                                      \
  |  |  144|    257|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|    257|         __VA_ARGS__);                             \
  |  |  146|    257|  ::bt::internal::CheckFormat(tag)
  ------------------
  212|    257|           "l2cap",
  213|    257|           "sig: response (id %#.2x) has unexpected code %#.2x",
  214|    257|           packet.header().id,
  215|    257|           packet.header().code);
  216|    257|    SendCommandReject(cmd_id, RejectReason::kNotUnderstood, BufferView());
  217|    257|    return;
  218|    257|  }
  219|       |
  220|  4.35k|  if (pending_command.response_handler(status, packet.payload_data()) ==
  ------------------
  |  Branch (220:7): [True: 3.62k, False: 721]
  ------------------
  221|  4.35k|      ResponseHandlerAction::kCompleteOutboundTransaction) {
  222|       |    // Note that the response handler may have destroyed |this| at this point.
  223|  3.62k|    return;
  224|  3.62k|  }
  225|       |
  226|       |  // Renew the timer as an ERTX timer per Core Spec v5.0, Volume 3, Part A,
  227|       |  // Sec 6.2.2.
  228|       |  // TODO(fxbug.dev/42132982): Limit the number of times the ERTX timer is reset
  229|       |  // so that total timeout duration is <= 300 seconds.
  230|    721|  pending_command.response_timeout_task.Cancel();
  231|    721|  pending_command.timer_duration = kPwSignalingChannelExtendedResponseTimeout;
  232|       |  // Don't retransmit after an ERTX timeout as the peer has already indicated
  233|       |  // that it received the request and has been given a large amount of time.
  234|    721|  pending_command.response_timeout_task.set_function(
  235|    721|      [this, cmd_id](pw::async::Context /*ctx*/, pw::Status task_status) {
  236|    721|        if (task_status.ok()) {
  237|    721|          OnResponseTimeout(cmd_id, /*retransmit=*/false);
  238|    721|        }
  239|    721|      });
  240|    721|  pending_command.response_timeout_task.PostAfter(
  241|    721|      pending_command.timer_duration);
  242|    721|  pending_commands_.insert(std::move(command_node));
  243|    721|}
_ZN2bt5l2cap8internal16SignalingChannel4SendENSt3__110unique_ptrINS_10ByteBufferENS3_14default_deleteIS5_EEEE:
  260|   407k|bool SignalingChannel::Send(ByteBufferPtr packet) {
  261|   407k|  PW_DCHECK(packet);
  ------------------
  |  |   51|   407k|  do {                            \
  |  |   52|   407k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   407k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   407k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   407k|  do {                                                                         \
  |  |  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   407k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   407k|    }                             \
  |  |   55|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  262|   407k|  PW_DCHECK(packet->size() >= sizeof(CommandHeader));
  ------------------
  |  |   51|   407k|  do {                            \
  |  |   52|   407k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   407k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   407k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   407k|  do {                                                                         \
  |  |  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   407k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   407k|    }                             \
  |  |   55|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  263|       |
  264|   407k|  if (!is_open())
  ------------------
  |  Branch (264:7): [True: 0, False: 407k]
  ------------------
  265|      0|    return false;
  266|       |
  267|       |  // While 0x00 is an illegal command identifier (see v5.0, Vol 3, Part A,
  268|       |  // Section 4) we don't assert that here. When we receive a command that uses
  269|       |  // 0 as the identifier, we reject the command and use that identifier in the
  270|       |  // response rather than assert and crash.
  271|   407k|  [[maybe_unused]] SignalingPacket reply(
  272|   407k|      packet.get(), packet->size() - sizeof(CommandHeader));
  273|   407k|  PW_DCHECK(reply.header().code);
  ------------------
  |  |   51|   407k|  do {                            \
  |  |   52|   407k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   407k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   407k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   407k|  do {                                                                         \
  |  |  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   407k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   407k|    }                             \
  |  |   55|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  274|   407k|  PW_DCHECK(reply.payload_size() ==
  ------------------
  |  |   51|   407k|  do {                            \
  |  |   52|   407k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   407k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   407k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   407k|  do {                                                                         \
  |  |  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   407k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   407k|    }                             \
  |  |   55|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  275|   407k|            pw::bytes::ConvertOrderFrom(cpp20::endian::little,
  276|   407k|                                        reply.header().length));
  277|   407k|  PW_DCHECK(chan_);
  ------------------
  |  |   51|   407k|  do {                            \
  |  |   52|   407k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   407k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   407k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   407k|  do {                                                                         \
  |  |  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   407k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   407k|    }                             \
  |  |   55|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  278|   407k|  return chan_->Send(std::move(packet));
  279|   407k|}
_ZN2bt5l2cap8internal16SignalingChannel11BuildPacketEhhRKNS_10ByteBufferE:
  283|   407k|                                            const ByteBuffer& data) {
  284|   407k|  PW_DCHECK(data.size() <= std::numeric_limits<uint16_t>::max());
  ------------------
  |  |   51|   407k|  do {                            \
  |  |   52|   407k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   407k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   407k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   407k|  do {                                                                         \
  |  |  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   407k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   407k|    }                             \
  |  |   55|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  285|       |
  286|   407k|  auto buffer = NewBuffer(sizeof(CommandHeader) + data.size());
  287|   407k|  PW_CHECK(buffer);
  ------------------
  |  |   39|   407k|  do {                                                                         \
  |  |   40|   407k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 407k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   407k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  288|       |
  289|   407k|  MutableSignalingPacket packet(buffer.get(), data.size());
  290|   407k|  packet.mutable_header()->code = code;
  291|   407k|  packet.mutable_header()->id = identifier;
  292|   407k|  packet.mutable_header()->length = pw::bytes::ConvertOrderTo(
  293|   407k|      cpp20::endian::little, static_cast<uint16_t>(data.size()));
  294|   407k|  packet.mutable_payload_data().Write(data);
  295|       |
  296|   407k|  return buffer;
  297|   407k|}
_ZN2bt5l2cap8internal16SignalingChannel17SendCommandRejectEhNS0_12RejectReasonERKNS_10ByteBufferE:
  301|  58.9k|                                         const ByteBuffer& data) {
  302|  58.9k|  PW_DCHECK(data.size() <= kCommandRejectMaxDataLength);
  ------------------
  |  |   51|  58.9k|  do {                            \
  |  |   52|  58.9k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  58.9k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  58.9k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  58.9k|  do {                                                                         \
  |  |  |  |   40|  58.9k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 58.9k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  58.9k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  58.9k|    }                             \
  |  |   55|  58.9k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  303|       |
  304|  58.9k|  constexpr size_t kMaxPayloadLength =
  305|  58.9k|      sizeof(CommandRejectPayload) + kCommandRejectMaxDataLength;
  306|  58.9k|  StaticByteBuffer<kMaxPayloadLength> rej_buf;
  307|       |
  308|  58.9k|  MutablePacketView<CommandRejectPayload> reject(&rej_buf, data.size());
  309|  58.9k|  reject.mutable_header()->reason = pw::bytes::ConvertOrderTo(
  310|  58.9k|      cpp20::endian::little, static_cast<uint16_t>(reason));
  311|  58.9k|  reject.mutable_payload_data().Write(data);
  312|       |
  313|  58.9k|  return SendPacket(kCommandRejectCode, identifier, reject.data());
  314|  58.9k|}
_ZN2bt5l2cap8internal16SignalingChannel16GetNextCommandIdEv:
  316|   297k|CommandId SignalingChannel::GetNextCommandId() {
  317|       |  // Recycling identifiers is permitted and only 0x00 is invalid (v5.0 Vol 3,
  318|       |  // Part A, Section 4).
  319|   297k|  const auto cmd = next_cmd_id_++;
  320|   297k|  if (next_cmd_id_ == kInvalidCommandId) {
  ------------------
  |  Branch (320:7): [True: 0, False: 297k]
  ------------------
  321|      0|    next_cmd_id_ = 0x01;
  322|      0|  }
  323|       |
  324|   297k|  return cmd;
  325|   297k|}
_ZN2bt5l2cap8internal16SignalingChannel25GetNextAvailableCommandIdEv:
  327|   297k|std::optional<CommandId> SignalingChannel::GetNextAvailableCommandId() {
  328|       |  // Command identifiers for pending requests are assumed to be unique across
  329|       |  // all types of requests and reused by order of least recent use. See v5.0
  330|       |  // Vol 3, Part A Section 4.
  331|       |  //
  332|       |  // Uniqueness across different command types: "Within each signaling channel a
  333|       |  // different Identifier shall be used for each successive command"
  334|       |  // Reuse order: "the Identifier may be recycled if all other Identifiers have
  335|       |  // subsequently been used"
  336|   297k|  const CommandId initial_id = GetNextCommandId();
  337|   297k|  CommandId id;
  338|   297k|  for (id = initial_id; IsCommandPending(id);) {
  ------------------
  |  Branch (338:25): [True: 0, False: 297k]
  ------------------
  339|      0|    id = GetNextCommandId();
  340|       |
  341|      0|    if (id == initial_id) {
  ------------------
  |  Branch (341:9): [True: 0, False: 0]
  ------------------
  342|      0|      return std::nullopt;
  343|      0|    }
  344|      0|  }
  345|   297k|  return id;
  346|   297k|}
_ZN2bt5l2cap8internal16SignalingChannel15OnChannelClosedEv:
  348|   142k|void SignalingChannel::OnChannelClosed() {
  349|   142k|  PW_DCHECK(is_open());
  ------------------
  |  |   51|   142k|  do {                            \
  |  |   52|   142k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|   142k|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|   142k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   142k|  do {                                                                         \
  |  |  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   142k|    }                             \
  |  |   55|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  350|       |
  351|   142k|  is_open_ = false;
  352|   142k|}
_ZN2bt5l2cap8internal16SignalingChannel10OnRxBFrameENSt3__110unique_ptrINS_10ByteBufferENS3_14default_deleteIS5_EEEE:
  354|  44.3k|void SignalingChannel::OnRxBFrame(ByteBufferPtr sdu) {
  355|  44.3k|  if (!is_open())
  ------------------
  |  Branch (355:7): [True: 0, False: 44.3k]
  ------------------
  356|      0|    return;
  357|       |
  358|  44.3k|  DecodeRxUnit(
  359|  44.3k|      std::move(sdu),
  360|  44.3k|      fit::bind_member<&SignalingChannel::CheckAndDispatchPacket>(this));
  361|  44.3k|}
_ZN2bt5l2cap8internal16SignalingChannel22CheckAndDispatchPacketERKNS_10PacketViewINS0_13CommandHeaderEEE:
  363|  99.0k|void SignalingChannel::CheckAndDispatchPacket(const SignalingPacket& packet) {
  364|  99.0k|  if (packet.size() > mtu()) {
  ------------------
  |  Branch (364:7): [True: 18, False: 98.9k]
  ------------------
  365|       |    // Respond with our signaling MTU.
  366|     18|    uint16_t rsp_mtu = pw::bytes::ConvertOrderTo(cpp20::endian::little, mtu());
  367|     18|    BufferView rej_data(&rsp_mtu, sizeof(rsp_mtu));
  368|     18|    SendCommandReject(
  369|     18|        packet.header().id, RejectReason::kSignalingMTUExceeded, rej_data);
  370|  98.9k|  } else if (!packet.header().id) {
  ------------------
  |  Branch (370:14): [True: 7.78k, False: 91.2k]
  ------------------
  371|       |    // "Signaling identifier 0x00 is an illegal identifier and shall never be
  372|       |    // used in any command" (v5.0, Vol 3, Part A, Section 4).
  373|  7.78k|    bt_log(DEBUG, "l2cap", "illegal signaling cmd ID: 0x00; reject");
  ------------------
  |  |  141|  7.78k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  7.78k|  do {                                                                     \
  |  |  |  |   74|  7.78k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  7.78k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  7.78k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  7.78k|  do {                                                    \
  |  |  |  |  |  |   56|  7.78k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  7.78k|           (flags),                                       \
  |  |  |  |  |  |   58|  7.78k|           module,                                        \
  |  |  |  |  |  |   59|  7.78k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  7.78k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  7.78k|           __func__,                                      \
  |  |  |  |  |  |   62|  7.78k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  7.78k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  7.78k|    }                                                                      \
  |  |  |  |   77|  7.78k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  7.78k|         PW_LOG_LEVEL,                             \
  |  |  143|  7.78k|         tag,                                      \
  |  |  144|  7.78k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  7.78k|         __VA_ARGS__);                             \
  |  |  146|  7.78k|  ::bt::internal::CheckFormat(tag)
  ------------------
  374|  7.78k|    SendCommandReject(
  375|  7.78k|        packet.header().id, RejectReason::kNotUnderstood, BufferView());
  376|  91.2k|  } else if (!HandlePacket(packet)) {
  ------------------
  |  Branch (376:14): [True: 15.3k, False: 75.8k]
  ------------------
  377|  15.3k|    SendCommandReject(
  378|  15.3k|        packet.header().id, RejectReason::kNotUnderstood, BufferView());
  379|  15.3k|  }
  380|  99.0k|}
signaling_channel.cc:_ZZN2bt5l2cap8internal16SignalingChannelC1E7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS4_EEN2pw9bluetooth6emboss14ConnectionRoleERNS8_5async10DispatcherERNS8_18bluetooth_sapphire13LeaseProviderEENK3$_0clENSt3__110unique_ptrINS_10ByteBufferENSJ_14default_deleteISL_EEEE:
   47|  44.3k|      [self](ByteBufferPtr sdu) {
   48|  44.3k|        if (self.is_alive())
  ------------------
  |  Branch (48:13): [True: 44.3k, False: 0]
  ------------------
   49|  44.3k|          self->OnRxBFrame(std::move(sdu));
   50|  44.3k|      },
signaling_channel.cc:_ZZN2bt5l2cap8internal16SignalingChannelC1E7WeakPtrINS0_7ChannelE18DynamicWeakManagerIS4_EEN2pw9bluetooth6emboss14ConnectionRoleERNS8_5async10DispatcherERNS8_18bluetooth_sapphire13LeaseProviderEENK3$_1clEv:
   51|   142k|      [self] {
   52|   142k|        if (self.is_alive())
  ------------------
  |  Branch (52:13): [True: 142k, False: 0]
  ------------------
   53|   142k|          self->OnChannelClosed();
   54|   142k|      });

_ZN2bt5l2capeqERKNSt3__17variantIJNS0_32RetransmissionAndFlowControlModeENS0_26CreditBasedFlowControlModeEEEES3_:
   36|   650k|                RetransmissionAndFlowControlMode mode) {
   37|   650k|  return VariantEqualsHelper(any, mode);
   38|   650k|}
_ZN2bt5l2capneERKNSt3__17variantIJNS0_32RetransmissionAndFlowControlModeENS0_26CreditBasedFlowControlModeEEEES3_:
   50|  21.3k|                RetransmissionAndFlowControlMode mode) {
   51|  21.3k|  return !VariantEqualsHelper(any, mode);
   52|  21.3k|}
_ZN2bt5l2cap22AnyChannelModeToStringERKNSt3__17variantIJNS0_32RetransmissionAndFlowControlModeENS0_26CreditBasedFlowControlModeEEEE:
   64|    180|std::string AnyChannelModeToString(const AnyChannelMode& mode) {
   65|    180|  std::string buffer(kAnyChannelModeMaxStringSize, 0);
   66|    180|  pw::StatusWithSize result = pw::ToString(mode, buffer);
   67|    180|  PW_CHECK(result.ok());
  ------------------
  |  |   39|    180|  do {                                                                         \
  |  |   40|    180|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 180]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|    180|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   68|    180|  buffer.resize(result.size());
   69|    180|  return buffer;
   70|    180|}
_ZN2bt5l2cap24AnyChannelModeToPwStringERKNSt3__17variantIJNS0_32RetransmissionAndFlowControlModeENS0_26CreditBasedFlowControlModeEEEEN2pw4spanIcLm18446744073709551615EEE:
   73|    180|                                            pw::span<char> buffer) {
   74|    180|  return std::visit(
   75|    180|      [&](auto content) -> pw::StatusWithSize {
   76|    180|        if constexpr (std::is_same_v<decltype(content),
   77|    180|                                     RetransmissionAndFlowControlMode>) {
   78|    180|          static_assert(
   79|    180|              std::string_view("(RetransmissionAndFlowControlMode) 0x00")
   80|    180|                  .size() < kAnyChannelModeMaxStringSize);
   81|    180|          return pw::string::Format(
   82|    180|              buffer,
   83|    180|              "(RetransmissionAndFlowControlMode) %#.2" PRIx8,
   84|    180|              static_cast<uint8_t>(content));
   85|    180|        } else if constexpr (std::is_same_v<decltype(content),
   86|    180|                                            CreditBasedFlowControlMode>) {
   87|    180|          static_assert(
   88|    180|              std::string_view("(CreditBasedFlowControlMode) 0x00").size() <
   89|    180|              kAnyChannelModeMaxStringSize);
   90|    180|          return pw::string::Format(buffer,
   91|    180|                                    "(CreditBasedFlowControlMode) %#.2" PRIx8,
   92|    180|                                    static_cast<uint8_t>(content));
   93|    180|        }
   94|    180|      },
   95|    180|      mode);
   96|    180|}
_ZN2pw8ToStringINSt3__17variantIJN2bt5l2cap32RetransmissionAndFlowControlModeENS4_26CreditBasedFlowControlModeEEEEEENS_14StatusWithSizeERKT_NS_4spanIcLm18446744073709551615EEE:
  102|    180|                        span<char> buffer) {
  103|    180|  return bt::l2cap::AnyChannelModeToPwString(value, buffer);
  104|    180|}
types.cc:_ZZN2bt5l2cap24AnyChannelModeToPwStringERKNSt3__17variantIJNS0_32RetransmissionAndFlowControlModeENS0_26CreditBasedFlowControlModeEEEEN2pw4spanIcLm18446744073709551615EEEENK3$_0clIS3_EENS8_14StatusWithSizeET_:
   75|    180|      [&](auto content) -> pw::StatusWithSize {
   76|       |        if constexpr (std::is_same_v<decltype(content),
   77|    180|                                     RetransmissionAndFlowControlMode>) {
   78|    180|          static_assert(
   79|    180|              std::string_view("(RetransmissionAndFlowControlMode) 0x00")
   80|    180|                  .size() < kAnyChannelModeMaxStringSize);
   81|    180|          return pw::string::Format(
   82|    180|              buffer,
   83|    180|              "(RetransmissionAndFlowControlMode) %#.2" PRIx8,
   84|    180|              static_cast<uint8_t>(content));
   85|       |        } else if constexpr (std::is_same_v<decltype(content),
   86|       |                                            CreditBasedFlowControlMode>) {
   87|       |          static_assert(
   88|       |              std::string_view("(CreditBasedFlowControlMode) 0x00").size() <
   89|       |              kAnyChannelModeMaxStringSize);
   90|       |          return pw::string::Format(buffer,
   91|       |                                    "(CreditBasedFlowControlMode) %#.2" PRIx8,
   92|       |                                    static_cast<uint8_t>(content));
   93|       |        }
   94|    180|      },
types.cc:_ZN2bt5l2cap12_GLOBAL__N_119VariantEqualsHelperINS0_32RetransmissionAndFlowControlModeEJS3_NS0_26CreditBasedFlowControlModeEEEEbRKNSt3__17variantIJDpT0_EEERKT_:
   25|   672k|bool VariantEqualsHelper(const std::variant<Alternatives...>& v, const T& x) {
   26|   672k|  return std::holds_alternative<T>(v) && (std::get<T>(v) == x);
  ------------------
  |  Branch (26:10): [True: 672k, False: 0]
  |  Branch (26:42): [True: 307k, False: 364k]
  ------------------
   27|   672k|}

_ZN2bt2sm18SecurityPropertiesC2Ev:
   78|   142k|    : SecurityProperties(/*encrypted=*/false,
   79|   142k|                         /*authenticated=*/false,
   80|   142k|                         /*secure_connections=*/false,
   81|   142k|                         0u) {}
_ZN2bt2sm18SecurityPropertiesC2Ebbbm:
   87|   142k|    : properties_(0u), enc_key_size_(enc_key_size) {
   88|   142k|  properties_ |= (encrypted ? Property::kEncrypted : 0u);
  ------------------
  |  Branch (88:19): [True: 0, False: 142k]
  ------------------
   89|   142k|  properties_ |= (authenticated ? Property::kAuthenticated : 0u);
  ------------------
  |  Branch (89:19): [True: 0, False: 142k]
  ------------------
   90|   142k|  properties_ |= (secure_connections ? Property::kSecureConnections : 0u);
  ------------------
  |  Branch (90:19): [True: 0, False: 142k]
  ------------------
   91|   142k|}

_ZN2bt7testing24ControllerTestDoubleBaseC2ERN2pw5async10DispatcherE:
   21|  3.05k|    : pw_dispatcher_(pw_dispatcher), heap_dispatcher_(pw_dispatcher) {}
_ZN2bt7testing24ControllerTestDoubleBaseD2Ev:
   23|  3.05k|ControllerTestDoubleBase::~ControllerTestDoubleBase() {
   24|       |  // When this destructor gets called any subclass state will be undefined. If
   25|       |  // Stop() has not been called before reaching this point this can cause
   26|       |  // runtime errors when our event loop handlers attempt to invoke the pure
   27|       |  // virtual methods of this class.
   28|  3.05k|}
_ZN2bt7testing24ControllerTestDoubleBase24SendACLDataChannelPacketERKNS_10ByteBufferE:
   51|   543k|    const ByteBuffer& packet) {
   52|   543k|  if (!acl_cb_) {
  ------------------
  |  Branch (52:7): [True: 0, False: 543k]
  ------------------
   53|      0|    return false;
   54|      0|  }
   55|       |
   56|       |  // Post packet to simulate async behavior that some tests expect.
   57|   543k|  DynamicByteBuffer buffer(packet);
   58|   543k|  auto self = weak_self_.GetWeakPtr();
   59|   543k|  (void)heap_dispatcher().Post(
   60|   543k|      [self, buffer = std::move(buffer)](pw::async::Context /*ctx*/,
   61|   543k|                                         pw::Status status) {
   62|   543k|        if (self.is_alive() && status.ok()) {
   63|   543k|          self->acl_cb_({reinterpret_cast<const std::byte*>(buffer.data()),
   64|   543k|                         buffer.size()});
   65|   543k|        }
   66|   543k|      });
   67|   543k|  return true;
   68|   543k|}
_ZN2bt7testing24ControllerTestDoubleBase10InitializeEN3fit13callback_implILm8ELb0EFvN2pw6StatusEENSt3__19allocatorISt4byteEEEESB_:
   91|  3.05k|                                          PwStatusCallback error_callback) {
   92|  3.05k|  error_cb_ = std::move(error_callback);
   93|  3.05k|  complete_callback(PW_STATUS_OK);
   94|  3.05k|}
controller_test_double_base.cc:_ZZN2bt7testing24ControllerTestDoubleBase24SendACLDataChannelPacketERKNS_10ByteBufferEENK3$_0clEN2pw5async7ContextENS6_6StatusE:
   61|   543k|                                         pw::Status status) {
   62|   543k|        if (self.is_alive() && status.ok()) {
  ------------------
  |  Branch (62:13): [True: 543k, False: 0]
  |  Branch (62:32): [True: 543k, False: 0]
  ------------------
   63|   543k|          self->acl_cb_({reinterpret_cast<const std::byte*>(buffer.data()),
   64|   543k|                         buffer.size()});
   65|   543k|        }
   66|   543k|      });

_ZN2bt3hci14AclDataChannel6CreateEPNS0_9TransportEPN2pw9bluetooth10ControllerERKNS0_14DataBufferInfoESA_RNS4_18bluetooth_sapphire13LeaseProviderE:
  188|  3.05k|    pw::bluetooth_sapphire::LeaseProvider& wake_lease_provider) {
  189|  3.05k|  return std::make_unique<AclDataChannelImpl>(
  190|  3.05k|      transport, hci, bredr_buffer_info, le_buffer_info, wake_lease_provider);
  191|  3.05k|}
_ZN2bt3hci18AclDataChannelImplC2EPNS0_9TransportEPN2pw9bluetooth10ControllerERKNS0_14DataBufferInfoESA_RNS4_18bluetooth_sapphire13LeaseProviderE:
  199|  3.05k|    : transport_(transport),
  200|  3.05k|      hci_(hci),
  201|  3.05k|      bredr_buffer_info_(bredr_buffer_info),
  202|  3.05k|      le_buffer_info_(le_buffer_info),
  203|  3.05k|      wake_lease_provider_(wake_lease_provider) {
  204|  3.05k|  PW_DCHECK(transport_);
  ------------------
  |  |   51|  3.05k|  do {                            \
  |  |   52|  3.05k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  3.05k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  3.05k|  do {                                                                         \
  |  |  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  3.05k|    }                             \
  |  |   55|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  205|  3.05k|  PW_CHECK(hci_);
  ------------------
  |  |   39|  3.05k|  do {                                                                         \
  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  206|       |
  207|  3.05k|  PW_DCHECK(bredr_buffer_info.IsAvailable() || le_buffer_info.IsAvailable());
  ------------------
  |  |   51|  3.05k|  do {                            \
  |  |   52|  3.05k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  3.05k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  3.05k|  do {                                                                         \
  |  |  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:11): [True: 3.05k, False: 0]
  |  |  |  |  |  Branch (40:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  3.05k|    }                             \
  |  |   55|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  208|       |
  209|  3.05k|  num_completed_packets_event_handler_id_ =
  210|  3.05k|      transport_->command_channel()->AddEventHandler(
  211|  3.05k|          hci_spec::kNumberOfCompletedPacketsEventCode,
  212|  3.05k|          fit::bind_member<
  213|  3.05k|              &AclDataChannelImpl::NumberOfCompletedPacketsCallback>(this));
  214|  3.05k|  PW_DCHECK(num_completed_packets_event_handler_id_);
  ------------------
  |  |   51|  3.05k|  do {                            \
  |  |   52|  3.05k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  3.05k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  3.05k|  do {                                                                         \
  |  |  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  3.05k|    }                             \
  |  |   55|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  215|       |
  216|  3.05k|  data_buffer_overflow_event_handler_id_ =
  217|  3.05k|      transport_->command_channel()->AddEventHandler(
  218|  3.05k|          hci_spec::kDataBufferOverflowEventCode,
  219|  3.05k|          fit::bind_member<&AclDataChannelImpl::DataBufferOverflowCallback>(
  220|  3.05k|              this));
  221|  3.05k|  PW_DCHECK(data_buffer_overflow_event_handler_id_);
  ------------------
  |  |   51|  3.05k|  do {                            \
  |  |   52|  3.05k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  3.05k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  3.05k|  do {                                                                         \
  |  |  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  3.05k|    }                             \
  |  |   55|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  222|       |
  223|  3.05k|  bt_log(DEBUG, "hci", "AclDataChannel initialized");
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
  224|  3.05k|}
_ZN2bt3hci18AclDataChannelImplD2Ev:
  226|  3.05k|AclDataChannelImpl::~AclDataChannelImpl() {
  227|  3.05k|  bt_log(INFO, "hci", "AclDataChannel shutting down");
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
  228|       |
  229|  3.05k|  transport_->command_channel()->RemoveEventHandler(
  230|  3.05k|      num_completed_packets_event_handler_id_);
  231|  3.05k|  transport_->command_channel()->RemoveEventHandler(
  232|  3.05k|      data_buffer_overflow_event_handler_id_);
  233|       |
  234|  3.05k|  hci_->SetReceiveAclFunction(nullptr);
  235|  3.05k|}
_ZN2bt3hci18AclDataChannelImpl18RegisterConnectionE7WeakPtrINS0_14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS4_EE:
  238|   142k|    WeakPtr<ConnectionInterface> connection) {
  239|   142k|  bt_log(DEBUG,
  ------------------
  |  |  141|   142k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   142k|  do {                                                                     \
  |  |  |  |   74|   142k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   142k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   142k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   142k|  do {                                                    \
  |  |  |  |  |  |   56|   142k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   142k|           (flags),                                       \
  |  |  |  |  |  |   58|   142k|           module,                                        \
  |  |  |  |  |  |   59|   142k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   142k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   142k|           __func__,                                      \
  |  |  |  |  |  |   62|   142k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   142k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   142k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   142k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   142k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   142k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   142k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   142k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   142k|    }                                                                      \
  |  |  |  |   77|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   142k|         PW_LOG_LEVEL,                             \
  |  |  143|   142k|         tag,                                      \
  |  |  144|   142k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   142k|         __VA_ARGS__);                             \
  |  |  146|   142k|  ::bt::internal::CheckFormat(tag)
  ------------------
  240|   142k|         "hci",
  241|   142k|         "ACL register connection (handle: %#.4x)",
  242|   142k|         connection->handle());
  243|   142k|  auto [_, inserted] =
  244|   142k|      registered_connections_.emplace(connection->handle(), connection);
  245|   142k|  PW_CHECK(inserted,
  ------------------
  |  |   39|   142k|  do {                                                                         \
  |  |   40|   142k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 142k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   142k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  246|   142k|           "connection with handle %#.4x already registered",
  247|   142k|           connection->handle());
  248|       |
  249|       |  // Reset the round-robin iterators because they have been invalidated.
  250|   142k|  ResetRoundRobinIterators();
  251|   142k|}
_ZN2bt3hci18AclDataChannelImpl20UnregisterConnectionEt:
  254|   142k|    hci_spec::ConnectionHandle handle) {
  255|   142k|  bt_log(DEBUG, "hci", "ACL unregister link (handle: %#.4x)", handle);
  ------------------
  |  |  141|   142k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|   142k|  do {                                                                     \
  |  |  |  |   74|   142k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|   142k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|   142k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|   142k|  do {                                                    \
  |  |  |  |  |  |   56|   142k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|   142k|           (flags),                                       \
  |  |  |  |  |  |   58|   142k|           module,                                        \
  |  |  |  |  |  |   59|   142k|           __FILE__,                                      \
  |  |  |  |  |  |   60|   142k|           __LINE__,                                      \
  |  |  |  |  |  |   61|   142k|           __func__,                                      \
  |  |  |  |  |  |   62|   142k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|   142k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|   142k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|   142k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|   142k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|   142k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|   142k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|   142k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|   142k|    }                                                                      \
  |  |  |  |   77|   142k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|   142k|         PW_LOG_LEVEL,                             \
  |  |  143|   142k|         tag,                                      \
  |  |  144|   142k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|   142k|         __VA_ARGS__);                             \
  |  |  146|   142k|  ::bt::internal::CheckFormat(tag)
  ------------------
  256|   142k|  auto iter = registered_connections_.find(handle);
  257|   142k|  if (iter == registered_connections_.end()) {
  ------------------
  |  Branch (257:7): [True: 0, False: 142k]
  ------------------
  258|      0|    bt_log(WARN,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  259|      0|           "hci",
  260|      0|           "attempt to unregister link that is not registered (handle: %#.4x)",
  261|      0|           handle);
  262|      0|    return;
  263|      0|  }
  264|   142k|  registered_connections_.erase(iter);
  265|       |
  266|       |  // Reset the round-robin iterators because they have been invalidated.
  267|   142k|  ResetRoundRobinIterators();
  268|   142k|}
_ZNK2bt3hci18AclDataChannelImpl19IsBrEdrBufferSharedEv:
  270|  2.12M|bool AclDataChannelImpl::IsBrEdrBufferShared() const {
  271|  2.12M|  return !le_buffer_info_.IsAvailable();
  272|  2.12M|}
_ZN2bt3hci18AclDataChannelImpl27IncrementRoundRobinIteratorERNSt3__119__hash_map_iteratorINS2_15__hash_iteratorIPNS2_11__hash_nodeINS2_17__hash_value_typeIt7WeakPtrINS0_14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS9_EEEEPvEEEEEENS_8LinkTypeE:
  275|   730k|    ConnectionMap::iterator& conn_iter, bt::LinkType connection_type) {
  276|       |  // Only update iterator if |registered_connections_| is non-empty
  277|   730k|  if (conn_iter == registered_connections_.end()) {
  ------------------
  |  Branch (277:7): [True: 0, False: 730k]
  ------------------
  278|      0|    bt_log(
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  279|      0|        DEBUG, "hci", "no registered connections, cannot increment iterator");
  280|      0|    return;
  281|      0|  }
  282|       |
  283|       |  // Prevent infinite looping by tracking |original_conn_iter|
  284|   730k|  const ConnectionMap::iterator original_conn_iter = conn_iter;
  285|   730k|  do {
  286|   730k|    conn_iter++;
  287|   730k|    if (conn_iter == registered_connections_.end()) {
  ------------------
  |  Branch (287:9): [True: 730k, False: 0]
  ------------------
  288|   730k|      conn_iter = registered_connections_.begin();
  289|   730k|    }
  290|   730k|  } while (!IsBrEdrBufferShared() &&
  ------------------
  |  Branch (290:12): [True: 0, False: 730k]
  ------------------
  291|   730k|           conn_iter->second->type() != connection_type &&
  ------------------
  |  Branch (291:12): [True: 0, False: 0]
  ------------------
  292|   730k|           conn_iter != original_conn_iter);
  ------------------
  |  Branch (292:12): [True: 0, False: 0]
  ------------------
  293|       |
  294|       |  // When buffer isn't shared, we must ensure |conn_iter| is assigned to a link
  295|       |  // of the same type.
  296|   730k|  if (!IsBrEdrBufferShared() && conn_iter->second->type() != connection_type) {
  ------------------
  |  Branch (296:7): [True: 0, False: 730k]
  |  Branch (296:33): [True: 0, False: 0]
  ------------------
  297|       |    // There are no connections of |connection_type| in
  298|       |    // |registered_connections_|.
  299|      0|    conn_iter = registered_connections_.end();
  300|      0|  }
  301|   730k|}
_ZN2bt3hci18AclDataChannelImpl30IncrementPendingPacketsForLinkER7WeakPtrINS0_14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS4_EE:
  304|   365k|    WeakPtr<ConnectionInterface>& connection) {
  305|   365k|  auto [iter, _] = pending_links_.try_emplace(
  306|   365k|      connection->handle(), PendingPacketData{connection->type()});
  307|   365k|  iter->second.count++;
  308|   365k|  IncrementPendingPacketsForLinkType(connection->type());
  309|   365k|}
_ZN2bt3hci18AclDataChannelImpl11SendPacketsERNSt3__119__hash_map_iteratorINS2_15__hash_iteratorIPNS2_11__hash_nodeINS2_17__hash_value_typeIt7WeakPtrINS0_14AclDataChannel19ConnectionInterfaceE18DynamicWeakManagerIS9_EEEEPvEEEEEE:
  311|   378k|void AclDataChannelImpl::SendPackets(ConnectionMap::iterator& current_link) {
  312|   378k|  PW_DCHECK(current_link != registered_connections_.end());
  ------------------
  |  |   51|   378k|  do {                            \
  |  |   52|   378k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   378k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   378k|  do {                                                                         \
  |  |  |  |   40|   378k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 378k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   378k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   378k|    }                             \
  |  |   55|   378k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  313|   378k|  const ConnectionMap::iterator original_link = current_link;
  314|   378k|  const LinkType link_type = original_link->second->type();
  315|   378k|  size_t free_buffer_packets = GetNumFreePacketsForLinkType(link_type);
  316|   378k|  bool is_packet_queued = true;
  317|       |
  318|       |  // Send packets as long as a link may have a packet queued and buffer space is
  319|       |  // available.
  320|  1.10M|  for (; free_buffer_packets != 0;
  ------------------
  |  Branch (320:10): [True: 1.09M, False: 14.1k]
  ------------------
  321|  1.09M|       IncrementRoundRobinIterator(current_link, link_type)) {
  322|  1.09M|    if (current_link == original_link) {
  ------------------
  |  Branch (322:9): [True: 1.09M, False: 0]
  ------------------
  323|  1.09M|      if (!is_packet_queued) {
  ------------------
  |  Branch (323:11): [True: 364k, False: 730k]
  ------------------
  324|       |        // All links are empty
  325|   364k|        break;
  326|   364k|      }
  327|   730k|      is_packet_queued = false;
  328|   730k|    }
  329|       |
  330|   730k|    if (!current_link->second->HasAvailablePacket()) {
  ------------------
  |  Branch (330:9): [True: 364k, False: 365k]
  ------------------
  331|   364k|      continue;
  332|   364k|    }
  333|       |
  334|       |    // Acquire a wake lease because we may be taking the last queued packet from
  335|       |    // upper layers, causing them to drop their wake leases.
  336|   365k|    pw::Result<pw::bluetooth_sapphire::Lease> lease = PW_SAPPHIRE_ACQUIRE_LEASE(
  ------------------
  |  |   25|   365k|  lease_provider.Acquire(PW_SAPPHIRE_LEASE_TOKEN_EXPR(name))
  |  |  ------------------
  |  |  |  |   37|   365k|#define PW_SAPPHIRE_LEASE_TOKEN_EXPR(name) name
  |  |  ------------------
  ------------------
  337|   365k|        wake_lease_provider_, "AclDataChannelImpl::SendPackets");
  338|       |
  339|       |    // If there is an available packet, send and update packet counts
  340|   365k|    ACLDataPacketPtr packet = current_link->second->GetNextOutboundPacket();
  341|   365k|    PW_DCHECK(packet);
  ------------------
  |  |   51|   365k|  do {                            \
  |  |   52|   365k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   365k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   365k|  do {                                                                         \
  |  |  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   365k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   365k|    }                             \
  |  |   55|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  342|   365k|    hci_->SendAclData(packet->view().data().subspan());
  343|       |
  344|   365k|    is_packet_queued = true;
  345|   365k|    free_buffer_packets--;
  346|   365k|    IncrementPendingPacketsForLink(current_link->second);
  347|   365k|  }
  348|   378k|}
_ZN2bt3hci18AclDataChannelImpl18TrySendNextPacketsEv:
  350|   378k|void AclDataChannelImpl::TrySendNextPackets() {
  351|   378k|  if (current_bredr_link_ != registered_connections_.end()) {
  ------------------
  |  Branch (351:7): [True: 378k, False: 0]
  ------------------
  352|       |    // If the BR/EDR buffer is shared, this will also send LE packets.
  353|   378k|    SendPackets(current_bredr_link_);
  354|   378k|  }
  355|       |
  356|   378k|  if (!IsBrEdrBufferShared() &&
  ------------------
  |  Branch (356:7): [True: 0, False: 378k]
  |  Branch (356:7): [True: 0, False: 378k]
  ------------------
  357|   378k|      current_le_link_ != registered_connections_.end()) {
  ------------------
  |  Branch (357:7): [True: 0, False: 0]
  ------------------
  358|      0|    SendPackets(current_le_link_);
  359|      0|  }
  360|   378k|}
_ZN2bt3hci18AclDataChannelImpl25OnOutboundPacketAvailableEv:
  362|   378k|void AclDataChannelImpl::OnOutboundPacketAvailable() { TrySendNextPackets(); }
_ZN2bt3hci18AclDataChannelImpl16SetDataRxHandlerEN3fit13function_implILm16ELb0EFvNSt3__110unique_ptrINS0_6PacketINS_8hci_spec13ACLDataHeaderEEENS4_14default_deleteIS9_EEEEENS4_9allocatorISt4byteEEEE:
  377|  6.11k|void AclDataChannelImpl::SetDataRxHandler(ACLPacketHandler rx_callback) {
  378|  6.11k|  PW_CHECK(rx_callback);
  ------------------
  |  |   39|  6.11k|  do {                                                                         \
  |  |   40|  6.11k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 6.11k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  6.11k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  379|  6.11k|  rx_callback_ = std::move(rx_callback);
  380|  6.11k|  hci_->SetReceiveAclFunction(
  381|  6.11k|      fit::bind_member<&AclDataChannelImpl::OnRxPacket>(this));
  382|  6.11k|}
_ZNK2bt3hci18AclDataChannelImpl13GetBufferInfoEv:
  414|  3.05k|const DataBufferInfo& AclDataChannelImpl::GetBufferInfo() const {
  415|  3.05k|  return bredr_buffer_info_;
  416|  3.05k|}
_ZNK2bt3hci18AclDataChannelImpl15GetLeBufferInfoEv:
  418|  3.05k|const DataBufferInfo& AclDataChannelImpl::GetLeBufferInfo() const {
  419|  3.05k|  return !IsBrEdrBufferShared() ? le_buffer_info_ : bredr_buffer_info_;
  ------------------
  |  Branch (419:10): [True: 0, False: 3.05k]
  ------------------
  420|  3.05k|}
_ZNK2bt3hci18AclDataChannelImpl28GetNumFreePacketsForLinkTypeENS_8LinkTypeE:
  559|   378k|    LinkType link_type) const {
  560|   378k|  if (link_type == LinkType::kACL || IsBrEdrBufferShared()) {
  ------------------
  |  Branch (560:7): [True: 378k, False: 0]
  |  Branch (560:38): [True: 0, False: 0]
  ------------------
  561|   378k|    PW_DCHECK(bredr_buffer_info_.max_num_packets() >=
  ------------------
  |  |   51|   378k|  do {                            \
  |  |   52|   378k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   378k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   378k|  do {                                                                         \
  |  |  |  |   40|   378k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 378k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   378k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   378k|    }                             \
  |  |   55|   378k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  562|   378k|              *num_pending_bredr_packets_);
  563|   378k|    return bredr_buffer_info_.max_num_packets() - *num_pending_bredr_packets_;
  564|   378k|  } else if (link_type == LinkType::kLE) {
  ------------------
  |  Branch (564:14): [True: 0, False: 0]
  ------------------
  565|      0|    PW_DCHECK(le_buffer_info_.max_num_packets() >= *num_pending_le_packets_);
  ------------------
  |  |   51|      0|  do {                            \
  |  |   52|      0|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|      0|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|      0|  do {                                                                         \
  |  |  |  |   40|      0|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|      0|    }                             \
  |  |   55|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  566|      0|    return le_buffer_info_.max_num_packets() - *num_pending_le_packets_;
  567|      0|  }
  568|      0|  return 0;
  569|   378k|}
_ZN2bt3hci18AclDataChannelImpl34IncrementPendingPacketsForLinkTypeENS_8LinkTypeE:
  587|   365k|    LinkType link_type) {
  588|   365k|  if (link_type == LinkType::kACL || IsBrEdrBufferShared()) {
  ------------------
  |  Branch (588:7): [True: 365k, False: 0]
  |  Branch (588:38): [True: 0, False: 0]
  ------------------
  589|   365k|    *num_pending_bredr_packets_.Mutable() += 1;
  590|   365k|    PW_DCHECK(*num_pending_bredr_packets_ <=
  ------------------
  |  |   51|   365k|  do {                            \
  |  |   52|   365k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   365k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   365k|  do {                                                                         \
  |  |  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   365k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   365k|    }                             \
  |  |   55|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  591|   365k|              bredr_buffer_info_.max_num_packets());
  592|   365k|  } else if (link_type == LinkType::kLE) {
  ------------------
  |  Branch (592:14): [True: 0, False: 0]
  ------------------
  593|      0|    *num_pending_le_packets_.Mutable() += 1;
  594|      0|    PW_DCHECK(*num_pending_le_packets_ <= le_buffer_info_.max_num_packets());
  ------------------
  |  |   51|      0|  do {                            \
  |  |   52|      0|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|      0|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|      0|  do {                                                                         \
  |  |  |  |   40|      0|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|      0|    }                             \
  |  |   55|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  595|      0|  }
  596|       |
  597|   365k|  if (!wake_lease_) {
  ------------------
  |  Branch (597:7): [True: 3.02k, False: 362k]
  ------------------
  598|  3.02k|    pw::Result<pw::bluetooth_sapphire::Lease> lease =
  599|  3.02k|        PW_SAPPHIRE_ACQUIRE_LEASE(wake_lease_provider_, "AclDataChannel");
  ------------------
  |  |   25|  3.02k|  lease_provider.Acquire(PW_SAPPHIRE_LEASE_TOKEN_EXPR(name))
  |  |  ------------------
  |  |  |  |   37|  3.02k|#define PW_SAPPHIRE_LEASE_TOKEN_EXPR(name) name
  |  |  ------------------
  ------------------
  600|  3.02k|    if (lease.ok()) {
  ------------------
  |  Branch (600:9): [True: 3.02k, False: 0]
  ------------------
  601|  3.02k|      wake_lease_ = std::move(lease.value());
  602|  3.02k|    }
  603|  3.02k|  }
  604|   365k|}
_ZN2bt3hci18AclDataChannelImpl10OnRxPacketEN2pw4spanIKSt4byteLm18446744073709551615EEE:
  606|   543k|void AclDataChannelImpl::OnRxPacket(pw::span<const std::byte> buffer) {
  607|   543k|  PW_CHECK(rx_callback_);
  ------------------
  |  |   39|   543k|  do {                                                                         \
  |  |   40|   543k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 543k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   543k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  608|       |
  609|   543k|  if (buffer.size() < sizeof(hci_spec::ACLDataHeader)) {
  ------------------
  |  Branch (609:7): [True: 0, False: 543k]
  ------------------
  610|       |    // TODO(fxbug.dev/42179582): Handle these types of errors by signaling
  611|       |    // Transport.
  612|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  613|      0|           "hci",
  614|      0|           "malformed packet - expected at least %zu bytes, got %zu",
  615|      0|           sizeof(hci_spec::ACLDataHeader),
  616|      0|           buffer.size());
  617|      0|    return;
  618|      0|  }
  619|       |
  620|   543k|  const size_t payload_size = buffer.size() - sizeof(hci_spec::ACLDataHeader);
  621|       |
  622|   543k|  ACLDataPacketPtr packet =
  623|   543k|      ACLDataPacket::New(static_cast<uint16_t>(payload_size));
  624|   543k|  packet->mutable_view()->mutable_data().Write(
  625|   543k|      reinterpret_cast<const uint8_t*>(buffer.data()), buffer.size());
  626|   543k|  packet->InitializeFromBuffer();
  627|       |
  628|   543k|  if (packet->view().header().data_total_length != payload_size) {
  ------------------
  |  Branch (628:7): [True: 0, False: 543k]
  ------------------
  629|       |    // TODO(fxbug.dev/42179582): Handle these types of errors by signaling
  630|       |    // Transport.
  631|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  632|      0|           "hci",
  633|      0|           "malformed packet - payload size from header (%hu) does not match"
  634|      0|           " received payload size: %zu",
  635|      0|           packet->view().header().data_total_length,
  636|      0|           payload_size);
  637|      0|    return;
  638|      0|  }
  639|       |
  640|   543k|  {
  641|   543k|    TRACE_DURATION("bluetooth", "AclDataChannelImpl->rx_callback_");
  642|   543k|    rx_callback_(std::move(packet));
  643|   543k|  }
  644|   543k|}
_ZN2bt3hci18AclDataChannelImpl24ResetRoundRobinIteratorsEv:
  659|   285k|void AclDataChannelImpl::ResetRoundRobinIterators() {
  660|   285k|  current_bredr_link_ = registered_connections_.begin();
  661|       |
  662|       |  // If the BR/EDR buffer isn't shared, we need to do extra work to ensure
  663|       |  // |current_bredr_link_| is initialized to a link of BR/EDR type. The same
  664|       |  // applies for |current_le_link_|.
  665|   285k|  if (!IsBrEdrBufferShared()) {
  ------------------
  |  Branch (665:7): [True: 0, False: 285k]
  ------------------
  666|      0|    current_le_link_ = registered_connections_.begin();
  667|       |
  668|      0|    IncrementRoundRobinIterator(current_bredr_link_, bt::LinkType::kACL);
  669|      0|    IncrementRoundRobinIterator(current_le_link_, bt::LinkType::kLE);
  670|      0|  }
  671|   285k|}

_ZN2bt3hci6PacketINS_8hci_spec13ACLDataHeaderEE3NewEt:
   59|   543k|ACLDataPacketPtr ACLDataPacket::New(uint16_t payload_size) {
   60|   543k|  return NewACLDataPacket(payload_size);
   61|   543k|}
_ZN2bt3hci6PacketINS_8hci_spec13ACLDataHeaderEE3NewEtNS2_21ACLPacketBoundaryFlagENS2_16ACLBroadcastFlagEt:
   68|   365k|    uint16_t payload_size) {
   69|   365k|  auto packet = NewACLDataPacket(payload_size);
   70|   365k|  if (!packet)
  ------------------
  |  Branch (70:7): [True: 0, False: 365k]
  ------------------
   71|      0|    return nullptr;
   72|       |
   73|   365k|  packet->WriteHeader(connection_handle, packet_boundary_flag, broadcast_flag);
   74|   365k|  return packet;
   75|   365k|}
_ZNK2bt3hci6PacketINS_8hci_spec13ACLDataHeaderEE17connection_handleEv:
   77|  1.05M|hci_spec::ConnectionHandle ACLDataPacket::connection_handle() const {
   78|       |  // Return the lower 12-bits of the first two octets.
   79|  1.05M|  return pw::bytes::ConvertOrderFrom(
   80|  1.05M|             cpp20::endian::little,
   81|  1.05M|             ACLDataPacket::view().header().handle_and_flags) &
   82|  1.05M|         0x0FFF;
   83|  1.05M|}
_ZNK2bt3hci6PacketINS_8hci_spec13ACLDataHeaderEE20packet_boundary_flagEv:
   85|  1.00M|hci_spec::ACLPacketBoundaryFlag ACLDataPacket::packet_boundary_flag() const {
   86|       |  // Return bits 4-5 in the higher octet of |handle_and_flags| or
   87|       |  // "0b00xx000000000000".
   88|  1.00M|  return static_cast<hci_spec::ACLPacketBoundaryFlag>(
   89|  1.00M|      (pw::bytes::ConvertOrderFrom(
   90|  1.00M|           cpp20::endian::little,
   91|  1.00M|           ACLDataPacket::view().header().handle_and_flags) >>
   92|  1.00M|       12) &
   93|  1.00M|      0x0003);
   94|  1.00M|}
_ZNK2bt3hci6PacketINS_8hci_spec13ACLDataHeaderEE14broadcast_flagEv:
   96|   497k|hci_spec::ACLBroadcastFlag ACLDataPacket::broadcast_flag() const {
   97|       |  // Return bits 6-7 in the higher octet of |handle_and_flags| or
   98|       |  // "0bxx00000000000000".
   99|   497k|  return static_cast<hci_spec::ACLBroadcastFlag>(
  100|   497k|      pw::bytes::ConvertOrderFrom(cpp20::endian::little,
  101|   497k|                                  view().header().handle_and_flags) >>
  102|   497k|      14);
  103|   497k|}
_ZN2bt3hci6PacketINS_8hci_spec13ACLDataHeaderEE20InitializeFromBufferEv:
  105|   543k|void ACLDataPacket::InitializeFromBuffer() {
  106|   543k|  mutable_view()->Resize(pw::bytes::ConvertOrderFrom(
  107|   543k|      cpp20::endian::little, view().header().data_total_length));
  108|   543k|}
_ZN2bt3hci6PacketINS_8hci_spec13ACLDataHeaderEE11WriteHeaderEtNS2_21ACLPacketBoundaryFlagENS2_16ACLBroadcastFlagE:
  113|   365k|    hci_spec::ACLBroadcastFlag broadcast_flag) {
  114|       |  // Must fit inside 12-bits.
  115|   365k|  PW_DCHECK(connection_handle <= 0x0FFF);
  ------------------
  |  |   51|   365k|  do {                            \
  |  |   52|   365k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   365k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   365k|  do {                                                                         \
  |  |  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   365k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   365k|    }                             \
  |  |   55|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  116|       |
  117|       |  // Must fit inside 2-bits.
  118|   365k|  PW_DCHECK(static_cast<uint8_t>(packet_boundary_flag) <= 0x03);
  ------------------
  |  |   51|   365k|  do {                            \
  |  |   52|   365k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   365k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   365k|  do {                                                                         \
  |  |  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   365k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   365k|    }                             \
  |  |   55|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  119|   365k|  PW_DCHECK(static_cast<uint8_t>(broadcast_flag) <= 0x03);
  ------------------
  |  |   51|   365k|  do {                            \
  |  |   52|   365k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|   365k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|   365k|  do {                                                                         \
  |  |  |  |   40|   365k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 365k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|   365k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|   365k|    }                             \
  |  |   55|   365k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  120|       |
  121|       |  // Bitwise OR causes int promotion, so the result must be explicitly casted.
  122|   365k|  uint16_t handle_and_flags = static_cast<uint16_t>(
  123|   365k|      connection_handle | (static_cast<uint16_t>(packet_boundary_flag) << 12) |
  124|   365k|      (static_cast<uint16_t>(broadcast_flag) << 14));
  125|   365k|  mutable_view()->mutable_header()->handle_and_flags =
  126|   365k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, handle_and_flags);
  127|   365k|  mutable_view()->mutable_header()->data_total_length = static_cast<uint16_t>(
  128|   365k|      pw::bytes::ConvertOrderTo(cpp20::endian::little, view().payload_size()));
  129|   365k|}
acl_data_packet.cc:_ZN2bt3hci12_GLOBAL__N_116NewACLDataPacketEm:
   39|   909k|ACLDataPacketPtr NewACLDataPacket(size_t payload_size) {
   40|   909k|  PW_CHECK(payload_size <= allocators::kLargeACLDataPayloadSize,
  ------------------
  |  |   39|   909k|  do {                                                                         \
  |  |   40|   909k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 909k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|   909k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   41|   909k|           "payload size %zu too large (allowed = %zu)",
   42|   909k|           payload_size,
   43|   909k|           allocators::kLargeACLDataPayloadSize);
   44|       |
   45|   909k|  if (payload_size <= allocators::kSmallACLDataPayloadSize) {
  ------------------
  |  Branch (45:7): [True: 897k, False: 11.9k]
  ------------------
   46|   897k|    return std::make_unique<SmallACLDataPacket>(payload_size);
   47|   897k|  }
   48|       |
   49|  11.9k|  if (payload_size <= allocators::kMediumACLDataPayloadSize) {
  ------------------
  |  Branch (49:7): [True: 11.9k, False: 0]
  ------------------
   50|  11.9k|    return std::make_unique<MediumACLDataPacket>(payload_size);
   51|  11.9k|  }
   52|       |
   53|      0|  return std::make_unique<LargeACLDataPacket>(payload_size);
   54|  11.9k|}

_ZN2bt3hci14CommandChannelC2EPN2pw9bluetooth10ControllerERNS2_5async10DispatcherERNS2_18bluetooth_sapphire13LeaseProviderE:
  162|  3.05k|    : next_transaction_id_(1u),
  163|  3.05k|      next_event_handler_id_(1u),
  164|  3.05k|      hci_(hci),
  165|  3.05k|      allowed_command_packets_(1u),
  166|  3.05k|      dispatcher_(dispatcher),
  167|  3.05k|      wake_lease_provider_(wake_lease_provider),
  168|  3.05k|      weak_ptr_factory_(this) {
  169|  3.05k|  hci_->SetEventFunction(fit::bind_member<&CommandChannel::OnEvent>(this));
  170|       |
  171|  3.05k|  bt_log(DEBUG, "hci", "CommandChannel initialized");
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
  172|  3.05k|}
_ZN2bt3hci14CommandChannelD2Ev:
  174|  3.05k|CommandChannel::~CommandChannel() {
  175|  3.05k|  bt_log(INFO, "hci", "CommandChannel destroyed");
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
  176|  3.05k|  hci_->SetEventFunction(nullptr);
  177|  3.05k|}
_ZN2bt3hci14CommandChannel15AddEventHandlerEhN3fit13function_implILm16ELb0EFNS1_19EventCallbackResultERKNS0_11EventPacketEENSt3__19allocatorISt4byteEEEE:
  308|  6.11k|    hci_spec::EventCode event_code, EventCallback event_callback) {
  309|  6.11k|  if (event_code == hci_spec::kCommandStatusEventCode ||
  ------------------
  |  Branch (309:7): [True: 0, False: 6.11k]
  ------------------
  310|  6.11k|      event_code == hci_spec::kCommandCompleteEventCode ||
  ------------------
  |  Branch (310:7): [True: 0, False: 6.11k]
  ------------------
  311|  6.11k|      event_code == hci_spec::kLEMetaEventCode) {
  ------------------
  |  Branch (311:7): [True: 0, False: 6.11k]
  ------------------
  312|      0|    return 0u;
  313|      0|  }
  314|       |
  315|  6.11k|  EventHandlerData* handler = FindEventHandler(event_code);
  316|  6.11k|  if (handler && handler->is_async()) {
  ------------------
  |  Branch (316:7): [True: 0, False: 6.11k]
  |  Branch (316:18): [True: 0, False: 0]
  ------------------
  317|      0|    bt_log(ERROR,
  ------------------
  |  |  141|      0|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|      0|  do {                                                                     \
  |  |  |  |   74|      0|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      0|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|      0|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      0|  do {                                                    \
  |  |  |  |  |  |   56|      0|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|      0|           (flags),                                       \
  |  |  |  |  |  |   58|      0|           module,                                        \
  |  |  |  |  |  |   59|      0|           __FILE__,                                      \
  |  |  |  |  |  |   60|      0|           __LINE__,                                      \
  |  |  |  |  |  |   61|      0|           __func__,                                      \
  |  |  |  |  |  |   62|      0|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|      0|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|      0|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|      0|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|      0|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|      0|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|      0|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|      0|    }                                                                      \
  |  |  |  |   77|      0|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|      0|         PW_LOG_LEVEL,                             \
  |  |  143|      0|         tag,                                      \
  |  |  144|      0|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|      0|         __VA_ARGS__);                             \
  |  |  146|      0|  ::bt::internal::CheckFormat(tag)
  ------------------
  318|      0|           "hci",
  319|      0|           "async event handler %zu already registered for event code %#.2x",
  320|      0|           handler->handler_id,
  321|      0|           event_code);
  322|      0|    return 0u;
  323|      0|  }
  324|       |
  325|  6.11k|  EventHandlerId handler_id = NewEventHandler(event_code,
  326|  6.11k|                                              EventType::kHciEvent,
  327|  6.11k|                                              hci_spec::kNoOp,
  328|  6.11k|                                              std::move(event_callback));
  329|  6.11k|  event_code_handlers_.emplace(event_code, handler_id);
  330|  6.11k|  return handler_id;
  331|  6.11k|}
_ZN2bt3hci14CommandChannel18RemoveEventHandlerEm:
  376|  6.11k|void CommandChannel::RemoveEventHandler(EventHandlerId handler_id) {
  377|       |  // If the ID doesn't exist or it is internal. it can't be removed.
  378|  6.11k|  auto iter = event_handler_id_map_.find(handler_id);
  379|  6.11k|  if (iter == event_handler_id_map_.end() || iter->second.is_async()) {
  ------------------
  |  Branch (379:7): [True: 0, False: 6.11k]
  |  Branch (379:7): [True: 0, False: 6.11k]
  |  Branch (379:46): [True: 0, False: 6.11k]
  ------------------
  380|      0|    return;
  381|      0|  }
  382|       |
  383|  6.11k|  RemoveEventHandlerInternal(handler_id);
  384|  6.11k|}
_ZN2bt3hci14CommandChannel16FindEventHandlerEh:
  387|  6.11k|    hci_spec::EventCode code) {
  388|  6.11k|  auto it = event_code_handlers_.find(code);
  389|  6.11k|  if (it == event_code_handlers_.end()) {
  ------------------
  |  Branch (389:7): [True: 6.11k, False: 0]
  ------------------
  390|  6.11k|    return nullptr;
  391|  6.11k|  }
  392|      0|  return &event_handler_id_map_[it->second];
  393|  6.11k|}
_ZN2bt3hci14CommandChannel26RemoveEventHandlerInternalEm:
  414|  6.11k|void CommandChannel::RemoveEventHandlerInternal(EventHandlerId handler_id) {
  415|  6.11k|  auto iter = event_handler_id_map_.find(handler_id);
  416|  6.11k|  if (iter == event_handler_id_map_.end()) {
  ------------------
  |  Branch (416:7): [True: 0, False: 6.11k]
  ------------------
  417|      0|    return;
  418|      0|  }
  419|       |
  420|  6.11k|  std::unordered_multimap<hci_spec::EventCode, EventHandlerId>* handlers =
  421|  6.11k|      nullptr;
  422|  6.11k|  switch (iter->second.event_type) {
  ------------------
  |  Branch (422:11): [True: 0, False: 6.11k]
  ------------------
  423|  6.11k|    case EventType::kHciEvent:
  ------------------
  |  Branch (423:5): [True: 6.11k, False: 0]
  ------------------
  424|  6.11k|      handlers = &event_code_handlers_;
  425|  6.11k|      break;
  426|      0|    case EventType::kLEMetaEvent:
  ------------------
  |  Branch (426:5): [True: 0, False: 6.11k]
  ------------------
  427|      0|      handlers = &le_meta_subevent_code_handlers_;
  428|      0|      break;
  429|      0|    case EventType::kVendorEvent:
  ------------------
  |  Branch (429:5): [True: 0, False: 6.11k]
  ------------------
  430|      0|      handlers = &vendor_subevent_code_handlers_;
  431|      0|      break;
  432|  6.11k|  }
  433|       |
  434|  6.11k|  bt_log(TRACE,
  ------------------
  |  |  141|  6.11k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  6.11k|  do {                                                                     \
  |  |  |  |   74|  6.11k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  6.11k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  6.11k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.11k|  do {                                                    \
  |  |  |  |  |  |   56|  6.11k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  6.11k|           (flags),                                       \
  |  |  |  |  |  |   58|  6.11k|           module,                                        \
  |  |  |  |  |  |   59|  6.11k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  6.11k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  6.11k|           __func__,                                      \
  |  |  |  |  |  |   62|  6.11k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  6.11k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  6.11k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  6.11k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  6.11k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  6.11k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  6.11k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  6.11k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  6.11k|    }                                                                      \
  |  |  |  |   77|  6.11k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  6.11k|         PW_LOG_LEVEL,                             \
  |  |  143|  6.11k|         tag,                                      \
  |  |  144|  6.11k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  6.11k|         __VA_ARGS__);                             \
  |  |  146|  6.11k|  ::bt::internal::CheckFormat(tag)
  ------------------
  435|  6.11k|         "hci",
  436|  6.11k|         "removing handler for %s event code %#.2x",
  437|  6.11k|         EventTypeToString(iter->second.event_type).c_str(),
  438|  6.11k|         iter->second.event_code);
  439|       |
  440|  6.11k|  auto range = handlers->equal_range(iter->second.event_code);
  441|  6.11k|  for (auto it = range.first; it != range.second; ++it) {
  ------------------
  |  Branch (441:31): [True: 6.11k, False: 0]
  ------------------
  442|  6.11k|    if (it->second == handler_id) {
  ------------------
  |  Branch (442:9): [True: 6.11k, False: 0]
  ------------------
  443|  6.11k|      it = handlers->erase(it);
  444|  6.11k|      break;
  445|  6.11k|    }
  446|  6.11k|  }
  447|       |
  448|  6.11k|  event_handler_id_map_.erase(iter);
  449|  6.11k|}
_ZN2bt3hci14CommandChannel15NewEventHandlerEhNS1_9EventTypeEtN3fit13function_implILm16ELb0EFNS1_19EventCallbackResultERKNS0_11EventPacketEENSt3__19allocatorISt4byteEEEE:
  567|  6.11k|    EventCallback event_callback) {
  568|  6.11k|  PW_DCHECK(event_code);
  ------------------
  |  |   51|  6.11k|  do {                            \
  |  |   52|  6.11k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  6.11k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  6.11k|  do {                                                                         \
  |  |  |  |   40|  6.11k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 6.11k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  6.11k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  6.11k|    }                             \
  |  |   55|  6.11k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  569|       |
  570|  6.11k|  auto handler_id = next_event_handler_id_.value();
  571|  6.11k|  next_event_handler_id_.Set(handler_id + 1);
  572|  6.11k|  EventHandlerData data;
  573|  6.11k|  data.handler_id = handler_id;
  574|  6.11k|  data.event_code = event_code;
  575|  6.11k|  data.event_type = event_type;
  576|  6.11k|  data.pending_opcode = pending_opcode;
  577|  6.11k|  data.event_callback = std::move(event_callback);
  578|       |
  579|  6.11k|  bt_log(TRACE,
  ------------------
  |  |  141|  6.11k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  6.11k|  do {                                                                     \
  |  |  |  |   74|  6.11k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  6.11k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  6.11k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  6.11k|  do {                                                    \
  |  |  |  |  |  |   56|  6.11k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  6.11k|           (flags),                                       \
  |  |  |  |  |  |   58|  6.11k|           module,                                        \
  |  |  |  |  |  |   59|  6.11k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  6.11k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  6.11k|           __func__,                                      \
  |  |  |  |  |  |   62|  6.11k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   57|  6.11k|  _PW_IF(PW_EMPTY_ARGS(__VA_ARGS__), _PW_EXPAND, _PW_COMMA_ARGS) \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   21|  6.11k|  _PW_PASTE2(_PW_IF_, boolean)(true_expr, false_expr)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   27|  6.11k|#define _PW_PASTE2(a1, a2) _PW_PASTE2_EXPANDED(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   28|  6.11k|#define _PW_PASTE2_EXPANDED(a1, a2) _PW_PASTE2_IMPL(a1, a2)
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   29|  6.11k|#define _PW_PASTE2_IMPL(a1, a2) a1##a2
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   58|  6.11k|  (PW_DROP_LAST_ARG_IF_EMPTY(__VA_ARGS__))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   63|  6.11k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  6.11k|    }                                                                      \
  |  |  |  |   77|  6.11k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  6.11k|         PW_LOG_LEVEL,                             \
  |  |  143|  6.11k|         tag,                                      \
  |  |  144|  6.11k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  6.11k|         __VA_ARGS__);                             \
  |  |  146|  6.11k|  ::bt::internal::CheckFormat(tag)
  ------------------
  580|  6.11k|         "hci",
  581|  6.11k|         "adding event handler %zu for %s event code %#.2x",
  582|  6.11k|         handler_id,
  583|  6.11k|         EventTypeToString(event_type).c_str(),
  584|  6.11k|         event_code);
  585|  6.11k|  PW_DCHECK(event_handler_id_map_.find(handler_id) ==
  ------------------
  |  |   51|  6.11k|  do {                            \
  |  |   52|  6.11k|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |   53|  6.11k|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  6.11k|  do {                                                                         \
  |  |  |  |   40|  6.11k|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 6.11k]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  6.11k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  6.11k|    }                             \
  |  |   55|  6.11k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  586|  6.11k|            event_handler_id_map_.end());
  587|  6.11k|  event_handler_id_map_[handler_id] = std::move(data);
  588|       |
  589|  6.11k|  return handler_id;
  590|  6.11k|}
command_channel.cc:_ZN2bt3hciL17EventTypeToStringENS0_14CommandChannel9EventTypeE:
   35|  12.2k|static std::string EventTypeToString(CommandChannel::EventType event_type) {
   36|  12.2k|  switch (event_type) {
  ------------------
  |  Branch (36:11): [True: 0, False: 12.2k]
  ------------------
   37|  12.2k|    case CommandChannel::EventType::kHciEvent:
  ------------------
  |  Branch (37:5): [True: 12.2k, False: 0]
  ------------------
   38|  12.2k|      return "hci_event";
   39|      0|    case CommandChannel::EventType::kLEMetaEvent:
  ------------------
  |  Branch (39:5): [True: 0, False: 12.2k]
  ------------------
   40|      0|      return "le_meta_event";
   41|      0|    case CommandChannel::EventType::kVendorEvent:
  ------------------
  |  Branch (41:5): [True: 0, False: 12.2k]
  ------------------
   42|      0|      return "vendor_event";
   43|  12.2k|  }
   44|      0|  PW_CRASH("Unhandled event type %u", static_cast<unsigned int>(event_type));
  ------------------
  |  |   30|      0|  do {                                                                       \
  |  |   31|      0|    if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (31:9): [Folded - Ignored]
  |  |  ------------------
  |  |   32|      0|      _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   33|      0|    }                                                                        \
  |  |   34|      0|    PW_HANDLE_CRASH(__VA_ARGS__);                                            \
  |  |  ------------------
  |  |  |  |   23|      0|  PW_ASSERT_PRINT_EXPRESSION("CRASH", "PW_CRASH()"); \
  |  |  |  |   24|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   35|      0|  } while (0)
  |  |  ------------------
  |  |  |  Branch (35:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   45|      0|  return "(invalid)";
   46|      0|}

_ZN2bt3hci9TransportC2ENSt3__110unique_ptrIN2pw9bluetooth10ControllerENS2_14default_deleteIS6_EEEERNS4_5async10DispatcherERNS4_18bluetooth_sapphire13LeaseProviderE:
   29|  3.05k|    : WeakSelf(this),
   30|  3.05k|      dispatcher_(dispatcher),
   31|  3.05k|      controller_(std::move(controller)),
   32|  3.05k|      wake_lease_provider_(wake_lease_provider) {
   33|  3.05k|  PW_CHECK(controller_);
  ------------------
  |  |   39|  3.05k|  do {                                                                         \
  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   34|  3.05k|}
_ZN2bt3hci9TransportD2Ev:
   36|  3.05k|Transport::~Transport() { bt_log(INFO, "hci", "Transport shutting down"); }
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
_ZN2bt3hci9Transport10InitializeEN3fit13callback_implILm16ELb0EFvbENSt3__19allocatorISt4byteEEEE:
   39|  3.05k|    fit::callback<void(bool /*success*/)> complete_callback) {
   40|  3.05k|  PW_CHECK(!command_channel_);
  ------------------
  |  |   39|  3.05k|  do {                                                                         \
  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   41|       |
   42|  3.05k|  bt_log(DEBUG, "hci", "initializing Transport");
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
   43|  3.05k|  auto self = GetWeakPtr();
   44|  3.05k|  auto complete_cb_wrapper = [self, complete_cb = std::move(complete_callback)](
   45|  3.05k|                                 pw::Status status) mutable {
   46|  3.05k|    if (!self.is_alive()) {
   47|  3.05k|      return;
   48|  3.05k|    }
   49|       |
   50|  3.05k|    if (!status.ok()) {
   51|  3.05k|      complete_cb(/*success=*/false);
   52|  3.05k|      return;
   53|  3.05k|    }
   54|       |
   55|  3.05k|    self->command_channel_ = std::make_unique<CommandChannel>(
   56|  3.05k|        self->controller_.get(), self->dispatcher_, self->wake_lease_provider_);
   57|  3.05k|    self->command_channel_->set_channel_timeout_cb([self] {
   58|  3.05k|      if (self.is_alive()) {
   59|  3.05k|        self->OnChannelError();
   60|  3.05k|      }
   61|  3.05k|    });
   62|       |
   63|  3.05k|    self->controller_->GetFeatures(
   64|  3.05k|        [self, cb = std::move(complete_cb)](FeaturesBits features) mutable {
   65|  3.05k|          if (!self.is_alive()) {
   66|  3.05k|            return;
   67|  3.05k|          }
   68|  3.05k|          self->features_ = features;
   69|       |
   70|  3.05k|          bt_log(INFO, "hci", "Transport initialized");
   71|  3.05k|          cb(/*success=*/true);
   72|  3.05k|        });
   73|  3.05k|  };
   74|       |
   75|  3.05k|  auto error_cb = [self](pw::Status) {
   76|  3.05k|    if (self.is_alive()) {
   77|  3.05k|      self->OnChannelError();
   78|  3.05k|    }
   79|  3.05k|  };
   80|       |
   81|  3.05k|  controller_->Initialize(std::move(complete_cb_wrapper), std::move(error_cb));
   82|  3.05k|}
_ZN2bt3hci9Transport24InitializeACLDataChannelERKNS0_14DataBufferInfoES4_:
   86|  3.05k|    const DataBufferInfo& le_buffer_info) {
   87|  3.05k|  acl_data_channel_ = AclDataChannel::Create(this,
   88|  3.05k|                                             controller_.get(),
   89|  3.05k|                                             bredr_buffer_info,
   90|  3.05k|                                             le_buffer_info,
   91|  3.05k|                                             wake_lease_provider_);
   92|       |
   93|  3.05k|  if (hci_node_) {
  ------------------
  |  Branch (93:7): [True: 0, False: 3.05k]
  ------------------
   94|      0|    acl_data_channel_->AttachInspect(hci_node_,
   95|      0|                                     AclDataChannel::kInspectNodeName);
   96|      0|  }
   97|       |
   98|  3.05k|  return true;
   99|  3.05k|}
transport.cc:_ZZN2bt3hci9Transport10InitializeEN3fit13callback_implILm16ELb0EFvbENSt3__19allocatorISt4byteEEEEEN3$_0clEN2pw6StatusE:
   45|  3.05k|                                 pw::Status status) mutable {
   46|  3.05k|    if (!self.is_alive()) {
  ------------------
  |  Branch (46:9): [True: 0, False: 3.05k]
  ------------------
   47|      0|      return;
   48|      0|    }
   49|       |
   50|  3.05k|    if (!status.ok()) {
  ------------------
  |  Branch (50:9): [True: 0, False: 3.05k]
  ------------------
   51|      0|      complete_cb(/*success=*/false);
   52|      0|      return;
   53|      0|    }
   54|       |
   55|  3.05k|    self->command_channel_ = std::make_unique<CommandChannel>(
   56|  3.05k|        self->controller_.get(), self->dispatcher_, self->wake_lease_provider_);
   57|  3.05k|    self->command_channel_->set_channel_timeout_cb([self] {
   58|  3.05k|      if (self.is_alive()) {
   59|  3.05k|        self->OnChannelError();
   60|  3.05k|      }
   61|  3.05k|    });
   62|       |
   63|  3.05k|    self->controller_->GetFeatures(
   64|  3.05k|        [self, cb = std::move(complete_cb)](FeaturesBits features) mutable {
   65|  3.05k|          if (!self.is_alive()) {
   66|  3.05k|            return;
   67|  3.05k|          }
   68|  3.05k|          self->features_ = features;
   69|       |
   70|  3.05k|          bt_log(INFO, "hci", "Transport initialized");
   71|  3.05k|          cb(/*success=*/true);
   72|  3.05k|        });
   73|  3.05k|  };
transport.cc:_ZZZN2bt3hci9Transport10InitializeEN3fit13callback_implILm16ELb0EFvbENSt3__19allocatorISt4byteEEEEEN3$_0clEN2pw6StatusEENUlNSB_9bluetooth10Controller12FeaturesBitsEE_clESF_:
   64|  3.05k|        [self, cb = std::move(complete_cb)](FeaturesBits features) mutable {
   65|  3.05k|          if (!self.is_alive()) {
  ------------------
  |  Branch (65:15): [True: 0, False: 3.05k]
  ------------------
   66|      0|            return;
   67|      0|          }
   68|  3.05k|          self->features_ = features;
   69|       |
   70|  3.05k|          bt_log(INFO, "hci", "Transport initialized");
  ------------------
  |  |  141|  3.05k|  PW_LOG(static_cast<int>(bt::LogSeverity::level), \
  |  |  ------------------
  |  |  |  |   73|  3.05k|  do {                                                                     \
  |  |  |  |   74|  3.05k|    if (PW_LOG_ENABLE_IF(level, verbosity, module, flags)) {               \
  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  3.05k|  ((int32_t)(level) >= (int32_t)(verbosity))
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   75|  3.05k|      PW_HANDLE_LOG(level, module, flags, __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   55|  3.05k|  do {                                                    \
  |  |  |  |  |  |   56|  3.05k|    pw_Log((level),                                       \
  |  |  |  |  |  |   57|  3.05k|           (flags),                                       \
  |  |  |  |  |  |   58|  3.05k|           module,                                        \
  |  |  |  |  |  |   59|  3.05k|           __FILE__,                                      \
  |  |  |  |  |  |   60|  3.05k|           __LINE__,                                      \
  |  |  |  |  |  |   61|  3.05k|           __func__,                                      \
  |  |  |  |  |  |   62|  3.05k|           message PW_COMMA_ARGS(__VA_ARGS__));           \
  |  |  |  |  |  |   63|  3.05k|  } while (0)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (63:12): [Folded - Ignored]
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   76|  3.05k|    }                                                                      \
  |  |  |  |   77|  3.05k|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (77:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  142|  3.05k|         PW_LOG_LEVEL,                             \
  |  |  143|  3.05k|         tag,                                      \
  |  |  144|  3.05k|         GetPwLogFlags(bt::LogSeverity::level),    \
  |  |  145|  3.05k|         __VA_ARGS__);                             \
  |  |  146|  3.05k|  ::bt::internal::CheckFormat(tag)
  ------------------
   71|  3.05k|          cb(/*success=*/true);
   72|  3.05k|        });

_ZN17bt_lib_cpp_string12StringPrintfEPKcz:
   52|   120k|std::string StringPrintf(const char* format, ...) {
   53|   120k|  va_list ap;
   54|   120k|  va_start(ap, format);
   55|   120k|  std::string rv;
   56|   120k|  StringVAppendf(&rv, format, ap);
   57|   120k|  va_end(ap);
   58|   120k|  return rv;
   59|   120k|}
_ZN17bt_lib_cpp_string14StringVAppendfEPNSt3__112basic_stringIcNS0_11char_traitsIcEENS0_9allocatorIcEEEEPKcP13__va_list_tag:
   74|   120k|void StringVAppendf(std::string* dest, const char* format, va_list ap) {
   75|   120k|  int old_errno = errno;
   76|   120k|  StringVAppendfHelper(dest, format, ap);
   77|   120k|  errno = old_errno;
   78|   120k|}
string_printf.cc:_ZN17bt_lib_cpp_string12_GLOBAL__N_120StringVAppendfHelperEPNSt3__112basic_stringIcNS1_11char_traitsIcEENS1_9allocatorIcEEEEPKcP13__va_list_tag:
   24|   120k|void StringVAppendfHelper(std::string* dest, const char* format, va_list ap) {
   25|       |  // Size of the small stack buffer to use. This should be kept in sync
   26|       |  // with the numbers in StringPrintfTest.
   27|   120k|  constexpr size_t kStackBufferSize = 1024u;
   28|       |
   29|   120k|  char stack_buf[kStackBufferSize];
   30|       |  // |result| is the number of characters that would have been written if
   31|       |  // kStackBufferSize were sufficiently large, not counting the terminating null
   32|       |  // character. |vsnprintf()| always null-terminates!
   33|   120k|  int result = vsnprintf(stack_buf, kStackBufferSize, format, ap);
   34|   120k|  if (result < 0) {
  ------------------
  |  Branch (34:7): [True: 0, False: 120k]
  ------------------
   35|       |    // As far as I can tell, we'd only get |EOVERFLOW| if the result is so large
   36|       |    // that it can't be represented by an |int| (in which case retrying would be
   37|       |    // futile), so Chromium's implementation is wrong.
   38|      0|    return;
   39|      0|  }
   40|       |
   41|       |  // Only append what fit into our stack buffer.
   42|       |  // Strings that are too long will be truncated.
   43|   120k|  size_t actual_len_excluding_null = result;
   44|   120k|  if (actual_len_excluding_null > kStackBufferSize - 1) {
  ------------------
  |  Branch (44:7): [True: 0, False: 120k]
  ------------------
   45|      0|    actual_len_excluding_null = kStackBufferSize - 1;
   46|      0|  }
   47|   120k|  dest->append(stack_buf, actual_len_excluding_null);
   48|   120k|}

_ZN2pw10containers8internal30CheckIntrusiveContainerIsEmptyEb:
   21|  3.05k|void CheckIntrusiveContainerIsEmpty(bool empty) {
   22|  3.05k|  PW_CHECK(empty, "Intrusive container is not empty and cannot be destroyed");
  ------------------
  |  |   39|  3.05k|  do {                                                                         \
  |  |   40|  3.05k|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 3.05k]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  3.05k|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   23|  3.05k|}
_ZN2pw10containers8internal31CheckIntrusiveItemIsUncontainedEb:
   25|  1.68M|void CheckIntrusiveItemIsUncontained(bool uncontained) {
   26|  1.68M|  PW_CHECK(
  ------------------
  |  |   39|  1.68M|  do {                                                                         \
  |  |   40|  1.68M|    if (!(condition)) {                                                        \
  |  |  ------------------
  |  |  |  Branch (40:9): [True: 0, False: 1.68M]
  |  |  ------------------
  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  ------------------
  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  ------------------
  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |   45|      0|      }                                                                        \
  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  ------------------
  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   47|      0|    }                                                                          \
  |  |   48|  1.68M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   27|  1.68M|      uncontained,
   28|  1.68M|      "Item is in an intrusive container and cannot be added or destroyed");
   29|  1.68M|}

_ZN2pw8internal14RefCountedBaseD2Ev:
   24|   739k|RefCountedBase::~RefCountedBase() {
   25|       |  // Set the ref count to a poison value so that we have the best chance of
   26|       |  // catching a use-after-free situation.
   27|       |  //
   28|       |  // The value is chosen specifically to be negative when stored as an int32_t,
   29|       |  // and as far away from becoming positive (via either addition or subtraction)
   30|       |  // as possible.
   31|   739k|  ref_count_.store(static_cast<int32_t>(0xC0000000), std::memory_order_release);
   32|   739k|}
_ZNK2pw8internal14RefCountedBase6AddRefEv:
   34|  4.38M|void RefCountedBase::AddRef() const {
   35|  4.38M|  const auto refs = ref_count_.fetch_add(1, std::memory_order_relaxed);
   36|       |
   37|       |  // This assertion will fire if someone calls AddRef() on a ref-counted object
   38|       |  // that has reached ref_count_ == 0 but has not been destroyed yet. This could
   39|       |  // happen by manually calling AddRef(), or re-wrapping such a pointer with
   40|       |  // RefPtr<T>(T*) (which calls AddRef()).
   41|  4.38M|  PW_DCHECK(refs >= 0);
  ------------------
  |  |   51|  4.38M|  do {                            \
  |  |   52|  4.38M|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  4.38M|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  4.38M|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  4.38M|  do {                                                                         \
  |  |  |  |   40|  4.38M|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 4.38M]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  4.38M|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  4.38M|    }                             \
  |  |   55|  4.38M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   42|  4.38M|}
_ZNK2pw8internal14RefCountedBase10ReleaseRefEv:
   44|  4.38M|bool RefCountedBase::ReleaseRef() const {
   45|       |  // We don't follow the boost::intrusive_ptr/fit::RefPtr approach here with a
   46|       |  // release fetch_sub and acquire fence afterwards due to TSAN not supporting
   47|       |  // fences (see https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97868).
   48|       |  //
   49|       |  // This approach is a bit less performant - it does the acquiring on each
   50|       |  // release, not only for the last ref - but otherwise works the same.
   51|  4.38M|  const auto refs = ref_count_.fetch_sub(1, std::memory_order_acq_rel);
   52|       |
   53|       |  // This assertion will fire if someone manually calls ReleaseRef()
   54|       |  // on a ref-counted object too many times, or if ReleaseRef is called
   55|       |  // before an object has been wrapped with RefPtr.
   56|  4.38M|  PW_DCHECK(refs >= 1);
  ------------------
  |  |   51|  4.38M|  do {                            \
  |  |   52|  4.38M|    if (PW_ASSERT_ENABLE_DEBUG) { \
  |  |  ------------------
  |  |  |  |   26|  4.38M|#define PW_ASSERT_ENABLE_DEBUG 1
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (26:32): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   53|  4.38M|      PW_CHECK(__VA_ARGS__);      \
  |  |  ------------------
  |  |  |  |   39|  4.38M|  do {                                                                         \
  |  |  |  |   40|  4.38M|    if (!(condition)) {                                                        \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (40:9): [True: 0, False: 4.38M]
  |  |  |  |  ------------------
  |  |  |  |   41|      0|      _pw_assert_ConditionCannotContainThePercentCharacter(                    \
  |  |  |  |   42|      0|          #condition); /* cannot use '%' in PW_CHECK conditions */             \
  |  |  |  |   43|      0|      if (0) { /* Check args but don't execute to avoid multiple evaluation */ \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:11): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|        _pw_assert_CheckMessageArguments(" " __VA_ARGS__);                     \
  |  |  |  |   45|      0|      }                                                                        \
  |  |  |  |   46|      0|      PW_HANDLE_ASSERT_FAILURE(#condition, "" __VA_ARGS__);                    \
  |  |  |  |  ------------------
  |  |  |  |  |  |   27|      0|  PW_ASSERT_PRINT_EXPRESSION("CHECK", condition_string); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   59|      0|  fflush(stdout);                                                \
  |  |  |  |  |  |  |  |   60|      0|  fprintf(stderr, "\033[31m" _PW_ASSERT_CRASH_BANNER "\033[0m"); \
  |  |  |  |  |  |  |  |   61|      0|  fprintf(stderr,                                     \
  |  |  |  |  |  |  |  |   62|      0|          "\033[41m\033[37m\033[1m%s:%d:\033[0m "     \
  |  |  |  |  |  |  |  |   63|      0|          "\033[1m"                                   \
  |  |  |  |  |  |  |  |   64|      0|          _PW_ASSERT_MACRO(macro)                     \
  |  |  |  |  |  |  |  |   65|      0|          " "                                         \
  |  |  |  |  |  |  |  |   66|      0|          "\033[31mFAILED!\033[0m\n\n"                \
  |  |  |  |  |  |  |  |   67|      0|          "  \033[33mFAILED ASSERTION\033[0m\n\n"                    \
  |  |  |  |  |  |  |  |   68|      0|          "    %s\n\n"                                \
  |  |  |  |  |  |  |  |   69|      0|          "  \033[33mFILE & LINE\033[0m\n\n"                         \
  |  |  |  |  |  |  |  |   70|      0|          "    %s:%d\n\n"                             \
  |  |  |  |  |  |  |  |   71|      0|          "  \033[33mFUNCTION\033[0m\n\n"                            \
  |  |  |  |  |  |  |  |   72|      0|          "    %s\n\n",                               \
  |  |  |  |  |  |  |  |   73|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   74|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   75|      0|          expression,                                 \
  |  |  |  |  |  |  |  |   76|      0|          __FILE__,                                   \
  |  |  |  |  |  |  |  |   77|      0|          __LINE__,                                   \
  |  |  |  |  |  |  |  |   78|      0|          _PW_ASSERT_ABORT_FUNCTION)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |   28|      0|#define _PW_ASSERT_ABORT_FUNCTION __PRETTY_FUNCTION__
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   28|      0|  _PW_ASSERT_PRINT_MESSAGE_AND_ABORT(__VA_ARGS__)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   49|      0|  fprintf(stderr, "  \033[33mMESSAGE\033[0m\n\n    " __VA_ARGS__); \
  |  |  |  |  |  |  |  |   50|      0|  fprintf(stderr, "\n\n");                                         \
  |  |  |  |  |  |  |  |   51|      0|  fflush(stderr);                                                  \
  |  |  |  |  |  |  |  |   52|      0|  abort()
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   47|      0|    }                                                                          \
  |  |  |  |   48|  4.38M|  } while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:12): [Folded - Ignored]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   54|  4.38M|    }                             \
  |  |   55|  4.38M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (55:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
   57|       |
   58|  4.38M|  return refs == 1;
   59|  4.38M|}

pw_Log:
  101|  3.44M|                       ...) {
  102|  3.44M|  va_list args;
  103|  3.44M|  va_start(args, message);
  104|  3.44M|  pw_Log_HandleMessageVaList(level,
  105|  3.44M|                             flags,
  106|  3.44M|                             module_name,
  107|  3.44M|                             file_name,
  108|  3.44M|                             line_number,
  109|  3.44M|                             function_name,
  110|  3.44M|                             message,
  111|  3.44M|                             args);
  112|  3.44M|  va_end(args);
  113|  3.44M|}
pw_Log_HandleMessageVaList:
  122|  3.44M|                                           va_list args) {
  123|       |  // Accumulate the log message in this buffer, then output it.
  124|  3.44M|  pw::StringBuffer<PW_LOG_BASIC_ENTRY_SIZE> buffer;
  125|       |
  126|       |  // Column: Timestamp
  127|       |  // Note that this macro method defaults to a no-op.
  128|  3.44M|  PW_LOG_APPEND_TIMESTAMP(buffer);
  ------------------
  |  |   67|  3.44M|  do {                                  \
  |  |   68|  3.44M|  } while (0)
  |  |  ------------------
  |  |  |  Branch (68:12): [Folded - Ignored]
  |  |  ------------------
  ------------------
  129|       |
  130|       |  // Column: Filename
  131|       |#if PW_LOG_SHOW_FILENAME
  132|       |  buffer.Format(" %-30s:%4d |", GetFileBasename(file_name), line_number);
  133|       |#else
  134|  3.44M|  static_cast<void>(file_name);
  135|  3.44M|  static_cast<void>(line_number);
  136|  3.44M|#endif
  137|       |
  138|       |  // Column: Function
  139|       |#if PW_LOG_SHOW_FUNCTION
  140|       |  buffer.Format(" %-30s |", function_name);
  141|       |#else
  142|  3.44M|  static_cast<void>(function_name);
  143|  3.44M|#endif
  144|       |
  145|       |  // Column: Module
  146|       |#if PW_LOG_SHOW_MODULE
  147|       |  buffer << " " BOLD;
  148|       |  buffer.Format("%3s", module_name);
  149|       |  buffer << RESET " ";
  150|       |#else
  151|  3.44M|  static_cast<void>(module_name);
  152|  3.44M|#endif  // PW_LOG_SHOW_MODULE
  153|       |
  154|       |  // Column: Flag
  155|       |#if PW_LOG_SHOW_FLAG
  156|       |#if PW_EMOJI
  157|       |  buffer << (flags ? "🚩" : "  ");
  158|       |#else
  159|       |  buffer << (flags ? "*" : "|");
  160|       |#endif  // PW_EMOJI
  161|       |  buffer << " ";
  162|       |#else
  163|  3.44M|  static_cast<void>(flags);
  164|  3.44M|#endif  // PW_LOG_SHOW_FLAG
  165|       |
  166|       |  // Column: Level
  167|  3.44M|  buffer << LogLevelToLogLevelName(level) << "  ";
  168|       |
  169|       |  // Column: Message
  170|  3.44M|  buffer.FormatVaList(message, args);
  171|       |
  172|       |  // All done; flush the log.
  173|  3.44M|  write_log(buffer);
  174|  3.44M|}
log_basic.cc:_ZN2pw9log_basic12_GLOBAL__N_122LogLevelToLogLevelNameEi:
   44|  3.44M|const char* LogLevelToLogLevelName(int level) {
   45|  3.44M|  switch (level) {
   46|       |    // clang-format off
   47|       |#if PW_EMOJI
   48|       |    case PW_LOG_LEVEL_DEBUG    : return "👾" RESET;
   49|       |    case PW_LOG_LEVEL_INFO     : return "ℹ️ " RESET;
   50|       |    case PW_LOG_LEVEL_WARN     : return "⚠️ " RESET;
   51|       |    case PW_LOG_LEVEL_ERROR    : return "❌" RESET;
   52|       |    case PW_LOG_LEVEL_CRITICAL : return "☠️ " RESET;
   53|       |    default: return "❔" RESET;
   54|       |#else
   55|  3.27M|    case PW_LOG_LEVEL_DEBUG    : return BLUE     BOLD        "DBG" RESET;
  ------------------
  |  |   21|  3.27M|#define PW_LOG_LEVEL_DEBUG    1
  ------------------
                  case PW_LOG_LEVEL_DEBUG    : return BLUE     BOLD        "DBG" RESET;
  ------------------
  |  |   32|  3.27M|#define BLUE      "\033[96m"
  ------------------
                  case PW_LOG_LEVEL_DEBUG    : return BLUE     BOLD        "DBG" RESET;
  ------------------
  |  |   38|  3.27M|#define RESET     "\033[0m"
  ------------------
  |  Branch (55:5): [True: 3.27M, False: 173k]
  ------------------
   56|  12.2k|    case PW_LOG_LEVEL_INFO     : return MAGENTA  BOLD        "INF" RESET;
  ------------------
  |  |   22|  12.2k|#define PW_LOG_LEVEL_INFO     2
  ------------------
                  case PW_LOG_LEVEL_INFO     : return MAGENTA  BOLD        "INF" RESET;
  ------------------
  |  |   28|  12.2k|#define MAGENTA   "\033[35m"
  ------------------
                  case PW_LOG_LEVEL_INFO     : return MAGENTA  BOLD        "INF" RESET;
  ------------------
  |  |   38|  12.2k|#define RESET     "\033[0m"
  ------------------
  |  Branch (56:5): [True: 12.2k, False: 3.43M]
  ------------------
   57|   159k|    case PW_LOG_LEVEL_WARN     : return YELLOW   BOLD        "WRN" RESET;
  ------------------
  |  |   23|   159k|#define PW_LOG_LEVEL_WARN     3
  ------------------
                  case PW_LOG_LEVEL_WARN     : return YELLOW   BOLD        "WRN" RESET;
  ------------------
  |  |   29|   159k|#define YELLOW    "\033[33m"
  ------------------
                  case PW_LOG_LEVEL_WARN     : return YELLOW   BOLD        "WRN" RESET;
  ------------------
  |  |   38|   159k|#define RESET     "\033[0m"
  ------------------
  |  Branch (57:5): [True: 159k, False: 3.28M]
  ------------------
   58|  1.35k|    case PW_LOG_LEVEL_ERROR    : return RED      BOLD        "ERR" RESET;
  ------------------
  |  |   24|  1.35k|#define PW_LOG_LEVEL_ERROR    4
  ------------------
                  case PW_LOG_LEVEL_ERROR    : return RED      BOLD        "ERR" RESET;
  ------------------
  |  |   30|  1.35k|#define RED       "\033[31m"
  ------------------
                  case PW_LOG_LEVEL_ERROR    : return RED      BOLD        "ERR" RESET;
  ------------------
  |  |   38|  1.35k|#define RESET     "\033[0m"
  ------------------
  |  Branch (58:5): [True: 1.35k, False: 3.44M]
  ------------------
   59|      0|    case PW_LOG_LEVEL_CRITICAL : return BLACK    BOLD RED_BG "FTL" RESET;
  ------------------
  |  |   25|      0|#define PW_LOG_LEVEL_CRITICAL 5
  ------------------
                  case PW_LOG_LEVEL_CRITICAL : return BLACK    BOLD RED_BG "FTL" RESET;
  ------------------
  |  |   33|      0|#define BLACK     "\033[30m"
  ------------------
                  case PW_LOG_LEVEL_CRITICAL : return BLACK    BOLD RED_BG "FTL" RESET;
  ------------------
  |  |   38|      0|#define RESET     "\033[0m"
  ------------------
  |  Branch (59:5): [True: 0, False: 3.44M]
  ------------------
   60|      0|    default                    : return GREEN    BOLD        "UNK" RESET;
  ------------------
  |  |   31|      0|#define GREEN     "\033[32m"
  ------------------
                  default                    : return GREEN    BOLD        "UNK" RESET;
  ------------------
  |  |   38|      0|#define RESET     "\033[0m"
  ------------------
  |  Branch (60:5): [True: 0, False: 3.44M]
  ------------------
   61|  3.44M|#endif
   62|       |      // clang-format on
   63|  3.44M|  }
   64|  3.44M|}
log_basic.cc:_ZNK2pw9log_basic12_GLOBAL__N_13$_0clENSt3__117basic_string_viewIcNS3_11char_traitsIcEEEE:
   86|  3.44M|void (*write_log)(std::string_view) = [](std::string_view log) {
   87|  3.44M|  sys_io::WriteLine(log)
   88|  3.44M|      .IgnoreError();  // TODO: b/242598609 - Handle Status properly
   89|  3.44M|};

_ZN2pw6string6FormatENS_4spanIcLm18446744073709551615EEEPKcz:
   21|    180|StatusWithSize Format(span<char> buffer, const char* format, ...) {
   22|    180|  va_list args;
   23|    180|  va_start(args, format);
   24|    180|  const StatusWithSize result = FormatVaList(buffer, format, args);
   25|    180|  va_end(args);
   26|       |
   27|    180|  return result;
   28|    180|}
_ZN2pw6string12FormatVaListENS_4spanIcLm18446744073709551615EEEPKcP13__va_list_tag:
   32|  3.44M|                            va_list args) {
   33|  3.44M|  if (buffer.empty()) {
  ------------------
  |  Branch (33:7): [True: 0, False: 3.44M]
  ------------------
   34|      0|    return StatusWithSize::ResourceExhausted();
   35|      0|  }
   36|       |
   37|  3.44M|  const int result = std::vsnprintf(buffer.data(), buffer.size(), format, args);
   38|       |
   39|       |  // If an error occurred, the number of characters written is unknown.
   40|       |  // Discard any output by terminating the buffer.
   41|  3.44M|  if (result < 0) {
  ------------------
  |  Branch (41:7): [True: 0, False: 3.44M]
  ------------------
   42|      0|    buffer[0] = '\0';
   43|      0|    return StatusWithSize::InvalidArgument();
   44|      0|  }
   45|       |
   46|       |  // If result >= buffer.size(), the output was truncated and null-terminated.
   47|  3.44M|  if (static_cast<unsigned>(result) >= buffer.size()) {
  ------------------
  |  Branch (47:7): [True: 13.8k, False: 3.42M]
  ------------------
   48|  13.8k|    return StatusWithSize::ResourceExhausted(buffer.size() - 1);
   49|  13.8k|  }
   50|       |
   51|  3.42M|  return StatusWithSize(result);
   52|  3.44M|}

_ZN2pw13StringBuilder6appendEPKcm:
   37|  6.88M|StringBuilder& StringBuilder::append(const char* str, size_t count) {
   38|  6.88M|  char* const append_destination = buffer_.data() + size();
   39|  6.88M|  std::copy_n(str, ResizeAndTerminate(count), append_destination);
   40|  6.88M|  return *this;
   41|  6.88M|}
_ZN2pw13StringBuilder6appendEPKc:
   43|  6.88M|StringBuilder& StringBuilder::append(const char* str) {
   44|       |  // Use buffer_.size() - size() as the maximum length so that strings too long
   45|       |  // to fit in the buffer will request one character too many, which sets the
   46|       |  // status to RESOURCE_EXHAUSTED.
   47|  6.88M|  return append(string::ClampedCString(str, buffer_.size() - size()));
   48|  6.88M|}
_ZN2pw13StringBuilder6appendENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
   50|  6.88M|StringBuilder& StringBuilder::append(std::string_view str) {
   51|  6.88M|  return append(str.data(), str.size());
   52|  6.88M|}
_ZN2pw13StringBuilder18ResizeAndTerminateEm:
   65|  6.88M|size_t StringBuilder::ResizeAndTerminate(size_t chars_to_append) {
   66|  6.88M|  const size_t copied = std::min(chars_to_append, max_size() - size());
   67|       |  // NOTE: `+=` is not used in order to avoid implicit integer conversion which
   68|       |  // results in an error on some compilers.
   69|  6.88M|  *size_ = static_cast<InlineString<>::size_type>(copied + *size_);
   70|  6.88M|  NullTerminate();
   71|       |
   72|  6.88M|  if (buffer_.empty() || chars_to_append != copied) {
  ------------------
  |  Branch (72:7): [True: 0, False: 6.88M]
  |  Branch (72:26): [True: 0, False: 6.88M]
  ------------------
   73|      0|    SetErrorStatus(Status::ResourceExhausted());
   74|  6.88M|  } else {
   75|  6.88M|    last_status_ = StatusCode(OkStatus());
   76|  6.88M|  }
   77|  6.88M|  return copied;
   78|  6.88M|}
_ZN2pw13StringBuilder12FormatVaListEPKcP13__va_list_tag:
   99|  3.44M|StringBuilder& StringBuilder::FormatVaList(const char* format, va_list args) {
  100|  3.44M|  HandleStatusWithSize(
  101|  3.44M|      string::FormatVaList(buffer_.subspan(size()), format, args));
  102|  3.44M|  return *this;
  103|  3.44M|}
_ZN2pw13StringBuilder20HandleStatusWithSizeENS_14StatusWithSizeE:
  121|  3.44M|void StringBuilder::HandleStatusWithSize(StatusWithSize written) {
  122|  3.44M|  const Status status = written.status();
  123|  3.44M|  last_status_ = StatusCode(status);
  124|  3.44M|  if (!status.ok()) {
  ------------------
  |  Branch (124:7): [True: 13.8k, False: 3.42M]
  ------------------
  125|  13.8k|    status_ = StatusCode(status);
  126|  13.8k|  }
  127|       |
  128|       |  // NOTE: `+=` is not used in order to avoid implicit integer conversion which
  129|       |  // results in an error on some compilers.
  130|  3.44M|  *size_ = static_cast<InlineString<>::size_type>(written.size() + *size_);
  131|  3.44M|}

_ZN2pw6sys_io10WriteBytesENS_4spanIKSt4byteLm18446744073709551615EEE:
   29|  3.44M|StatusWithSize WriteBytes(ConstByteSpan src) {
   30|   191M|  for (size_t i = 0; i < src.size_bytes(); ++i) {
  ------------------
  |  Branch (30:22): [True: 188M, False: 3.44M]
  ------------------
   31|   188M|    Status result = WriteByte(src[i]);
   32|   188M|    if (!result.ok()) {
  ------------------
  |  Branch (32:9): [True: 0, False: 188M]
  ------------------
   33|      0|      return StatusWithSize(result, i);
   34|      0|    }
   35|   188M|  }
   36|  3.44M|  return StatusWithSize(src.size_bytes());
   37|  3.44M|}

_ZN2pw6sys_io9WriteByteESt4byte:
   39|   191M|Status WriteByte(std::byte b) {
   40|   191M|  if (std::putchar(static_cast<char>(b)) == EOF) {
  ------------------
  |  Branch (40:7): [True: 0, False: 191M]
  ------------------
   41|      0|    return Status::Internal();
   42|      0|  }
   43|   191M|  return OkStatus();
   44|   191M|}
_ZN2pw6sys_io9WriteLineENSt3__117basic_string_viewIcNS1_11char_traitsIcEEEE:
   46|  3.44M|StatusWithSize WriteLine(std::string_view s) {
   47|  3.44M|  size_t chars_written = 0;
   48|  3.44M|  StatusWithSize size_result = WriteBytes(as_bytes(span(s)));
   49|  3.44M|  if (!size_result.ok()) {
  ------------------
  |  Branch (49:7): [True: 0, False: 3.44M]
  ------------------
   50|      0|    return size_result;
   51|      0|  }
   52|  3.44M|  chars_written += size_result.size();
   53|       |
   54|       |  // Write trailing newline character.
   55|  3.44M|  Status result = WriteByte(static_cast<std::byte>('\n'));
   56|  3.44M|  if (result.ok()) {
  ------------------
  |  Branch (56:7): [True: 3.44M, False: 0]
  ------------------
   57|  3.44M|    chars_written++;
   58|  3.44M|  }
   59|       |
   60|  3.44M|  return StatusWithSize(result, chars_written);
   61|  3.44M|}

