LLVMFuzzerInitialize:
   37|      2|LLVMFuzzerInitialize(int *argc ISC_ATTR_UNUSED, char ***argv ISC_ATTR_UNUSED) {
   38|      2|	isc_mem_create("fuzz", &mctx);
  ------------------
  |  |  200|      2|#define isc_mem_create(name, cp) isc__mem_create((name), (cp)_ISC_MEM_FILELINE)
  ------------------
   39|      2|	isc_lex_create(mctx, 1024, &lex);
   40|       |
   41|      2|	return 0;
   42|      2|}
LLVMFuzzerTestOneInput:
   45|    947|LLVMFuzzerTestOneInput(const uint8_t *data, size_t size) {
   46|    947|	isc_buffer_t buf;
   47|    947|	isc_result_t result;
   48|    947|	isc_token_t token;
   49|    947|	isc_tokentype_t expect;
   50|    947|	bool eol;
   51|       |
   52|    947|	if (size < sizeof(expect) + sizeof(eol)) {
  ------------------
  |  Branch (52:6): [True: 4, False: 943]
  ------------------
   53|      4|		return 0;
   54|      4|	}
   55|       |
   56|    943|	(void)memmove(&expect, data, sizeof(expect));
   57|    943|	data += sizeof(expect);
   58|    943|	size -= sizeof(expect);
   59|       |
   60|    943|	eol = *data != 0;
   61|    943|	data += 1;
   62|    943|	size -= 1;
   63|       |
   64|    943|	isc_buffer_constinit(&buf, data, size);
  ------------------
  |  |  557|    943|	do {                                                \
  |  |  558|    943|		union {                                     \
  |  |  559|    943|			void	   *_var;                   \
  |  |  560|    943|			const void *_const;                 \
  |  |  561|    943|		} _deconst;                                 \
  |  |  562|    943|		_deconst._const = (_d);                     \
  |  |  563|    943|		isc_buffer_init((_b), _deconst._var, (_l)); \
  |  |  564|    943|	} while (0)
  |  |  ------------------
  |  |  |  Branch (564:11): [Folded, False: 943]
  |  |  ------------------
  ------------------
   65|    943|	isc_buffer_add(&buf, size);
   66|    943|	isc_buffer_setactive(&buf, size);
   67|       |
   68|    943|	CHECK(isc_lex_openbuffer(lex, &buf));
  ------------------
  |  |  251|    943|	{                                      \
  |  |  252|    943|		result = (r);                  \
  |  |  253|    943|		if (result != ISC_R_SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (253:7): [True: 0, False: 943]
  |  |  ------------------
  |  |  254|      0|			goto cleanup;          \
  |  |  255|      0|		}                              \
  |  |  256|    943|	}
  ------------------
   69|       |
   70|  27.5k|	do {
   71|  27.5k|		result = isc_lex_getmastertoken(lex, &token, expect, eol);
   72|  27.5k|	} while (result == ISC_R_SUCCESS && token.type != isc_tokentype_eof);
  ------------------
  |  Branch (72:11): [True: 26.9k, False: 589]
  |  Branch (72:38): [True: 26.6k, False: 354]
  ------------------
   73|       |
   74|    943|cleanup:
   75|    943|	return 0;
   76|    943|}

dns__acl_initialize:
  502|      2|dns__acl_initialize(void) {
  503|      2|	isc_mutex_init(&insecure_prefix_lock);
  ------------------
  |  |   68|      2|#define isc_mutex_init(mp)    isc__mutex_init(mp)
  |  |  ------------------
  |  |  |  |   79|      2|	{                                                                 \
  |  |  |  |   80|      2|		int _ret = pthread_mutex_init(mp, &isc__mutex_init_attr); \
  |  |  |  |   81|      2|		PTHREADS_RUNTIME_CHECK(pthread_mutex_init, _ret);         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  284|      2|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  ------------------
  |  |  |  |   82|      2|	}
  |  |  ------------------
  ------------------
  504|      2|}

dns__db_initialize:
   76|      2|dns__db_initialize(void) {
   77|      2|	isc_rwlock_init(&implock);
   78|       |
   79|      2|	ISC_LIST_INIT(implementations);
  ------------------
  |  |   43|      2|	do {                        \
  |  |   44|      2|		(list).head = NULL; \
  |  |   45|      2|		(list).tail = NULL; \
  |  |   46|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (46:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   80|       |
   81|      2|	qpimp = (dns_dbimplementation_t){
   82|      2|		.name = "qpcache",
   83|      2|		.create = dns__qpcache_create,
   84|      2|		.link = ISC_LINK_INITIALIZER,
  ------------------
  |  |   30|      2|#define ISC_LINK_INITIALIZER ISC_LINK_INITIALIZER_TYPE(void)
  |  |  ------------------
  |  |  |  |   26|      2|	{                                         \
  |  |  |  |   27|      2|		.prev = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      2|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   28|      2|		.next = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      2|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   29|      2|	}
  |  |  ------------------
  ------------------
   85|      2|	};
   86|       |
   87|      2|	qpzoneimp = (dns_dbimplementation_t){
   88|      2|		.name = "qpzone",
   89|      2|		.create = dns__qpzone_create,
   90|      2|		.link = ISC_LINK_INITIALIZER,
  ------------------
  |  |   30|      2|#define ISC_LINK_INITIALIZER ISC_LINK_INITIALIZER_TYPE(void)
  |  |  ------------------
  |  |  |  |   26|      2|	{                                         \
  |  |  |  |   27|      2|		.prev = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      2|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   28|      2|		.next = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      2|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   29|      2|	}
  |  |  ------------------
  ------------------
   91|      2|	};
   92|       |
   93|      2|	ISC_LIST_APPEND(implementations, &qpimp, link);
  ------------------
  |  |  100|      2|	do {                                                  \
  |  |  101|      2|		ISC_LINK_INSIST(!ISC_LINK_LINKED(elt, link)); \
  |  |  102|      2|		__ISC_LIST_APPENDUNSAFE(list, elt, link);     \
  |  |  ------------------
  |  |  |  |   88|      2|	do {                                            \
  |  |  |  |   89|      2|		if ((list).tail != NULL) {              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (89:7): [True: 0, False: 2]
  |  |  |  |  ------------------
  |  |  |  |   90|      0|			(list).tail->link.next = (elt); \
  |  |  |  |   91|      2|		} else {                                \
  |  |  |  |   92|      2|			(list).head = (elt);            \
  |  |  |  |   93|      2|		}                                       \
  |  |  |  |   94|      2|		(elt)->link.prev = (list).tail;         \
  |  |  |  |   95|      2|		(elt)->link.next = NULL;                \
  |  |  |  |   96|      2|		(list).tail = (elt);                    \
  |  |  |  |   97|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (97:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (103:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   94|       |	ISC_LIST_APPEND(implementations, &qpzoneimp, link);
  ------------------
  |  |  100|      2|	do {                                                  \
  |  |  101|      2|		ISC_LINK_INSIST(!ISC_LINK_LINKED(elt, link)); \
  |  |  102|      2|		__ISC_LIST_APPENDUNSAFE(list, elt, link);     \
  |  |  ------------------
  |  |  |  |   88|      2|	do {                                            \
  |  |  |  |   89|      2|		if ((list).tail != NULL) {              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (89:7): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   90|      2|			(list).tail->link.next = (elt); \
  |  |  |  |   91|      2|		} else {                                \
  |  |  |  |   92|      0|			(list).head = (elt);            \
  |  |  |  |   93|      0|		}                                       \
  |  |  |  |   94|      2|		(elt)->link.prev = (list).tail;         \
  |  |  |  |   95|      2|		(elt)->link.next = NULL;                \
  |  |  |  |   96|      2|		(list).tail = (elt);                    \
  |  |  |  |   97|      2|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (97:11): [Folded, False: 2]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  103|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (103:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   95|      2|}

dns__dlz_initialize:
   86|      2|dns__dlz_initialize(void) {
   87|      2|	isc_rwlock_init(&dlz_implock);
   88|       |	ISC_LIST_INIT(dlz_implementations);
  ------------------
  |  |   43|      2|	do {                        \
  |  |   44|      2|		(list).head = NULL; \
  |  |   45|      2|		(list).tail = NULL; \
  |  |   46|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (46:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   89|      2|}

dst__lib_initialize:
  198|      2|dst__lib_initialize(void) {
  199|      2|	isc_mem_create("dst", &dst__mctx);
  ------------------
  |  |  200|      2|#define isc_mem_create(name, cp) isc__mem_create((name), (cp)_ISC_MEM_FILELINE)
  ------------------
  200|       |
  201|      2|	dst__hmacmd5_init(&dst_t_func[DST_ALG_HMACMD5]);
  202|      2|	dst__hmacsha1_init(&dst_t_func[DST_ALG_HMACSHA1]);
  203|      2|	dst__hmacsha224_init(&dst_t_func[DST_ALG_HMACSHA224]);
  204|      2|	dst__hmacsha256_init(&dst_t_func[DST_ALG_HMACSHA256]);
  205|      2|	dst__hmacsha384_init(&dst_t_func[DST_ALG_HMACSHA384]);
  206|      2|	dst__hmacsha512_init(&dst_t_func[DST_ALG_HMACSHA512]);
  207|       |
  208|       |	/* RSASHA1 (NSEC3RSASHA1) is verify only in FIPS mode. */
  209|      2|	dst__opensslrsa_init(&dst_t_func[DST_ALG_RSASHA1], DST_ALG_RSASHA1);
  210|      2|	dst__opensslrsa_init(&dst_t_func[DST_ALG_NSEC3RSASHA1],
  211|      2|			     DST_ALG_NSEC3RSASHA1);
  212|      2|	dst__opensslrsa_init(&dst_t_func[DST_ALG_RSASHA256], DST_ALG_RSASHA256);
  213|      2|	dst__opensslrsa_init(&dst_t_func[DST_ALG_RSASHA512], DST_ALG_RSASHA512);
  214|      2|	dst__opensslecdsa_init(&dst_t_func[DST_ALG_ECDSA256]);
  215|      2|	dst__opensslecdsa_init(&dst_t_func[DST_ALG_ECDSA384]);
  216|      2|	dst__openssleddsa_init(&dst_t_func[DST_ALG_ED25519], DST_ALG_ED25519);
  217|      2|#ifdef HAVE_OPENSSL_ED448
  218|      2|	dst__openssleddsa_init(&dst_t_func[DST_ALG_ED448], DST_ALG_ED448);
  219|      2|#endif /* ifdef HAVE_OPENSSL_ED448 */
  220|       |
  221|       |#if HAVE_GSSAPI
  222|       |	dst__gssapi_init(&dst_t_func[DST_ALG_GSSAPI]);
  223|       |#endif /* HAVE_GSSAPI */
  224|       |	/*
  225|       |	 * RSASHA256 using assigned OID 1.2.840.113549.1.1.11 as
  226|       |	 * a private OID example.
  227|       |	 */
  228|      2|	dst__opensslrsa_init(&dst_t_func[DST_ALG_RSASHA256PRIVATEOID],
  229|      2|			     DST_ALG_RSASHA256PRIVATEOID);
  230|       |	/*
  231|       |	 * RSASHA512 using assigned OID 1.2.840.113549.1.1.13 as
  232|       |	 * a private OID example.
  233|       |	 */
  234|      2|	dst__opensslrsa_init(&dst_t_func[DST_ALG_RSASHA512PRIVATEOID],
  235|      2|			     DST_ALG_RSASHA512PRIVATEOID);
  236|      2|}

dns__dyndb_initialize:
   55|      2|dns__dyndb_initialize(void) {
   56|      2|	isc_mutex_init(&dyndb_lock);
  ------------------
  |  |   68|      2|#define isc_mutex_init(mp)    isc__mutex_init(mp)
  |  |  ------------------
  |  |  |  |   79|      2|	{                                                                 \
  |  |  |  |   80|      2|		int _ret = pthread_mutex_init(mp, &isc__mutex_init_attr); \
  |  |  |  |   81|      2|		PTHREADS_RUNTIME_CHECK(pthread_mutex_init, _ret);         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  284|      2|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  ------------------
  |  |  |  |   82|      2|	}
  |  |  ------------------
  ------------------
   57|       |	ISC_LIST_INIT(dyndb_implementations);
  ------------------
  |  |   43|      2|	do {                        \
  |  |   44|      2|		(list).head = NULL; \
  |  |   45|      2|		(list).tail = NULL; \
  |  |   46|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (46:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
   58|      2|}

dns_lib_initialize:
   36|      2|dns_lib_initialize(void) {
   37|      2|	isc__lib_initialize();
   38|      2|	dns__lib_initialize();
   39|      2|}

dns__lib_initialize:
   44|      2|dns__lib_initialize(void) {
   45|      2|	if (isc_refcount_increment0(&dns__lib_references) > 0) {
  ------------------
  |  |   68|      2|	({                                                 \
  |  |   69|      2|		uint_fast32_t __v;                         \
  |  |   70|      2|		__v = atomic_fetch_add_release(target, 1); \
  |  |  ------------------
  |  |  |  |   52|      2|	atomic_fetch_add_explicit((o), (v), memory_order_release)
  |  |  ------------------
  |  |   71|      2|		INSIST(__v < UINT32_MAX);                  \
  |  |  ------------------
  |  |  |  |  198|      2|#define INSIST(e)    ISC_INSIST(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      2|	((void)((cond) ||                                                 \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:10): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      2|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |  |  |   57|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      2|		__v;                                       \
  |  |   73|      2|	})
  ------------------
  |  Branch (45:6): [True: 0, False: 2]
  ------------------
   46|      0|		return;
   47|      0|	}
   48|       |
   49|      2|	dst__lib_initialize();
   50|      2|	dns__acl_initialize();
   51|      2|	dns__dlz_initialize();
   52|      2|	dns__db_initialize();
   53|      2|	dns__dyndb_initialize();
   54|      2|	dns__qp_initialize();
   55|      2|	dns__qpzone_initialize();
   56|      2|	dns__zone_keymgmt_initialize();
   57|      2|}

dst__opensslecdsa_init:
  668|      4|dst__opensslecdsa_init(dst_func_t **funcp) {
  669|      4|	REQUIRE(funcp != NULL);
  ------------------
  |  |  194|      4|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      4|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      4|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  670|       |
  671|      4|	if (*funcp == NULL) {
  ------------------
  |  Branch (671:6): [True: 4, False: 0]
  ------------------
  672|      4|		*funcp = &opensslecdsa_functions;
  673|      4|	}
  674|      4|}

dst__openssleddsa_init:
  644|      4|dst__openssleddsa_init(dst_func_t **funcp, unsigned char algorithm) {
  645|      4|	REQUIRE(funcp != NULL);
  ------------------
  |  |  194|      4|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      4|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      4|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  646|       |
  647|      4|	if (*funcp == NULL) {
  ------------------
  |  Branch (647:6): [True: 4, False: 0]
  ------------------
  648|      4|		if (check_algorithm(algorithm) == ISC_R_SUCCESS) {
  ------------------
  |  Branch (648:7): [True: 4, False: 0]
  ------------------
  649|      4|			*funcp = &openssleddsa_functions;
  650|      4|		}
  651|      4|	}
  652|      4|}
openssleddsa_link.c:check_algorithm:
  584|      4|check_algorithm(unsigned char algorithm) {
  585|      4|	EVP_MD_CTX *evp_md_ctx = EVP_MD_CTX_create();
  586|      4|	EVP_PKEY *pkey = NULL;
  587|      4|	const eddsa_alginfo_t *alginfo = NULL;
  588|      4|	const unsigned char *key = NULL;
  589|      4|	const unsigned char *sig = NULL;
  590|      4|	const unsigned char test[] = "test";
  591|      4|	isc_result_t result = ISC_R_SUCCESS;
  592|      4|	size_t key_len, sig_len;
  593|       |
  594|      4|	if (evp_md_ctx == NULL) {
  ------------------
  |  Branch (594:6): [True: 0, False: 4]
  ------------------
  595|      0|		CLEANUP(ISC_R_NOMEMORY);
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  596|      0|	}
  597|       |
  598|      4|	switch (algorithm) {
  599|      0|#if HAVE_OPENSSL_ED448
  600|      2|	case DST_ALG_ED448:
  ------------------
  |  Branch (600:2): [True: 2, False: 2]
  ------------------
  601|      2|		sig = ed448_sig;
  602|      2|		sig_len = sizeof(ed448_sig) - 1;
  603|      2|		key = ed448_pub;
  604|      2|		key_len = sizeof(ed448_pub) - 1;
  605|      2|		alginfo = openssleddsa_alg_info(algorithm);
  606|      2|		break;
  607|      0|#endif /* HAVE_OPENSSL_ED448 */
  608|      2|	case DST_ALG_ED25519:
  ------------------
  |  Branch (608:2): [True: 2, False: 2]
  ------------------
  609|      2|		sig = ed25519_sig;
  610|      2|		sig_len = sizeof(ed25519_sig) - 1;
  611|      2|		key = ed25519_pub;
  612|      2|		key_len = sizeof(ed25519_pub) - 1;
  613|      2|		alginfo = openssleddsa_alg_info(algorithm);
  614|      2|		break;
  615|      0|	default:
  ------------------
  |  Branch (615:2): [True: 0, False: 4]
  ------------------
  616|      0|		CLEANUP(ISC_R_NOTIMPLEMENTED);
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  617|      4|	}
  618|       |
  619|      4|	INSIST(alginfo != NULL);
  ------------------
  |  |  198|      4|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|      4|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      4|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  620|      4|	CHECK(raw_key_to_ossl(alginfo, 0, key, &key_len, &pkey));
  ------------------
  |  |  251|      4|	{                                      \
  |  |  252|      4|		result = (r);                  \
  |  |  253|      4|		if (result != ISC_R_SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (253:7): [True: 0, False: 4]
  |  |  ------------------
  |  |  254|      0|			goto cleanup;          \
  |  |  255|      0|		}                              \
  |  |  256|      4|	}
  ------------------
  621|       |
  622|       |	/*
  623|       |	 * Check that we can verify the signature.
  624|       |	 */
  625|      4|	if (EVP_DigestVerifyInit(evp_md_ctx, NULL, NULL, NULL, pkey) != 1 ||
  ------------------
  |  Branch (625:6): [True: 0, False: 4]
  ------------------
  626|      4|	    EVP_DigestVerify(evp_md_ctx, sig, sig_len, test,
  ------------------
  |  Branch (626:6): [True: 0, False: 4]
  ------------------
  627|      4|			     sizeof(test) - 1) != 1)
  628|      0|	{
  629|      0|		CLEANUP(ISC_R_NOTIMPLEMENTED);
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  630|      0|	}
  631|       |
  632|      4|cleanup:
  633|      4|	if (pkey != NULL) {
  ------------------
  |  Branch (633:6): [True: 4, False: 0]
  ------------------
  634|      4|		EVP_PKEY_free(pkey);
  635|      4|	}
  636|      4|	if (evp_md_ctx != NULL) {
  ------------------
  |  Branch (636:6): [True: 4, False: 0]
  ------------------
  637|       |		EVP_MD_CTX_destroy(evp_md_ctx);
  638|      4|	}
  639|      4|	ERR_clear_error();
  640|      4|	return result;
  641|      4|}
openssleddsa_link.c:openssleddsa_alg_info:
   54|      4|openssleddsa_alg_info(unsigned int key_alg) {
   55|      4|	if (key_alg == DST_ALG_ED25519) {
  ------------------
  |  Branch (55:6): [True: 2, False: 2]
  ------------------
   56|      2|		static const eddsa_alginfo_t ed25519_alginfo = {
   57|      2|			.pkey_type = EVP_PKEY_ED25519,
   58|      2|			.nid = NID_ED25519,
   59|      2|			.key_size = DNS_KEY_ED25519SIZE,
  ------------------
  |  |   74|      2|#define DNS_KEY_ED25519SIZE 32
  ------------------
   60|      2|			.sig_size = DNS_SIG_ED25519SIZE,
  ------------------
  |  |   75|      2|#define DNS_SIG_ED25519SIZE 64
  ------------------
   61|      2|		};
   62|      2|		return &ed25519_alginfo;
   63|      2|	}
   64|      2|#if HAVE_OPENSSL_ED448
   65|      2|	if (key_alg == DST_ALG_ED448) {
  ------------------
  |  Branch (65:6): [True: 2, False: 0]
  ------------------
   66|      2|		static const eddsa_alginfo_t ed448_alginfo = {
   67|      2|			.pkey_type = EVP_PKEY_ED448,
   68|      2|			.nid = NID_ED448,
   69|      2|			.key_size = DNS_KEY_ED448SIZE,
  ------------------
  |  |   77|      2|#define DNS_KEY_ED448SIZE 57
  ------------------
   70|      2|			.sig_size = DNS_SIG_ED448SIZE,
  ------------------
  |  |   78|      2|#define DNS_SIG_ED448SIZE 114
  ------------------
   71|      2|		};
   72|      2|		return &ed448_alginfo;
   73|      2|	}
   74|      0|#endif /* HAVE_OPENSSL_ED448 */
   75|      0|	return NULL;
   76|      2|}
openssleddsa_link.c:raw_key_to_ossl:
   80|      4|		const unsigned char *key, size_t *key_len, EVP_PKEY **pkey) {
   81|      4|	isc_result_t result;
   82|      4|	int pkey_type = alginfo->pkey_type;
   83|      4|	size_t len = alginfo->key_size;
   84|       |
   85|      4|	result = (private ? DST_R_INVALIDPRIVATEKEY : DST_R_INVALIDPUBLICKEY);
  ------------------
  |  Branch (85:12): [True: 0, False: 4]
  ------------------
   86|      4|	if (*key_len < len) {
  ------------------
  |  Branch (86:6): [True: 0, False: 4]
  ------------------
   87|      0|		return result;
   88|      0|	}
   89|       |
   90|      4|	if (private) {
  ------------------
  |  Branch (90:6): [True: 0, False: 4]
  ------------------
   91|      0|		*pkey = EVP_PKEY_new_raw_private_key(pkey_type, NULL, key, len);
   92|      4|	} else {
   93|      4|		*pkey = EVP_PKEY_new_raw_public_key(pkey_type, NULL, key, len);
   94|      4|	}
   95|      4|	if (*pkey == NULL) {
  ------------------
  |  Branch (95:6): [True: 0, False: 4]
  ------------------
   96|      0|		return dst__openssl_toresult(result);
  ------------------
  |  |   28|      0|	isc__ossl_wrap_logged_toresult(ISC_LOGCATEGORY_INVALID,               \
  |  |   29|      0|				       ISC_LOGMODULE_INVALID, NULL, fallback, \
  |  |   30|      0|				       __FILE__, __LINE__)
  ------------------
   97|      0|	}
   98|       |
   99|      4|	*key_len = len;
  100|      4|	return ISC_R_SUCCESS;
  101|      4|}

dst__opensslrsa_init:
  921|     12|dst__opensslrsa_init(dst_func_t **funcp, unsigned short algorithm) {
  922|     12|	REQUIRE(funcp != NULL);
  ------------------
  |  |  194|     12|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     12|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     12|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  923|       |
  924|     12|	if (*funcp == NULL) {
  ------------------
  |  Branch (924:6): [True: 12, False: 0]
  ------------------
  925|     12|		if (check_algorithm(algorithm) == ISC_R_SUCCESS) {
  ------------------
  |  Branch (925:7): [True: 12, False: 0]
  ------------------
  926|     12|			*funcp = &opensslrsa_functions;
  927|     12|		}
  928|     12|	}
  929|     12|}
opensslrsa_link.c:check_algorithm:
  861|     12|check_algorithm(unsigned short algorithm) {
  862|     12|	isc_ossl_wrap_rsa_components_t c = { .needs_cleanup = true };
  863|     12|	EVP_MD_CTX *evp_md_ctx = EVP_MD_CTX_create();
  864|     12|	EVP_PKEY *pkey = NULL;
  865|     12|	const EVP_MD *type = NULL;
  866|     12|	const unsigned char *sig = NULL;
  867|     12|	isc_result_t result = ISC_R_SUCCESS;
  868|     12|	size_t len;
  869|       |
  870|     12|	switch (algorithm) {
  871|      2|	case DST_ALG_RSASHA1:
  ------------------
  |  Branch (871:2): [True: 2, False: 10]
  ------------------
  872|      4|	case DST_ALG_NSEC3RSASHA1:
  ------------------
  |  Branch (872:2): [True: 2, False: 10]
  ------------------
  873|      4|		type = isc__crypto_md[ISC_MD_SHA1]; /* SHA1 + RSA */
  874|      4|		sig = sha1_sig;
  875|      4|		len = sizeof(sha1_sig) - 1;
  876|      4|		break;
  877|      2|	case DST_ALG_RSASHA256:
  ------------------
  |  Branch (877:2): [True: 2, False: 10]
  ------------------
  878|      4|	case DST_ALG_RSASHA256PRIVATEOID:
  ------------------
  |  Branch (878:2): [True: 2, False: 10]
  ------------------
  879|      4|		type = isc__crypto_md[ISC_MD_SHA256]; /* SHA256 + RSA */
  880|      4|		sig = sha256_sig;
  881|      4|		len = sizeof(sha256_sig) - 1;
  882|      4|		break;
  883|      2|	case DST_ALG_RSASHA512:
  ------------------
  |  Branch (883:2): [True: 2, False: 10]
  ------------------
  884|      4|	case DST_ALG_RSASHA512PRIVATEOID:
  ------------------
  |  Branch (884:2): [True: 2, False: 10]
  ------------------
  885|      4|		type = isc__crypto_md[ISC_MD_SHA512];
  886|      4|		sig = sha512_sig;
  887|      4|		len = sizeof(sha512_sig) - 1;
  888|      4|		break;
  889|      0|	default:
  ------------------
  |  Branch (889:2): [True: 0, False: 12]
  ------------------
  890|      0|		CLEANUP(ISC_R_NOTIMPLEMENTED);
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  891|     12|	}
  892|       |
  893|       |	/*
  894|       |	 * Construct pkey.
  895|       |	 */
  896|     12|	c.e = BN_bin2bn(e_bytes, sizeof(e_bytes) - 1, NULL);
  897|     12|	c.n = BN_bin2bn(n_bytes, sizeof(n_bytes) - 1, NULL);
  898|       |
  899|     12|	result = isc_ossl_wrap_load_rsa_public_from_components(&c, &pkey);
  900|     12|	INSIST(result == ISC_R_SUCCESS);
  ------------------
  |  |  198|     12|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|     12|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|     12|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  901|       |
  902|       |	/*
  903|       |	 * Check that we can verify the signature.
  904|       |	 */
  905|     12|	if (EVP_DigestInit_ex(evp_md_ctx, type, NULL) != 1 ||
  ------------------
  |  Branch (905:6): [True: 0, False: 12]
  ------------------
  906|     12|	    EVP_DigestUpdate(evp_md_ctx, "test", 4) != 1 ||
  ------------------
  |  Branch (906:6): [True: 0, False: 12]
  ------------------
  907|     12|	    EVP_VerifyFinal(evp_md_ctx, sig, len, pkey) != 1)
  ------------------
  |  Branch (907:6): [True: 0, False: 12]
  ------------------
  908|      0|	{
  909|      0|		CLEANUP(ISC_R_NOTIMPLEMENTED);
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  910|      0|	}
  911|       |
  912|     12|cleanup:
  913|     12|	isc_ossl_wrap_rsa_components_cleanup(&c);
  914|     12|	EVP_PKEY_free(pkey);
  915|       |	EVP_MD_CTX_destroy(evp_md_ctx);
  916|     12|	ERR_clear_error();
  917|     12|	return result;
  918|     12|}

dns__qp_initialize:
  180|      2|dns__qp_initialize(void) {
  181|       |	/* zero common character marker not a valid shift position */
  182|      2|	INSIST(0 < SHIFT_BITMAP);
  ------------------
  |  |  198|      2|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|      2|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 2, Folded]
  |  |  |  |  ------------------
  |  |  |  |   55|      2|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  183|       |	/* first bit is common byte or escape byte */
  184|      2|	dns_qpshift_t bit_one = SHIFT_BITMAP;
  185|       |	/* second bit is position in escaped range */
  186|      2|	dns_qpshift_t bit_two = SHIFT_BITMAP;
  187|      2|	bool escaping = true;
  188|       |
  189|    514|	for (unsigned int byte = 0; byte < BYTE_VALUES; byte++) {
  ------------------
  |  |  132|    514|#define BYTE_VALUES (UINT8_MAX + 1)
  ------------------
  |  Branch (189:30): [True: 512, False: 2]
  ------------------
  190|    512|		if (qp_common_character(byte)) {
  ------------------
  |  Branch (190:7): [True: 82, False: 430]
  ------------------
  191|     82|			escaping = false;
  192|     82|			bit_one++;
  193|     82|			dns_qp_byte_for_bit[bit_one] = byte;
  194|     82|			dns_qp_bits_for_byte[byte] = bit_one;
  195|    430|		} else if ('A' <= byte && byte <= 'Z') {
  ------------------
  |  Branch (195:14): [True: 326, False: 104]
  |  Branch (195:29): [True: 52, False: 274]
  ------------------
  196|       |			/* map upper case to lower case */
  197|     52|			dns_qpshift_t after_esc = bit_one + 1;
  198|     52|			dns_qpshift_t skip_punct = 'a' - '_';
  199|     52|			dns_qpshift_t letter = byte - 'A';
  200|     52|			dns_qpshift_t bit = after_esc + skip_punct + letter;
  201|     52|			dns_qp_bits_for_byte[byte] = bit;
  202|       |			/* to simplify reverse conversion */
  203|     52|			bit_two++;
  204|    378|		} else {
  205|       |			/* non-hostname characters need to be escaped */
  206|    378|			if (!escaping || bit_two >= SHIFT_OFFSET) {
  ------------------
  |  Branch (206:8): [True: 4, False: 374]
  |  Branch (206:21): [True: 4, False: 370]
  ------------------
  207|      8|				escaping = true;
  208|      8|				bit_one++;
  209|      8|				dns_qp_byte_for_bit[bit_one] = byte;
  210|      8|				bit_two = SHIFT_BITMAP;
  211|      8|			}
  212|    378|			dns_qp_bits_for_byte[byte] = bit_two << 8 | bit_one;
  213|    378|			bit_two++;
  214|    378|		}
  215|    512|	}
  216|      2|	ENSURE(bit_one < SHIFT_OFFSET);
  ------------------
  |  |  196|      2|#define ENSURE(e)    ISC_ENSURE(e)
  |  |  ------------------
  |  |  |  |   48|      2|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:10): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   49|      2|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (49:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   50|      0|					isc_assertiontype_ensure, #cond), \
  |  |  |  |   51|      0|		 0)))
  |  |  ------------------
  ------------------
  217|      2|}

qp.c:qp_common_character:
  930|    512|qp_common_character(uint8_t byte) {
  931|    512|	return ('-' <= byte && byte <= '9') || ('_' <= byte && byte <= 'z');
  ------------------
  |  Branch (931:10): [True: 422, False: 90]
  |  Branch (931:25): [True: 26, False: 396]
  |  Branch (931:42): [True: 322, False: 164]
  |  Branch (931:57): [True: 56, False: 266]
  ------------------
  932|    512|}

dns__qpzone_initialize:
  471|      2|dns__qpzone_initialize(void) {
  472|  2.05k|	for (size_t idx = 0; idx < ARRAY_SIZE(qpzone_buckets_g); ++idx) {
  ------------------
  |  |   94|  2.05k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
  ------------------
  |  Branch (472:23): [True: 2.04k, False: 2]
  ------------------
  473|  2.04k|		NODE_INITLOCK(&qpzone_buckets_g[idx].lock);
  ------------------
  |  |   28|  2.04k|#define NODE_INITLOCK(l)    isc_rwlock_init((l))
  ------------------
  474|  2.04k|	}
  475|      2|}

dns__zone_keymgmt_initialize:
16017|      2|dns__zone_keymgmt_initialize(void) {
16018|  2.05k|	for (size_t idx = 0; idx < ARRAY_SIZE(keymgmt_buckets_g); ++idx) {
  ------------------
  |  |   94|  2.05k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
  ------------------
  |  Branch (16018:23): [True: 2.04k, False: 2]
  ------------------
16019|  2.04k|		isc_mutex_init(&keymgmt_buckets_g[idx].lock);
  ------------------
  |  |   68|  2.04k|#define isc_mutex_init(mp)    isc__mutex_init(mp)
  |  |  ------------------
  |  |  |  |   79|  2.04k|	{                                                                 \
  |  |  |  |   80|  2.04k|		int _ret = pthread_mutex_init(mp, &isc__mutex_init_attr); \
  |  |  |  |   81|  2.04k|		PTHREADS_RUNTIME_CHECK(pthread_mutex_init, _ret);         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  284|  2.04k|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 2.04k]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  ------------------
  |  |  |  |   82|  2.04k|	}
  |  |  ------------------
  ------------------
16020|  2.04k|	}
16021|      2|}

isc_hmac:
  140|     12|	 unsigned int *digestlen) {
  141|     12|	EVP_MAC_CTX *ctx;
  142|     12|	size_t maclen;
  143|       |
  144|     12|	REQUIRE(type < ISC_MD_MAX);
  ------------------
  |  |  194|     12|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     12|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     12|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  145|       |
  146|     12|	if (isc__crypto_md[type] == NULL) {
  ------------------
  |  Branch (146:6): [True: 0, False: 12]
  ------------------
  147|      0|		return ISC_R_NOTIMPLEMENTED;
  148|      0|	}
  149|       |
  150|     12|	ctx = EVP_MAC_CTX_new(evp_hmac);
  151|     12|	RUNTIME_CHECK(ctx != NULL);
  ------------------
  |  |  241|     12|	((cond) ? (void)0 : FATAL_ERROR("RUNTIME_CHECK(%s) failed", #cond))
  |  |  ------------------
  |  |  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (241:3): [True: 12, False: 0]
  |  |  ------------------
  ------------------
  152|       |
  153|     12|	if (EVP_MAC_init(ctx, key, keylen, md_to_hmac_params[type]) != 1) {
  ------------------
  |  Branch (153:6): [True: 0, False: 12]
  ------------------
  154|      0|		goto fail;
  155|      0|	}
  156|       |
  157|     12|	if (EVP_MAC_update(ctx, buf, len) != 1) {
  ------------------
  |  Branch (157:6): [True: 0, False: 12]
  ------------------
  158|      0|		goto fail;
  159|      0|	}
  160|       |
  161|     12|	maclen = *digestlen;
  162|     12|	if (EVP_MAC_final(ctx, digest, &maclen, maclen) != 1) {
  ------------------
  |  Branch (162:6): [True: 0, False: 12]
  ------------------
  163|      0|		goto fail;
  164|      0|	}
  165|       |
  166|     12|	*digestlen = maclen;
  167|       |
  168|     12|	EVP_MAC_CTX_free(ctx);
  169|     12|	return ISC_R_SUCCESS;
  170|       |
  171|      0|fail:
  172|      0|	ERR_clear_error();
  173|      0|	EVP_MAC_CTX_free(ctx);
  174|      0|	return ISC_R_CRYPTOFAILURE;
  175|     12|}
isc_crypto_fips_mode:
  322|      2|isc_crypto_fips_mode(void) {
  323|       |	return EVP_default_properties_is_fips_enabled(NULL) != 0;
  324|      2|}
isc__crypto_initialize:
  376|      2|isc__crypto_initialize(void) {
  377|       |	/*
  378|       |	 * We call OPENSSL_cleanup() manually, in a correct order, thus disable
  379|       |	 * the automatic atexit() handler.
  380|       |	 */
  381|      2|	uint64_t opts = OPENSSL_INIT_LOAD_CONFIG | OPENSSL_INIT_NO_ATEXIT;
  382|       |
  383|      2|	RUNTIME_CHECK(OPENSSL_init_ssl(opts, NULL) == 1);
  ------------------
  |  |  241|      2|	((cond) ? (void)0 : FATAL_ERROR("RUNTIME_CHECK(%s) failed", #cond))
  |  |  ------------------
  |  |  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (241:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  384|       |
  385|      2|	register_algorithms();
  386|       |
  387|       |#if defined(ENABLE_FIPS_MODE)
  388|       |	if (isc_crypto_fips_enable() != ISC_R_SUCCESS) {
  389|       |		ERR_clear_error();
  390|       |		FATAL_ERROR("Failed to toggle FIPS mode but is "
  391|       |			    "required for this build");
  392|       |	}
  393|       |#endif
  394|       |
  395|       |	/* Protect ourselves against unseeded PRNG */
  396|      2|	if (RAND_status() != 1) {
  ------------------
  |  Branch (396:6): [True: 0, False: 2]
  ------------------
  397|      0|		isc_ossl_wrap_logged_toresult(
  ------------------
  |  |   26|      0|	isc__ossl_wrap_logged_toresult(category, module, funcname, fallback, \
  |  |   27|      0|				       __FILE__, __LINE__)
  ------------------
  398|      0|			ISC_LOGCATEGORY_GENERAL, ISC_LOGMODULE_CRYPTO,
  399|      0|			"RAND_status", ISC_R_CRYPTOFAILURE);
  400|      0|		FATAL_ERROR("OpenSSL pseudorandom number generator "
  ------------------
  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  ------------------
  401|      0|			    "cannot be initialized (see the `PRNG not "
  402|      0|			    "seeded' message in the OpenSSL FAQ)");
  403|      0|	}
  404|      2|}
ossl3.c:register_algorithms:
   89|      2|register_algorithms(void) {
   90|      2|	if (!isc_crypto_fips_mode()) {
  ------------------
  |  Branch (90:6): [True: 2, False: 0]
  ------------------
   91|      2|		md_register_algorithm(MD5);
  ------------------
  |  |   80|      2|	{                                                                      \
  |  |   81|      2|		REQUIRE(isc__crypto_md[ISC_MD_##alg] == NULL);                 \
  |  |  ------------------
  |  |  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      2|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:10): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      2|		isc__crypto_md[ISC_MD_##alg] = EVP_MD_fetch(NULL, #alg, NULL); \
  |  |   83|      2|		if (isc__crypto_md[ISC_MD_##alg] == NULL) {                    \
  |  |  ------------------
  |  |  |  Branch (83:7): [True: 0, False: 2]
  |  |  ------------------
  |  |   84|      0|			ERR_clear_error();                                     \
  |  |   85|      0|		}                                                              \
  |  |   86|      2|	}
  ------------------
   92|      2|	}
   93|       |
   94|      2|	md_register_algorithm(SHA1);
  ------------------
  |  |   80|      2|	{                                                                      \
  |  |   81|      2|		REQUIRE(isc__crypto_md[ISC_MD_##alg] == NULL);                 \
  |  |  ------------------
  |  |  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      2|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:10): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      2|		isc__crypto_md[ISC_MD_##alg] = EVP_MD_fetch(NULL, #alg, NULL); \
  |  |   83|      2|		if (isc__crypto_md[ISC_MD_##alg] == NULL) {                    \
  |  |  ------------------
  |  |  |  Branch (83:7): [True: 0, False: 2]
  |  |  ------------------
  |  |   84|      0|			ERR_clear_error();                                     \
  |  |   85|      0|		}                                                              \
  |  |   86|      2|	}
  ------------------
   95|      2|	md_register_algorithm(SHA224);
  ------------------
  |  |   80|      2|	{                                                                      \
  |  |   81|      2|		REQUIRE(isc__crypto_md[ISC_MD_##alg] == NULL);                 \
  |  |  ------------------
  |  |  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      2|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:10): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      2|		isc__crypto_md[ISC_MD_##alg] = EVP_MD_fetch(NULL, #alg, NULL); \
  |  |   83|      2|		if (isc__crypto_md[ISC_MD_##alg] == NULL) {                    \
  |  |  ------------------
  |  |  |  Branch (83:7): [True: 0, False: 2]
  |  |  ------------------
  |  |   84|      0|			ERR_clear_error();                                     \
  |  |   85|      0|		}                                                              \
  |  |   86|      2|	}
  ------------------
   96|      2|	md_register_algorithm(SHA256);
  ------------------
  |  |   80|      2|	{                                                                      \
  |  |   81|      2|		REQUIRE(isc__crypto_md[ISC_MD_##alg] == NULL);                 \
  |  |  ------------------
  |  |  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      2|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:10): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      2|		isc__crypto_md[ISC_MD_##alg] = EVP_MD_fetch(NULL, #alg, NULL); \
  |  |   83|      2|		if (isc__crypto_md[ISC_MD_##alg] == NULL) {                    \
  |  |  ------------------
  |  |  |  Branch (83:7): [True: 0, False: 2]
  |  |  ------------------
  |  |   84|      0|			ERR_clear_error();                                     \
  |  |   85|      0|		}                                                              \
  |  |   86|      2|	}
  ------------------
   97|      2|	md_register_algorithm(SHA384);
  ------------------
  |  |   80|      2|	{                                                                      \
  |  |   81|      2|		REQUIRE(isc__crypto_md[ISC_MD_##alg] == NULL);                 \
  |  |  ------------------
  |  |  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      2|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:10): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      2|		isc__crypto_md[ISC_MD_##alg] = EVP_MD_fetch(NULL, #alg, NULL); \
  |  |   83|      2|		if (isc__crypto_md[ISC_MD_##alg] == NULL) {                    \
  |  |  ------------------
  |  |  |  Branch (83:7): [True: 0, False: 2]
  |  |  ------------------
  |  |   84|      0|			ERR_clear_error();                                     \
  |  |   85|      0|		}                                                              \
  |  |   86|      2|	}
  ------------------
   98|      2|	md_register_algorithm(SHA512);
  ------------------
  |  |   80|      2|	{                                                                      \
  |  |   81|      2|		REQUIRE(isc__crypto_md[ISC_MD_##alg] == NULL);                 \
  |  |  ------------------
  |  |  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|      2|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:10): [True: 2, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      2|		isc__crypto_md[ISC_MD_##alg] = EVP_MD_fetch(NULL, #alg, NULL); \
  |  |   83|      2|		if (isc__crypto_md[ISC_MD_##alg] == NULL) {                    \
  |  |  ------------------
  |  |  |  Branch (83:7): [True: 0, False: 2]
  |  |  ------------------
  |  |   84|      0|			ERR_clear_error();                                     \
  |  |   85|      0|		}                                                              \
  |  |   86|      2|	}
  ------------------
   99|       |
  100|       |	/* We _must_ have HMAC */
  101|      2|	evp_hmac = EVP_MAC_fetch(NULL, "HMAC", NULL);
  102|      2|	if (evp_hmac == NULL) {
  ------------------
  |  Branch (102:6): [True: 0, False: 2]
  ------------------
  103|      0|		ERR_clear_error();
  104|      0|		FATAL_ERROR("OpenSSL failed to find an HMAC implementation. "
  ------------------
  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  ------------------
  105|      0|			    "Please make sure the default provider has an "
  106|      0|			    "EVP_MAC-HMAC implementation");
  107|      0|	}
  108|       |
  109|      2|	return ISC_R_SUCCESS;
  110|      2|}

isc__hash_initialize:
   30|      2|isc__hash_initialize(void) {
   31|       |	/*
   32|       |	 * Set a constant key to help in problem reproduction should
   33|       |	 * fuzzing find a crash or a hang.
   34|       |	 */
   35|      2|	uint8_t key[16] = { 1 };
   36|       |#if !FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION
   37|       |	isc_random_buf(key, sizeof(key));
   38|       |#endif /* if FUZZING_BUILD_MODE_UNSAFE_FOR_PRODUCTION */
   39|      2|	STATIC_ASSERT(sizeof(key) >= sizeof(isc_hash_key),
  ------------------
  |  |  150|      2|#define STATIC_ASSERT(cond, msg) _Static_assert(cond, msg)
  ------------------
   40|      2|		      "sizeof(key) < sizeof(isc_hash_key)");
   41|      2|	memmove(isc_hash_key, key, sizeof(isc_hash_key));
   42|      2|}

isc_lex_getmastertoken.c:isc_buffer_init:
  524|    943|		const unsigned int length) {
  525|    943|	REQUIRE(b != NULL);
  ------------------
  |  |  194|    943|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    943|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 943, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    943|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  526|       |
  527|    943|	*b = (isc_buffer_t){
  528|    943|		.base = base,
  529|    943|		.length = length,
  530|    943|		.link = ISC_LINK_INITIALIZER,
  ------------------
  |  |   30|    943|#define ISC_LINK_INITIALIZER ISC_LINK_INITIALIZER_TYPE(void)
  |  |  ------------------
  |  |  |  |   26|    943|	{                                         \
  |  |  |  |   27|    943|		.prev = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    943|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   28|    943|		.next = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    943|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   29|    943|	}
  |  |  ------------------
  ------------------
  531|    943|		.magic = ISC_BUFFER_MAGIC,
  ------------------
  |  |  121|    943|#define ISC_BUFFER_MAGIC    0x42756621U /* Buf!. */
  ------------------
  532|    943|	};
  533|    943|}
isc_lex_getmastertoken.c:isc_buffer_add:
  652|    943|isc_buffer_add(isc_buffer_t *restrict b, const unsigned int n) {
  653|    943|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|    943|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  1.88k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 943, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 943, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    943|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  654|    943|	REQUIRE(b->used + n <= b->length);
  ------------------
  |  |  194|    943|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    943|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 943, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    943|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  655|       |
  656|    943|	b->used += n;
  657|    943|}
isc_lex_getmastertoken.c:isc_buffer_setactive:
  771|    943|isc_buffer_setactive(isc_buffer_t *restrict b, const unsigned int n) {
  772|    943|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|    943|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  1.88k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 943, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 943, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    943|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  773|    943|	REQUIRE(b->current + n <= b->used);
  ------------------
  |  |  194|    943|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    943|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 943, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    943|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  774|       |
  775|    943|	b->active = b->current + n;
  776|    943|}
lex.c:isc_buffer_allocate:
 1077|    962|		    const unsigned int length) {
 1078|    962|	REQUIRE(dbufp != NULL && *dbufp == NULL);
  ------------------
  |  |  194|    962|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  1.92k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 962, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 962, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    962|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1079|       |
 1080|    962|	isc_buffer_t *dbuf = isc_mem_get(mctx, sizeof(*dbuf) + length);
  ------------------
  |  |  128|    962|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
 1081|    962|	uint8_t	     *bdata = (uint8_t *)dbuf + sizeof(*dbuf);
 1082|       |
 1083|    962|	isc_buffer_init(dbuf, bdata, length);
 1084|    962|	dbuf->extra = length;
 1085|    962|	isc_buffer_setmctx(dbuf, mctx);
 1086|       |
 1087|    962|	*dbufp = dbuf;
 1088|    962|}
lex.c:isc_buffer_init:
  524|    962|		const unsigned int length) {
  525|    962|	REQUIRE(b != NULL);
  ------------------
  |  |  194|    962|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    962|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 962, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    962|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  526|       |
  527|    962|	*b = (isc_buffer_t){
  528|    962|		.base = base,
  529|    962|		.length = length,
  530|    962|		.link = ISC_LINK_INITIALIZER,
  ------------------
  |  |   30|    962|#define ISC_LINK_INITIALIZER ISC_LINK_INITIALIZER_TYPE(void)
  |  |  ------------------
  |  |  |  |   26|    962|	{                                         \
  |  |  |  |   27|    962|		.prev = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    962|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   28|    962|		.next = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    962|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   29|    962|	}
  |  |  ------------------
  ------------------
  531|    962|		.magic = ISC_BUFFER_MAGIC,
  ------------------
  |  |  121|    962|#define ISC_BUFFER_MAGIC    0x42756621U /* Buf!. */
  ------------------
  532|    962|	};
  533|    962|}
lex.c:isc_buffer_setmctx:
 1091|    962|isc_buffer_setmctx(isc_buffer_t *restrict b, isc_mem_t *mctx) {
 1092|    962|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|    962|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  1.92k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 962, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 962, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    962|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1093|       |
 1094|    962|	b->mctx = mctx;
 1095|    962|}
lex.c:isc_buffer_free:
 1154|     19|isc_buffer_free(isc_buffer_t **restrict dbufp) {
 1155|     19|	REQUIRE(dbufp != NULL && ISC_BUFFER_VALID(*dbufp));
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     76|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1156|     19|	REQUIRE((*dbufp)->mctx != NULL);
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     19|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1157|       |
 1158|     19|	isc_buffer_t *dbuf = *dbufp;
 1159|     19|	isc_mem_t    *mctx = dbuf->mctx;
 1160|     19|	unsigned int  extra = dbuf->extra;
 1161|       |
 1162|     19|	*dbufp = NULL; /* destroy external reference */
 1163|       |
 1164|     19|	isc_buffer_clearmctx(dbuf);
 1165|       |
 1166|     19|	isc_buffer_invalidate(dbuf);
 1167|       |	isc_mem_put(mctx, dbuf, sizeof(*dbuf) + extra);
  ------------------
  |  |  150|     19|	do {                                                      \
  |  |  151|     19|		isc__mem_put((c), (p), (s), 0 _ISC_MEM_FILELINE); \
  |  |  152|     19|		(p) = NULL;                                       \
  |  |  153|     19|	} while (0)
  |  |  ------------------
  |  |  |  Branch (153:11): [Folded, False: 19]
  |  |  ------------------
  ------------------
 1168|     19|}
lex.c:isc_buffer_clearmctx:
 1098|     19|isc_buffer_clearmctx(isc_buffer_t *restrict b) {
 1099|     19|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     38|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1100|       |
 1101|     19|	if (b->dynamic) {
  ------------------
  |  Branch (1101:6): [True: 0, False: 19]
  ------------------
 1102|      0|		isc_mem_put(b->mctx, b->base, b->length);
  ------------------
  |  |  150|      0|	do {                                                      \
  |  |  151|      0|		isc__mem_put((c), (p), (s), 0 _ISC_MEM_FILELINE); \
  |  |  152|      0|		(p) = NULL;                                       \
  |  |  153|      0|	} while (0)
  |  |  ------------------
  |  |  |  Branch (153:11): [Folded, False: 0]
  |  |  ------------------
  ------------------
 1103|      0|		b->dynamic = false;
 1104|      0|	}
 1105|       |
 1106|       |	b->mctx = NULL;
 1107|     19|}
lex.c:isc_buffer_invalidate:
  577|     19|isc_buffer_invalidate(isc_buffer_t *restrict b) {
  578|     19|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     38|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  579|     19|	REQUIRE(!ISC_LINK_LINKED(b, link));
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     19|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  580|     19|	REQUIRE(b->mctx == NULL);
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     19|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  581|       |
  582|     19|	*b = (isc_buffer_t){
  583|     19|		.magic = 0,
  584|     19|	};
  585|     19|}
lex.c:isc_buffer_compact:
 1048|  27.5k|isc_buffer_compact(isc_buffer_t *restrict b) {
 1049|  27.5k|	unsigned int length;
 1050|  27.5k|	void	    *src;
 1051|       |
 1052|       |	/*
 1053|       |	 * Compact the used region by moving the remaining region so it occurs
 1054|       |	 * at the start of the buffer.  The used region is shrunk by the size
 1055|       |	 * of the consumed region, and the consumed region is then made empty.
 1056|       |	 */
 1057|       |
 1058|  27.5k|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|  27.5k|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  55.1k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 27.5k, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 27.5k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|  27.5k|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1059|       |
 1060|  27.5k|	src = isc_buffer_current(b);
  ------------------
  |  |  145|  27.5k|	((void *)((unsigned char *)(b)->base + (b)->current)) /*b*/
  ------------------
 1061|  27.5k|	length = isc_buffer_remaininglength(b);
  ------------------
  |  |  159|  27.5k|#define isc_buffer_remaininglength(b) ((b)->used - (b)->current)   /* d-b */
  ------------------
 1062|  27.5k|	if (length > 0U) {
  ------------------
  |  Branch (1062:6): [True: 22.3k, False: 5.26k]
  ------------------
 1063|  22.3k|		(void)memmove(b->base, src, (size_t)length);
 1064|  22.3k|	}
 1065|       |
 1066|  27.5k|	if (b->active > b->current) {
  ------------------
  |  Branch (1066:6): [True: 0, False: 27.5k]
  ------------------
 1067|      0|		b->active -= b->current;
 1068|  27.5k|	} else {
 1069|  27.5k|		b->active = 0;
 1070|  27.5k|	}
 1071|  27.5k|	b->current = 0;
 1072|  27.5k|	b->used = length;
 1073|  27.5k|}
lex.c:isc_buffer_usedregion:
  616|     19|		      isc_region_t *restrict r) {
  617|     19|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     38|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  618|     19|	REQUIRE(r != NULL);
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     19|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  619|       |
  620|     19|	r->base = b->base;
  621|     19|	r->length = b->used;
  622|     19|}
lex.c:isc_buffer_copyregion:
 1192|     19|		      const isc_region_t *restrict r) {
 1193|     19|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     38|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1194|     19|	REQUIRE(r != NULL);
  ------------------
  |  |  194|     19|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     19|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     19|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1195|       |
 1196|     19|	if (b->mctx) {
  ------------------
  |  Branch (1196:6): [True: 19, False: 0]
  ------------------
 1197|     19|		RETERR(isc_buffer_reserve(b, r->length));
  ------------------
  |  |  272|     19|	{                                  \
  |  |  273|     19|		isc_result_t _r = (x);     \
  |  |  274|     19|		if (_r != ISC_R_SUCCESS) { \
  |  |  ------------------
  |  |  |  Branch (274:7): [True: 0, False: 19]
  |  |  ------------------
  |  |  275|      0|			return ((_r));     \
  |  |  276|      0|		}                          \
  |  |  277|     19|	}
  ------------------
 1198|     19|	}
 1199|       |
 1200|     19|	if (r->length > isc_buffer_availablelength(b)) {
  ------------------
  |  |  161|     19|#define isc_buffer_availablelength(b) ((b)->length - (b)->used)	   /* e-d */
  ------------------
  |  Branch (1200:6): [True: 0, False: 19]
  ------------------
 1201|      0|		return ISC_R_NOSPACE;
 1202|      0|	}
 1203|       |
 1204|     19|	if (r->length > 0U) {
  ------------------
  |  Branch (1204:6): [True: 19, False: 0]
  ------------------
 1205|     19|		memmove(isc_buffer_used(b), r->base, r->length);
  ------------------
  |  |  149|     19|	((void *)((unsigned char *)(b)->base + (b)->used)) /*d*/
  ------------------
 1206|     19|		b->used += r->length;
 1207|     19|	}
 1208|       |
 1209|     19|	return ISC_R_SUCCESS;
 1210|     19|}
lex.c:isc_buffer_reserve:
 1110|  25.4M|isc_buffer_reserve(isc_buffer_t *restrict dbuf, const unsigned int size) {
 1111|  25.4M|	REQUIRE(ISC_BUFFER_VALID(dbuf));
  ------------------
  |  |  194|  25.4M|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  50.9M|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 25.4M, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 25.4M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|  25.4M|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1112|       |
 1113|  25.4M|	size_t len;
 1114|       |
 1115|  25.4M|	len = dbuf->length;
 1116|  25.4M|	if ((len - dbuf->used) >= size) {
  ------------------
  |  Branch (1116:6): [True: 25.4M, False: 0]
  ------------------
 1117|  25.4M|		return ISC_R_SUCCESS;
 1118|  25.4M|	}
 1119|       |
 1120|      0|	if (dbuf->mctx == NULL) {
  ------------------
  |  Branch (1120:6): [True: 0, False: 0]
  ------------------
 1121|      0|		return ISC_R_NOSPACE;
 1122|      0|	}
 1123|       |
 1124|       |	/* Round to nearest buffer size increment */
 1125|      0|	len = size + dbuf->used;
 1126|      0|	len = ISC_ALIGN(len, ISC_BUFFER_INCR);
  ------------------
  |  |  292|      0|#define ISC_ALIGN(x, a) (((x) + (a) - 1) & ~((typeof(x))(a) - 1))
  ------------------
 1127|       |
 1128|       |	/* Cap at UINT_MAX */
 1129|      0|	if (len > UINT_MAX) {
  ------------------
  |  Branch (1129:6): [True: 0, False: 0]
  ------------------
 1130|      0|		len = UINT_MAX;
 1131|      0|	}
 1132|       |
 1133|      0|	if ((len - dbuf->used) < size) {
  ------------------
  |  Branch (1133:6): [True: 0, False: 0]
  ------------------
 1134|      0|		return ISC_R_NOMEMORY;
 1135|      0|	}
 1136|       |
 1137|      0|	if (!dbuf->dynamic) {
  ------------------
  |  Branch (1137:6): [True: 0, False: 0]
  ------------------
 1138|      0|		void *old_base = dbuf->base;
 1139|      0|		dbuf->base = isc_mem_get(dbuf->mctx, len);
  ------------------
  |  |  128|      0|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
 1140|      0|		if (old_base != NULL) {
  ------------------
  |  Branch (1140:7): [True: 0, False: 0]
  ------------------
 1141|      0|			memmove(dbuf->base, old_base, dbuf->used);
 1142|      0|		}
 1143|      0|		dbuf->dynamic = true;
 1144|      0|	} else {
 1145|      0|		dbuf->base = isc_mem_creget(dbuf->mctx, dbuf->base,
  ------------------
  |  |  135|      0|	isc__mem_reget((c), (p), ISC_CHECKED_MUL((o), (s)), \
  |  |  ------------------
  |  |  |  |   32|      0|	({                                                \
  |  |  |  |   33|      0|		typeof(a) _c;                             \
  |  |  |  |   34|      0|		bool	  _overflow = ckd_mul(&_c, a, b); \
  |  |  |  |   35|      0|		INSIST(!_overflow);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  198|      0|#define INSIST(e)    ISC_INSIST(e)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|	((void)((cond) ||                                                 \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (54:10): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |  |  |  |  |   57|      0|		 0)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   36|      0|		_c;                                       \
  |  |  |  |   37|      0|	})
  |  |  ------------------
  |  |  136|      0|		       ISC_CHECKED_MUL((n), (s)),           \
  |  |  ------------------
  |  |  |  |   32|      0|	({                                                \
  |  |  |  |   33|      0|		typeof(a) _c;                             \
  |  |  |  |   34|      0|		bool	  _overflow = ckd_mul(&_c, a, b); \
  |  |  |  |   35|      0|		INSIST(!_overflow);                       \
  |  |  |  |  ------------------
  |  |  |  |  |  |  198|      0|#define INSIST(e)    ISC_INSIST(e)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   54|      0|	((void)((cond) ||                                                 \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (54:10): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   55|      0|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |  |  |  |  |   57|      0|		 0)))
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   36|      0|		_c;                                       \
  |  |  |  |   37|      0|	})
  |  |  ------------------
  |  |  137|      0|		       ISC__MEM_ZERO _ISC_MEM_FILELINE)
  |  |  ------------------
  |  |  |  |  126|      0|#define ISC__MEM_ZERO ((int)0x40)
  |  |  ------------------
  ------------------
 1146|      0|					    dbuf->length, len, sizeof(char));
 1147|      0|	}
 1148|      0|	dbuf->length = (unsigned int)len;
 1149|       |
 1150|      0|	return ISC_R_SUCCESS;
 1151|      0|}
lex.c:isc_buffer_putuint8:
  869|  25.4M|isc_buffer_putuint8(isc_buffer_t *restrict b, const uint8_t val) {
  870|  25.4M|	ISC_BUFFER_PUT_RESERVE(b, val, sizeof(val));
  ------------------
  |  |  857|  25.4M|	{                                                               \
  |  |  858|  25.4M|		REQUIRE(ISC_BUFFER_VALID(b));                           \
  |  |  ------------------
  |  |  |  |  194|  25.4M|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  50.9M|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:11): [True: 25.4M, False: 0]
  |  |  |  |  |  |  |  Branch (42:11): [True: 25.4M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  25.4M|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  859|  25.4M|                                                                        \
  |  |  860|  25.4M|		if (b->mctx) {                                          \
  |  |  ------------------
  |  |  |  Branch (860:7): [True: 25.4M, False: 0]
  |  |  ------------------
  |  |  861|  25.4M|			isc_result_t result = isc_buffer_reserve(b, s); \
  |  |  862|  25.4M|			ENSURE(result == ISC_R_SUCCESS);                \
  |  |  ------------------
  |  |  |  |  196|  25.4M|#define ENSURE(e)    ISC_ENSURE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   48|  25.4M|	((void)((cond) ||                                                 \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (48:10): [True: 25.4M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   49|  25.4M|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (49:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   50|      0|					isc_assertiontype_ensure, #cond), \
  |  |  |  |  |  |   51|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  863|  25.4M|		}                                                       \
  |  |  864|  25.4M|                                                                        \
  |  |  865|  25.4M|		REQUIRE(isc_buffer_availablelength(b) >= s);            \
  |  |  ------------------
  |  |  |  |  194|  25.4M|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  25.4M|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:10): [True: 25.4M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  25.4M|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  866|  25.4M|	}
  ------------------
  871|       |
  872|  25.4M|	uint8_t *cp = isc_buffer_used(b);
  ------------------
  |  |  149|  25.4M|	((void *)((unsigned char *)(b)->base + (b)->used)) /*d*/
  ------------------
  873|  25.4M|	b->used += sizeof(val);
  874|  25.4M|	cp[0] = val;
  875|  25.4M|}
lex.c:isc_buffer_getuint8:
  848|  25.4M|isc_buffer_getuint8(isc_buffer_t *restrict b) {
  849|  25.4M|	uint8_t	     val = 0;
  850|  25.4M|	isc_result_t result = isc_buffer_peekuint8(b, &val);
  851|  25.4M|	ENSURE(result == ISC_R_SUCCESS);
  ------------------
  |  |  196|  25.4M|#define ENSURE(e)    ISC_ENSURE(e)
  |  |  ------------------
  |  |  |  |   48|  25.4M|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (48:10): [True: 25.4M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   49|  25.4M|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (49:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   50|      0|					isc_assertiontype_ensure, #cond), \
  |  |  |  |   51|      0|		 0)))
  |  |  ------------------
  ------------------
  852|  25.4M|	b->current += sizeof(val);
  853|  25.4M|	return val;
  854|  25.4M|}
lex.c:isc_buffer_peekuint8:
  839|  25.4M|isc_buffer_peekuint8(const isc_buffer_t *restrict b, uint8_t *valp) {
  840|  25.4M|	ISC_BUFFER_PEEK_CHECK(b, sizeof(*valp));
  ------------------
  |  |  831|  25.4M|	{                                           \
  |  |  832|  25.4M|		REQUIRE(ISC_BUFFER_VALID(b));       \
  |  |  ------------------
  |  |  |  |  194|  25.4M|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   42|  50.9M|	((void)((cond) ||                                                  \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (42:11): [True: 25.4M, False: 0]
  |  |  |  |  |  |  |  Branch (42:11): [True: 25.4M, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   43|  25.4M|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |  |  |   45|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  833|  25.4M|		if ((b)->used - (b)->current < s) { \
  |  |  ------------------
  |  |  |  Branch (833:7): [True: 0, False: 25.4M]
  |  |  ------------------
  |  |  834|      0|			return (ISC_R_NOMORE);      \
  |  |  835|      0|		}                                   \
  |  |  836|  25.4M|	}
  ------------------
  841|       |
  842|  25.4M|	uint8_t *cp = isc_buffer_current(b);
  ------------------
  |  |  145|  25.4M|	((void *)((unsigned char *)(b)->base + (b)->current)) /*b*/
  ------------------
  843|       |	SET_IF_NOT_NULL(valp, (uint8_t)(cp[0]));
  ------------------
  |  |  100|  25.4M|	if ((obj) != NULL) {      \
  |  |  ------------------
  |  |  |  Branch (100:6): [True: 25.4M, False: 0]
  |  |  ------------------
  |  |  101|  25.4M|		*(obj) = (val);   \
  |  |  102|  25.4M|	}
  ------------------
  844|  25.4M|	return ISC_R_SUCCESS;
  845|  25.4M|}
lex.c:isc_buffer_first:
  790|    440|isc_buffer_first(isc_buffer_t *restrict b) {
  791|    440|	REQUIRE(ISC_BUFFER_VALID(b));
  ------------------
  |  |  194|    440|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    880|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 440, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 440, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    440|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  792|       |
  793|    440|	b->current = 0;
  794|    440|}

isc_lib_initialize:
   57|      2|isc_lib_initialize(void) {
   58|      2|	isc__lib_initialize();
   59|      2|}

mem.c:isc_tid:
   39|  2.91k|isc_tid(void) {
   40|  2.91k|	return isc__tid_local;
   41|  2.91k|}

isc__iterated_hash_initialize:
  144|      2|isc__iterated_hash_initialize(void) {
  145|      2|	if (initialized) {
  ------------------
  |  Branch (145:6): [True: 0, False: 2]
  ------------------
  146|      0|		return;
  147|      0|	}
  148|       |
  149|      2|	basectx = EVP_MD_CTX_new();
  150|      2|	INSIST(basectx != NULL);
  ------------------
  |  |  198|      2|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|      2|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      2|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  151|      2|	mdctx = EVP_MD_CTX_new();
  152|      2|	INSIST(mdctx != NULL);
  ------------------
  |  |  198|      2|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|      2|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      2|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  153|       |
  154|      2|	RUNTIME_CHECK(EVP_DigestInit_ex(basectx, isc__crypto_md[ISC_MD_SHA1],
  ------------------
  |  |  241|      2|	((cond) ? (void)0 : FATAL_ERROR("RUNTIME_CHECK(%s) failed", #cond))
  |  |  ------------------
  |  |  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (241:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  155|      2|					NULL) == 1);
  156|       |	initialized = true;
  157|      2|}

mem.c:mallocx:
   66|  2.89k|mallocx(size_t size, int flags) {
   67|  2.89k|	void *ptr = malloc(size);
   68|  2.89k|	INSIST(ptr != NULL);
  ------------------
  |  |  198|  2.89k|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|  2.89k|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 2.89k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|  2.89k|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
   69|       |
   70|  2.89k|	if ((flags & MALLOCX_ZERO) != 0) {
  ------------------
  |  |   32|  2.89k|#define MALLOCX_ZERO		((int)0x40)
  ------------------
  |  Branch (70:6): [True: 0, False: 2.89k]
  ------------------
   71|      0|		memset(ptr, 0, size);
   72|      0|	}
   73|       |
   74|  2.89k|	return ptr;
   75|  2.89k|}
mem.c:sdallocx:
   78|     29|sdallocx(void *ptr, size_t size ISC_ATTR_UNUSED, int flags ISC_ATTR_UNUSED) {
   79|     29|	free(ptr);
   80|     29|}
mem.c:sallocx:
   59|    951|sallocx(void *ptr, int flags ISC_ATTR_UNUSED) {
   60|    951|	return malloc_usable_size(ptr);
   61|    951|}

isc_lex_create:
   84|      2|isc_lex_create(isc_mem_t *mctx, size_t max_token, isc_lex_t **lexp) {
   85|      2|	isc_lex_t *lex;
   86|       |
   87|       |	/*
   88|       |	 * Create a lexer.
   89|       |	 */
   90|      2|	REQUIRE(lexp != NULL && *lexp == NULL);
  ------------------
  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      4|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
   91|       |
   92|      2|	if (max_token == 0U) {
  ------------------
  |  Branch (92:6): [True: 0, False: 2]
  ------------------
   93|      0|		max_token = 1;
   94|      0|	}
   95|       |
   96|      2|	lex = isc_mem_get(mctx, sizeof(*lex));
  ------------------
  |  |  128|      2|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
   97|      2|	lex->data = isc_mem_get(mctx, max_token + 1);
  ------------------
  |  |  128|      2|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
   98|      2|	lex->mctx = mctx;
   99|      2|	lex->max_token = max_token;
  100|      2|	lex->comments = 0;
  101|      2|	lex->comment_ok = true;
  102|      2|	lex->last_was_eol = true;
  103|      2|	lex->brace_count = 0;
  104|      2|	lex->paren_count = 0;
  105|      2|	lex->saved_paren_count = 0;
  106|      2|	memset(lex->specials, 0, 256);
  107|      2|	ISC_LIST_INIT(lex->sources);
  ------------------
  |  |   43|      2|	do {                        \
  |  |   44|      2|		(list).head = NULL; \
  |  |   45|      2|		(list).tail = NULL; \
  |  |   46|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (46:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  108|      2|	lex->magic = LEX_MAGIC;
  ------------------
  |  |   48|      2|#define LEX_MAGIC    ISC_MAGIC('L', 'e', 'x', '!')
  |  |  ------------------
  |  |  |  |   31|      2|#define ISC_MAGIC(a, b, c, d) ((a) << 24 | (b) << 16 | (c) << 8 | (d))
  |  |  ------------------
  ------------------
  109|       |
  110|      2|	*lexp = lex;
  111|      2|}
isc_lex_openbuffer:
  233|    943|isc_lex_openbuffer(isc_lex_t *lex, isc_buffer_t *buffer) {
  234|    943|	char name[128];
  235|       |
  236|       |	/*
  237|       |	 * Make 'buffer' the current input source for 'lex'.
  238|       |	 */
  239|       |
  240|    943|	REQUIRE(VALID_LEX(lex));
  ------------------
  |  |  194|    943|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  1.88k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 943, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 943, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    943|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  241|       |
  242|    943|	snprintf(name, sizeof(name), "buffer-%p", buffer);
  243|       |
  244|    943|	new_source(lex, false, false, buffer, name);
  245|    943|	return ISC_R_SUCCESS;
  246|    943|}
isc_lex_gettoken:
  330|  27.5k|isc_lex_gettoken(isc_lex_t *lex, unsigned int options, isc_token_t *tokenp) {
  331|  27.5k|	inputsource *source;
  332|  27.5k|	int c;
  333|  27.5k|	bool done = false;
  334|  27.5k|	bool no_comments = false;
  335|  27.5k|	bool escaped = false;
  336|  27.5k|	lexstate state = lexstate_start;
  337|  27.5k|	lexstate saved_state = lexstate_start;
  338|  27.5k|	isc_buffer_t *buffer;
  339|  27.5k|	FILE *stream;
  340|  27.5k|	char *curr, *prev;
  341|  27.5k|	size_t remaining;
  342|  27.5k|	uint32_t as_ulong;
  343|  27.5k|	unsigned int saved_options;
  344|  27.5k|	isc_result_t result;
  345|       |
  346|       |	/*
  347|       |	 * Get the next token.
  348|       |	 */
  349|       |
  350|  27.5k|	REQUIRE(VALID_LEX(lex));
  ------------------
  |  |  194|  27.5k|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  55.1k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 27.5k, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 27.5k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|  27.5k|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  351|  27.5k|	source = ISC_LIST_HEAD(lex->sources);
  ------------------
  |  |   62|  27.5k|#define ISC_LIST_HEAD(list)  ((list).head)
  ------------------
  352|  27.5k|	REQUIRE(tokenp != NULL);
  ------------------
  |  |  194|  27.5k|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  27.5k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 27.5k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|  27.5k|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  353|       |
  354|  27.5k|	if (source == NULL) {
  ------------------
  |  Branch (354:6): [True: 0, False: 27.5k]
  ------------------
  355|      0|		if ((options & ISC_LEXOPT_NOMORE) != 0) {
  ------------------
  |  |   78|      0|#define ISC_LEXOPT_NOMORE	0x0040 /*%< Want "no more" token. */
  ------------------
  |  Branch (355:7): [True: 0, False: 0]
  ------------------
  356|      0|			tokenp->type = isc_tokentype_nomore;
  357|      0|			return ISC_R_SUCCESS;
  358|      0|		}
  359|      0|		return ISC_R_NOMORE;
  360|      0|	}
  361|       |
  362|  27.5k|	if (source->result != ISC_R_SUCCESS) {
  ------------------
  |  Branch (362:6): [True: 0, False: 27.5k]
  ------------------
  363|      0|		return source->result;
  364|      0|	}
  365|       |
  366|  27.5k|	lex->saved_paren_count = lex->paren_count;
  367|  27.5k|	source->saved_line = source->line;
  368|       |
  369|  27.5k|	if (isc_buffer_remaininglength(source->pushback) == 0 && source->at_eof)
  ------------------
  |  |  159|  27.5k|#define isc_buffer_remaininglength(b) ((b)->used - (b)->current)   /* d-b */
  ------------------
  |  Branch (369:6): [True: 5.26k, False: 22.3k]
  |  Branch (369:59): [True: 0, False: 5.26k]
  ------------------
  370|      0|	{
  371|      0|		if ((options & ISC_LEXOPT_DNSMULTILINE) != 0 &&
  ------------------
  |  |   77|      0|#define ISC_LEXOPT_DNSMULTILINE 0x0020 /*%< Handle '(' and ')'. */
  ------------------
  |  Branch (371:7): [True: 0, False: 0]
  ------------------
  372|      0|		    lex->paren_count != 0)
  ------------------
  |  Branch (372:7): [True: 0, False: 0]
  ------------------
  373|      0|		{
  374|      0|			lex->paren_count = 0;
  375|      0|			return ISC_R_UNBALANCED;
  376|      0|		}
  377|      0|		if ((options & ISC_LEXOPT_BTEXT) != 0 && lex->brace_count != 0)
  ------------------
  |  |   84|      0|#define ISC_LEXOPT_BTEXT	    0x0800 /*%< Bracketed text. */
  ------------------
  |  Branch (377:7): [True: 0, False: 0]
  |  Branch (377:44): [True: 0, False: 0]
  ------------------
  378|      0|		{
  379|      0|			lex->brace_count = 0;
  380|      0|			return ISC_R_UNBALANCED;
  381|      0|		}
  382|      0|		if ((options & ISC_LEXOPT_EOF) != 0) {
  ------------------
  |  |   63|      0|#define ISC_LEXOPT_EOF	     0x0002 /*%< Want end-of-file token. */
  ------------------
  |  Branch (382:7): [True: 0, False: 0]
  ------------------
  383|      0|			tokenp->type = isc_tokentype_eof;
  384|      0|			return ISC_R_SUCCESS;
  385|      0|		}
  386|      0|		return ISC_R_EOF;
  387|      0|	}
  388|       |
  389|  27.5k|	isc_buffer_compact(source->pushback);
  390|       |
  391|  27.5k|	saved_options = options;
  392|  27.5k|	if ((options & ISC_LEXOPT_DNSMULTILINE) != 0 && lex->paren_count > 0) {
  ------------------
  |  |   77|  27.5k|#define ISC_LEXOPT_DNSMULTILINE 0x0020 /*%< Handle '(' and ')'. */
  ------------------
  |  Branch (392:6): [True: 27.5k, False: 0]
  |  Branch (392:50): [True: 0, False: 27.5k]
  ------------------
  393|      0|		options &= ~IWSEOL;
  ------------------
  |  |  293|      0|#define IWSEOL (ISC_LEXOPT_INITIALWS | ISC_LEXOPT_EOL)
  |  |  ------------------
  |  |  |  |   64|      0|#define ISC_LEXOPT_INITIALWS 0x0004 /*%< Want initial whitespace. */
  |  |  ------------------
  |  |               #define IWSEOL (ISC_LEXOPT_INITIALWS | ISC_LEXOPT_EOL)
  |  |  ------------------
  |  |  |  |   62|      0|#define ISC_LEXOPT_EOL	     0x0001 /*%< Want end-of-line token. */
  |  |  ------------------
  ------------------
  394|      0|	}
  395|       |
  396|  27.5k|	curr = lex->data;
  397|  27.5k|	*curr = '\0';
  398|       |
  399|  27.5k|	prev = NULL;
  400|  27.5k|	remaining = lex->max_token;
  401|       |
  402|  27.5k|#ifdef HAVE_FLOCKFILE
  403|  27.5k|	if (source->is_file) {
  ------------------
  |  Branch (403:6): [True: 0, False: 27.5k]
  ------------------
  404|      0|		flockfile(source->input);
  405|      0|	}
  406|  27.5k|#endif /* ifdef HAVE_FLOCKFILE */
  407|       |
  408|  25.4M|	do {
  409|  25.4M|		if (isc_buffer_remaininglength(source->pushback) == 0) {
  ------------------
  |  |  159|  25.4M|#define isc_buffer_remaininglength(b) ((b)->used - (b)->current)   /* d-b */
  ------------------
  |  Branch (409:7): [True: 25.4M, False: 22.3k]
  ------------------
  410|  25.4M|			if (source->is_file) {
  ------------------
  |  Branch (410:8): [True: 0, False: 25.4M]
  ------------------
  411|      0|				stream = source->input;
  412|       |
  413|      0|#if defined(HAVE_FLOCKFILE) && defined(HAVE_GETC_UNLOCKED)
  414|      0|				c = getc_unlocked(stream);
  415|       |#else  /* if defined(HAVE_FLOCKFILE) && defined(HAVE_GETC_UNLOCKED) */
  416|       |				c = getc(stream);
  417|       |#endif /* if defined(HAVE_FLOCKFILE) && defined(HAVE_GETC_UNLOCKED) */
  418|      0|				if (c == EOF) {
  ------------------
  |  Branch (418:9): [True: 0, False: 0]
  ------------------
  419|      0|					if (ferror(stream)) {
  ------------------
  |  Branch (419:10): [True: 0, False: 0]
  ------------------
  420|      0|						source->result =
  421|      0|							isc__errno2result(
  ------------------
  |  |   25|      0|#define isc__errno2result(x) isc___errno2result(x, true, __FILE__, __LINE__)
  ------------------
  422|      0|								errno);
  423|      0|						result = source->result;
  424|      0|						goto done;
  425|      0|					}
  426|      0|					source->at_eof = true;
  427|      0|				}
  428|  25.4M|			} else {
  429|  25.4M|				buffer = source->input;
  430|       |
  431|  25.4M|				if (buffer->current == buffer->used) {
  ------------------
  |  Branch (431:9): [True: 1.11k, False: 25.4M]
  ------------------
  432|  1.11k|					c = EOF;
  433|  1.11k|					source->at_eof = true;
  434|  25.4M|				} else {
  435|  25.4M|					c = *((unsigned char *)buffer->base +
  436|  25.4M|					      buffer->current);
  437|  25.4M|					buffer->current++;
  438|  25.4M|				}
  439|  25.4M|			}
  440|  25.4M|			if (c != EOF) {
  ------------------
  |  Branch (440:8): [True: 25.4M, False: 1.11k]
  ------------------
  441|  25.4M|				source->result = pushandgrow(lex, source, c);
  442|  25.4M|				if (source->result != ISC_R_SUCCESS) {
  ------------------
  |  Branch (442:9): [True: 0, False: 25.4M]
  ------------------
  443|      0|					result = source->result;
  444|      0|					goto done;
  445|      0|				}
  446|  25.4M|			}
  447|  25.4M|		}
  448|       |
  449|  25.4M|		if (!source->at_eof) {
  ------------------
  |  Branch (449:7): [True: 25.4M, False: 1.11k]
  ------------------
  450|  25.4M|			if (state == lexstate_start) {
  ------------------
  |  Branch (450:8): [True: 487k, False: 25.0M]
  ------------------
  451|       |				/* Token has not started yet. */
  452|   487k|				source->ignored = isc_buffer_consumedlength(
  ------------------
  |  |  158|   487k|#define isc_buffer_consumedlength(b)  ((b)->current)		   /* b-a */
  ------------------
  453|   487k|					source->pushback);
  454|   487k|			}
  455|  25.4M|			c = isc_buffer_getuint8(source->pushback);
  456|  25.4M|		} else {
  457|  1.11k|			c = EOF;
  458|  1.11k|		}
  459|       |
  460|  25.4M|		if (c == '\n') {
  ------------------
  |  Branch (460:7): [True: 5.64k, False: 25.4M]
  ------------------
  461|  5.64k|			source->line++;
  462|  5.64k|		}
  463|       |
  464|  25.4M|		if (lex->comment_ok && !no_comments) {
  ------------------
  |  Branch (464:7): [True: 25.4M, False: 0]
  |  Branch (464:26): [True: 22.9M, False: 2.51M]
  ------------------
  465|  22.9M|			if (!escaped && c == ';' &&
  ------------------
  |  Branch (465:8): [True: 22.9M, False: 20.8k]
  |  Branch (465:20): [True: 3.13k, False: 22.9M]
  ------------------
  466|  3.13k|			    ((lex->comments & ISC_LEXCOMMENT_DNSMASTERFILE) !=
  ------------------
  |  |   97|  3.13k|#define ISC_LEXCOMMENT_DNSMASTERFILE 0x08
  ------------------
  |  Branch (466:8): [True: 0, False: 3.13k]
  ------------------
  467|  3.13k|			     0))
  468|      0|			{
  469|      0|				saved_state = state;
  470|      0|				state = lexstate_eatline;
  471|      0|				no_comments = true;
  472|      0|				continue;
  473|  22.9M|			} else if (c == '/' &&
  ------------------
  |  Branch (473:15): [True: 1.48k, False: 22.9M]
  ------------------
  474|  1.48k|				   (lex->comments &
  ------------------
  |  Branch (474:8): [True: 0, False: 1.48k]
  ------------------
  475|  1.48k|				    (ISC_LEXCOMMENT_C |
  ------------------
  |  |   94|  1.48k|#define ISC_LEXCOMMENT_C	     0x01
  ------------------
  476|  1.48k|				     ISC_LEXCOMMENT_CPLUSPLUS)) != 0)
  ------------------
  |  |   95|  1.48k|#define ISC_LEXCOMMENT_CPLUSPLUS     0x02
  ------------------
  477|      0|			{
  478|      0|				saved_state = state;
  479|      0|				state = lexstate_maybecomment;
  480|      0|				no_comments = true;
  481|      0|				continue;
  482|  22.9M|			} else if (c == '#' && ((lex->comments &
  ------------------
  |  Branch (482:15): [True: 5.43k, False: 22.9M]
  |  Branch (482:27): [True: 0, False: 5.43k]
  ------------------
  483|  5.43k|						 ISC_LEXCOMMENT_SHELL) != 0))
  ------------------
  |  |   96|  5.43k|#define ISC_LEXCOMMENT_SHELL	     0x04
  ------------------
  484|      0|			{
  485|      0|				saved_state = state;
  486|      0|				state = lexstate_eatline;
  487|      0|				no_comments = true;
  488|      0|				continue;
  489|      0|			}
  490|  22.9M|		}
  491|       |
  492|  25.5M|	no_read:
  493|       |		/* INSIST(c == EOF || (c >= 0 && c <= 255)); */
  494|  25.5M|		switch (state) {
  495|   488k|		case lexstate_start:
  ------------------
  |  Branch (495:3): [True: 488k, False: 25.0M]
  ------------------
  496|   488k|			if (c == EOF) {
  ------------------
  |  Branch (496:8): [True: 445, False: 487k]
  ------------------
  497|    445|				lex->last_was_eol = false;
  498|    445|				if ((options & ISC_LEXOPT_DNSMULTILINE) != 0 &&
  ------------------
  |  |   77|    445|#define ISC_LEXOPT_DNSMULTILINE 0x0020 /*%< Handle '(' and ')'. */
  ------------------
  |  Branch (498:9): [True: 445, False: 0]
  ------------------
  499|    445|				    lex->paren_count != 0)
  ------------------
  |  Branch (499:9): [True: 0, False: 445]
  ------------------
  500|      0|				{
  501|      0|					lex->paren_count = 0;
  502|      0|					result = ISC_R_UNBALANCED;
  503|      0|					goto done;
  504|      0|				}
  505|    445|				if ((options & ISC_LEXOPT_BTEXT) != 0 &&
  ------------------
  |  |   84|    445|#define ISC_LEXOPT_BTEXT	    0x0800 /*%< Bracketed text. */
  ------------------
  |  Branch (505:9): [True: 0, False: 445]
  ------------------
  506|      0|				    lex->brace_count != 0)
  ------------------
  |  Branch (506:9): [True: 0, False: 0]
  ------------------
  507|      0|				{
  508|      0|					lex->brace_count = 0;
  509|      0|					result = ISC_R_UNBALANCED;
  510|      0|					goto done;
  511|      0|				}
  512|    445|				if ((options & ISC_LEXOPT_EOF) == 0) {
  ------------------
  |  |   63|    445|#define ISC_LEXOPT_EOF	     0x0002 /*%< Want end-of-file token. */
  ------------------
  |  Branch (512:9): [True: 0, False: 445]
  ------------------
  513|      0|					result = ISC_R_EOF;
  514|      0|					goto done;
  515|      0|				}
  516|    445|				tokenp->type = isc_tokentype_eof;
  517|    445|				done = true;
  518|   487k|			} else if (c == ' ' || c == '\t') {
  ------------------
  |  Branch (518:15): [True: 456k, False: 31.5k]
  |  Branch (518:27): [True: 4.42k, False: 27.1k]
  ------------------
  519|   460k|				if (lex->last_was_eol &&
  ------------------
  |  Branch (519:9): [True: 1.76k, False: 458k]
  ------------------
  520|  1.76k|				    (options & ISC_LEXOPT_INITIALWS) != 0)
  ------------------
  |  |   64|  1.76k|#define ISC_LEXOPT_INITIALWS 0x0004 /*%< Want initial whitespace. */
  ------------------
  |  Branch (520:9): [True: 0, False: 1.76k]
  ------------------
  521|      0|				{
  522|      0|					lex->last_was_eol = false;
  523|      0|					tokenp->type = isc_tokentype_initialws;
  524|      0|					tokenp->value.as_char = c;
  525|      0|					done = true;
  526|      0|				}
  527|   460k|			} else if (c == '\n') {
  ------------------
  |  Branch (527:15): [True: 2.76k, False: 24.3k]
  ------------------
  528|  2.76k|				if ((options & ISC_LEXOPT_EOL) != 0) {
  ------------------
  |  |   62|  2.76k|#define ISC_LEXOPT_EOL	     0x0001 /*%< Want end-of-line token. */
  ------------------
  |  Branch (528:9): [True: 2.76k, False: 0]
  ------------------
  529|  2.76k|					tokenp->type = isc_tokentype_eol;
  530|  2.76k|					done = true;
  531|  2.76k|				}
  532|  2.76k|				lex->last_was_eol = true;
  533|  24.3k|			} else if (c == '\r') {
  ------------------
  |  Branch (533:15): [True: 13.3k, False: 11.0k]
  ------------------
  534|  13.3k|				if ((options & ISC_LEXOPT_EOL) != 0) {
  ------------------
  |  |   62|  13.3k|#define ISC_LEXOPT_EOL	     0x0001 /*%< Want end-of-line token. */
  ------------------
  |  Branch (534:9): [True: 13.3k, False: 0]
  ------------------
  535|  13.3k|					state = lexstate_crlf;
  536|  13.3k|				}
  537|  13.3k|			} else if (c == '"' &&
  ------------------
  |  Branch (537:15): [True: 834, False: 10.2k]
  ------------------
  538|    834|				   (options & ISC_LEXOPT_QSTRING) != 0)
  ------------------
  |  |   66|    834|#define ISC_LEXOPT_QSTRING   0x0010 /*%< Recognize qstrings. */
  ------------------
  |  Branch (538:8): [True: 508, False: 326]
  ------------------
  539|    508|			{
  540|    508|				lex->last_was_eol = false;
  541|    508|				no_comments = true;
  542|    508|				state = lexstate_qstring;
  543|  10.5k|			} else if (lex->specials[c]) {
  ------------------
  |  Branch (543:15): [True: 0, False: 10.5k]
  ------------------
  544|      0|				lex->last_was_eol = false;
  545|      0|				if ((c == '(' || c == ')') &&
  ------------------
  |  Branch (545:10): [True: 0, False: 0]
  |  Branch (545:22): [True: 0, False: 0]
  ------------------
  546|      0|				    (options & ISC_LEXOPT_DNSMULTILINE) != 0)
  ------------------
  |  |   77|      0|#define ISC_LEXOPT_DNSMULTILINE 0x0020 /*%< Handle '(' and ')'. */
  ------------------
  |  Branch (546:9): [True: 0, False: 0]
  ------------------
  547|      0|				{
  548|      0|					if (c == '(') {
  ------------------
  |  Branch (548:10): [True: 0, False: 0]
  ------------------
  549|      0|						if (lex->paren_count == 0) {
  ------------------
  |  Branch (549:11): [True: 0, False: 0]
  ------------------
  550|      0|							options &= ~IWSEOL;
  ------------------
  |  |  293|      0|#define IWSEOL (ISC_LEXOPT_INITIALWS | ISC_LEXOPT_EOL)
  |  |  ------------------
  |  |  |  |   64|      0|#define ISC_LEXOPT_INITIALWS 0x0004 /*%< Want initial whitespace. */
  |  |  ------------------
  |  |               #define IWSEOL (ISC_LEXOPT_INITIALWS | ISC_LEXOPT_EOL)
  |  |  ------------------
  |  |  |  |   62|      0|#define ISC_LEXOPT_EOL	     0x0001 /*%< Want end-of-line token. */
  |  |  ------------------
  ------------------
  551|      0|						}
  552|      0|						lex->paren_count++;
  553|      0|					} else {
  554|      0|						if (lex->paren_count == 0) {
  ------------------
  |  Branch (554:11): [True: 0, False: 0]
  ------------------
  555|      0|							result =
  556|      0|								ISC_R_UNBALANCED;
  557|      0|							goto done;
  558|      0|						}
  559|      0|						lex->paren_count--;
  560|      0|						if (lex->paren_count == 0) {
  ------------------
  |  Branch (560:11): [True: 0, False: 0]
  ------------------
  561|      0|							options = saved_options;
  562|      0|						}
  563|      0|					}
  564|      0|					continue;
  565|      0|				} else if (c == '{' &&
  ------------------
  |  Branch (565:16): [True: 0, False: 0]
  ------------------
  566|      0|					   (options & ISC_LEXOPT_BTEXT) != 0)
  ------------------
  |  |   84|      0|#define ISC_LEXOPT_BTEXT	    0x0800 /*%< Bracketed text. */
  ------------------
  |  Branch (566:9): [True: 0, False: 0]
  ------------------
  567|      0|				{
  568|      0|					if (lex->brace_count != 0) {
  ------------------
  |  Branch (568:10): [True: 0, False: 0]
  ------------------
  569|      0|						result = ISC_R_UNBALANCED;
  570|      0|						goto done;
  571|      0|					}
  572|      0|					lex->brace_count++;
  573|      0|					options &= ~IWSEOL;
  ------------------
  |  |  293|      0|#define IWSEOL (ISC_LEXOPT_INITIALWS | ISC_LEXOPT_EOL)
  |  |  ------------------
  |  |  |  |   64|      0|#define ISC_LEXOPT_INITIALWS 0x0004 /*%< Want initial whitespace. */
  |  |  ------------------
  |  |               #define IWSEOL (ISC_LEXOPT_INITIALWS | ISC_LEXOPT_EOL)
  |  |  ------------------
  |  |  |  |   62|      0|#define ISC_LEXOPT_EOL	     0x0001 /*%< Want end-of-line token. */
  |  |  ------------------
  ------------------
  574|      0|					state = lexstate_btext;
  575|      0|					no_comments = true;
  576|      0|					continue;
  577|      0|				}
  578|      0|				tokenp->type = isc_tokentype_special;
  579|      0|				tokenp->value.as_char = c;
  580|      0|				done = true;
  581|  10.5k|			} else if (isdigit((unsigned char)c) &&
  ------------------
  |  Branch (581:15): [True: 4.10k, False: 6.44k]
  ------------------
  582|  4.10k|				   (options & ISC_LEXOPT_NUMBER) != 0)
  ------------------
  |  |   65|  4.10k|#define ISC_LEXOPT_NUMBER    0x0008 /*%< Recognize numbers. */
  ------------------
  |  Branch (582:8): [True: 1.20k, False: 2.89k]
  ------------------
  583|  1.20k|			{
  584|  1.20k|				lex->last_was_eol = false;
  585|  1.20k|				if ((options & ISC_LEXOPT_OCTAL) != 0 &&
  ------------------
  |  |   83|  1.20k|#define ISC_LEXOPT_OCTAL	    0x0400 /*%< Expect a octal number. */
  ------------------
  |  Branch (585:9): [True: 0, False: 1.20k]
  ------------------
  586|      0|				    (c == '8' || c == '9'))
  ------------------
  |  Branch (586:10): [True: 0, False: 0]
  |  Branch (586:22): [True: 0, False: 0]
  ------------------
  587|      0|				{
  588|      0|					state = lexstate_string;
  589|  1.20k|				} else {
  590|  1.20k|					state = lexstate_number;
  591|  1.20k|				}
  592|  1.20k|				goto no_read;
  593|  9.34k|			} else {
  594|  9.34k|				lex->last_was_eol = false;
  595|  9.34k|				state = lexstate_string;
  596|  9.34k|				goto no_read;
  597|  9.34k|			}
  598|   477k|			break;
  599|   477k|		case lexstate_crlf:
  ------------------
  |  Branch (599:3): [True: 13.3k, False: 25.4M]
  ------------------
  600|  13.3k|			if (c != '\n') {
  ------------------
  |  Branch (600:8): [True: 12.9k, False: 327]
  ------------------
  601|  12.9k|				pushback(source, c);
  602|  12.9k|			}
  603|  13.3k|			tokenp->type = isc_tokentype_eol;
  604|  13.3k|			done = true;
  605|  13.3k|			lex->last_was_eol = true;
  606|  13.3k|			break;
  607|  1.34M|		case lexstate_number:
  ------------------
  |  Branch (607:3): [True: 1.34M, False: 24.1M]
  ------------------
  608|  1.34M|			if (c == EOF || !isdigit((unsigned char)c)) {
  ------------------
  |  Branch (608:8): [True: 192, False: 1.34M]
  |  Branch (608:20): [True: 1.01k, False: 1.34M]
  ------------------
  609|  1.20k|				if (c == ' ' || c == '\t' || c == '\r' ||
  ------------------
  |  Branch (609:9): [True: 197, False: 1.01k]
  |  Branch (609:21): [True: 207, False: 805]
  |  Branch (609:34): [True: 200, False: 605]
  ------------------
  610|    605|				    c == '\n' || c == EOF || lex->specials[c])
  ------------------
  |  Branch (610:9): [True: 368, False: 237]
  |  Branch (610:22): [True: 192, False: 45]
  |  Branch (610:34): [True: 0, False: 45]
  ------------------
  611|  1.16k|				{
  612|  1.16k|					int base;
  613|  1.16k|					if ((options & ISC_LEXOPT_OCTAL) != 0) {
  ------------------
  |  |   83|  1.16k|#define ISC_LEXOPT_OCTAL	    0x0400 /*%< Expect a octal number. */
  ------------------
  |  Branch (613:10): [True: 0, False: 1.16k]
  ------------------
  614|      0|						base = 8;
  615|  1.16k|					} else if ((options &
  ------------------
  |  Branch (615:17): [True: 0, False: 1.16k]
  ------------------
  616|  1.16k|						    ISC_LEXOPT_CNUMBER) != 0)
  ------------------
  |  |   80|  1.16k|#define ISC_LEXOPT_CNUMBER	    0x0080 /*%< Recognize octal and hex. */
  ------------------
  617|      0|					{
  618|      0|						base = 0;
  619|  1.16k|					} else {
  620|  1.16k|						base = 10;
  621|  1.16k|					}
  622|  1.16k|					pushback(source, c);
  623|       |
  624|  1.16k|					result = isc_parse_uint32(
  625|  1.16k|						&as_ulong, lex->data, base);
  626|  1.16k|					if (result == ISC_R_SUCCESS) {
  ------------------
  |  Branch (626:10): [True: 1.03k, False: 126]
  ------------------
  627|  1.03k|						tokenp->type =
  628|  1.03k|							isc_tokentype_number;
  629|  1.03k|						tokenp->value.as_ulong =
  630|  1.03k|							as_ulong;
  631|  1.03k|					} else if (result == ISC_R_BADNUMBER) {
  ------------------
  |  Branch (631:17): [True: 0, False: 126]
  ------------------
  632|      0|						isc_tokenvalue_t *v;
  633|       |
  634|      0|						tokenp->type =
  635|      0|							isc_tokentype_string;
  636|      0|						v = &(tokenp->value);
  637|      0|						v->as_textregion.base =
  638|      0|							lex->data;
  639|      0|						v->as_textregion.length =
  640|      0|							(unsigned int)(lex->max_token -
  641|      0|								       remaining);
  642|    126|					} else {
  643|    126|						goto done;
  644|    126|					}
  645|  1.03k|					done = true;
  646|  1.03k|					continue;
  647|  1.16k|				} else if ((options & ISC_LEXOPT_CNUMBER) ==
  ------------------
  |  |   80|     45|#define ISC_LEXOPT_CNUMBER	    0x0080 /*%< Recognize octal and hex. */
  ------------------
  |  Branch (647:16): [True: 45, False: 0]
  ------------------
  648|     45|						   0 ||
  649|      0|					   ((c != 'x' && c != 'X') ||
  ------------------
  |  Branch (649:11): [True: 0, False: 0]
  |  Branch (649:23): [True: 0, False: 0]
  ------------------
  650|      0|					    (curr != &lex->data[1]) ||
  ------------------
  |  Branch (650:10): [True: 0, False: 0]
  ------------------
  651|      0|					    (lex->data[0] != '0')))
  ------------------
  |  Branch (651:10): [True: 0, False: 0]
  ------------------
  652|     45|				{
  653|       |					/* Above test supports hex numbers */
  654|     45|					state = lexstate_string;
  655|     45|				}
  656|  1.34M|			} else if ((options & ISC_LEXOPT_OCTAL) != 0 &&
  ------------------
  |  |   83|  1.34M|#define ISC_LEXOPT_OCTAL	    0x0400 /*%< Expect a octal number. */
  ------------------
  |  Branch (656:15): [True: 0, False: 1.34M]
  ------------------
  657|      0|				   (c == '8' || c == '9'))
  ------------------
  |  Branch (657:9): [True: 0, False: 0]
  |  Branch (657:21): [True: 0, False: 0]
  ------------------
  658|      0|			{
  659|      0|				state = lexstate_string;
  660|      0|			}
  661|  1.34M|			if (remaining == 0U) {
  ------------------
  |  Branch (661:8): [True: 2, False: 1.34M]
  ------------------
  662|      2|				grow_data(lex, &remaining, &curr, &prev);
  663|      2|			}
  664|  1.34M|			INSIST(remaining > 0U);
  ------------------
  |  |  198|  1.34M|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|  1.34M|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 1.34M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|  1.34M|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  665|  1.34M|			*curr++ = c;
  666|  1.34M|			*curr = '\0';
  667|  1.34M|			remaining--;
  668|  1.34M|			break;
  669|  19.3M|		case lexstate_string:
  ------------------
  |  Branch (669:3): [True: 19.3M, False: 6.18M]
  ------------------
  670|  19.3M|			if (!escaped && c == '=' &&
  ------------------
  |  Branch (670:8): [True: 19.3M, False: 16.9k]
  |  Branch (670:20): [True: 3.11k, False: 19.2M]
  ------------------
  671|  3.11k|			    (options & ISC_LEXOPT_VPAIR) != 0)
  ------------------
  |  |   85|  3.11k|#define ISC_LEXOPT_VPAIR	    0x1000 /*%< Recognize value pair. */
  ------------------
  |  Branch (671:8): [True: 1.62k, False: 1.48k]
  ------------------
  672|  1.62k|			{
  673|  1.62k|				if (remaining == 0U) {
  ------------------
  |  Branch (673:9): [True: 1, False: 1.62k]
  ------------------
  674|      1|					grow_data(lex, &remaining, &curr,
  675|      1|						  &prev);
  676|      1|				}
  677|  1.62k|				INSIST(remaining > 0U);
  ------------------
  |  |  198|  1.62k|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|  1.62k|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 1.62k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|  1.62k|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  678|  1.62k|				*curr++ = c;
  679|  1.62k|				*curr = '\0';
  680|  1.62k|				remaining--;
  681|  1.62k|				state = lexstate_vpairstart;
  682|  1.62k|				break;
  683|  1.62k|			}
  684|  19.3M|			FALLTHROUGH;
  ------------------
  |  |  101|  19.3M|#define FALLTHROUGH [[fallthrough]]
  ------------------
  685|  19.3M|		case lexstate_vpairstart:
  ------------------
  |  Branch (685:3): [True: 1.62k, False: 25.4M]
  ------------------
  686|  19.3M|			if (state == lexstate_vpairstart) {
  ------------------
  |  Branch (686:8): [True: 1.62k, False: 19.3M]
  ------------------
  687|  1.62k|				if (c == '"' &&
  ------------------
  |  Branch (687:9): [True: 831, False: 798]
  ------------------
  688|    831|				    (options & ISC_LEXOPT_QVPAIR) != 0)
  ------------------
  |  |   86|    831|#define ISC_LEXOPT_QVPAIR	    0x2000 /*%< Recognize quoted value pair. */
  ------------------
  |  Branch (688:9): [True: 635, False: 196]
  ------------------
  689|    635|				{
  690|    635|					no_comments = true;
  691|    635|					state = lexstate_qvpair;
  692|    635|					break;
  693|    635|				}
  694|    994|				state = lexstate_vpair;
  695|    994|			}
  696|  19.3M|			FALLTHROUGH;
  ------------------
  |  |  101|  19.3M|#define FALLTHROUGH [[fallthrough]]
  ------------------
  697|  21.1M|		case lexstate_vpair:
  ------------------
  |  Branch (697:3): [True: 1.81M, False: 23.6M]
  ------------------
  698|       |			/*
  699|       |			 * EOF needs to be checked before lex->specials[c]
  700|       |			 * as lex->specials[EOF] is not a good idea.
  701|       |			 */
  702|  21.1M|			if (c == '\r' || c == '\n' || c == EOF ||
  ------------------
  |  Branch (702:8): [True: 3.84k, False: 21.1M]
  |  Branch (702:21): [True: 1.77k, False: 21.1M]
  |  Branch (702:34): [True: 341, False: 21.1M]
  ------------------
  703|  21.1M|			    (!escaped &&
  ------------------
  |  Branch (703:9): [True: 21.1M, False: 20.1k]
  ------------------
  704|  21.1M|			     (c == ' ' || c == '\t' || lex->specials[c])))
  ------------------
  |  Branch (704:10): [True: 1.92k, False: 21.1M]
  |  Branch (704:22): [True: 866, False: 21.1M]
  |  Branch (704:35): [True: 0, False: 21.1M]
  ------------------
  705|  8.75k|			{
  706|  8.75k|				pushback(source, c);
  707|  8.75k|				if (source->result != ISC_R_SUCCESS) {
  ------------------
  |  Branch (707:9): [True: 0, False: 8.75k]
  ------------------
  708|      0|					result = source->result;
  709|      0|					goto done;
  710|      0|				}
  711|  8.75k|				if (escaped && c == EOF) {
  ------------------
  |  Branch (711:9): [True: 713, False: 8.03k]
  |  Branch (711:20): [True: 10, False: 703]
  ------------------
  712|     10|					result = ISC_R_UNEXPECTEDEND;
  713|     10|					goto done;
  714|     10|				}
  715|  8.74k|				tokenp->type = (state == lexstate_string)
  ------------------
  |  Branch (715:20): [True: 7.74k, False: 993]
  ------------------
  716|  8.74k|						       ? isc_tokentype_string
  717|  8.74k|						       : isc_tokentype_vpair;
  718|  8.74k|				tokenp->value.as_textregion.base = lex->data;
  719|  8.74k|				tokenp->value.as_textregion.length =
  720|  8.74k|					(unsigned int)(lex->max_token -
  721|  8.74k|						       remaining);
  722|  8.74k|				done = true;
  723|  8.74k|				continue;
  724|  8.75k|			}
  725|  21.1M|			if ((options & ISC_LEXOPT_ESCAPE) != 0) {
  ------------------
  |  |   81|  21.1M|#define ISC_LEXOPT_ESCAPE	    0x0100 /*%< Recognize escapes. */
  ------------------
  |  Branch (725:8): [True: 21.1M, False: 0]
  ------------------
  726|  21.1M|				escaped = (!escaped && c == '\\') ? true
  ------------------
  |  Branch (726:16): [True: 21.1M, False: 20.1k]
  |  Branch (726:28): [True: 20.8k, False: 21.0M]
  ------------------
  727|  21.1M|								  : false;
  728|  21.1M|			}
  729|  21.1M|			if (remaining == 0U) {
  ------------------
  |  Branch (729:8): [True: 6, False: 21.1M]
  ------------------
  730|      6|				grow_data(lex, &remaining, &curr, &prev);
  731|      6|			}
  732|  21.1M|			INSIST(remaining > 0U);
  ------------------
  |  |  198|  21.1M|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|  21.1M|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 21.1M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|  21.1M|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  733|  21.1M|			*curr++ = c;
  734|  21.1M|			*curr = '\0';
  735|  21.1M|			remaining--;
  736|  21.1M|			break;
  737|      0|		case lexstate_maybecomment:
  ------------------
  |  Branch (737:3): [True: 0, False: 25.5M]
  ------------------
  738|      0|			if (c == '*' && (lex->comments & ISC_LEXCOMMENT_C) != 0)
  ------------------
  |  |   94|      0|#define ISC_LEXCOMMENT_C	     0x01
  ------------------
  |  Branch (738:8): [True: 0, False: 0]
  |  Branch (738:20): [True: 0, False: 0]
  ------------------
  739|      0|			{
  740|      0|				state = lexstate_ccomment;
  741|      0|				continue;
  742|      0|			} else if (c == '/' && (lex->comments &
  ------------------
  |  Branch (742:15): [True: 0, False: 0]
  |  Branch (742:27): [True: 0, False: 0]
  ------------------
  743|      0|						ISC_LEXCOMMENT_CPLUSPLUS) != 0)
  ------------------
  |  |   95|      0|#define ISC_LEXCOMMENT_CPLUSPLUS     0x02
  ------------------
  744|      0|			{
  745|      0|				state = lexstate_eatline;
  746|      0|				continue;
  747|      0|			}
  748|      0|			pushback(source, c);
  749|      0|			c = '/';
  750|      0|			no_comments = false;
  751|      0|			state = saved_state;
  752|      0|			goto no_read;
  753|      0|		case lexstate_ccomment:
  ------------------
  |  Branch (753:3): [True: 0, False: 25.5M]
  ------------------
  754|      0|			if (c == EOF) {
  ------------------
  |  Branch (754:8): [True: 0, False: 0]
  ------------------
  755|      0|				result = ISC_R_UNEXPECTEDEND;
  756|      0|				goto done;
  757|      0|			}
  758|      0|			if (c == '*') {
  ------------------
  |  Branch (758:8): [True: 0, False: 0]
  ------------------
  759|      0|				state = lexstate_ccommentend;
  760|      0|			}
  761|      0|			break;
  762|      0|		case lexstate_ccommentend:
  ------------------
  |  Branch (762:3): [True: 0, False: 25.5M]
  ------------------
  763|      0|			if (c == EOF) {
  ------------------
  |  Branch (763:8): [True: 0, False: 0]
  ------------------
  764|      0|				result = ISC_R_UNEXPECTEDEND;
  765|      0|				goto done;
  766|      0|			}
  767|      0|			if (c == '/') {
  ------------------
  |  Branch (767:8): [True: 0, False: 0]
  ------------------
  768|       |				/*
  769|       |				 * C-style comments become a single space.
  770|       |				 * We do this to ensure that a comment will
  771|       |				 * act as a delimiter for strings and
  772|       |				 * numbers.
  773|       |				 */
  774|      0|				c = ' ';
  775|      0|				no_comments = false;
  776|      0|				state = saved_state;
  777|      0|				goto no_read;
  778|      0|			} else if (c != '*') {
  ------------------
  |  Branch (778:15): [True: 0, False: 0]
  ------------------
  779|      0|				state = lexstate_ccomment;
  780|      0|			}
  781|      0|			break;
  782|      0|		case lexstate_eatline:
  ------------------
  |  Branch (782:3): [True: 0, False: 25.5M]
  ------------------
  783|      0|			if ((c == '\n') || (c == EOF)) {
  ------------------
  |  Branch (783:8): [True: 0, False: 0]
  |  Branch (783:23): [True: 0, False: 0]
  ------------------
  784|      0|				no_comments = false;
  785|      0|				state = saved_state;
  786|      0|				goto no_read;
  787|      0|			}
  788|      0|			break;
  789|   233k|		case lexstate_qstring:
  ------------------
  |  Branch (789:3): [True: 233k, False: 25.2M]
  ------------------
  790|  2.51M|		case lexstate_qvpair:
  ------------------
  |  Branch (790:3): [True: 2.27M, False: 23.2M]
  ------------------
  791|  2.51M|			if (c == EOF) {
  ------------------
  |  Branch (791:8): [True: 98, False: 2.51M]
  ------------------
  792|     98|				result = ISC_R_UNEXPECTEDEND;
  793|     98|				goto done;
  794|     98|			}
  795|  2.51M|			if (c == '"') {
  ------------------
  |  Branch (795:8): [True: 2.49k, False: 2.51M]
  ------------------
  796|  2.49k|				if (escaped) {
  ------------------
  |  Branch (796:9): [True: 1.48k, False: 1.00k]
  ------------------
  797|  1.48k|					escaped = false;
  798|       |					/*
  799|       |					 * Overwrite the preceding backslash.
  800|       |					 */
  801|  1.48k|					INSIST(prev != NULL);
  ------------------
  |  |  198|  1.48k|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|  1.48k|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 1.48k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|  1.48k|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  802|  1.48k|					*prev = '"';
  803|  1.48k|				} else {
  804|  1.00k|					tokenp->type =
  805|  1.00k|						(state == lexstate_qstring)
  ------------------
  |  Branch (805:7): [True: 411, False: 593]
  ------------------
  806|  1.00k|							? isc_tokentype_qstring
  807|  1.00k|							: isc_tokentype_qvpair;
  808|  1.00k|					tokenp->value.as_textregion.base =
  809|  1.00k|						lex->data;
  810|  1.00k|					tokenp->value.as_textregion.length =
  811|  1.00k|						(unsigned int)(lex->max_token -
  812|  1.00k|							       remaining);
  813|  1.00k|					no_comments = false;
  814|  1.00k|					done = true;
  815|  1.00k|				}
  816|  2.51M|			} else {
  817|  2.51M|				if (c == '\n' && !escaped &&
  ------------------
  |  Branch (817:9): [True: 414, False: 2.50M]
  |  Branch (817:22): [True: 41, False: 373]
  ------------------
  818|     41|				    (options & ISC_LEXOPT_QSTRINGMULTILINE) ==
  ------------------
  |  |   82|     41|#define ISC_LEXOPT_QSTRINGMULTILINE 0x0200 /*%< Allow multiline "" strings */
  ------------------
  |  Branch (818:9): [True: 41, False: 0]
  ------------------
  819|     41|					    0)
  820|     41|				{
  821|     41|					pushback(source, c);
  822|     41|					result = ISC_R_UNBALANCEDQUOTES;
  823|     41|					goto done;
  824|     41|				}
  825|  2.51M|				if (c == '\\' && !escaped) {
  ------------------
  |  Branch (825:9): [True: 41.1k, False: 2.46M]
  |  Branch (825:22): [True: 24.3k, False: 16.7k]
  ------------------
  826|  24.3k|					escaped = true;
  827|  2.48M|				} else {
  828|  2.48M|					escaped = false;
  829|  2.48M|				}
  830|  2.51M|				if (remaining == 0U) {
  ------------------
  |  Branch (830:9): [True: 1, False: 2.51M]
  ------------------
  831|      1|					grow_data(lex, &remaining, &curr,
  832|      1|						  &prev);
  833|      1|				}
  834|  2.51M|				INSIST(remaining > 0U);
  ------------------
  |  |  198|  2.51M|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|  2.51M|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 2.51M, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|  2.51M|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  835|  2.51M|				prev = curr;
  836|  2.51M|				*curr++ = c;
  837|  2.51M|				*curr = '\0';
  838|  2.51M|				remaining--;
  839|  2.51M|			}
  840|  2.51M|			break;
  841|  2.51M|		case lexstate_btext:
  ------------------
  |  Branch (841:3): [True: 0, False: 25.5M]
  ------------------
  842|      0|			if (c == EOF) {
  ------------------
  |  Branch (842:8): [True: 0, False: 0]
  ------------------
  843|      0|				result = ISC_R_UNEXPECTEDEND;
  844|      0|				goto done;
  845|      0|			}
  846|      0|			if (c == '{') {
  ------------------
  |  Branch (846:8): [True: 0, False: 0]
  ------------------
  847|      0|				if (escaped) {
  ------------------
  |  Branch (847:9): [True: 0, False: 0]
  ------------------
  848|      0|					escaped = false;
  849|      0|				} else {
  850|      0|					lex->brace_count++;
  851|      0|				}
  852|      0|			} else if (c == '}') {
  ------------------
  |  Branch (852:15): [True: 0, False: 0]
  ------------------
  853|      0|				if (escaped) {
  ------------------
  |  Branch (853:9): [True: 0, False: 0]
  ------------------
  854|      0|					escaped = false;
  855|      0|				} else {
  856|      0|					INSIST(lex->brace_count > 0);
  ------------------
  |  |  198|      0|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|      0|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  857|      0|					lex->brace_count--;
  858|      0|				}
  859|       |
  860|      0|				if (lex->brace_count == 0) {
  ------------------
  |  Branch (860:9): [True: 0, False: 0]
  ------------------
  861|      0|					tokenp->type = isc_tokentype_btext;
  862|      0|					tokenp->value.as_textregion.base =
  863|      0|						lex->data;
  864|      0|					tokenp->value.as_textregion.length =
  865|      0|						(unsigned int)(lex->max_token -
  866|      0|							       remaining);
  867|      0|					no_comments = false;
  868|      0|					done = true;
  869|      0|					break;
  870|      0|				}
  871|      0|			}
  872|       |
  873|      0|			if (c == '\\' && !escaped) {
  ------------------
  |  Branch (873:8): [True: 0, False: 0]
  |  Branch (873:21): [True: 0, False: 0]
  ------------------
  874|      0|				escaped = true;
  875|      0|			} else {
  876|      0|				escaped = false;
  877|      0|			}
  878|       |
  879|      0|			if (remaining == 0U) {
  ------------------
  |  Branch (879:8): [True: 0, False: 0]
  ------------------
  880|      0|				grow_data(lex, &remaining, &curr, &prev);
  881|      0|			}
  882|      0|			INSIST(remaining > 0U);
  ------------------
  |  |  198|      0|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|      0|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      0|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  883|      0|			prev = curr;
  884|      0|			*curr++ = c;
  885|      0|			*curr = '\0';
  886|      0|			remaining--;
  887|      0|			break;
  888|      0|		default:
  ------------------
  |  Branch (888:3): [True: 0, False: 25.5M]
  ------------------
  889|      0|			FATAL_ERROR("Unexpected state %d", state);
  ------------------
  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  ------------------
  890|  25.5M|		}
  891|  25.5M|	} while (!done);
  ------------------
  |  Branch (891:11): [True: 25.4M, False: 27.2k]
  ------------------
  892|       |
  893|  27.2k|	result = ISC_R_SUCCESS;
  894|  27.5k|done:
  895|  27.5k|#ifdef HAVE_FLOCKFILE
  896|  27.5k|	if (source->is_file) {
  ------------------
  |  Branch (896:6): [True: 0, False: 27.5k]
  ------------------
  897|      0|		funlockfile(source->input);
  898|      0|	}
  899|  27.5k|#endif /* ifdef HAVE_FLOCKFILE */
  900|  27.5k|	return result;
  901|  27.2k|}
isc_lex_getmastertoken:
  905|  27.5k|		       isc_tokentype_t expect, bool eol) {
  906|  27.5k|	unsigned int options = ISC_LEXOPT_EOL | ISC_LEXOPT_EOF |
  ------------------
  |  |   62|  27.5k|#define ISC_LEXOPT_EOL	     0x0001 /*%< Want end-of-line token. */
  ------------------
              	unsigned int options = ISC_LEXOPT_EOL | ISC_LEXOPT_EOF |
  ------------------
  |  |   63|  27.5k|#define ISC_LEXOPT_EOF	     0x0002 /*%< Want end-of-file token. */
  ------------------
  907|  27.5k|			       ISC_LEXOPT_DNSMULTILINE | ISC_LEXOPT_ESCAPE;
  ------------------
  |  |   77|  27.5k|#define ISC_LEXOPT_DNSMULTILINE 0x0020 /*%< Handle '(' and ')'. */
  ------------------
              			       ISC_LEXOPT_DNSMULTILINE | ISC_LEXOPT_ESCAPE;
  ------------------
  |  |   81|  27.5k|#define ISC_LEXOPT_ESCAPE	    0x0100 /*%< Recognize escapes. */
  ------------------
  908|  27.5k|	isc_result_t result;
  909|       |
  910|  27.5k|	if (expect == isc_tokentype_vpair) {
  ------------------
  |  Branch (910:6): [True: 938, False: 26.6k]
  ------------------
  911|    938|		options |= ISC_LEXOPT_VPAIR;
  ------------------
  |  |   85|    938|#define ISC_LEXOPT_VPAIR	    0x1000 /*%< Recognize value pair. */
  ------------------
  912|  26.6k|	} else if (expect == isc_tokentype_qvpair) {
  ------------------
  |  Branch (912:13): [True: 20.8k, False: 5.79k]
  ------------------
  913|  20.8k|		options |= ISC_LEXOPT_VPAIR;
  ------------------
  |  |   85|  20.8k|#define ISC_LEXOPT_VPAIR	    0x1000 /*%< Recognize value pair. */
  ------------------
  914|  20.8k|		options |= ISC_LEXOPT_QVPAIR;
  ------------------
  |  |   86|  20.8k|#define ISC_LEXOPT_QVPAIR	    0x2000 /*%< Recognize quoted value pair. */
  ------------------
  915|  20.8k|	} else if (expect == isc_tokentype_qstring) {
  ------------------
  |  Branch (915:13): [True: 1.60k, False: 4.18k]
  ------------------
  916|  1.60k|		options |= ISC_LEXOPT_QSTRING;
  ------------------
  |  |   66|  1.60k|#define ISC_LEXOPT_QSTRING   0x0010 /*%< Recognize qstrings. */
  ------------------
  917|  4.18k|	} else if (expect == isc_tokentype_number) {
  ------------------
  |  Branch (917:13): [True: 2.02k, False: 2.16k]
  ------------------
  918|  2.02k|		options |= ISC_LEXOPT_NUMBER;
  ------------------
  |  |   65|  2.02k|#define ISC_LEXOPT_NUMBER    0x0008 /*%< Recognize numbers. */
  ------------------
  919|  2.02k|	}
  920|  27.5k|	result = isc_lex_gettoken(lex, options, token);
  921|  27.5k|	if (result == ISC_R_RANGE) {
  ------------------
  |  Branch (921:6): [True: 126, False: 27.4k]
  ------------------
  922|    126|		isc_lex_ungettoken(lex, token);
  923|    126|	}
  924|  27.5k|	if (result != ISC_R_SUCCESS) {
  ------------------
  |  Branch (924:6): [True: 275, False: 27.2k]
  ------------------
  925|    275|		return result;
  926|    275|	}
  927|       |
  928|  27.2k|	if (eol && ((token->type == isc_tokentype_eol) ||
  ------------------
  |  Branch (928:6): [True: 26.2k, False: 1.04k]
  |  Branch (928:14): [True: 15.6k, False: 10.5k]
  ------------------
  929|  10.5k|		    (token->type == isc_tokentype_eof)))
  ------------------
  |  Branch (929:7): [True: 353, False: 10.2k]
  ------------------
  930|  16.0k|	{
  931|  16.0k|		return ISC_R_SUCCESS;
  932|  16.0k|	}
  933|  11.2k|	if (token->type == isc_tokentype_string &&
  ------------------
  |  Branch (933:6): [True: 7.74k, False: 3.50k]
  ------------------
  934|  7.74k|	    (expect == isc_tokentype_qstring || expect == isc_tokentype_qvpair))
  ------------------
  |  Branch (934:7): [True: 632, False: 7.11k]
  |  Branch (934:42): [True: 6.32k, False: 787]
  ------------------
  935|  6.96k|	{
  936|  6.96k|		return ISC_R_SUCCESS;
  937|  6.96k|	}
  938|  4.29k|	if (token->type == isc_tokentype_vpair &&
  ------------------
  |  Branch (938:6): [True: 993, False: 3.30k]
  ------------------
  939|    993|	    expect == isc_tokentype_qvpair)
  ------------------
  |  Branch (939:6): [True: 578, False: 415]
  ------------------
  940|    578|	{
  941|    578|		return ISC_R_SUCCESS;
  942|    578|	}
  943|  3.71k|	if (token->type != expect) {
  ------------------
  |  Branch (943:6): [True: 314, False: 3.40k]
  ------------------
  944|    314|		isc_lex_ungettoken(lex, token);
  945|    314|		if (token->type == isc_tokentype_eol ||
  ------------------
  |  Branch (945:7): [True: 6, False: 308]
  ------------------
  946|    308|		    token->type == isc_tokentype_eof)
  ------------------
  |  Branch (946:7): [True: 91, False: 217]
  ------------------
  947|     97|		{
  948|     97|			return ISC_R_UNEXPECTEDEND;
  949|     97|		}
  950|    217|		if (expect == isc_tokentype_number) {
  ------------------
  |  Branch (950:7): [True: 53, False: 164]
  ------------------
  951|     53|			return ISC_R_BADNUMBER;
  952|     53|		}
  953|    164|		return ISC_R_UNEXPECTEDTOKEN;
  954|    217|	}
  955|  3.40k|	return ISC_R_SUCCESS;
  956|  3.71k|}
isc_lex_ungettoken:
  991|    440|isc_lex_ungettoken(isc_lex_t *lex, isc_token_t *tokenp) {
  992|    440|	inputsource *source;
  993|       |	/*
  994|       |	 * Unget the current token.
  995|       |	 */
  996|       |
  997|    440|	REQUIRE(VALID_LEX(lex));
  ------------------
  |  |  194|    440|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    880|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 440, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 440, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    440|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  998|    440|	source = ISC_LIST_HEAD(lex->sources);
  ------------------
  |  |   62|    440|#define ISC_LIST_HEAD(list)  ((list).head)
  ------------------
  999|    440|	REQUIRE(source != NULL);
  ------------------
  |  |  194|    440|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    440|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 440, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    440|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1000|    440|	REQUIRE(tokenp != NULL);
  ------------------
  |  |  194|    440|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    440|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 440, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    440|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1001|    440|	REQUIRE(isc_buffer_consumedlength(source->pushback) != 0 ||
  ------------------
  |  |  194|    440|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    526|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 354, False: 86]
  |  |  |  |  |  Branch (42:11): [True: 86, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    440|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1002|    440|		tokenp->type == isc_tokentype_eof);
 1003|       |
 1004|    440|	UNUSED(tokenp);
  ------------------
  |  |   65|    440|#define UNUSED(x) (void)(x)
  ------------------
 1005|       |
 1006|    440|	isc_buffer_first(source->pushback);
 1007|    440|	lex->paren_count = lex->saved_paren_count;
 1008|    440|	source->line = source->saved_line;
 1009|       |	source->at_eof = false;
 1010|    440|}
lex.c:new_source:
  183|    943|	   const char *name) {
  184|    943|	inputsource *source;
  185|       |
  186|    943|	source = isc_mem_get(lex->mctx, sizeof(*source));
  ------------------
  |  |  128|    943|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
  187|    943|	*source = (inputsource){
  188|    943|		.is_file = is_file,
  189|    943|		.need_close = need_close,
  190|    943|		.last_was_eol = lex->last_was_eol,
  191|    943|		.input = input,
  192|    943|		.name = isc_mem_strdup(lex->mctx, name),
  ------------------
  |  |  144|    943|#define isc_mem_strdup(c, p) isc__mem_strdup((c), (p)_ISC_MEM_FILELINE)
  ------------------
  193|    943|		.line = 1,
  194|    943|		.link = ISC_LINK_INITIALIZER,
  ------------------
  |  |   30|    943|#define ISC_LINK_INITIALIZER ISC_LINK_INITIALIZER_TYPE(void)
  |  |  ------------------
  |  |  |  |   26|    943|	{                                         \
  |  |  |  |   27|    943|		.prev = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    943|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   28|    943|		.next = ISC_LINK_TOMBSTONE(type), \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|    943|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   29|    943|	}
  |  |  ------------------
  ------------------
  195|    943|	};
  196|    943|	isc_buffer_allocate(lex->mctx, &source->pushback,
  197|    943|			    (unsigned int)lex->max_token);
  198|       |	ISC_LIST_PREPEND(lex->sources, source, link);
  ------------------
  |  |   79|    943|	do {                                                  \
  |  |   80|    943|		ISC_LINK_INSIST(!ISC_LINK_LINKED(elt, link)); \
  |  |   81|    943|		__ISC_LIST_PREPENDUNSAFE(list, elt, link);    \
  |  |  ------------------
  |  |  |  |   67|    943|	do {                                            \
  |  |  |  |   68|    943|		if ((list).head != NULL) {              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (68:7): [True: 942, False: 1]
  |  |  |  |  ------------------
  |  |  |  |   69|    942|			(list).head->link.prev = (elt); \
  |  |  |  |   70|    942|		} else {                                \
  |  |  |  |   71|      1|			(list).tail = (elt);            \
  |  |  |  |   72|      1|		}                                       \
  |  |  |  |   73|    943|		(elt)->link.prev = NULL;                \
  |  |  |  |   74|    943|		(elt)->link.next = (list).head;         \
  |  |  |  |   75|    943|		(list).head = (elt);                    \
  |  |  |  |   76|    943|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:11): [Folded, False: 943]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|    943|	} while (0)
  |  |  ------------------
  |  |  |  Branch (82:11): [Folded, False: 943]
  |  |  ------------------
  ------------------
  199|    943|}
lex.c:pushandgrow:
  309|  25.4M|pushandgrow(isc_lex_t *lex, inputsource *source, int c) {
  310|  25.4M|	if (isc_buffer_availablelength(source->pushback) == 0) {
  ------------------
  |  |  161|  25.4M|#define isc_buffer_availablelength(b) ((b)->length - (b)->used)	   /* e-d */
  ------------------
  |  Branch (310:6): [True: 19, False: 25.4M]
  ------------------
  311|     19|		isc_buffer_t *tbuf = NULL;
  312|     19|		unsigned int oldlen;
  313|     19|		isc_region_t used;
  314|     19|		isc_result_t result;
  315|       |
  316|     19|		oldlen = isc_buffer_length(source->pushback);
  ------------------
  |  |  150|     19|#define isc_buffer_length(b) ((b)->length)		   /*e*/
  ------------------
  317|     19|		isc_buffer_allocate(lex->mctx, &tbuf, oldlen * 2);
  318|     19|		isc_buffer_usedregion(source->pushback, &used);
  319|     19|		result = isc_buffer_copyregion(tbuf, &used);
  320|     19|		INSIST(result == ISC_R_SUCCESS);
  ------------------
  |  |  198|     19|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|     19|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 19, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|     19|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
  321|     19|		tbuf->current = source->pushback->current;
  322|     19|		isc_buffer_free(&source->pushback);
  323|     19|		source->pushback = tbuf;
  324|     19|	}
  325|  25.4M|	isc_buffer_putuint8(source->pushback, (uint8_t)c);
  326|  25.4M|	return ISC_R_SUCCESS;
  327|  25.4M|}
lex.c:pushback:
  296|  22.9k|pushback(inputsource *source, int c) {
  297|  22.9k|	REQUIRE(source->pushback->current > 0);
  ------------------
  |  |  194|  22.9k|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  22.9k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 22.9k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|  22.9k|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  298|  22.9k|	if (c == EOF) {
  ------------------
  |  Branch (298:6): [True: 571, False: 22.3k]
  ------------------
  299|    571|		source->at_eof = false;
  300|    571|		return;
  301|    571|	}
  302|  22.3k|	source->pushback->current--;
  303|  22.3k|	if (c == '\n') {
  ------------------
  |  Branch (303:6): [True: 2.18k, False: 20.1k]
  ------------------
  304|  2.18k|		source->line--;
  305|  2.18k|	}
  306|  22.3k|}
lex.c:grow_data:
   68|     10|grow_data(isc_lex_t *lex, size_t *remainingp, char **currp, char **prevp) {
   69|     10|	char *tmp;
   70|       |
   71|     10|	tmp = isc_mem_get(lex->mctx, lex->max_token * 2 + 1);
  ------------------
  |  |  128|     10|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
   72|     10|	memmove(tmp, lex->data, lex->max_token + 1);
   73|     10|	*currp = tmp + (*currp - lex->data);
   74|     10|	if (*prevp != NULL) {
  ------------------
  |  Branch (74:6): [True: 1, False: 9]
  ------------------
   75|      1|		*prevp = tmp + (*prevp - lex->data);
   76|      1|	}
   77|       |	isc_mem_put(lex->mctx, lex->data, lex->max_token + 1);
  ------------------
  |  |  150|     10|	do {                                                      \
  |  |  151|     10|		isc__mem_put((c), (p), (s), 0 _ISC_MEM_FILELINE); \
  |  |  152|     10|		(p) = NULL;                                       \
  |  |  153|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (153:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
   78|     10|	lex->data = tmp;
   79|     10|	*remainingp += lex->max_token;
   80|     10|	lex->max_token *= 2;
   81|     10|}

isc__lib_initialize:
   46|      4|isc__lib_initialize(void) {
   47|      4|	if (isc_refcount_increment0(&isc__lib_references) > 0) {
  ------------------
  |  |   68|      4|	({                                                 \
  |  |   69|      4|		uint_fast32_t __v;                         \
  |  |   70|      4|		__v = atomic_fetch_add_release(target, 1); \
  |  |  ------------------
  |  |  |  |   52|      4|	atomic_fetch_add_explicit((o), (v), memory_order_release)
  |  |  ------------------
  |  |   71|      4|		INSIST(__v < UINT32_MAX);                  \
  |  |  ------------------
  |  |  |  |  198|      4|#define INSIST(e)    ISC_INSIST(e)
  |  |  |  |  ------------------
  |  |  |  |  |  |   54|      4|	((void)((cond) ||                                                 \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (54:10): [True: 4, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   55|      4|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |  |  |   57|      0|		 0)))
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   72|      4|		__v;                                       \
  |  |   73|      4|	})
  ------------------
  |  Branch (47:6): [True: 2, False: 2]
  ------------------
   48|      2|		return;
   49|      2|	}
   50|       |
   51|      4|	rcu_register_thread();
   52|      2|	isc__os_initialize();
   53|      2|	isc__mutex_initialize();
   54|      2|	isc__mem_initialize();
   55|      2|	isc__log_initialize();
   56|      2|	isc__crypto_initialize();
   57|      2|	isc__uv_initialize();
   58|      2|	isc__xml_initialize();
   59|      2|	isc__hash_initialize();
   60|      2|	isc__iterated_hash_initialize();
   61|      2|	(void)isc_os_ncpus();
   62|      2|}

isc_logconfig_create:
  328|      2|isc_logconfig_create(isc_logconfig_t **lcfgp) {
  329|      2|	REQUIRE(lcfgp != NULL && *lcfgp == NULL);
  ------------------
  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      4|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  330|      2|	REQUIRE(VALID_CONTEXT(isc__lctx));
  ------------------
  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      4|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  331|       |
  332|      2|	int level = ISC_LOG_INFO;
  ------------------
  |  |   42|      2|#define ISC_LOG_INFO	 (-1)
  ------------------
  333|       |
  334|      2|	isc_logconfig_t *lcfg = isc_mem_get(isc__lctx->mctx, sizeof(*lcfg));
  ------------------
  |  |  128|      2|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
  335|       |
  336|      2|	*lcfg = (isc_logconfig_t){
  337|      2|		.magic = LCFG_MAGIC,
  ------------------
  |  |   43|      2|#define LCFG_MAGIC	   ISC_MAGIC('L', 'c', 'f', 'g')
  |  |  ------------------
  |  |  |  |   31|      2|#define ISC_MAGIC(a, b, c, d) ((a) << 24 | (b) << 16 | (c) << 8 | (d))
  |  |  ------------------
  ------------------
  338|      2|		.lctx = isc__lctx,
  339|      2|		.channels = ISC_LIST_INITIALIZER,
  ------------------
  |  |   21|      2|	{                     \
  |  |   22|      2|		.head = NULL, \
  |  |   23|      2|		.tail = NULL, \
  |  |   24|      2|	}
  ------------------
  340|      2|		.highest_level = level,
  341|      2|	};
  342|       |
  343|       |	/*
  344|       |	 * Create the default channels:
  345|       |	 *      default_syslog, default_stderr, default_debug and null.
  346|       |	 */
  347|      2|	isc_log_createchannel(lcfg, "default_syslog", ISC_LOG_TOSYSLOG, level,
  ------------------
  |  |   54|      2|#define ISC_LOG_TOSYSLOG   2
  ------------------
  348|      2|			      ISC_LOGDESTINATION_SYSLOG(LOG_DAEMON), 0);
  ------------------
  |  |  287|      2|	(&(isc_logdestination_t){ .facility = (f) })
  ------------------
  349|       |
  350|      2|	isc_log_createchannel(lcfg, "default_stderr", ISC_LOG_TOFILEDESC, level,
  ------------------
  |  |   56|      2|#define ISC_LOG_TOFILEDESC 4
  ------------------
  351|      2|			      ISC_LOGDESTINATION_STDERR, ISC_LOG_PRINTTIME);
  ------------------
  |  |  284|      2|#define ISC_LOGDESTINATION_STDERR ISC_LOGDESTINATION_FILE(stderr)
  |  |  ------------------
  |  |  |  |  277|      2|	(&(isc_logdestination_t){                               \
  |  |  |  |  278|      2|		.file = {                                       \
  |  |  |  |  279|      2|			.stream = errout,                       \
  |  |  |  |  280|      2|			.versions = ISC_LOG_ROLLNEVER,          \
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      2|#define ISC_LOG_ROLLNEVER    (-2)
  |  |  |  |  ------------------
  |  |  |  |  281|      2|			.suffix = isc_log_rollsuffix_increment, \
  |  |  |  |  282|      2|		} })
  |  |  ------------------
  ------------------
              			      ISC_LOGDESTINATION_STDERR, ISC_LOG_PRINTTIME);
  ------------------
  |  |   63|      2|#define ISC_LOG_PRINTTIME     0x00001
  ------------------
  352|       |
  353|       |	/*
  354|       |	 * Set the default category's channel to default_stderr,
  355|       |	 * which is at the head of the channels list because it was
  356|       |	 * just created.
  357|       |	 */
  358|      2|	default_channel.channel = ISC_LIST_HEAD(lcfg->channels);
  ------------------
  |  |   62|      2|#define ISC_LIST_HEAD(list)  ((list).head)
  ------------------
  359|       |
  360|      2|	isc_log_createchannel(lcfg, "default_debug", ISC_LOG_TOFILEDESC,
  ------------------
  |  |   56|      2|#define ISC_LOG_TOFILEDESC 4
  ------------------
  361|      2|			      ISC_LOG_DYNAMIC, ISC_LOGDESTINATION_STDERR,
  ------------------
  |  |   41|      2|#define ISC_LOG_DYNAMIC	 0
  ------------------
              			      ISC_LOG_DYNAMIC, ISC_LOGDESTINATION_STDERR,
  ------------------
  |  |  284|      2|#define ISC_LOGDESTINATION_STDERR ISC_LOGDESTINATION_FILE(stderr)
  |  |  ------------------
  |  |  |  |  277|      2|	(&(isc_logdestination_t){                               \
  |  |  |  |  278|      2|		.file = {                                       \
  |  |  |  |  279|      2|			.stream = errout,                       \
  |  |  |  |  280|      2|			.versions = ISC_LOG_ROLLNEVER,          \
  |  |  |  |  ------------------
  |  |  |  |  |  |   87|      2|#define ISC_LOG_ROLLNEVER    (-2)
  |  |  |  |  ------------------
  |  |  |  |  281|      2|			.suffix = isc_log_rollsuffix_increment, \
  |  |  |  |  282|      2|		} })
  |  |  ------------------
  ------------------
  362|      2|			      ISC_LOG_PRINTTIME);
  ------------------
  |  |   63|      2|#define ISC_LOG_PRINTTIME     0x00001
  ------------------
  363|       |
  364|      2|	isc_log_createchannel(lcfg, "null", ISC_LOG_TONULL, ISC_LOG_DYNAMIC,
  ------------------
  |  |   53|      2|#define ISC_LOG_TONULL	   1
  ------------------
              	isc_log_createchannel(lcfg, "null", ISC_LOG_TONULL, ISC_LOG_DYNAMIC,
  ------------------
  |  |   41|      2|#define ISC_LOG_DYNAMIC	 0
  ------------------
  365|      2|			      NULL, 0);
  366|       |
  367|      2|	*lcfgp = lcfg;
  368|      2|}
isc_log_createchannel:
  473|      8|		      unsigned int flags) {
  474|      8|	isc_logchannel_t *channel;
  475|      8|	isc_mem_t *mctx;
  476|      8|	unsigned int permitted = ISC_LOG_PRINTALL | ISC_LOG_DEBUGONLY |
  ------------------
  |  |   69|      8|#define ISC_LOG_PRINTALL      0x0003F
  ------------------
              	unsigned int permitted = ISC_LOG_PRINTALL | ISC_LOG_DEBUGONLY |
  ------------------
  |  |   71|      8|#define ISC_LOG_DEBUGONLY     0x01000
  ------------------
  477|      8|				 ISC_LOG_BUFFERED | ISC_LOG_ISO8601 |
  ------------------
  |  |   70|      8|#define ISC_LOG_BUFFERED      0x00040
  ------------------
              				 ISC_LOG_BUFFERED | ISC_LOG_ISO8601 |
  ------------------
  |  |   73|      8|#define ISC_LOG_ISO8601	      0x10000 /* if PRINTTIME, use ISO8601 */
  ------------------
  478|      8|				 ISC_LOG_UTC | ISC_LOG_TZINFO;
  ------------------
  |  |   74|      8|#define ISC_LOG_UTC	      0x20000 /* if PRINTTIME, use UTC */
  ------------------
              				 ISC_LOG_UTC | ISC_LOG_TZINFO;
  ------------------
  |  |   75|      8|#define ISC_LOG_TZINFO	      0x40000 /* if PRINTTIME, output TZ info */
  ------------------
  479|       |
  480|      8|	REQUIRE(VALID_CONFIG(lcfg));
  ------------------
  |  |  194|      8|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     16|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 8, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      8|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  481|      8|	REQUIRE(name != NULL);
  ------------------
  |  |  194|      8|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      8|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      8|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  482|      8|	REQUIRE(type == ISC_LOG_TOSYSLOG || type == ISC_LOG_TOFILE ||
  ------------------
  |  |  194|      8|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     38|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 2, False: 6]
  |  |  |  |  |  Branch (42:11): [True: 0, False: 6]
  |  |  |  |  |  Branch (42:11): [True: 4, False: 2]
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      8|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  483|      8|		type == ISC_LOG_TOFILEDESC || type == ISC_LOG_TONULL);
  484|      8|	REQUIRE(destination != NULL || type == ISC_LOG_TONULL);
  ------------------
  |  |  194|      8|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     10|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 6, False: 2]
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      8|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  485|      8|	REQUIRE(level >= ISC_LOG_CRITICAL);
  ------------------
  |  |  194|      8|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      8|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      8|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  486|      8|	REQUIRE((flags & ~permitted) == 0);
  ------------------
  |  |  194|      8|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      8|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 8, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      8|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  487|      8|	REQUIRE(!(flags & ISC_LOG_UTC) || !(flags & ISC_LOG_TZINFO));
  ------------------
  |  |  194|      8|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      8|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 8, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      8|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  488|       |
  489|       |	/* FIXME: find duplicate names? */
  490|       |
  491|      8|	mctx = lcfg->lctx->mctx;
  492|       |
  493|      8|	channel = isc_mem_get(mctx, sizeof(*channel));
  ------------------
  |  |  128|      8|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
  494|       |
  495|      8|	channel->name = isc_mem_strdup(mctx, name);
  ------------------
  |  |  144|      8|#define isc_mem_strdup(c, p) isc__mem_strdup((c), (p)_ISC_MEM_FILELINE)
  ------------------
  496|       |
  497|      8|	channel->type = type;
  498|      8|	channel->level = level;
  499|      8|	channel->flags = flags;
  500|      8|	ISC_LINK_INIT(channel, link);
  ------------------
  |  |   57|      8|#define ISC_LINK_INIT(elt, link) ISC_LINK_INIT_TYPE(elt, link, void)
  |  |  ------------------
  |  |  |  |   53|      8|	do {                                                 \
  |  |  |  |   54|      8|		(elt)->link.prev = ISC_LINK_TOMBSTONE(type); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      8|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   55|      8|		(elt)->link.next = ISC_LINK_TOMBSTONE(type); \
  |  |  |  |  ------------------
  |  |  |  |  |  |   18|      8|#define ISC_LINK_TOMBSTONE(type) ((type *)-1)
  |  |  |  |  ------------------
  |  |  |  |   56|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (56:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  501|       |
  502|      8|	switch (type) {
  503|      2|	case ISC_LOG_TOSYSLOG:
  ------------------
  |  |   54|      2|#define ISC_LOG_TOSYSLOG   2
  ------------------
  |  Branch (503:2): [True: 2, False: 6]
  ------------------
  504|      2|		FACILITY(channel) = destination->facility;
  ------------------
  |  |  314|      2|#define FACILITY(channel)	 (channel->destination.facility)
  ------------------
  505|      2|		break;
  506|       |
  507|      0|	case ISC_LOG_TOFILE:
  ------------------
  |  |   55|      0|#define ISC_LOG_TOFILE	   3
  ------------------
  |  Branch (507:2): [True: 0, False: 8]
  ------------------
  508|       |		/*
  509|       |		 * The file name is copied because greatest_version wants
  510|       |		 * to scribble on it, so it needs to be definitely in
  511|       |		 * writable memory.
  512|       |		 */
  513|      0|		FILE_NAME(channel) = isc_mem_strdup(mctx,
  ------------------
  |  |  315|      0|#define FILE_NAME(channel)	 (channel->destination.file.name)
  ------------------
              		FILE_NAME(channel) = isc_mem_strdup(mctx,
  ------------------
  |  |  144|      0|#define isc_mem_strdup(c, p) isc__mem_strdup((c), (p)_ISC_MEM_FILELINE)
  ------------------
  514|      0|						    destination->file.name);
  515|      0|		FILE_STREAM(channel) = NULL;
  ------------------
  |  |  316|      0|#define FILE_STREAM(channel)	 (channel->destination.file.stream)
  ------------------
  516|      0|		FILE_VERSIONS(channel) = destination->file.versions;
  ------------------
  |  |  317|      0|#define FILE_VERSIONS(channel)	 (channel->destination.file.versions)
  ------------------
  517|      0|		FILE_SUFFIX(channel) = destination->file.suffix;
  ------------------
  |  |  318|      0|#define FILE_SUFFIX(channel)	 (channel->destination.file.suffix)
  ------------------
  518|      0|		FILE_MAXSIZE(channel) = destination->file.maximum_size;
  ------------------
  |  |  319|      0|#define FILE_MAXSIZE(channel)	 (channel->destination.file.maximum_size)
  ------------------
  519|      0|		FILE_MAXREACHED(channel) = false;
  ------------------
  |  |  320|      0|#define FILE_MAXREACHED(channel) (channel->destination.file.maximum_reached)
  ------------------
  520|      0|		break;
  521|       |
  522|      4|	case ISC_LOG_TOFILEDESC:
  ------------------
  |  |   56|      4|#define ISC_LOG_TOFILEDESC 4
  ------------------
  |  Branch (522:2): [True: 4, False: 4]
  ------------------
  523|      4|		FILE_NAME(channel) = NULL;
  ------------------
  |  |  315|      4|#define FILE_NAME(channel)	 (channel->destination.file.name)
  ------------------
  524|      4|		FILE_STREAM(channel) = destination->file.stream;
  ------------------
  |  |  316|      4|#define FILE_STREAM(channel)	 (channel->destination.file.stream)
  ------------------
  525|      4|		FILE_MAXSIZE(channel) = 0;
  ------------------
  |  |  319|      4|#define FILE_MAXSIZE(channel)	 (channel->destination.file.maximum_size)
  ------------------
  526|      4|		FILE_VERSIONS(channel) = ISC_LOG_ROLLNEVER;
  ------------------
  |  |  317|      4|#define FILE_VERSIONS(channel)	 (channel->destination.file.versions)
  ------------------
              		FILE_VERSIONS(channel) = ISC_LOG_ROLLNEVER;
  ------------------
  |  |   87|      4|#define ISC_LOG_ROLLNEVER    (-2)
  ------------------
  527|      4|		FILE_SUFFIX(channel) = isc_log_rollsuffix_increment;
  ------------------
  |  |  318|      4|#define FILE_SUFFIX(channel)	 (channel->destination.file.suffix)
  ------------------
  528|      4|		break;
  529|       |
  530|      2|	case ISC_LOG_TONULL:
  ------------------
  |  |   53|      2|#define ISC_LOG_TONULL	   1
  ------------------
  |  Branch (530:2): [True: 2, False: 6]
  ------------------
  531|       |		/* Nothing. */
  532|      2|		break;
  533|       |
  534|      0|	default:
  ------------------
  |  Branch (534:2): [True: 0, False: 8]
  ------------------
  535|      0|		UNREACHABLE();
  ------------------
  |  |  202|      0|#define UNREACHABLE() ISC_UNREACHABLE()
  |  |  ------------------
  |  |  |  |   66|      0|	(isc_assertion_failed(__FILE__, __LINE__, isc_assertiontype_insist, \
  |  |  |  |   67|      0|			      "unreachable"),                               \
  |  |  |  |   68|      0|	 __builtin_unreachable())
  |  |  ------------------
  ------------------
  536|      8|	}
  537|       |
  538|      8|	ISC_LIST_PREPEND(lcfg->channels, channel, link);
  ------------------
  |  |   79|      8|	do {                                                  \
  |  |   80|      8|		ISC_LINK_INSIST(!ISC_LINK_LINKED(elt, link)); \
  |  |   81|      8|		__ISC_LIST_PREPENDUNSAFE(list, elt, link);    \
  |  |  ------------------
  |  |  |  |   67|      8|	do {                                            \
  |  |  |  |   68|      8|		if ((list).head != NULL) {              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (68:7): [True: 6, False: 2]
  |  |  |  |  ------------------
  |  |  |  |   69|      6|			(list).head->link.prev = (elt); \
  |  |  |  |   70|      6|		} else {                                \
  |  |  |  |   71|      2|			(list).tail = (elt);            \
  |  |  |  |   72|      2|		}                                       \
  |  |  |  |   73|      8|		(elt)->link.prev = NULL;                \
  |  |  |  |   74|      8|		(elt)->link.next = (list).head;         \
  |  |  |  |   75|      8|		(list).head = (elt);                    \
  |  |  |  |   76|      8|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (76:11): [Folded, False: 8]
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   82|      8|	} while (0)
  |  |  ------------------
  |  |  |  Branch (82:11): [Folded, False: 8]
  |  |  ------------------
  ------------------
  539|       |
  540|       |	/*
  541|       |	 * If default_stderr was redefined, make the default category
  542|       |	 * point to the new default_stderr.
  543|       |	 */
  544|      8|	if (strcmp(name, "default_stderr") == 0) {
  ------------------
  |  Branch (544:6): [True: 2, False: 6]
  ------------------
  545|      2|		default_channel.channel = channel;
  546|      2|	}
  547|      8|}
isc__log_initialize:
 1532|      2|isc__log_initialize(void) {
 1533|      2|	REQUIRE(isc__lctx == NULL);
  ------------------
  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      2|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
 1534|       |
 1535|      2|	isc_mem_t *mctx = NULL;
 1536|       |
 1537|      2|	isc_mem_create("log", &mctx);
  ------------------
  |  |  200|      2|#define isc_mem_create(name, cp) isc__mem_create((name), (cp)_ISC_MEM_FILELINE)
  ------------------
 1538|      2|	isc_mem_setdebugging(mctx, 0);
 1539|       |
 1540|      2|	isc__lctx = isc_mem_get(mctx, sizeof(*isc__lctx));
  ------------------
  |  |  128|      2|#define isc_mem_get(c, s) isc__mem_get((c), (s), 0 _ISC_MEM_FILELINE)
  ------------------
 1541|      2|	*isc__lctx = (isc_log_t){
 1542|      2|		.magic = LCTX_MAGIC,
  ------------------
  |  |   40|      2|#define LCTX_MAGIC	    ISC_MAGIC('L', 'c', 't', 'x')
  |  |  ------------------
  |  |  |  |   31|      2|#define ISC_MAGIC(a, b, c, d) ((a) << 24 | (b) << 16 | (c) << 8 | (d))
  |  |  ------------------
  ------------------
 1543|      2|		.mctx = mctx, /* implicit attach */
 1544|      2|	};
 1545|       |
 1546|      2|	isc_mutex_init(&isc__lctx->lock);
  ------------------
  |  |   68|      2|#define isc_mutex_init(mp)    isc__mutex_init(mp)
  |  |  ------------------
  |  |  |  |   79|      2|	{                                                                 \
  |  |  |  |   80|      2|		int _ret = pthread_mutex_init(mp, &isc__mutex_init_attr); \
  |  |  |  |   81|      2|		PTHREADS_RUNTIME_CHECK(pthread_mutex_init, _ret);         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  284|      2|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  ------------------
  |  |  |  |   82|      2|	}
  |  |  ------------------
  ------------------
 1547|       |
 1548|       |	/* Create default logging configuration */
 1549|      2|	isc_logconfig_t *lcfg = NULL;
 1550|      2|	isc_logconfig_create(&lcfg);
 1551|       |
 1552|      2|	atomic_init(&isc__lctx->highest_level, lcfg->highest_level);
 1553|      2|	atomic_init(&isc__lctx->dynamic, lcfg->dynamic);
 1554|       |
 1555|      2|	isc__lctx->logconfig = lcfg;
 1556|      2|}

isc__mem_initialize:
  505|      2|isc__mem_initialize(void) {
  506|       |/*
  507|       | * Check if the values copied from jemalloc still match
  508|       | */
  509|       |#ifdef JEMALLOC_API_SUPPORTED
  510|       |	RUNTIME_CHECK(ISC__MEM_ZERO == MALLOCX_ZERO);
  511|       |
  512|       |	/*
  513|       |	 * ignore errors — volumetric-based purge in mem_put handles the rest
  514|       |	 * regardless
  515|       |	 */
  516|       |
  517|       |	(void)mallctl("background_thread", NULL, NULL, &(bool){ true },
  518|       |		      sizeof(bool));
  519|       |
  520|       |	(void)mallctl("arenas.dirty_decay_ms", NULL, NULL,
  521|       |		      &default_dirty_decay_ms, sizeof(default_dirty_decay_ms));
  522|       |
  523|       |	(void)mallctl("arena." STRINGIFY(MALLCTL_ARENAS_ALL) ".dirty_decay_ms",
  524|       |		      NULL, NULL, &default_dirty_decay_ms,
  525|       |		      sizeof(default_dirty_decay_ms));
  526|       |
  527|       |#endif /* JEMALLOC_API_SUPPORTED */
  528|       |
  529|      2|	isc_mutex_init(&contextslock);
  ------------------
  |  |   68|      2|#define isc_mutex_init(mp)    isc__mutex_init(mp)
  |  |  ------------------
  |  |  |  |   79|      2|	{                                                                 \
  |  |  |  |   80|      2|		int _ret = pthread_mutex_init(mp, &isc__mutex_init_attr); \
  |  |  |  |   81|      2|		PTHREADS_RUNTIME_CHECK(pthread_mutex_init, _ret);         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  284|      2|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 2]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  ------------------
  |  |  |  |   82|      2|	}
  |  |  ------------------
  ------------------
  530|      2|	ISC_LIST_INIT(contexts);
  ------------------
  |  |   43|      2|	do {                        \
  |  |   44|      2|		(list).head = NULL; \
  |  |   45|      2|		(list).tail = NULL; \
  |  |   46|      2|	} while (0)
  |  |  ------------------
  |  |  |  Branch (46:11): [Folded, False: 2]
  |  |  ------------------
  ------------------
  531|       |
  532|      2|	if (debugging_enabled("ISC_MEM_DEBUGTRACE")) {
  ------------------
  |  Branch (532:6): [True: 0, False: 2]
  ------------------
  533|      0|		mem_debugging |= ISC_MEM_DEBUGTRACE;
  ------------------
  |  |   39|      0|#define ISC_MEM_DEBUGTRACE  0x00000001U
  ------------------
  534|      0|	}
  535|       |
  536|      2|	if (debugging_enabled("ISC_MEM_DEBUGRECORD")) {
  ------------------
  |  Branch (536:6): [True: 0, False: 2]
  ------------------
  537|      0|		mem_debugging |= ISC_MEM_DEBUGRECORD;
  ------------------
  |  |   40|      0|#define ISC_MEM_DEBUGRECORD 0x00000002U
  ------------------
  538|      0|	}
  539|       |
  540|      2|	if (debugging_enabled("ISC_MEM_DEBUGUSAGE")) {
  ------------------
  |  Branch (540:6): [True: 0, False: 2]
  ------------------
  541|      0|		mem_debugging |= ISC_MEM_DEBUGUSAGE;
  ------------------
  |  |   41|      0|#define ISC_MEM_DEBUGUSAGE  0x00000004U
  ------------------
  542|      0|	}
  543|       |
  544|      2|	isc_mem_create("default", &isc_g_mctx);
  ------------------
  |  |  200|      2|#define isc_mem_create(name, cp) isc__mem_create((name), (cp)_ISC_MEM_FILELINE)
  ------------------
  545|      2|}
isc_mem_setdebugging:
  567|      4|isc_mem_setdebugging(isc_mem_t *ctx, unsigned int debugging) {
  568|      4|	REQUIRE(VALID_CONTEXT(ctx));
  ------------------
  |  |  194|      4|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      8|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 4, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      4|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  569|      4|	REQUIRE(isc_mem_inuse(ctx) == 0);
  ------------------
  |  |  194|      4|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      4|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      4|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  570|       |
  571|      4|	ctx->debugging = debugging;
  572|      4|}
isc__mem_get:
  747|  1.93k|isc__mem_get(isc_mem_t *ctx, size_t size, int flags FLARG) {
  748|  1.93k|	void *ptr = NULL;
  749|       |
  750|  1.93k|	REQUIRE(VALID_CONTEXT(ctx));
  ------------------
  |  |  194|  1.93k|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  3.86k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 1.93k, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 1.93k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|  1.93k|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  751|       |
  752|  1.93k|	ptr = mem_get(ctx, size, flags);
  753|       |
  754|  1.93k|	mem_getstats(ctx, size);
  755|  1.93k|	ADD_TRACE(ctx, ptr, size, func, file, line);
  756|       |
  757|  1.93k|	return ptr;
  758|  1.93k|}
isc__mem_put:
  761|     29|isc__mem_put(isc_mem_t *ctx, void *ptr, size_t size, int flags FLARG) {
  762|     29|	REQUIRE(VALID_CONTEXT(ctx));
  ------------------
  |  |  194|     29|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     58|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 29, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 29, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     29|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  763|       |
  764|     29|	DELETE_TRACE(ctx, ptr, size, func, file, line);
  765|       |
  766|     29|	mem_putstats(ctx, size);
  767|     29|	mem_put(ctx, ptr, size, flags);
  768|     29|}
isc__mem_allocate:
  839|    951|isc__mem_allocate(isc_mem_t *ctx, size_t size, int flags FLARG) {
  840|    951|	void *ptr = NULL;
  841|       |
  842|    951|	REQUIRE(VALID_CONTEXT(ctx));
  ------------------
  |  |  194|    951|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  1.90k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 951, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 951, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    951|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  843|       |
  844|    951|	ptr = mem_get(ctx, size, flags);
  845|       |
  846|       |	/* Recalculate the real allocated size */
  847|    951|	size = sallocx(ptr, flags | ctx->jemalloc_flags);
  848|       |
  849|    951|	mem_getstats(ctx, size);
  850|    951|	ADD_TRACE(ctx, ptr, size, func, file, line);
  851|       |
  852|    951|	return ptr;
  853|    951|}
isc__mem_strdup:
  947|    951|isc__mem_strdup(isc_mem_t *mctx, const char *s FLARG) {
  948|    951|	size_t len;
  949|    951|	char *ns = NULL;
  950|       |
  951|    951|	REQUIRE(VALID_CONTEXT(mctx));
  ------------------
  |  |  194|    951|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  1.90k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 951, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 951, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    951|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  952|    951|	REQUIRE(s != NULL);
  ------------------
  |  |  194|    951|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|    951|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 951, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|    951|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  953|       |
  954|    951|	len = strlen(s) + 1;
  955|       |
  956|    951|	ns = isc__mem_allocate(mctx, len, 0 FLARG_PASS);
  957|       |
  958|    951|	strlcpy(ns, s, len);
  959|       |
  960|    951|	return ns;
  961|    951|}
isc_mem_setdestroycheck:
  985|      2|isc_mem_setdestroycheck(isc_mem_t *ctx, bool flag) {
  986|      2|	REQUIRE(VALID_CONTEXT(ctx));
  ------------------
  |  |  194|      2|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      4|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 2, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      2|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  987|       |
  988|      2|	MCTXLOCK(ctx);
  ------------------
  |  |   66|      2|#define MCTXLOCK(m)   LOCK(&m->lock)
  |  |  ------------------
  |  |  |  |   26|      2|	{                                                                  \
  |  |  |  |   27|      2|		ISC_UTIL_TRACE(fprintf(stderr, "LOCKING %p %s %d\n", (lp), \
  |  |  |  |   28|      2|				       __FILE__, __LINE__));               \
  |  |  |  |   29|      2|		isc_mutex_lock((lp));                                      \
  |  |  |  |  ------------------
  |  |  |  |  |  |   69|      2|#define isc_mutex_lock(mp)    isc__mutex_lock(mp)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   85|      2|	{                                                         \
  |  |  |  |  |  |  |  |   86|      2|		int _ret = pthread_mutex_lock(mp);                \
  |  |  |  |  |  |  |  |   87|      2|		PTHREADS_RUNTIME_CHECK(pthread_mutex_lock, _ret); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  284|      2|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   88|      2|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   30|      2|		ISC_UTIL_TRACE(fprintf(stderr, "LOCKED %p %s %d\n", (lp),  \
  |  |  |  |   31|      2|				       __FILE__, __LINE__));               \
  |  |  |  |   32|      2|	}
  |  |  ------------------
  ------------------
  989|       |
  990|      2|	ctx->checkfree = flag;
  991|       |
  992|      2|	MCTXUNLOCK(ctx);
  ------------------
  |  |   67|      2|#define MCTXUNLOCK(m) UNLOCK(&m->lock)
  |  |  ------------------
  |  |  |  |   34|      2|	{                                                                   \
  |  |  |  |   35|      2|		isc_mutex_unlock((lp));                                     \
  |  |  |  |  ------------------
  |  |  |  |  |  |   70|      2|#define isc_mutex_unlock(mp)  isc__mutex_unlock(mp)
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   91|      2|	{                                                           \
  |  |  |  |  |  |  |  |   92|      2|		int _ret = pthread_mutex_unlock(mp);                \
  |  |  |  |  |  |  |  |   93|      2|		PTHREADS_RUNTIME_CHECK(pthread_mutex_unlock, _ret); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  284|      2|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 2]
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   94|      2|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  ------------------
  |  |  |  |   36|      2|		ISC_UTIL_TRACE(fprintf(stderr, "UNLOCKED %p %s %d\n", (lp), \
  |  |  |  |   37|      2|				       __FILE__, __LINE__));                \
  |  |  |  |   38|      2|	}
  |  |  ------------------
  ------------------
  993|      2|}
isc_mem_inuse:
  996|      4|isc_mem_inuse(isc_mem_t *ctx) {
  997|      4|	REQUIRE(VALID_CONTEXT(ctx));
  ------------------
  |  |  194|      4|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|      8|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 4, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|      4|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  998|       |
  999|      4|	int_fast64_t inuse = 0;
 1000|       |
 1001|      8|	for (ssize_t i = -1; i < isc_tid_count(); i++) {
  ------------------
  |  Branch (1001:23): [True: 4, False: 4]
  ------------------
 1002|      4|		inuse += atomic_load_relaxed(&ctx->stat[i].inuse);
  ------------------
  |  |   28|      4|#define atomic_load_relaxed(o) atomic_load_explicit((o), memory_order_relaxed)
  ------------------
 1003|      4|	}
 1004|      4|	INSIST(inuse >= 0);
  ------------------
  |  |  198|      4|#define INSIST(e)    ISC_INSIST(e)
  |  |  ------------------
  |  |  |  |   54|      4|	((void)((cond) ||                                                 \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (54:10): [True: 4, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   55|      4|		((isc_assertion_failed)(__FILE__, __LINE__,               \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (55:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   56|      0|					isc_assertiontype_insist, #cond), \
  |  |  |  |   57|      0|		 0)))
  |  |  ------------------
  ------------------
 1005|       |
 1006|      4|	return (size_t)inuse;
 1007|      4|}
isc__mem_create:
 1557|     10|isc__mem_create(const char *name, isc_mem_t **mctxp FLARG) {
 1558|     10|	mem_create(name, mctxp, mem_debugging, 0);
 1559|       |#if ISC_MEM_TRACKLINES
 1560|       |	if ((mem_debugging & ISC_MEM_DEBUGTRACE) != 0) {
 1561|       |		fprintf(stderr, "create mctx %p func %s file %s line %u\n",
 1562|       |			*mctxp, func, file, line);
 1563|       |	}
 1564|       |#endif /* ISC_MEM_TRACKLINES */
 1565|     10|}
mem.c:debugging_enabled:
  488|      6|debugging_enabled(const char *name) {
  489|      6|	char env_buf[256];
  490|      6|	size_t env_size = sizeof(env_buf);
  491|       |
  492|      6|	int r = uv_os_getenv(name, env_buf, &env_size);
  493|      6|	switch (r) {
  494|      0|	case 0:
  ------------------
  |  Branch (494:2): [True: 0, False: 6]
  ------------------
  495|      0|		return true;
  496|      6|	case UV_ENOENT:
  ------------------
  |  Branch (496:2): [True: 6, False: 0]
  ------------------
  497|      6|		return false;
  498|      0|	default:
  ------------------
  |  Branch (498:2): [True: 0, False: 6]
  ------------------
  499|      0|		UV_RUNTIME_CHECK(uv_os_getenv, r);
  ------------------
  |  |   50|      0|	if (ret != 0) {                                                  \
  |  |  ------------------
  |  |  |  Branch (50:6): [True: 0, False: 0]
  |  |  ------------------
  |  |   51|      0|		FATAL_ERROR("%s failed: %s\n", #func, uv_strerror(ret)); \
  |  |  ------------------
  |  |  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  |  |   52|      0|	}
  ------------------
  500|      0|		UNREACHABLE();
  ------------------
  |  |  202|      0|#define UNREACHABLE() ISC_UNREACHABLE()
  |  |  ------------------
  |  |  |  |   66|      0|	(isc_assertion_failed(__FILE__, __LINE__, isc_assertiontype_insist, \
  |  |  |  |   67|      0|			      "unreachable"),                               \
  |  |  |  |   68|      0|	 __builtin_unreachable())
  |  |  ------------------
  ------------------
  501|      6|	}
  502|      6|}
mem.c:mem_get:
  395|  2.88k|mem_get(isc_mem_t *ctx, size_t size, int flags) {
  396|  2.88k|	ADJUST_ZERO_ALLOCATION_SIZE(size);
  ------------------
  |  |  387|  2.88k|	if (s == 0) {                     \
  |  |  ------------------
  |  |  |  Branch (387:6): [True: 0, False: 2.88k]
  |  |  ------------------
  |  |  388|      0|		s = ZERO_ALLOCATION_SIZE; \
  |  |  ------------------
  |  |  |  |   83|      0|#define ZERO_ALLOCATION_SIZE sizeof(void *)
  |  |  ------------------
  |  |  389|      0|	}
  ------------------
  397|       |
  398|  2.88k|	void *ptr = mallocx(size, flags | ctx->jemalloc_flags);
  399|  2.88k|	CHECK_OOM(ptr, size);
  ------------------
  |  |  241|  2.88k|#define CHECK_OOM(ptr, size) (void)((ptr != NULL) || (oom(size), false))
  |  |  ------------------
  |  |  |  Branch (241:37): [True: 2.88k, False: 0]
  |  |  |  Branch (241:54): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  400|       |
  401|  2.88k|	return ptr;
  402|  2.88k|}
mem.c:mem_getstats:
  471|  2.88k|mem_getstats(isc_mem_t *ctx, size_t size) {
  472|       |	atomic_fetch_add_relaxed(&ctx->stat[isc_tid()].inuse, size);
  ------------------
  |  |   30|  2.88k|	atomic_fetch_add_explicit((o), (v), memory_order_relaxed)
  ------------------
  473|  2.88k|}
mem.c:mem_putstats:
  479|     29|mem_putstats(isc_mem_t *ctx, size_t size) {
  480|       |	atomic_fetch_sub_relaxed(&ctx->stat[isc_tid()].inuse, size);
  ------------------
  |  |   32|     29|	atomic_fetch_sub_explicit((o), (v), memory_order_relaxed)
  ------------------
  481|     29|}
mem.c:mem_put:
  442|     29|mem_put(isc_mem_t *ctx, void *mem, size_t size, int flags) {
  443|     29|	ADJUST_ZERO_ALLOCATION_SIZE(size);
  ------------------
  |  |  387|     29|	if (s == 0) {                     \
  |  |  ------------------
  |  |  |  Branch (387:6): [True: 0, False: 29]
  |  |  ------------------
  |  |  388|      0|		s = ZERO_ALLOCATION_SIZE; \
  |  |  ------------------
  |  |  |  |   83|      0|#define ZERO_ALLOCATION_SIZE sizeof(void *)
  |  |  ------------------
  |  |  389|      0|	}
  ------------------
  444|       |
  445|     29|	sdallocx(mem, size, flags | ctx->jemalloc_flags);
  446|       |
  447|     29|	freed_bytes += size;
  448|       |
  449|     29|	if (freed_bytes >= purge_threshold) {
  ------------------
  |  Branch (449:6): [True: 0, False: 29]
  ------------------
  450|      0|		freed_bytes = 0;
  451|      0|		mem_purge();
  452|      0|	}
  453|     29|}
mem.c:mem_create:
  602|     10|	   unsigned int jemalloc_flags) {
  603|     10|	isc_mem_t *ctx = NULL;
  604|       |
  605|     10|	REQUIRE(ctxp != NULL && *ctxp == NULL);
  ------------------
  |  |  194|     10|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     20|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 10, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     10|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  606|     10|	REQUIRE(name != NULL);
  ------------------
  |  |  194|     10|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     10|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 10, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     10|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  607|       |
  608|     10|	ctx = mallocx(sizeof(*ctx), jemalloc_flags);
  609|     10|	CHECK_OOM(ctx, sizeof(*ctx));
  ------------------
  |  |  241|     10|#define CHECK_OOM(ptr, size) (void)((ptr != NULL) || (oom(size), false))
  |  |  ------------------
  |  |  |  Branch (241:37): [True: 10, False: 0]
  |  |  |  Branch (241:54): [True: 0, False: 0]
  |  |  ------------------
  ------------------
  610|       |
  611|     10|	*ctx = (isc_mem_t){
  612|     10|		.magic = MEM_MAGIC,
  ------------------
  |  |  118|     10|#define MEM_MAGIC	 ISC_MAGIC('M', 'e', 'm', 'C')
  |  |  ------------------
  |  |  |  |   31|     10|#define ISC_MAGIC(a, b, c, d) ((a) << 24 | (b) << 16 | (c) << 8 | (d))
  |  |  ------------------
  ------------------
  613|     10|		.debugging = debugging,
  614|     10|		.jemalloc_flags = jemalloc_flags,
  615|     10|		.checkfree = true,
  616|     10|		.name = strdup(name),
  617|     10|	};
  618|       |
  619|     10|	isc_mutex_init(&ctx->lock);
  ------------------
  |  |   68|     10|#define isc_mutex_init(mp)    isc__mutex_init(mp)
  |  |  ------------------
  |  |  |  |   79|     10|	{                                                                 \
  |  |  |  |   80|     10|		int _ret = pthread_mutex_init(mp, &isc__mutex_init_attr); \
  |  |  |  |   81|     10|		PTHREADS_RUNTIME_CHECK(pthread_mutex_init, _ret);         \
  |  |  |  |  ------------------
  |  |  |  |  |  |  284|     10|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 10]
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  ------------------
  |  |  |  |   82|     10|	}
  |  |  ------------------
  ------------------
  620|     10|	isc_refcount_init(&ctx->references, 1);
  ------------------
  |  |   44|     10|#define isc_refcount_init(target, value) atomic_init(target, value)
  ------------------
  621|       |
  622|  5.14k|	for (size_t i = 0; i < ARRAY_SIZE(ctx->stat_s); i++) {
  ------------------
  |  |   94|  5.14k|#define ARRAY_SIZE(x) (sizeof(x) / sizeof(x[0]))
  ------------------
  |  Branch (622:21): [True: 5.13k, False: 10]
  ------------------
  623|  5.13k|		atomic_init(&ctx->stat_s[i].inuse, 0);
  624|  5.13k|	}
  625|       |
  626|       |	/* Reserve the [-1] index for ISC_TID_UNKNOWN */
  627|     10|	ctx->stat = &ctx->stat_s[1];
  628|       |
  629|     10|	atomic_init(&ctx->hi_water, 0);
  630|     10|	atomic_init(&ctx->lo_water, 0);
  631|       |
  632|     10|	ISC_LIST_INIT(ctx->pools);
  ------------------
  |  |   43|     10|	do {                        \
  |  |   44|     10|		(list).head = NULL; \
  |  |   45|     10|		(list).tail = NULL; \
  |  |   46|     10|	} while (0)
  |  |  ------------------
  |  |  |  Branch (46:11): [Folded, False: 10]
  |  |  ------------------
  ------------------
  633|       |
  634|       |#if ISC_MEM_TRACKLINES
  635|       |	if ((ctx->debugging & ISC_MEM_DEBUGRECORD) != 0) {
  636|       |		unsigned int i;
  637|       |		size_t debuglist_size = ISC_CHECKED_MUL(DEBUG_TABLE_COUNT,
  638|       |							sizeof(debuglist_t));
  639|       |
  640|       |		ctx->debuglist = mallocx(debuglist_size, jemalloc_flags);
  641|       |		CHECK_OOM(ctx->debuglist, debuglist_size);
  642|       |
  643|       |		for (i = 0; i < DEBUG_TABLE_COUNT; i++) {
  644|       |			ISC_LIST_INIT(ctx->debuglist[i]);
  645|       |		}
  646|       |	}
  647|       |#endif /* if ISC_MEM_TRACKLINES */
  648|       |
  649|     10|	LOCK(&contextslock);
  ------------------
  |  |   26|     10|	{                                                                  \
  |  |   27|     10|		ISC_UTIL_TRACE(fprintf(stderr, "LOCKING %p %s %d\n", (lp), \
  |  |   28|     10|				       __FILE__, __LINE__));               \
  |  |   29|     10|		isc_mutex_lock((lp));                                      \
  |  |  ------------------
  |  |  |  |   69|     10|#define isc_mutex_lock(mp)    isc__mutex_lock(mp)
  |  |  |  |  ------------------
  |  |  |  |  |  |   85|     10|	{                                                         \
  |  |  |  |  |  |   86|     10|		int _ret = pthread_mutex_lock(mp);                \
  |  |  |  |  |  |   87|     10|		PTHREADS_RUNTIME_CHECK(pthread_mutex_lock, _ret); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  284|     10|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   88|     10|	}
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   30|     10|		ISC_UTIL_TRACE(fprintf(stderr, "LOCKED %p %s %d\n", (lp),  \
  |  |   31|     10|				       __FILE__, __LINE__));               \
  |  |   32|     10|	}
  ------------------
  650|     10|	ISC_LIST_INITANDAPPEND(contexts, ctx, link);
  ------------------
  |  |  106|     10|	__ISC_LIST_APPENDUNSAFE(list, elt, link)
  |  |  ------------------
  |  |  |  |   88|     10|	do {                                            \
  |  |  |  |   89|     10|		if ((list).tail != NULL) {              \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (89:7): [True: 8, False: 2]
  |  |  |  |  ------------------
  |  |  |  |   90|      8|			(list).tail->link.next = (elt); \
  |  |  |  |   91|      8|		} else {                                \
  |  |  |  |   92|      2|			(list).head = (elt);            \
  |  |  |  |   93|      2|		}                                       \
  |  |  |  |   94|     10|		(elt)->link.prev = (list).tail;         \
  |  |  |  |   95|     10|		(elt)->link.next = NULL;                \
  |  |  |  |   96|     10|		(list).tail = (elt);                    \
  |  |  |  |   97|     10|	} while (0)
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (97:11): [Folded, False: 10]
  |  |  |  |  ------------------
  |  |  ------------------
  ------------------
  651|     10|	UNLOCK(&contextslock);
  ------------------
  |  |   34|     10|	{                                                                   \
  |  |   35|     10|		isc_mutex_unlock((lp));                                     \
  |  |  ------------------
  |  |  |  |   70|     10|#define isc_mutex_unlock(mp)  isc__mutex_unlock(mp)
  |  |  |  |  ------------------
  |  |  |  |  |  |   91|     10|	{                                                           \
  |  |  |  |  |  |   92|     10|		int _ret = pthread_mutex_unlock(mp);                \
  |  |  |  |  |  |   93|     10|		PTHREADS_RUNTIME_CHECK(pthread_mutex_unlock, _ret); \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  284|     10|	if ((ret) != 0) {                           \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  Branch (284:6): [True: 0, False: 10]
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |  286|      0|	}
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |   94|     10|	}
  |  |  |  |  ------------------
  |  |  ------------------
  |  |   36|     10|		ISC_UTIL_TRACE(fprintf(stderr, "UNLOCKED %p %s %d\n", (lp), \
  |  |   37|     10|				       __FILE__, __LINE__));                \
  |  |   38|     10|	}
  ------------------
  652|       |
  653|     10|	*ctxp = ctx;
  654|     10|}

isc__mutex_initialize:
   33|      2|isc__mutex_initialize(void) {
   34|      2|	RUNTIME_CHECK(pthread_mutexattr_init(&isc__mutex_init_attr) == 0);
  ------------------
  |  |  241|      2|	((cond) ? (void)0 : FATAL_ERROR("RUNTIME_CHECK(%s) failed", #cond))
  |  |  ------------------
  |  |  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (241:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   35|       |#if ISC_MUTEX_ERROR_CHECK
   36|       |	RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr,
   37|       |						PTHREAD_MUTEX_ERRORCHECK) == 0);
   38|       |#elif HAVE_PTHREAD_MUTEX_ADAPTIVE_NP
   39|      2|	RUNTIME_CHECK(pthread_mutexattr_settype(&isc__mutex_init_attr,
  ------------------
  |  |  241|      2|	((cond) ? (void)0 : FATAL_ERROR("RUNTIME_CHECK(%s) failed", #cond))
  |  |  ------------------
  |  |  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (241:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
   40|      2|						PTHREAD_MUTEX_ADAPTIVE_NP) ==
   41|      2|		      0);
   42|      2|#endif
   43|      2|}

isc_os_ncpus:
  199|      2|isc_os_ncpus(void) {
  200|      2|	return isc__os_ncpus;
  201|      2|}
isc__os_initialize:
  222|      2|isc__os_initialize(void) {
  223|      2|	umask_initialize();
  224|      2|	ncpus_initialize();
  225|      2|	kernel_initialize();
  226|      2|#if defined(_SC_LEVEL1_DCACHE_LINESIZE)
  227|      2|	long s = sysconf(_SC_LEVEL1_DCACHE_LINESIZE);
  228|      2|	if (s > 0 && (unsigned long)s > isc__os_cacheline) {
  ------------------
  |  Branch (228:6): [True: 2, False: 0]
  |  Branch (228:15): [True: 0, False: 2]
  ------------------
  229|      0|		isc__os_cacheline = s;
  230|      0|	}
  231|      2|#endif
  232|       |
  233|      2|	pthread_attr_init(&isc__thread_attr);
  234|       |
  235|      2|	size_t stacksize = isc_thread_getstacksize();
  236|      2|	if (stacksize != 0 && stacksize < THREAD_MINSTACKSIZE) {
  ------------------
  |  |   29|      2|#define THREAD_MINSTACKSIZE (1U * 1024 * 1024)
  ------------------
  |  Branch (236:6): [True: 2, False: 0]
  |  Branch (236:24): [True: 0, False: 2]
  ------------------
  237|      0|		isc_thread_setstacksize(THREAD_MINSTACKSIZE);
  ------------------
  |  |   29|      0|#define THREAD_MINSTACKSIZE (1U * 1024 * 1024)
  ------------------
  238|      0|	}
  239|      2|}
os.c:umask_initialize:
  180|      2|umask_initialize(void) {
  181|      2|	isc__os_umask = umask(0);
  182|      2|	(void)umask(isc__os_umask);
  183|      2|}
os.c:ncpus_initialize:
   42|      2|ncpus_initialize(void) {
   43|      2|	isc__os_ncpus = uv_available_parallelism();
   44|      2|}
os.c:kernel_initialize:
  186|      2|kernel_initialize(void) {
  187|      2|	struct utsname buffer;
  188|       |
  189|      2|	if (uname(&buffer) == -1) {
  ------------------
  |  Branch (189:6): [True: 0, False: 2]
  ------------------
  190|      0|		return;
  191|      0|	}
  192|       |
  193|      2|	(void)sscanf(buffer.release, "%d.%d.%d", &kernel_major, &kernel_minor,
  194|      2|		     &kernel_patch);
  195|      2|	(void)strlcpy(kernel_name, buffer.sysname, sizeof(kernel_name));
  196|      2|}

isc_ossl_wrap_load_rsa_public_from_components:
  702|     12|					      EVP_PKEY **pkeyp) {
  703|     12|	OSSL_PARAM_BLD *bld = NULL;
  704|     12|	EVP_PKEY_CTX *pctx = NULL;
  705|     12|	OSSL_PARAM *params = NULL;
  706|     12|	isc_result_t result;
  707|       |
  708|     12|	result = ISC_R_SUCCESS;
  709|       |
  710|     12|	REQUIRE(pkeyp != NULL && *pkeyp == NULL);
  ------------------
  |  |  194|     12|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     24|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 12, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     12|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  711|     12|	REQUIRE(c != NULL && c->n != NULL && c->e != NULL);
  ------------------
  |  |  194|     12|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     48|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:11): [True: 12, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 12, False: 0]
  |  |  |  |  |  Branch (42:11): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     12|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  712|       |
  713|     12|	bld = OSSL_PARAM_BLD_new();
  714|     12|	if (bld == NULL) {
  ------------------
  |  Branch (714:6): [True: 0, False: 12]
  ------------------
  715|      0|		CLEANUP(OSSL_WRAP_ERROR("OSSL_PARAM_BLD_new"));
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  716|      0|	}
  717|       |
  718|     12|	if (OSSL_PARAM_BLD_push_BN(bld, OSSL_PKEY_PARAM_RSA_N, c->n) != 1) {
  ------------------
  |  Branch (718:6): [True: 0, False: 12]
  ------------------
  719|      0|		CLEANUP(OSSL_WRAP_ERROR("OSSL_PARAM_BLD_push_BN"));
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  720|      0|	}
  721|       |
  722|     12|	if (OSSL_PARAM_BLD_push_BN(bld, OSSL_PKEY_PARAM_RSA_E, c->e) != 1) {
  ------------------
  |  Branch (722:6): [True: 0, False: 12]
  ------------------
  723|      0|		CLEANUP(OSSL_WRAP_ERROR("OSSL_PARAM_BLD_push_BN"));
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  724|      0|	}
  725|       |
  726|     12|	params = OSSL_PARAM_BLD_to_param(bld);
  727|     12|	if (params == NULL) {
  ------------------
  |  Branch (727:6): [True: 0, False: 12]
  ------------------
  728|      0|		CLEANUP(OSSL_WRAP_ERROR("OSSL_PARAM_BLD_to_param"));
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  729|      0|	}
  730|       |
  731|     12|	pctx = EVP_PKEY_CTX_new_from_name(NULL, "RSA", NULL);
  732|     12|	if (pctx == NULL) {
  ------------------
  |  Branch (732:6): [True: 0, False: 12]
  ------------------
  733|      0|		CLEANUP(OSSL_WRAP_ERROR("EVP_PKEY_CTX_new_from_name"));
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  734|      0|	}
  735|       |
  736|     12|	if (EVP_PKEY_fromdata_init(pctx) != 1) {
  ------------------
  |  Branch (736:6): [True: 0, False: 12]
  ------------------
  737|      0|		CLEANUP(OSSL_WRAP_ERROR("EVP_PKEY_fromdata_init"));
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  738|      0|	}
  739|       |
  740|     12|	if (EVP_PKEY_fromdata(pctx, pkeyp, EVP_PKEY_PUBLIC_KEY, params) != 1) {
  ------------------
  |  Branch (740:6): [True: 0, False: 12]
  ------------------
  741|      0|		CLEANUP(OSSL_WRAP_ERROR("EVP_PKEY_fromdata"));
  ------------------
  |  |  262|      0|	{                     \
  |  |  263|      0|		result = (r); \
  |  |  264|      0|		goto cleanup; \
  |  |  265|      0|	}
  ------------------
  742|      0|	}
  743|       |
  744|     12|	result = ISC_R_SUCCESS;
  745|       |
  746|     12|cleanup:
  747|     12|	EVP_PKEY_CTX_free(pctx);
  748|     12|	OSSL_PARAM_free(params);
  749|     12|	OSSL_PARAM_BLD_free(bld);
  750|     12|	return result;
  751|     12|}

isc_ossl_wrap_rsa_components_cleanup:
   23|     12|isc_ossl_wrap_rsa_components_cleanup(isc_ossl_wrap_rsa_components_t *c) {
   24|     12|	REQUIRE(c != NULL);
  ------------------
  |  |  194|     12|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|     12|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 12, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|     12|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
   25|       |
   26|     12|	if (!c->needs_cleanup) {
  ------------------
  |  Branch (26:6): [True: 0, False: 12]
  ------------------
   27|      0|		return;
   28|      0|	}
   29|       |
   30|       |	/*
   31|       |	 * NOTE: BN_free() frees the components of the BIGNUM, and if it was
   32|       |	 * created by BN_new(), also the structure itself. BN_clear_free()
   33|       |	 * additionally overwrites the data before the memory is returned to the
   34|       |	 * system. If a is NULL, nothing is done.
   35|       |	 */
   36|     12|	BN_free(c->e);
   37|     12|	BN_free(c->n);
   38|     12|	BN_clear_free(c->d);
   39|     12|	BN_clear_free(c->p);
   40|     12|	BN_clear_free(c->q);
   41|     12|	BN_clear_free(c->dmp1);
   42|     12|	BN_clear_free(c->dmq1);
   43|     12|	BN_clear_free(c->iqmp);
   44|       |
   45|       |	c->needs_cleanup = false;
   46|     12|}

isc_parse_uint32:
   26|  1.16k|isc_parse_uint32(uint32_t *uip, const char *string, int base) {
   27|  1.16k|	unsigned long n;
   28|  1.16k|	uint32_t r;
   29|  1.16k|	char *e;
   30|  1.16k|	if (!isalnum((unsigned char)(string[0]))) {
  ------------------
  |  Branch (30:6): [True: 0, False: 1.16k]
  ------------------
   31|      0|		return ISC_R_BADNUMBER;
   32|      0|	}
   33|  1.16k|	errno = 0;
   34|  1.16k|	n = strtoul(string, &e, base);
   35|  1.16k|	if (*e != '\0') {
  ------------------
  |  Branch (35:6): [True: 0, False: 1.16k]
  ------------------
   36|      0|		return ISC_R_BADNUMBER;
   37|      0|	}
   38|       |	/*
   39|       |	 * Where long is 64 bits we need to convert to 32 bits then test for
   40|       |	 * equality.  This is a no-op on 32 bit machines and a good compiler
   41|       |	 * will optimise it away.
   42|       |	 */
   43|  1.16k|	r = (uint32_t)n;
   44|  1.16k|	if ((n == ULONG_MAX && errno == ERANGE) || (n != (unsigned long)r)) {
  ------------------
  |  Branch (44:7): [True: 23, False: 1.14k]
  |  Branch (44:25): [True: 22, False: 1]
  |  Branch (44:45): [True: 104, False: 1.03k]
  ------------------
   45|    126|		return ISC_R_RANGE;
   46|    126|	}
   47|  1.03k|	*uip = r;
   48|  1.03k|	return ISC_R_SUCCESS;
   49|  1.16k|}

isc_rwlock_init:
  293|  2.05k|isc_rwlock_init(isc_rwlock_t *rwl) {
  294|  2.05k|	REQUIRE(rwl != NULL);
  ------------------
  |  |  194|  2.05k|#define REQUIRE(e)   ISC_REQUIRE(e)
  |  |  ------------------
  |  |  |  |   42|  2.05k|	((void)((cond) ||                                                  \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (42:10): [True: 2.05k, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   43|  2.05k|		((isc_assertion_failed)(__FILE__, __LINE__,                \
  |  |  |  |  ------------------
  |  |  |  |  |  Branch (43:3): [True: 0, False: 0]
  |  |  |  |  ------------------
  |  |  |  |   44|      0|					isc_assertiontype_require, #cond), \
  |  |  |  |   45|      0|		 0)))
  |  |  ------------------
  ------------------
  295|       |
  296|  2.05k|	atomic_init(&rwl->writers_lock, ISC_RWLOCK_UNLOCKED);
  ------------------
  |  |   69|  2.05k|#define ISC_RWLOCK_UNLOCKED false
  ------------------
  297|  2.05k|	atomic_init(&rwl->writers_barrier, 0);
  298|  2.05k|	atomic_init(&rwl->readers_ingress, 0);
  299|       |	atomic_init(&rwl->readers_egress, 0);
  300|  2.05k|	LIBISC_RWLOCK_INIT(rwl);
  301|  2.05k|}

isc_thread_getstacksize:
  171|      2|isc_thread_getstacksize(void) {
  172|      2|	size_t stacksize = 0;
  173|       |
  174|      2|#if HAVE_PTHREAD_ATTR_GETSTACKSIZE
  175|      2|	int ret = pthread_attr_getstacksize(&isc__thread_attr, &stacksize);
  176|      2|	PTHREADS_RUNTIME_CHECK(pthread_attr_getstacksize, ret);
  ------------------
  |  |  284|      2|	if ((ret) != 0) {                           \
  |  |  ------------------
  |  |  |  Branch (284:6): [True: 0, False: 2]
  |  |  ------------------
  |  |  285|      0|		FATAL_SYSERROR(ret, "%s()", #func); \
  |  |  ------------------
  |  |  |  |  230|      0|	REPORT_SYSERROR(isc_error_fatal, err, __VA_ARGS__)
  |  |  |  |  ------------------
  |  |  |  |  |  |  219|      0|	{                                                             \
  |  |  |  |  |  |  220|      0|		char strerr[ISC_STRERRORSIZE];                        \
  |  |  |  |  |  |  221|      0|		strerror_r(err, strerr, sizeof(strerr));              \
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  |  |   33|      0|#define strerror_r isc_string_strerror_r
  |  |  |  |  |  |  ------------------
  |  |  |  |  |  |  222|      0|		report(__FILE__, __LINE__, __func__, fmt ": %s (%d)", \
  |  |  |  |  |  |  223|      0|		       ##__VA_ARGS__, strerr, err);                   \
  |  |  |  |  |  |  224|      0|	}
  |  |  |  |  ------------------
  |  |  ------------------
  |  |  286|      0|	}
  ------------------
  177|      2|#endif /* HAVE_PTHREAD_ATTR_GETSTACKSIZE */
  178|       |
  179|      2|	return stacksize;
  180|      2|}

isc_tid_count:
   57|      8|isc_tid_count(void) {
   58|      8|	return tid_count;
   59|      8|}

isc__uv_initialize:
  132|      2|isc__uv_initialize(void) {
  133|       |	/*
  134|       |	 * Ensure the first 3 file descriptors are open
  135|       |	 * otherwise, libuv may use one and trigger abort
  136|       |	 * when closing it.
  137|       |	 *
  138|       |	 * See https://github.com/libuv/libuv/pull/4559
  139|       |	 */
  140|      2|	do {
  141|      2|		int fd = open("/dev/null", O_RDWR, 0);
  142|      2|		RUNTIME_CHECK(fd >= 0);
  ------------------
  |  |  241|      2|	((cond) ? (void)0 : FATAL_ERROR("RUNTIME_CHECK(%s) failed", #cond))
  |  |  ------------------
  |  |  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  |  |  |  Branch (241:3): [True: 2, False: 0]
  |  |  ------------------
  ------------------
  143|      2|		if (fd > STDERR_FILENO) {
  ------------------
  |  Branch (143:7): [True: 2, False: 0]
  ------------------
  144|      2|			close(fd);
  145|      2|			break;
  146|      2|		}
  147|      2|	} while (true);
  ------------------
  |  Branch (147:11): [True: 0, Folded]
  ------------------
  148|      2|#if UV_VERSION_HEX >= UV_VERSION(1, 38, 0)
  149|      2|	int r;
  150|      2|	isc_mem_create("uv", &isc__uv_mctx);
  ------------------
  |  |  200|      2|#define isc_mem_create(name, cp) isc__mem_create((name), (cp)_ISC_MEM_FILELINE)
  ------------------
  151|      2|	isc_mem_setdebugging(isc__uv_mctx, 0);
  152|      2|	isc_mem_setdestroycheck(isc__uv_mctx, false);
  153|       |
  154|      2|	r = uv_replace_allocator(isc__uv_malloc, isc__uv_realloc,
  155|      2|				 isc__uv_calloc, isc__uv_free);
  156|      2|	UV_RUNTIME_CHECK(uv_replace_allocator, r);
  ------------------
  |  |   50|      2|	if (ret != 0) {                                                  \
  |  |  ------------------
  |  |  |  Branch (50:6): [True: 0, False: 2]
  |  |  ------------------
  |  |   51|      0|		FATAL_ERROR("%s failed: %s\n", #func, uv_strerror(ret)); \
  |  |  ------------------
  |  |  |  |  216|      0|	isc_error_fatal(__FILE__, __LINE__, __func__, __VA_ARGS__)
  |  |  ------------------
  |  |   52|      0|	}
  ------------------
  157|      2|#endif /* UV_VERSION_HEX >= UV_VERSION(1, 38, 0) */
  158|      2|}

isc__xml_initialize:
   52|      2|isc__xml_initialize(void) {
   53|       |#ifdef HAVE_LIBXML2
   54|       |#ifndef LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS
   55|       |	isc_mem_create("libxml2", &isc__xml_mctx);
   56|       |	isc_mem_setdebugging(isc__xml_mctx, 0);
   57|       |	isc_mem_setdestroycheck(isc__xml_mctx, false);
   58|       |
   59|       |	RUNTIME_CHECK(xmlMemSetup(isc__xml_free, isc__xml_malloc,
   60|       |				  isc__xml_realloc, isc__xml_strdup) == 0);
   61|       |#endif /* !LIBXML_HAS_DEPRECATED_MEMORY_ALLOCATION_FUNCTIONS */
   62|       |
   63|       |	xmlInitParser();
   64|       |#endif /* HAVE_LIBXML2 */
   65|      2|}

