_ZN6google8protobuf8internal24InitProtobufDefaultsSlowEv:
  104|      1|void InitProtobufDefaultsSlow() {
  105|      1|  static bool is_inited = InitProtobufDefaultsImpl();
  106|      1|  (void)is_inited;
  107|      1|}
generated_message_util.cc:_ZN6google8protobuf8internalL24InitProtobufDefaultsImplEv:
   93|      1|static bool InitProtobufDefaultsImpl() {
   94|      1|  if (auto* to_destroy = fixed_address_empty_string.Init()) {
  ------------------
  |  Branch (94:13): [True: 0, False: 1]
  ------------------
   95|      0|    OnShutdownDestroyString(to_destroy);
   96|      0|  }
   97|      1|  InitWeakDefaults();
   98|       |
   99|       |
  100|      1|  init_protobuf_defaults_state.store(true, std::memory_order_release);
  101|      1|  return true;
  102|      1|}
generated_message_util.cc:_ZN6google8protobuf8internalL16InitWeakDefaultsEv:
   72|      1|static void InitWeakDefaults() {
   73|       |  // force link the dummy entry.
   74|      1|  StrongPointer<DummyWeakDefault*, &dummy_weak_default>();
   75|       |  // We don't know the size of each object, but we know the layout of the tail.
   76|       |  // It contains a WeakDescriptorDefaultTail object.
   77|       |  // As such, we iterate the section backwards.
   78|      1|  const char* start = &__start_pb_defaults;
   79|      1|  const char* end = &__stop_pb_defaults;
   80|      2|  while (start != end) {
  ------------------
  |  Branch (80:10): [True: 1, False: 1]
  ------------------
   81|      1|    auto* tail = reinterpret_cast<const WeakDescriptorDefaultTail*>(end) - 1;
   82|      1|    end -= tail->size;
   83|      1|    const MessageGlobalsBase* instance =
   84|      1|        reinterpret_cast<const MessageGlobalsBase*>(end);
   85|      1|    *tail->target = instance;
   86|      1|  }
   87|      1|}

_ZNK6google8protobuf8internal26GlobalEmptyStringConstexpr4InitEv:
  867|      1|  std::string* Init() const { return nullptr; }
_ZN6google8protobuf8internal13StrongPointerIPNS1_16DummyWeakDefaultETnT_XadL_ZNS1_18dummy_weak_defaultEEEEEvv:
   74|      1|PROTOBUF_ALWAYS_INLINE void StrongPointer() {
   75|       |  // This injects a relocation in the code path without having to run code, but
   76|       |  // we can only do it with a newer clang.
   77|      1|  asm(".reloc ., BFD_RELOC_NONE, %p0" ::"Ws"(ptr));
   78|      1|}

